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.

64 lines (61 loc) 2.67 kB
import localsHelper from '../../../../utils/localsHelper.js'; import { captureDprError } from '../../../../utils/captureError.js'; class MissingReportFormController { layoutPath; missingReportService; reportingService; constructor(layoutPath, services) { this.layoutPath = layoutPath; this.missingReportService = services.missingReportService; this.reportingService = services.reportingService; } GET = async (req, res, next) => { const { token, csrfToken, definitionsPath, dprUser } = localsHelper.getValues(res); const { reportId, variantId } = req.params; const reportDefinition = await this.reportingService.getDefinition(token, reportId, variantId, definitionsPath ?? 'definitions/prisons/missing'); const { variant, name } = reportDefinition; try { res.render(`dpr/routes/journeys/request-missing-report/form/view`, { title: 'This report is not available', report: { reportId, variantId, reportName: name, name: variant.name, description: variant.description || reportDefinition.description, }, user: dprUser, csrfToken, layoutPath: this.layoutPath, postEndpoint: `/dpr/request-missing-report/${reportId}/${variantId}/form/submit`, }); } catch (error) { next(error); } }; POST = async (req, res, next) => { const { body } = req; const { reportId, variantId, reportName, variantName, 'more-detail': requestDetails } = body; const { token } = localsHelper.getValues(res); try { const submission = this.missingReportService.submitMissingReportEntry(token, reportId, variantId, requestDetails); if (submission) { submission.then(() => { const queryParams = `reportName=${reportName}&name=${variantName}&reportId=${reportId}&variantId=${variantId}`; const redirect = `./submitted?${queryParams}`; res.redirect(redirect); }, err => { captureDprError(err, 'Submit missing report entry error', { reportId, variantId, requestDetails }); next(err); }); } } catch (error) { captureDprError(error); next(error); } }; } export { MissingReportFormController, MissingReportFormController as default }; //# sourceMappingURL=controller.js.map