UNPKG

@ministryofjustice/hmpps-digital-prison-reporting-frontend

Version:

The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.

55 lines (51 loc) 1.98 kB
'use strict'; var utils = require('../../routes/journeys/my-reports/utils.js'); var captureError = require('../../utils/captureError.js'); var localsHelper = require('../../utils/localsHelper.js'); var getReportStatus = require('../../utils/ReportStatus/getReportStatus.js'); const createReportPollingHandler = (services, renderFn) => async (req, res, _next) => { let requestedReport; try { const { executionId } = req.params; const { token, dprUser } = localsHelper.getValues(res); requestedReport = await utils.getMyReport({ executionId }, 'requestedReports', services, dprUser.id); if (!requestedReport) { return res.sendStatus(404); } const { resolution, updated } = await getReportStatus.evaluateAndUpdateReportStatus({ stored: requestedReport, services, token, res, }); if (resolution.type === 'NO_CHANGE' || !updated) { return res.sendStatus(204); } const { template, data } = renderFn(updated, resolution, req, res); return res.render(template, data, (err, html) => { if (err) return res.sendStatus(500); return res.type('text/html').send(html); }); } catch (error) { const message = 'Polling error'; const { executionId, reportId, id } = req.params; const meta = { reportId, id, executionId, ...(requestedReport ? { type: requestedReport.type, reportName: requestedReport.reportName, loadType: requestedReport.loadType, } : {}), }; captureError.captureDprError(error, message, meta); return res.sendStatus(500); } }; exports.createReportPollingHandler = createReportPollingHandler; //# sourceMappingURL=createReportPollingHandler.js.map