diff --git a/actions/azurestorage.js b/actions/azurestorage.js index 472a806f..0fa715b0 100644 --- a/actions/azurestorage.js +++ b/actions/azurestorage.js @@ -1270,7 +1270,21 @@ export const getAllProgressBlobs = async (containerName) => { // "\n////////////////////////////" // ); - return blobObj; + function removeDuplicates(arr) { + const unique = arr.filter( + (value, index, self) => + index === + self.findIndex( + (t) => + t.name === value.name // Change 'id' to the property you're checking for uniqueness + ) + ); + return unique; + } + + const result = removeDuplicates(blobObj); + + return result; }; export const getRepsBlobs = async (containerName) => { diff --git a/components/case/representation/index.js b/components/case/representation/index.js index 0071b180..06faf301 100644 --- a/components/case/representation/index.js +++ b/components/case/representation/index.js @@ -865,50 +865,23 @@ let MakeRepresentation = (props) => { ? (Object.assign(values, { "filesList": props.currentView.fileList, }), - // commented out as dont need to create pdf on save - // generateRepPDF( - // values, - // props.props.accountDetails.containerID, - // currentView.caseReference.currentReference - // ), uploadRepresentationFiles(values), router.replace( router.locale != "en" ? router.locale + "/myportal" : "/myportal" )) - : //values.hasOwnProperty("representationDocuments") && - // sortFileObj() - // (values.representationDocuments.map((Blob) => - // buildFileArray.push({ - // "name": Blob.name, - // "size": Blob.size, - // }) - // ), - // Object.assign(values, { - // "filesList": buildFileArray, - // })), - console.log("updated"); - uploadRepresentationFiles(values); - // generateRepPDF( - // values, - // props.props.accountDetails.containerID, - // currentView.caseReference.currentReference - // ); + : Object.assign(values, { + "filesList": props.currentView.fileList, + }), + console.log("Rep Updated - props.caseReference"), + uploadRepresentationFiles(values); }; const onHandleSubmit = (values) => { window.scrollTo({ top: 0, behavior: "smooth" }); values = setRepFileName(values); - // values.representationType == "Questionnaire" && - // !values.hasOwnProperty("pinswg_lpareference") && - // Object.assign(values, { - // "pinswg_lpareference": - // searchResultsObj?.searchResultsObj?.value[0] - // ?.pinswg_lpareference, - // }); - //console.log("onHandleSubmit form values - ", JSON.stringify(values)); const buildFileArray = []; @@ -1074,55 +1047,9 @@ let MakeRepresentation = (props) => { setRepresentationSubmit(true); setRepresentationSubmitConfirmation(true); } else { - console.log("nit updated"); + console.log("not updated"); } } - - // currentView.representationSubmit != true - // ? _.isEmpty(currentView.representationCapacity) - // ? isLPA - // ? setRepresentationCapacity("LPA") - // : setRepresentationCapacity( - // values.representationCapacity - // .replace(/(\band|[\s\-\+\(\)\,\&])/g, "") - // .toLowerCase() - // ) - // : questionnaireCount != 0 && - // showQuestionnaireSection < questionnaireCount - // ? (setShowQuestionnaireSection(showQuestionnaireSection + 1), - // updateRepresentation(values, false, false)) - // : (updateRepresentation(values, false, false), - // setRepresentationSubmit(true)) - // : currentView.representationSubmit == true - // ? (console.log("capacity", currentView.representationCapacity), - // console.log("has errors:", props.invalid), - // Object.assign(values, { "locale": router.locale }), - // props.invalid == false && - // updateRepresentation(values, false, false), - // // values.hasOwnProperty("representationDocuments") && - // // (values.representationDocuments.map((Blob) => - // // buildFileArray.push({ - // // "name": Blob.name, - // // "size": Blob.size, - // // }) - // // ), - // // Object.assign(values, { - // // "filesList": buildFileArray, - // // })), - // console.log( - // "====================== rep lpa payload:\n", - // JSON.stringify(values) - // ), - // generateRepPDF( - // values, - // props.props.accountDetails.containerID, - // currentView.caseReference.currentReference - // ), - // uploadRepresentationFiles(values), - // setRepresentationSubmitConfirmation(true)) - // : console.log("nit updated"); - - //window.alert(`You submitted:\n\n${JSON.stringify(values, null, 2)}`); }; const cleanFilesList = (blobList) => { @@ -1184,14 +1111,9 @@ let MakeRepresentation = (props) => { var dataObj = values; - // for (let key in dataObj) { - // _.includes(key, "representationDocuments") == true && - // delete dataObj[key]; - // } - uploadRepFiles( dataObj, - fileListObj, + [{}], values.containerID, props.caseReference + "/" + dataObj.repfile_name ).then((data) => { @@ -1229,140 +1151,103 @@ let MakeRepresentation = (props) => { /> ) : ( <> - {/* {!session ? ( - <> -
-

- {t( - "myrepresentations:sign-in-to-raise-rep-label" - )}{" "} - - {t( - "myrepresentations:login-contact-email" - )} - -

-
- - - ) : ( */} - <> -

- {t( - "myrepresentations:make-a-representation-on-label" - )}{" "} - {currentView.caseReference.currentReference}{" "} -

-
-
- {whichControl()} -
+

+ {t( + "myrepresentations:make-a-representation-on-label" + )}{" "} + {currentView.caseReference.currentReference}{" "} +

+
+
+ {whichControl()} +
-
- {" "} -
-
-

- {t( - "myrepresentations:timetable-title" - )}{" "} -

-
-
- {currentView.caseReference - .appealType == 846040011 - ? t( - "myrepresentations:local-impact-report" +
+ {" "} +
+
+

+ {t( + "myrepresentations:timetable-title" + )}{" "} +

+
+
+ {currentView.caseReference + .appealType == 846040011 + ? t( + "myrepresentations:local-impact-report" + ) + : t( + "myrepresentations:questionnaire-due-label" + )} + : + + {" "} + {detailsObj.hasOwnProperty( + "pinswg_questionnaireduedate" + ) || + detailsObj.hasOwnProperty( + "pinswg_endofrepresentationperiod" + ) + ? formatDates( + detailsObj.pinswg_questionnaireduedate || + detailsObj.pinswg_endofrepresentationperiod ) - : t( - "myrepresentations:questionnaire-due-label" - )} - : - - {" "} - {detailsObj.hasOwnProperty( - "pinswg_questionnaireduedate" - ) || - detailsObj.hasOwnProperty( - "pinswg_endofrepresentationperiod" - ) - ? formatDates( - detailsObj.pinswg_questionnaireduedate || - detailsObj.pinswg_endofrepresentationperiod - ) - : "N/A"} - -
+ : "N/A"} + +
+
+ {t( + "myrepresentations:statements-due-label" + )} + : + + {" "} + {formatDates( + detailsObj.pinswg_statementduedate || + detailsObj.pinswg_statementsduedate || + detailsObj.pinswg_endofrepresentationperiod + )} + +
+ {currentView.caseReference + .appealType != 846040011 && (
{t( - "myrepresentations:statements-due-label" + "myrepresentations:final-comments-due-label" )} : {" "} {formatDates( - detailsObj.pinswg_statementduedate || - detailsObj.pinswg_statementsduedate || - detailsObj.pinswg_endofrepresentationperiod + detailsObj.pinswg_finalcommentsduedate )}
- {currentView.caseReference - .appealType != - 846040011 && ( -
- {t( - "myrepresentations:final-comments-due-label" - )} - : - - {" "} - {formatDates( - detailsObj.pinswg_finalcommentsduedate - )} - -
- )} -
+ )}
-
- {formObj.hasOwnProperty( +
+
+ {formObj.hasOwnProperty( + "representationForm" + ) && + formObj[ "representationForm" + ].hasOwnProperty("values") && + formObj[ + "representationForm" + ].values.hasOwnProperty( + "representationType" ) && - formObj[ - "representationForm" - ].hasOwnProperty("values") && - formObj[ - "representationForm" - ].values.hasOwnProperty( - "representationType" - ) && - formObj["representationForm"].values - .representationType == - "Questionnaire" && - whichProgress()} -
+ formObj["representationForm"].values + .representationType == + "Questionnaire" && + whichProgress()}
- - {/* )} */} +
)} diff --git a/components/case/representation/representationCompleteSubmit.js b/components/case/representation/representationCompleteSubmit.js index 6e8cc68d..9208d995 100644 --- a/components/case/representation/representationCompleteSubmit.js +++ b/components/case/representation/representationCompleteSubmit.js @@ -251,7 +251,7 @@ const RepCompleteSubmit = (props) => {
- { @@ -261,11 +261,11 @@ const RepCompleteSubmit = (props) => { {t("common:change-link-label")} {" "} - {/* {FieldsTranslations( + {FieldsTranslations( rows[0].value - )} */} + )} - + */}
{_.has( @@ -344,38 +344,41 @@ const RepCompleteSubmit = (props) => { )} )} -
-
- {t("case:representation-comments")} -
+ {repFormData.representationType != + "Questionnaire" && ( +
+
+ {t("case:representation-comments")} +
-
- -
+
+ +
-
- { - setSubmitBack(); - }} - > - {t("common:change-link-label")} - - {" "} - {/* {FieldsTranslations( +
+ { + setSubmitBack(); + }} + > + {t("common:change-link-label")} + + {" "} + {/* {FieldsTranslations( rows[0].value )} */} - - -
-
+ + + +
+ )}
{t("case:representation-files")} @@ -453,7 +456,10 @@ const RepCompleteSubmit = (props) => { {t( "myrepresentations:rep-check-tandc-para-two" )}{" "} - + {t( "common:footer-privacy-notice-link-label" )} diff --git a/components/case/representation/representationElements.js b/components/case/representation/representationElements.js index 6f51a3c2..0ada8933 100644 --- a/components/case/representation/representationElements.js +++ b/components/case/representation/representationElements.js @@ -410,7 +410,7 @@ export const RenderLPACondtionalRadioList = ({ className="govuk-hint govuk-!-font-size-14" id={id + "-hint"} > - {t(custom.hint)} + {custom.hint}
)} @@ -578,6 +578,7 @@ export const RenderTextfield = ({ name={name} id={id} type={type} + disabled={custom.disabled == true ? true : false} />
@@ -1045,7 +1046,6 @@ export const RenderFileUpload = (field) => { // Handle accepted files (clear error message when files are accepted) const handleDropAccepted = () => { - setErrorMessage(null); // Clear any previous error messages when files are accepted setRejectedFiles([]); // Clear any previously rejected file errorsss }; diff --git a/components/case/representation/representationQuestionnaires/representationLPAQuestionnaire_s78.js b/components/case/representation/representationQuestionnaires/representationLPAQuestionnaire_s78.js index e1ff102c..cda5716f 100644 --- a/components/case/representation/representationQuestionnaires/representationLPAQuestionnaire_s78.js +++ b/components/case/representation/representationQuestionnaires/representationLPAQuestionnaire_s78.js @@ -1067,6 +1067,7 @@ let S78_Questionnaire = (props) => { label={t( "myrepresentations:s78-section-question-onbehalf" )} + disabled={true} errorMsg={t("myrepresentations:is-required-label")} />
@@ -1077,7 +1078,7 @@ let S78_Questionnaire = (props) => { component={RenderDatePicker} validate={[required]} dateStart="0" - dateEnd="1-y" + dateEnd="0" errorMsg={t("myrepresentations:is-required-label")} locale={locale} /> diff --git a/components/elements/index.js b/components/elements/index.js index 75e11112..af6f1b6f 100644 --- a/components/elements/index.js +++ b/components/elements/index.js @@ -9,7 +9,7 @@ import React, { useMemo, useState } from "react"; import DatePicker from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; import Dropzone from "react-dropzone"; -import { Field, FieldArray } from "redux-form"; +import { Field, FieldArray, change } from "redux-form"; import { deleteBlob, getFilesFromBlobHashed, @@ -2364,6 +2364,8 @@ export const FieldArrayForm = (props) => { maxSubField, } = props; + const dispatch = useDispatch(); // Get dispatch using useDispatch hook + var showIfHasParentShowValue = parentField != false && !_.isEmpty(formProps[form]) && @@ -2375,6 +2377,8 @@ export const FieldArrayForm = (props) => { (showIfHasParentShowValue == parentField) != false && showIfHasParentShowValue; + !showIfHasParentShowValue && dispatch(change("appealForm", name, null)); + parentFieldShowOnValue; const { handleSubmit, pristine, reset, submitting } = props; diff --git a/components/newappeal/buildcheckrow.js b/components/newappeal/buildcheckrow.js index cae9eee4..339da986 100644 --- a/components/newappeal/buildcheckrow.js +++ b/components/newappeal/buildcheckrow.js @@ -302,35 +302,41 @@ let BuildCheckRow = (props) => { "undefined" && props.props.form["appealForm"].values[ datafieldname[0].value - ].map((tenant, index) => { - console.log( - typeof tenant.pinswg_owners - ); - return typeof tenant.pinswg_owners != - "undefined" || - typeof tenant.pinswg_agriculturaltenantname != - "undefined" ? ( -
-
- {tenant.pinswg_agriculturaltenantname || - tenant.pinswg_owners} + ] != null ? ( + props.props.form["appealForm"].values[ + datafieldname[0].value + ].map((tenant, index) => { + console.log( + typeof tenant.pinswg_owners + ); + return typeof tenant.pinswg_owners != + "undefined" || + typeof tenant.pinswg_agriculturaltenantname != + "undefined" ? ( +
+
+ {tenant.pinswg_agriculturaltenantname || + tenant.pinswg_owners} +
+
+ Served:{" "} + {formatDate( + tenant.dateserved + )} +
-
- Served:{" "} - {formatDate( - tenant.dateserved - )} -
-
- ) : ( - "" - ); - }) + ) : ( + "" + ); + }) + ) : ( + "N/A" + ) ) : ( props.props.form["appealForm"].values[ datafieldname[0].value @@ -358,6 +364,7 @@ let BuildCheckRow = (props) => {
); + // } } })} diff --git a/components/newappeal/buildchecksection.js b/components/newappeal/buildchecksection.js index ce81dfdd..2d2e1dc0 100644 --- a/components/newappeal/buildchecksection.js +++ b/components/newappeal/buildchecksection.js @@ -298,6 +298,7 @@ let BuildCheckSection = (props) => { "newappeal:new-appeal-check-confirm-paragraph-two" )}{" "} { function CleanHTML(htmlStr) { let cleanStr = typeof htmlStr === "string" - ? htmlStr.replace(/


<\/p>/g, "") + ? htmlStr.replace( + /


<\/p>|


<\/p>/g, + "" + ) : ""; return cleanStr; diff --git a/components/pdftemplates/enforcement_pdf.js b/components/pdftemplates/enforcement_pdf.js index ac5722a7..ba2579d2 100644 --- a/components/pdftemplates/enforcement_pdf.js +++ b/components/pdftemplates/enforcement_pdf.js @@ -104,7 +104,10 @@ export const EnforcementQuestionnaire_pdf = ({ docProps }) => { function CleanHTML(htmlStr) { let cleanStr = typeof htmlStr === "string" - ? htmlStr.replace(/


<\/p>/g, "") + ? htmlStr.replace( + /


<\/p>|


<\/p>/g, + "" + ) : ""; return cleanStr; diff --git a/components/pdftemplates/finalComments_pdf.js b/components/pdftemplates/finalComments_pdf.js index 556a4d9f..be300697 100644 --- a/components/pdftemplates/finalComments_pdf.js +++ b/components/pdftemplates/finalComments_pdf.js @@ -21,7 +21,7 @@ const getTrans = (locale, key) => { let jsonObj = locale == "cy" ? transLookupCY : transLookupEN; - console.log(locale, jsonObj[key]); + //console.log(locale, jsonObj[key]); return jsonObj[key]; }; @@ -68,9 +68,8 @@ const styles = StyleSheet.create({ }, questionAnswerWide: { color: "#757575", - width: "95%", + width: "100%", fontSize: 12, - marginLeft: "5%", border: 1, borderColor: "#eee", backgroundColor: "white", @@ -125,7 +124,10 @@ export const finalComments_pdf = ({ docProps }) => { function CleanHTML(htmlStr) { let cleanStr = typeof htmlStr === "string" - ? htmlStr.replace(/


<\/p>/g, "") + ? htmlStr.replace( + /


<\/p>|


<\/p>/g, + "" + ) : ""; return cleanStr; @@ -398,7 +400,10 @@ export const finalComments_pdf = ({ docProps }) => { } > {p.name} -{" "} - {bytesToSize(p.size)}{" "} + {bytesToSize( + p.size || + p.contentLength + )}{" "} {"\n"} diff --git a/components/pdftemplates/lpaQuestionnaire_pdf.js b/components/pdftemplates/lpaQuestionnaire_pdf.js index 16171483..0f8b44f5 100644 --- a/components/pdftemplates/lpaQuestionnaire_pdf.js +++ b/components/pdftemplates/lpaQuestionnaire_pdf.js @@ -61,6 +61,7 @@ const styles = StyleSheet.create({ border: 1, borderColor: "#eee", paddingLeft: 10, + paddingRight: 10, backgroundColor: "white", marginRight: 10, }, @@ -86,9 +87,8 @@ const styles = StyleSheet.create({ }, questionAnswerWide: { color: "#757575", - width: "95%", + width: "100%", fontSize: 12, - marginLeft: "5%", border: 1, borderColor: "#eee", backgroundColor: "white", @@ -148,7 +148,10 @@ export const lpaQuestionnaire_pdf = ({ docProps }) => { function CleanHTML(htmlStr) { let cleanStr = typeof htmlStr === "string" - ? htmlStr.replace(/


<\/p>/g, "") + ? htmlStr.replace( + /


<\/p>|


<\/p>/g, + "" + ) : ""; return cleanStr; @@ -557,7 +560,6 @@ export const lpaQuestionnaire_pdf = ({ docProps }) => { wrap={false} > { flexDirection: "column", marginBottom: 10, }} - wrap={false} > { }} > {getTrans( docProps.locale, @@ -1448,10 +1448,19 @@ export const lpaQuestionnaire_pdf = ({ docProps }) => { )} - w{values.caseOfficer} + {values.caseOfficer} { alignItems: "center", }} > - + {getTrans( docProps.locale, "s78-section-question-date" diff --git a/components/pdftemplates/other_pdf.js b/components/pdftemplates/other_pdf.js index c529ddce..fcf3cf07 100644 --- a/components/pdftemplates/other_pdf.js +++ b/components/pdftemplates/other_pdf.js @@ -21,7 +21,7 @@ const getTrans = (locale, key) => { let jsonObj = locale == "cy" ? transLookupCY : transLookupEN; - console.log(locale, jsonObj[key]); + //console.log(locale, jsonObj[key]); return jsonObj[key]; }; @@ -129,7 +129,10 @@ export const other_pdf = ({ docProps }) => { function CleanHTML(htmlStr) { let cleanStr = typeof htmlStr === "string" - ? htmlStr.replace(/


<\/p>/g, "") + ? htmlStr.replace( + /


<\/p>|


<\/p>/g, + "" + ) : ""; return cleanStr; diff --git a/components/pdftemplates/statement_pdf.js b/components/pdftemplates/statement_pdf.js index 6e8bcfbd..14ab7249 100644 --- a/components/pdftemplates/statement_pdf.js +++ b/components/pdftemplates/statement_pdf.js @@ -18,7 +18,7 @@ const getTrans = (locale, key) => { let jsonObj = locale == "cy" ? transLookupCY : transLookupEN; - console.log(locale, jsonObj[key]); + //console.log(locale, jsonObj[key]); return jsonObj[key]; }; @@ -65,9 +65,8 @@ const styles = StyleSheet.create({ }, questionAnswerWide: { color: "#757575", - width: "95%", + width: "100%", fontSize: 12, - marginLeft: "5%", border: 1, borderColor: "#eee", backgroundColor: "white", @@ -97,7 +96,7 @@ const styles = StyleSheet.create({ }); export const statement_pdf = ({ docProps }) => { - console.log("----", docProps); + //console.log("----", docProps); function formatDates(dateObj) { var dateObj = new Date(dateObj); var dd = String(dateObj.getDate()).padStart(2, "0"); @@ -122,7 +121,10 @@ export const statement_pdf = ({ docProps }) => { function CleanHTML(htmlStr) { let cleanStr = typeof htmlStr === "string" - ? htmlStr.replace(/


<\/p>/g, "") + ? htmlStr.replace( + /


<\/p>|


<\/p>/g, + "" + ) : ""; return cleanStr; @@ -395,7 +397,10 @@ export const statement_pdf = ({ docProps }) => { } > {p.name} -{" "} - {bytesToSize(p.size)}{" "} + {bytesToSize( + p.size || + p.contentLength + )}{" "} {"\n"} diff --git a/components/pdftemplates/writtenStatement_pdf.js b/components/pdftemplates/writtenStatement_pdf.js index c9d5b8ab..2fdbb6bd 100644 --- a/components/pdftemplates/writtenStatement_pdf.js +++ b/components/pdftemplates/writtenStatement_pdf.js @@ -110,7 +110,10 @@ export const writtenStatement_pdf = ({ docProps }) => { function CleanHTML(htmlStr) { let cleanStr = typeof htmlStr === "string" - ? htmlStr.replace(/


<\/p>/g, "") + ? htmlStr.replace( + /


<\/p>|


<\/p>/g, + "" + ) : ""; return cleanStr; diff --git a/pages/_document.js b/pages/_document.js index 00c858b9..71b93947 100644 --- a/pages/_document.js +++ b/pages/_document.js @@ -42,7 +42,7 @@ class MyDocument extends Document { csp += `form-action 'self' ` + process.env.NEXTAUTH_URL + ` ;`; csp += `object-src 'self' data:;`; csp += `default-src 'self' https://www.google-analytics.com;`; - csp += `connect-src 'self' http://127.0.0.1 https://maps.googleapis.com https://ukwest-0.in.applicationinsights.azure.com https://js.monitor.azure.com https://region1.google-analytics.com;`; + csp += `connect-src 'self' http://127.0.0.1 https://maps.googleapis.com https://uksouth-1.in.applicationinsights.azure.com https://ukwest-0.in.applicationinsights.azure.com https://js.monitor.azure.com https://region1.google-analytics.com;`; csp += `script-src 'self' 'unsafe-eval' 'unsafe-inline' https://maps.googleapis.com https://ukwest-0.in.applicationinsights.azure.com https://region1.google-analytics.com https://www.google-analytics.com/ https://tagmanager.google.com/ https://www.googletagmanager.com/;`; csp += `style-src 'self' 'unsafe-inline' https://pro.fontawesome.com/ https://www.google-analytics.com https://tagmanager.google.com/ https://www.googletagmanager.com/ https://fonts.googleapis.com/;`; csp += `img-src 'self' 'unsafe-inline' https://maps.gstatic.com https://maps.googleapis.com https://www.gov.wales https://gov.wales https://fonts.gstatic.com https://www.googletagmanager.com https://www.google-analytics.com https://ssl.gstatic.com/ blob: data:;`; diff --git a/pages/api/file/upload.js b/pages/api/file/upload.js index 6bd36e0e..4219319a 100644 --- a/pages/api/file/upload.js +++ b/pages/api/file/upload.js @@ -35,20 +35,26 @@ ApiProxy.post(async (req, res) => { repOrAppeal ? createRepBlob(appealData, containerID, casefolderID).then((data) => { - Object.keys(req.files).length > 0 && - uploadFile(req.files, containerID, casefolderID).then( - (data) => { - return res.status(200).json({ data }); - } - ); + // Object.keys(req.files).length > 0 && + // uploadFile(req.files, containerID, casefolderID).then( + // (data) => { + // return res.status(200).json({ data }); + // } + // ); + console.log("================================\nRepfile updated"); + return res.status(200).json({ data }); }) : createBlob(appealData, containerID, casefolderID).then((data) => { - Object.keys(req.files).length > 0 && - uploadFile(req.files, containerID, casefolderID).then( - (data) => { - return res.status(200).json({ data }); - } - ); + // Object.keys(req.files).length > 0 && + // uploadFile(req.files, containerID, casefolderID).then( + // (data) => { + // return res.status(200).json({ data }); + // } + // ); + console.log( + "================================\nAppeal file updated" + ); + return res.status(200).json({ data }); }); //});