@@ -0,0 +1,70 @@
|
||||
'use strict';
|
||||
// routes/downtimeAnalysis.js — "Downtime Analysis" report (see
|
||||
// services/downtimeAnalysisStore.js for the aggregation logic and
|
||||
// services/appSettingsStore.js's downtimeAnalysisConfig for the admin-edited
|
||||
// cause taxonomy/field mapping/Base Days). Gated purely by the
|
||||
// 'downtime-analysis' sidebar module (Admin → Users) — same soft-gate
|
||||
// pattern as the other report-style pages (Inventory Status Report, PWO
|
||||
// Source Report, etc.): verifyToken only here, the module toggle controls
|
||||
// who even sees the menu link.
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const { verifyToken } = require('../middleware/auth');
|
||||
const store = require('./../services/downtimeAnalysisStore');
|
||||
const cq = (req) => req.query?.company || req.body?.company || null;
|
||||
|
||||
router.get('/report', verifyToken, async (req, res) => {
|
||||
try {
|
||||
const data = await store.buildReport({
|
||||
company: cq(req),
|
||||
periodFrom: req.query.periodFrom,
|
||||
periodTo: req.query.periodTo,
|
||||
baseDays: req.query.baseDays,
|
||||
});
|
||||
res.json({ success: true, data });
|
||||
} catch (err) {
|
||||
res.status(400).json({ success: false, message: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/by-tab', verifyToken, async (req, res) => {
|
||||
try {
|
||||
const data = await store.buildTabReport({
|
||||
company: cq(req),
|
||||
periodFrom: req.query.periodFrom,
|
||||
periodTo: req.query.periodTo,
|
||||
baseDays: req.query.baseDays,
|
||||
});
|
||||
res.json({ success: true, data });
|
||||
} catch (err) {
|
||||
res.status(400).json({ success: false, message: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/detail-by-tab', verifyToken, async (req, res) => {
|
||||
try {
|
||||
const data = await store.buildDetailByTab({
|
||||
company: cq(req),
|
||||
periodFrom: req.query.periodFrom,
|
||||
periodTo: req.query.periodTo,
|
||||
});
|
||||
res.json({ success: true, data });
|
||||
} catch (err) {
|
||||
res.status(400).json({ success: false, message: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/monthly', verifyToken, async (req, res) => {
|
||||
try {
|
||||
const data = await store.buildMonthlyReport({
|
||||
company: cq(req),
|
||||
periodFrom: req.query.periodFrom,
|
||||
periodTo: req.query.periodTo,
|
||||
});
|
||||
res.json({ success: true, data });
|
||||
} catch (err) {
|
||||
res.status(400).json({ success: false, message: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user