@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
44 lines (41 loc) • 1.47 kB
JavaScript
import { SubscribedReportBuilder } from '../../../routes/journeys/my-reports/subscriptions/builder.js';
import { addMyReport } from '../../../routes/journeys/my-reports/utils.js';
/**
* Subscribes a user to a scheduled report
*
* @param {Request} req
* @param {Response} res
* @param {Services} services
* @return {*}
*/
const subscribe = async (req, res, services) => {
const { dprUser } = res.locals;
if (!dprUser) {
throw new Error('No Dpr User');
}
if (!req.body) {
throw new Error('No body in request');
}
const { token, id: userId } = dprUser;
const { reportId, id } = req.params;
const { returnTo } = req.body;
const subscribeResponse = await services.subscriptionService.subscribe(token, reportId, id);
if (!subscribeResponse) {
return {
returnTo,
};
}
const subscriptionData = new SubscribedReportBuilder(req, res)
.withExecutionData({ tableId: subscribeResponse.tableId })
.build();
const { schedule, reportName, name, type } = subscriptionData;
await addMyReport('subscriptions', subscriptionData, services, userId);
req.flash('DPR_SUBSCRIBED', JSON.stringify({
message: `<p>You have subscribed to <strong>${reportName} - ${name}</strong> ${type}.</p><p>This report refreshes <strong>${schedule}</strong></p>`,
}));
return {
returnTo,
};
};
export { subscribe };
//# sourceMappingURL=utils.js.map