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.ticketnumber, 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; } ); };