@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
46 lines (42 loc) • 1.48 kB
JavaScript
;
var builder = require('../../../routes/journeys/my-reports/subscriptions/builder.js');
var utils = require('../../../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 builder.SubscribedReportBuilder(req, res)
.withExecutionData({ tableId: subscribeResponse.tableId })
.build();
const { schedule, reportName, name, type } = subscriptionData;
await utils.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,
};
};
exports.subscribe = subscribe;
//# sourceMappingURL=utils.js.map