diff --git a/actions/index.js b/actions/index.js index e25949f9..a753799c 100644 --- a/actions/index.js +++ b/actions/index.js @@ -1686,6 +1686,24 @@ export const getFilesFromBlob = (containerName, casefolderID) => { }); }; +export const getFilesFromBlobproxy = (containerName, casefolderID) => { + return axios + .get( + BASE_URL + + "/api/file/getbloblistproxy?container=" + + containerName + + "&casefolderID=" + + casefolderID + ) + .then((res) => { + //console.log("//////////----", res.data); + return res.data; + }) + .catch((error) => { + consoleLogger(error); + }); +}; + export const getFilesFromBlobHashed = ( containerName, getblobshash, diff --git a/components/elements/index.js b/components/elements/index.js index d2c97843..68d7b3bb 100644 --- a/components/elements/index.js +++ b/components/elements/index.js @@ -14,6 +14,7 @@ import { deleteBlob, getFilesFromBlobHashed, uploadSingleFile, + getFilesFromBlobproxy, } from "../../actions"; import fieldLookup from "../../data/crmfieldlookuptranslations.json"; import pickListLookup from "../../data/picklistLookups.json"; @@ -1765,6 +1766,7 @@ export function FileUploadField(props) { containerID={props.containerID} uploadCount={props.uploadCount} setFileCount={props.setFileCount} + props={props.props} /> ); @@ -2040,7 +2042,53 @@ const RenderFileUpload = (field) => { field.ticketnumber ).then((data) => { console.log(data); - setCompletedUploadFiles(true); + let buildAppealFilesArray = []; + let values = field.form.appealForm.values; + let filesUploadObj = renamedAcceptedFiles; + + for (let key in filesUploadObj) { + typeof filesUploadObj[key].name != "undefined" && + buildAppealFilesArray.push({ + "name": filesUploadObj[key].name, + "size": filesUploadObj[key].size, + }); + } + + //console.log(buildAppealFilesArray); + function removeDuplicates(arr, key) { + const seen = new Set(); + return arr.filter((item) => { + const value = item[key]; + if (seen.has(value)) { + return false; // Duplicate found + } else { + seen.add(value); // Add value to the set + return true; // Keep the item + } + }); + } + + buildAppealFilesArray = values.hasOwnProperty( + "filesList" + ) + ? buildAppealFilesArray.concat(values.filesList) + : buildAppealFilesArray; + + buildAppealFilesArray = removeDuplicates( + buildAppealFilesArray, + "name" + ); + + Object.assign(values, { + "filesList": buildAppealFilesArray, + }); + getFilesFromBlobproxy( + field.containerID, + field.ticketnumber + ).then((data) => { + field.setFilesForAppeal(data); + setCompletedUploadFiles(true); + }); }); }} onDropRejected={handleDropRejected} @@ -2074,7 +2122,7 @@ const RenderFileUpload = (field) => { )} {completedUploadFiles > 0 && (
- {uploadCountMessage} files completed{" "} + {uploadCountMessage} files uploaded{" "}
)} @@ -2093,54 +2141,52 @@ const RenderFileUpload = (field) => { {field.meta.touched && field.meta.error && ( {field.meta.error} )} - {filesList.length > 0 && - (completedUploadFiles ? ( - "Done" - ) : ( -

Uploading

- ))} {files && Array.isArray(files) && ( <> {/* {(files = removeEmptyObjects(files))} */} -
- {files.map( - (file, i) => - typeof file.name != "undefined" && ( -
- {" "} - {} - removeFile(file)} + + {!completedUploadFiles && + files.map( + (file, i) => + typeof file.name != "undefined" && ( +
- − - - {file.name} - - {file.name} ({bytesToSize(file.size)}){" "} -
-
- {completedUploadFiles ? ( -

- Upload complete -

- ) : ( -

- Uploading... -

+ {" "} + {} + removeFile(file)} + > + − + + - -
- ) - )} + alt={file.name} + width="50" + /> + + {file.name} ( + {bytesToSize(file.size)})
+
+ {completedUploadFiles ? ( +

+ Upload complete +

+ ) : ( +

+ Uploading... +

+ )} +
+
+
+ ) + )} )} {blobList.length > 0 && ( diff --git a/components/newappeal/buildcheckrow.js b/components/newappeal/buildcheckrow.js index a4f406d1..237fe47d 100644 --- a/components/newappeal/buildcheckrow.js +++ b/components/newappeal/buildcheckrow.js @@ -127,116 +127,116 @@ let BuildCheckRow = (props) => { // ] // ); - if ( - typeof props.props.form["appealForm"].values[ - datafieldname[0].value - ] != "undefined" - ) { - return ( -
-
- {FieldsTranslations(rows[0].value)} -
+ // if ( + // typeof props.props.form["appealForm"].values[ + // datafieldname[0].value + // ] != "undefined" + // ) { + return ( +
+
+ {FieldsTranslations(rows[0].value)} +
-
- {fieldtype[0].value == - "{E0DECE4B-6666-4a8f-A065-082708572369}" ? ( -
- ) : fieldtype[0].value == - "{5B773807-9FB2-42db-97C3-7A91EFF8ADFF}" ? ( - formatDate( - props.props.form["appealForm"] - .values[datafieldname[0].value] - ) - ) : fieldtype[0].value == - "{3EF39988-22BB-4f0b-BBBE-64B5A3748AEE}" ? ( - getPickListLabel( - props.props.formData.pickListData, - datafieldname[0].value, - props.props.form["appealForm"] - .values[datafieldname[0].value] - ) - ) : fieldtype[0].value == - "{07FAC785-CD58-4f9f-ABB3-4B7DDC6ED5ED}" ? ( - getRadioLabel( - props.props.formData.pickListData, - datafieldname[0].value, - props.props.form["appealForm"] - .values[datafieldname[0].value] - ) - ) : fieldtype[0].value == - "{67FAC785-CD58-4f9f-ABB3-4B7DDC6ED5ED}" ? ( +
+ {fieldtype[0].value == + "{E0DECE4B-6666-4a8f-A065-082708572369}" ? ( +
+ ) : fieldtype[0].value == + "{5B773807-9FB2-42db-97C3-7A91EFF8ADFF}" ? ( + formatDate( props.props.form["appealForm"].values[ datafieldname[0].value - ] == "false" ? ( - router.locale == "cy" ? ( - "Nac ydw" - ) : ( - "No" - ) - ) : router.locale == "cy" ? ( - "Oes" + ] + ) + ) : fieldtype[0].value == + "{3EF39988-22BB-4f0b-BBBE-64B5A3748AEE}" ? ( + getPickListLabel( + props.props.formData.pickListData, + datafieldname[0].value, + props.props.form["appealForm"].values[ + datafieldname[0].value + ] + ) + ) : fieldtype[0].value == + "{07FAC785-CD58-4f9f-ABB3-4B7DDC6ED5ED}" ? ( + getRadioLabel( + props.props.formData.pickListData, + datafieldname[0].value, + props.props.form["appealForm"].values[ + datafieldname[0].value + ] + ) + ) : fieldtype[0].value == + "{67FAC785-CD58-4f9f-ABB3-4B7DDC6ED5ED}" ? ( + props.props.form["appealForm"].values[ + datafieldname[0].value + ] == "false" ? ( + router.locale == "cy" ? ( + "Nac ydw" ) : ( - "Yes" + "No" ) - ) : fieldtype[0].value == - "{16D63FD6-119B-4353-BDCA-18358721C3FE}" ? ( - <> - {props.filesArray.map((blob, i) => ( -
- {getDocumentTypeFromFilename( - blob.name - ) === - documentTypeCode[0] - .value && ( -
+ {props.filesArray.map((blob, i) => ( +
+ {getDocumentTypeFromFilename( + blob.name + ) === + documentTypeCode[0] + .value && ( +
+ {blob.name} + - {blob.name} - - {blob.name} -{" "} - {bytesToSize( - blob.size - )}{" "} - -
- )} -
- ))} - -
- - {props.props.form[ + {blob.name} -{" "} + {bytesToSize( + blob.size + )}{" "} + +
+ )} +
+ ))} +
+ {typeof props.props.form["appealForm"] + .values[datafieldname[0].value] != + "undefined" && + props.props.form[ "appealForm" ].values[ datafieldname[0].value @@ -294,62 +294,63 @@ let BuildCheckRow = (props) => {
) )} - - ) : fieldtype[0].value == - "{0273EDBD-AC1D-40d3-9FB2-095C621B552D}" ? ( - props.props.form["appealForm"].values[ - datafieldname[0].value - ].map((tenant, index) => { - return ( -
-
- {tenant.pinswg_agriculturaltenantname || - tenant.pinswg_owners} -
-
- Served:{" "} - {formatDate( - tenant.dateserved - )} -
+ + ) : fieldtype[0].value == + "{0273EDBD-AC1D-40d3-9FB2-095C621B552D}" ? ( + typeof props.props.form["appealForm"] + .values[datafieldname[0].value] != + "undefined" && + props.props.form["appealForm"].values[ + datafieldname[0].value + ].map((tenant, index) => { + return ( +
+
+ {tenant.pinswg_agriculturaltenantname || + tenant.pinswg_owners}
- ); - }) - ) : ( - props.props.form["appealForm"].values[ - datafieldname[0].value - ] - )} -
+
+ Served:{" "} + {formatDate( + tenant.dateserved + )} +
+
+ ); + }) + ) : ( + props.props.form["appealForm"].values[ + datafieldname[0].value + ] + )} + -
- {rows[0].value != "Temporary reference" && ( - { - setCurrentSection(whichSection); - }} - > +
+ {rows[0].value != "Temporary reference" && ( + { + setCurrentSection(whichSection); + }} + > + {" "} + {t("newappeal:change-link-label")} + {" "} - {t("newappeal:change-link-label")} - - {" "} - {FieldsTranslations( - rows[0].value - )} - - - )} -
-
- ); - } + {FieldsTranslations(rows[0].value)} +
+ + )} + +
+ ); + // } } })} diff --git a/components/newappeal/buildchecksection.js b/components/newappeal/buildchecksection.js index 343a2bf7..16b3d18d 100644 --- a/components/newappeal/buildchecksection.js +++ b/components/newappeal/buildchecksection.js @@ -315,9 +315,7 @@ let BuildCheckSection = (props) => { - setCurrentSection(sectionCount - 1) - } + onClick={() => setCurrentSection(sectionCount)} > {t("common:back-link")} diff --git a/components/newappeal/buildfield.js b/components/newappeal/buildfield.js index d23e9d96..7e7649e3 100644 --- a/components/newappeal/buildfield.js +++ b/components/newappeal/buildfield.js @@ -217,6 +217,7 @@ export default function BuildField(props) { uploadCount={props.uploadCount} setFileCount={props.props.setFileCount} setUploadCount={props.setUploadCount} + props={props.props.props.props} /> ); diff --git a/components/newappeal/buildsection.js b/components/newappeal/buildsection.js index 19a95cc3..f5a0e15d 100644 --- a/components/newappeal/buildsection.js +++ b/components/newappeal/buildsection.js @@ -173,143 +173,124 @@ let BuildSection = (props) => { setSavingStatus(useSaveStatus); - setShowCompletedUploadFiles(true); + //not sure we need this here if it does it on drop of file + //uploadAppealFiles(values); - uploadAppealFiles(values) - .then((data) => { - // console.log( - // "\n////////////////////////\n appeal pdf payload", - // values, - // props.props.accountDetails.containerID, - // props.appealType.caseReference.ticketnumber, - // props.appealType, - // "\n////////////////////////\n" - // ); + // console.log( + // "\n////////////////////////\n appeal pdf payload", + // values, + // props.props.accountDetails.containerID, + // props.appealType.caseReference.ticketnumber, + // props.appealType, + // "\n////////////////////////\n" + // ); - // let pdfObj = values; + // let pdfObj = values; - // Object.assign(pdfObj, { - // "containerID": props.props.accountDetails.containerID, - // "casefolderID": props.appealType.caseReference.ticketnumber, - // }); + // Object.assign(pdfObj, { + // "containerID": props.props.accountDetails.containerID, + // "casefolderID": props.appealType.caseReference.ticketnumber, + // }); - // generateAppealPDF( - // pdfObj, - // props.props.accountDetails.containerID, - // props.appealType.caseReference.ticketnumber, - // router.query.appealtypes, - // props.appealType.fileList - // ), + // generateAppealPDF( + // pdfObj, + // props.props.accountDetails.containerID, + // props.appealType.caseReference.ticketnumber, + // router.query.appealtypes, + // props.appealType.fileList + // ), - props.setNewAppealProgress( - getProgressObj( - formXML, - titleList, - mandatoryFieldsData, - props - ) - ); + props.setNewAppealProgress( + getProgressObj(formXML, titleList, mandatoryFieldsData, props) + ); - let appTypeCollection = getFormCollectionByID( - props.appealType.appealTypeID - ); - let updateBindAppealTypeToIncident = - appTypeCollection.NavigationProperty; + let appTypeCollection = getFormCollectionByID( + props.appealType.appealTypeID + ); + let updateBindAppealTypeToIncident = + appTypeCollection.NavigationProperty; - Object.assign(updateBody, { - "pinswg_appealcasetype": props.appealType.appealTypeID, - "pinswg_Appellant@odata.bind": - "/contacts(" + - props.props.accountDetails.loggedinUserId + - ")", - "pinswg_name": props.appealType.caseReference.ticketnumber, - [updateBindAppealTypeToIncident + "@odata.bind"]: - "/incidents(" + incidentId + ")", - }); + Object.assign(updateBody, { + "pinswg_appealcasetype": props.appealType.appealTypeID, + "pinswg_Appellant@odata.bind": + "/contacts(" + props.props.accountDetails.loggedinUserId + ")", + "pinswg_name": props.appealType.caseReference.ticketnumber, + [updateBindAppealTypeToIncident + "@odata.bind"]: + "/incidents(" + incidentId + ")", + }); - updateBody = JSON.stringify(updateBody); - updateBody = updateBody.replace(/:"Yes"/gm, `:true`); - updateBody = updateBody.replace(/:"No"/gm, `:false`); - updateBody = JSON.parse(updateBody); + updateBody = JSON.stringify(updateBody); + updateBody = updateBody.replace(/:"Yes"/gm, `:true`); + updateBody = updateBody.replace(/:"No"/gm, `:false`); + updateBody = JSON.parse(updateBody); - Object.keys(updateBody).forEach((key) => { - if (updateBody[key] === null) { - delete updateBody[key]; - } - if (key.indexOf("_") == 0) { - delete updateBody[key]; - } - }); + Object.keys(updateBody).forEach((key) => { + if (updateBody[key] === null) { + delete updateBody[key]; + } + if (key.indexOf("_") == 0) { + delete updateBody[key]; + } + }); - //console.log(updateBody); + //console.log(updateBody); - let updateFormCollection = - appTypeCollection.LogicalCollectionName; - let primaryAttribute = appTypeCollection.PrimaryIdAttribute; + let updateFormCollection = appTypeCollection.LogicalCollectionName; + let primaryAttribute = appTypeCollection.PrimaryIdAttribute; - const reference = "PEDW-PARTIAL"; - const templateId = "021b0a7b-df00-41f1-b94e-c269bee98c75"; - const templateIdCY = "f3c4a56b-bfb8-4d39-97dd-888df3062b0a"; - const emailAddress = - props.props.accountDetails.loggedinUserEmail; - const personalisation = { - "caseReference": - props.appealType.caseReference.ticketnumber, - "emailAddress": - props.props.accountDetails.loggedinUserEmail, - "returnLink": - props.props.url + - (router.locale != "en" - ? "/cy/fymhorth/" - : "/myportal/") + - appTypeCollection.UrlName + - "?lpa=" + - props.appealType.appealLPA + - "&apt=" + - appTypeCollection.appealTypeID + - "&casereference=" + - props.appealType.caseReference.ticketnumber + - "&inid=" + - props.appealType.caseReference.incidentid, - "linkExpiry": 10 * 60, - }; + const reference = "PEDW-PARTIAL"; + const templateId = "021b0a7b-df00-41f1-b94e-c269bee98c75"; + const templateIdCY = "f3c4a56b-bfb8-4d39-97dd-888df3062b0a"; + const emailAddress = props.props.accountDetails.loggedinUserEmail; + const personalisation = { + "caseReference": props.appealType.caseReference.ticketnumber, + "emailAddress": props.props.accountDetails.loggedinUserEmail, + "returnLink": + props.props.url + + (router.locale != "en" ? "/cy/fymhorth/" : "/myportal/") + + appTypeCollection.UrlName + + "?lpa=" + + props.appealType.appealLPA + + "&apt=" + + appTypeCollection.appealTypeID + + "&casereference=" + + props.appealType.caseReference.ticketnumber + + "&inid=" + + props.appealType.caseReference.incidentid, + "linkExpiry": 10 * 60, + }; - // console.log( - // "/////////////////////////////////", - // "returnLink:", - // props.props.url + - // (router.locale != "en" ? "/cy/fymhorth/" : "/myportal/") + - // appTypeCollection.UrlName + - // "?lpa=" + - // props.appealType.appealLPA + - // "&apt=" + - // appTypeCollection.appealTypeID + - // "&casereference=" + - // props.appealType.caseReference.ticketnumber + - // "&inid=" + - // props.appealType.caseReference.incidentid, - // "/////////////////////////////////" - // ); - }) - .then(() => { - sendSavedEmail == true && - sendEmail( - router.locale != "en" ? templateIdCY : templateId, - emailAddress, - personalisation, - reference - ); + // console.log( + // "/////////////////////////////////", + // "returnLink:", + // props.props.url + + // (router.locale != "en" ? "/cy/fymhorth/" : "/myportal/") + + // appTypeCollection.UrlName + + // "?lpa=" + + // props.appealType.appealLPA + + // "&apt=" + + // appTypeCollection.appealTypeID + + // "&casereference=" + + // props.appealType.caseReference.ticketnumber + + // "&inid=" + + // props.appealType.caseReference.incidentid, + // "/////////////////////////////////" + // ); - useSaveStatus && - router.replace( - router.locale != "en" - ? "/" + router.locale + "/myportal" - : "/myportal" - ); - }) - .then(() => { - setCompletedUploadFiles(true); - }); + sendSavedEmail == true && + sendEmail( + router.locale != "en" ? templateIdCY : templateId, + emailAddress, + personalisation, + reference + ); + + useSaveStatus && + router.replace( + router.locale != "en" + ? "/" + router.locale + "/myportal" + : "/myportal" + ); }; const onHandleSubmit = (values) => { @@ -617,7 +598,7 @@ let BuildSection = (props) => { "_pinswg_appellant_value" ]; - console.log("on save:", valuesObj); + //console.log("on save:", valuesObj); updateCaseProgress( valuesObj, true, diff --git a/locales/cy/newappeal.json b/locales/cy/newappeal.json index dee9e91f..5f2b5490 100644 --- a/locales/cy/newappeal.json +++ b/locales/cy/newappeal.json @@ -111,5 +111,5 @@ "planning-obligation-(s106/unilateral)": "Rhwymedigaeth gynllunio (S106/Unochrog)", "site-location-plan": "Cynllun Lleoliad Safle", "registration-of-application-letter": "Llythyr Cofrestru Cais", - "previously-added-files": "Ffeiliau a ychwanegwyd yn flaenorol" + "previously-added-files": "Ffeiliau wedi'u llwytho i fyny" } \ No newline at end of file diff --git a/locales/en/newappeal.json b/locales/en/newappeal.json index c50f2ff9..0143ee98 100644 --- a/locales/en/newappeal.json +++ b/locales/en/newappeal.json @@ -111,5 +111,5 @@ "planning-obligation-(s106/unilateral)": "Planning obligation (S106/Unilateral)", "site-location-plan": "Site Location Plan", "registration-of-application-letter": "Registration of Application letter", - "previously-added-files": "Previously added files" + "previously-added-files": "Uploaded files" } \ No newline at end of file diff --git a/pages/api/file/getbloblistproxy.js b/pages/api/file/getbloblistproxy.js new file mode 100644 index 00000000..65e8d007 --- /dev/null +++ b/pages/api/file/getbloblistproxy.js @@ -0,0 +1,49 @@ +import { + downloadAllProgressFiles, + getAllProgressBlobs, +} from "../../../actions/azurestorage"; +import _ from "lodash"; +import nextConnect from "next-connect"; +import middleware from "../middleware/middleware"; +import { + getToken, + azureHeaders, + consoleLogger, + hashAPIPath, +} from "../../../actions"; +import axios from "axios"; +import CryptoJS from "crypto-js"; + +const WORDKEY = process.env.HASHKEY; + +const WEBAPI_URL = + process.env.RELAY_ROOT || + "https://dev-pedw-ns.servicebus.windows.net/dev-pedw-hc/"; + +const BASE_URL = process.env.API_ROOT || `http://localhost:${port}`; + +export default async function ApiProxy(req, res) { + var containerName = req.query.container; + var casefolderID = req.query.casefolderID; + var checkHash = req.query.hash; + var token = await getToken(); + + var queryUrl = + "/api/file/getbloblist?container=" + + containerName + + "&casefolderID=" + + casefolderID; + + return axios + .get( + BASE_URL + queryUrl + hashAPIPath(queryUrl), + azureHeaders(token.access_token) + ) + .then(({ data }) => { + res.status(200).json(data); + }) + .catch((error) => { + consoleLogger(error); + res.status(400).json(error); + }); +}