@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
61 lines (58 loc) • 1.85 kB
JavaScript
import { StoreItemBuilder } from '../builder.js';
import { RequestStatus } from '../../../../utils/ReportStatus/types.js';
class SubscribedReportBuilder extends 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 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;
};
}
export { SubscribedReportBuilder };
//# sourceMappingURL=builder.js.map