sunrise-cms/helpers/functions.print.js

77 lines
2.5 KiB
JavaScript

// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable security/detect-object-injection */
import * as dateTimeFunctions from '@cityssm/utils-datetime';
import getBurialSite from '../database/getBurialSite.js';
import getContract from '../database/getContract.js';
import getWorkOrder from '../database/getWorkOrder.js';
import * as configFunctions from './config.helpers.js';
import * as contractFunctions from './contracts.helpers.js';
const screenPrintConfigs = {
contract: {
title: "Burial Site Contract Print",
params: ['contractId']
}
};
export function getScreenPrintConfig(printName) {
return screenPrintConfigs[printName];
}
const pdfPrintConfigs = {
workOrder: {
title: 'Work Order Field Sheet',
params: ['workOrderId']
},
'workOrder-commentLog': {
title: 'Work Order Field Sheet - Comment Log',
params: ['workOrderId']
},
// Occupancy
'ssm.cemetery.burialPermit': {
title: 'Burial Permit',
params: ['contractId']
},
'ssm.cemetery.contract': {
title: 'Contract for Purchase of Interment Rights',
params: ['contractId']
}
};
export function getPdfPrintConfig(printName) {
return pdfPrintConfigs[printName];
}
export function getPrintConfig(screenOrPdfPrintName) {
const printNameSplit = screenOrPdfPrintName.split('/');
switch (printNameSplit[0]) {
case 'pdf': {
return getPdfPrintConfig(printNameSplit[1]);
}
case 'screen': {
return getScreenPrintConfig(printNameSplit[1]);
}
}
return undefined;
}
export async function getReportData(printConfig, requestQuery) {
const reportData = {
headTitle: printConfig.title,
configFunctions,
contractFunctions,
dateTimeFunctions
};
if (printConfig.params.includes('contractId') &&
typeof requestQuery.contractId === 'string') {
const contract = await getContract(requestQuery.contractId);
if (contract !== undefined && (contract.burialSiteId ?? -1) !== -1) {
reportData.burialSite = await getBurialSite(contract.burialSiteId ?? -1);
}
reportData.contract = contract;
}
if (printConfig.params.includes('workOrderId') &&
typeof requestQuery.workOrderId === 'string') {
reportData.workOrder = await getWorkOrder(requestQuery.workOrderId, {
includeBurialSites: true,
includeComments: true,
includeMilestones: true
});
}
return reportData;
}