'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;