refactor(representations): isolate finalisation boundary helpers (slice R8) Related work items: #22441
127 lines
4.2 KiB
JavaScript
127 lines
4.2 KiB
JavaScript
export const buildRepresentationUpdateBody = ({
|
|
formattedValues,
|
|
setRepFileName
|
|
}) => {
|
|
let updateBody = setRepFileName(formattedValues);
|
|
|
|
const sanitizedBody = Object.entries(updateBody).reduce(
|
|
(acc, [key, val]) => {
|
|
if (val !== null && val !== undefined && !key.startsWith("_")) {
|
|
acc[key] = val;
|
|
}
|
|
return acc;
|
|
},
|
|
{}
|
|
);
|
|
|
|
const stringified = JSON.stringify(sanitizedBody)
|
|
.replace(/:"Yes"/g, ":true")
|
|
.replace(/:"No"/g, ":false");
|
|
|
|
updateBody = JSON.parse(stringified);
|
|
|
|
return updateBody;
|
|
};
|
|
|
|
export const buildSubmitEnrichedValues = ({
|
|
formValues,
|
|
accountDetails,
|
|
appealType,
|
|
caseReferenceObj,
|
|
detailsObj,
|
|
resultsObj,
|
|
representationCapacity,
|
|
locale
|
|
}) => {
|
|
const buildSiteAddress = () => {
|
|
const {
|
|
pinswg_siteaddressline1,
|
|
pinswg_siteaddressline2,
|
|
pinswg_siteaddresstown,
|
|
pinswg_siteaddresspostcode
|
|
} = detailsObj;
|
|
|
|
return [
|
|
pinswg_siteaddressline1,
|
|
pinswg_siteaddressline2,
|
|
pinswg_siteaddresstown,
|
|
pinswg_siteaddresspostcode
|
|
]
|
|
.filter(Boolean)
|
|
.join(" ");
|
|
};
|
|
|
|
return {
|
|
...formValues,
|
|
containerID: accountDetails.containerID,
|
|
appealType: appealType || caseReferenceObj.repDetails.appealType,
|
|
incidentID:
|
|
caseReferenceObj.incidentid ||
|
|
caseReferenceObj.repDetails.incidentid,
|
|
caseRef: caseReferenceObj.currentReference,
|
|
casereference: caseReferenceObj.currentReference,
|
|
pinswg_questionnaireduedate: detailsObj.pinswg_questionnaireduedate,
|
|
pinswg_endofrepresentationperiod:
|
|
detailsObj.pinswg_endofrepresentationperiod,
|
|
pinswg_applicationacceptedasvalid:
|
|
detailsObj.pinswg_applicationacceptedasvalid,
|
|
pinswg_statementduedate: detailsObj.pinswg_statementduedate,
|
|
pinswg_statementsduedate: detailsObj.pinswg_statementsduedate,
|
|
pinswg_finalcommentsduedate: detailsObj.pinswg_finalcommentsduedate,
|
|
pinswg_name: caseReferenceObj.currentReference,
|
|
firstname: accountDetails.firstname,
|
|
lastname: accountDetails.lastname,
|
|
emailAddress: accountDetails.emailaddress1,
|
|
siteAddress: buildSiteAddress(),
|
|
pinswg_siteaddressline1: detailsObj.pinswg_siteaddressline1,
|
|
pinswg_siteaddressline2: detailsObj.pinswg_siteaddressline2,
|
|
pinswg_siteaddresstown: detailsObj.pinswg_siteaddresstown,
|
|
pinswg_siteaddresspostcode: detailsObj.pinswg_siteaddresspostcode,
|
|
pinswg_lpareference: resultsObj?.pinswg_lpareference,
|
|
_pinswg_appellant_value: detailsObj._pinswg_appellant_value,
|
|
"_pinswg_appellant_value@OData.Community.Display.V1.FormattedValue":
|
|
detailsObj[
|
|
"_pinswg_appellant_value@OData.Community.Display.V1.FormattedValue"
|
|
],
|
|
_pinswg_localplanningauthority_value:
|
|
detailsObj._pinswg_localplanningauthority_value ||
|
|
detailsObj._pinswg_associatedlpa_value,
|
|
"_pinswg_localplanningauthority_value@OData.Community.Display.V1.FormattedValue":
|
|
detailsObj[
|
|
"_pinswg_localplanningauthority_value@OData.Community.Display.V1.FormattedValue"
|
|
] ||
|
|
detailsObj[
|
|
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
|
|
],
|
|
representationCapacity,
|
|
locale
|
|
};
|
|
};
|
|
|
|
export const runFinalisationSequence = ({
|
|
values,
|
|
containerID,
|
|
currentReference,
|
|
setFinaliseAppealProcess,
|
|
generateRepPDF,
|
|
updateLinks,
|
|
uploadRepresentationFiles,
|
|
setRepresentationSubmit,
|
|
setRepresentationSubmitConfirmation
|
|
}) => {
|
|
setFinaliseAppealProcess(true);
|
|
|
|
return generateRepPDF(values, containerID, currentReference).then(
|
|
(data) => {
|
|
if (data.status === "success") {
|
|
const updatedValues = updateLinks(values);
|
|
uploadRepresentationFiles(updatedValues);
|
|
setRepresentationSubmit(true);
|
|
setRepresentationSubmitConfirmation(true);
|
|
}
|
|
|
|
return data;
|
|
}
|
|
);
|
|
};
|