71 lines
2.3 KiB
JavaScript
71 lines
2.3 KiB
JavaScript
'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;
|