@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
JavaScript
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