@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
63 lines (59 loc) • 1.89 kB
JavaScript
'use strict';
var builder = require('../builder.js');
var types = require('../../../../utils/ReportStatus/types.js');
class SubscribedReportBuilder extends builder.StoreItemBuilder {
req;
reportData;
constructor(req, res) {
super(res);
this.req = req;
}
// Builder methods
buildReportData = () => {
const requestFormData = this.req.body;
this.reportType = requestFormData.type;
this.reportData = this.buildReportMetaData(requestFormData);
};
buildUrls = () => {
const origin = this.req.get('host') || '';
const report = this.buildReportUrls();
return {
origin,
report,
};
};
buildReportUrls = () => {
const origin = this.req.get('host') || '';
const { reportId } = this.reportData;
const { id } = this.reportData;
const { type } = this.reportData;
const { tableId } = this.executionData;
const fullUrl = `${this.req.protocol}://${origin}/dpr/view-report/async/${type}/${reportId}/${id}/${tableId}/report`;
const parsed = new URL(fullUrl);
const { search } = parsed;
return {
fullUrl,
search,
};
};
buildStatus = () => {
return types.RequestStatus.READY;
};
build = () => {
this.buildReportData();
const url = this.buildUrls();
const status = this.buildStatus();
const definitionsPath = this.buidDefinitionsPath();
const subscribedReportData = {
...this.reportData,
...this.executionData,
...(definitionsPath && definitionsPath),
url,
status,
timestamp: {},
};
return subscribedReportData;
};
}
exports.SubscribedReportBuilder = SubscribedReportBuilder;
//# sourceMappingURL=builder.js.map