From 4bf10d97db03adea4a8a4cad5fc38e0a592c0476 Mon Sep 17 00:00:00 2001 From: rdbsolutions Date: Sat, 16 Nov 2024 07:45:38 +0000 Subject: [PATCH] hooks fixes and ordering of events --- actions/index.js | 36 ++--- components/case/representation/index.js | 137 ++++++++++++++---- .../representationCompleteSubmit.js | 114 +++++++-------- .../representation/representationElements.js | 49 +++++-- .../case/representation/representationLPA.js | 37 +---- components/myportal/topthree_reps.js | 13 ++ 6 files changed, 234 insertions(+), 152 deletions(-) diff --git a/actions/index.js b/actions/index.js index e34e19ff..95cda19f 100644 --- a/actions/index.js +++ b/actions/index.js @@ -961,7 +961,7 @@ export const getRepsFromBlob = (containerName) => { }); }; -export const getRepsFromBlobProxy = (containerName) => { +export const getRepsFromBlobProxy = async (containerName) => { //console.log( // "///////////////////////getRepsFromBlobProxy: " + containerName, // "/api/file/getawaitingsubmissionfromblobproxy?container=" + @@ -969,8 +969,8 @@ export const getRepsFromBlobProxy = (containerName) => { // "\n///////////////////////\n" // ); - return axios - .get( + try { + const res = await axios.get( // BASE_URL + "/api/file/getrepsblobproxy?container=" + containerName // + @@ -978,16 +978,14 @@ export const getRepsFromBlobProxy = (containerName) => { // "/api/file/getawaitingsubmissionfromblob?container=" + // containerName // ) - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); + ); + return res.data; + } catch (error) { + consoleLogger(error); + } }; -export const getAwaitingSubmissionFromBlobProxy = (containerName) => { +export const getAwaitingSubmissionFromBlobProxy = async (containerName) => { console.log( "///////////////////////getAwaitingSubmissionFromBlobProxy: " + containerName, @@ -996,8 +994,8 @@ export const getAwaitingSubmissionFromBlobProxy = (containerName) => { "\n///////////////////////\n" ); - return axios - .get( + try { + const res = await axios.get( // BASE_URL + "/api/file/getawaitingsubmissionfromblobproxy?container=" + containerName @@ -1006,13 +1004,11 @@ export const getAwaitingSubmissionFromBlobProxy = (containerName) => { // "/api/file/getawaitingsubmissionfromblob?container=" + // containerName // ) - ) - .then((res) => { - return res.data; - }) - .catch((error) => { - consoleLogger(error); - }); + ); + return res.data; + } catch (error) { + consoleLogger(error); + } }; export const getPortalModuleDetails = async (appealType, caseReference) => { diff --git a/components/case/representation/index.js b/components/case/representation/index.js index 239b610d..b86d4750 100644 --- a/components/case/representation/index.js +++ b/components/case/representation/index.js @@ -2,7 +2,7 @@ import { JSONPath as jsonpath } from "jsonpath-plus"; import _ from "lodash"; import useTranslation from "next-translate/useTranslation"; import { useRouter } from "next/router"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { useDropzone } from "react-dropzone"; import { connect } from "react-redux"; import { formValueSelector, reduxForm } from "redux-form"; @@ -34,6 +34,9 @@ let MakeRepresentation = (props) => { const [clearRepForm, setClearRepForm] = useState(false); const [savingStatus, setSavingStatus] = useState(false); + const [showQuestionnaireSection, setShowQuestionnaireSection] = useState(1); + //const [questionnaireCount, setQuestionnaireCount] = useState(0); + const { data: session } = useSession(); const router = useRouter(); @@ -60,9 +63,33 @@ let MakeRepresentation = (props) => { let setCaseQueryObj = props[currentType] || {}; var casesObj = {}; - const [showQuestionnaireSection, setShowQuestionnaireSection] = useState(1); - const [questionnaireCount, setQuestionnaireCount] = useState(0); + const updateQuestionnaireCount = () => { + { + switch (currentView.caseReference.appealType) { + case 846040000: + case 846040001: + case 846040006: + case 846040025: + case 846040004: + case 846040018: + case 846040003: + case 846040009: + case 846040008: + return 7; + break; + case 846040005: + case 846040006: + case 846040007: + return 9; + break; + default: + return 7; + break; + } + } + }; + let questionnaireCount = updateQuestionnaireCount(); const setRepFileName = (values) => { //console.log("---------------\n", values); if ( @@ -347,12 +374,13 @@ let MakeRepresentation = (props) => { const whichControl = () => { if (isLPA && _.isEmpty(currentView.representationCapacity)) { return ( + //setRepresentationCapacity("lpa"), { break; case "lpa": //setRepresentationCapacity("appellant"); + //setRepresentationCapacity("lpa"); + // useEffect(() => { + // setRepresentationCapacity("lpa"); + // }, []); + + // console.log(currentView.caseReference.appealType); return ( { setShowQuestionnaireSection } showQuestionnaireSection={showQuestionnaireSection} - setQuestionnaireCount={setQuestionnaireCount} + //setQuestionnaireCount={setQuestionnaireCount} questionnaireCount={questionnaireCount} setRepFileName={setRepFileName} updateRepresentation={updateRepresentation} @@ -548,7 +582,7 @@ let MakeRepresentation = (props) => { setShowQuestionnaireSection={ setShowQuestionnaireSection } - setQuestionnaireCount={setQuestionnaireCount} + // setQuestionnaireCount={setQuestionnaireCount} questionnaireCount={questionnaireCount} /> ); @@ -566,7 +600,7 @@ let MakeRepresentation = (props) => { setShowQuestionnaireSection={ setShowQuestionnaireSection } - setQuestionnaireCount={setQuestionnaireCount} + //setQuestionnaireCount={setQuestionnaireCount} questionnaireCount={questionnaireCount} /> ); @@ -578,6 +612,53 @@ let MakeRepresentation = (props) => { } }; + const sortFileObj = (filelistObj) => { + let blobList = filelistObj; + + function removeObjectsWithUndefinedKey(arr, key) { + return arr.filter((obj) => obj[key] !== undefined); + } + + function removeEmptyObjects(arr) { + return arr.filter((obj) => Object.keys(obj).length > 0); + } + + blobList = removeEmptyObjects(blobList); + blobList = removeObjectsWithUndefinedKey(blobList, "name"); + + let buildAppealFilesArray = []; + + let filesUploadObj = field.input.value; + + for (let key in filesUploadObj) { + typeof filesUploadObj[key].name != "undefined" && + buildAppealFilesArray.push({ + "name": filesUploadObj[key].name, + "size": filesUploadObj[key].size, + }); + } + + buildAppealFilesArray = buildAppealFilesArray.concat(blobList); + + function removeDuplicates(arr) { + const seen = new Set(); + return arr.filter((obj) => { + const serializedObj = JSON.stringify(obj); + if (seen.has(serializedObj)) { + return false; // Skip this object (duplicate) + } + seen.add(serializedObj); // Add the serialized object to the "seen" set + return true; // Keep this object + }); + } + + buildAppealFilesArray = removeDuplicates(buildAppealFilesArray); + + blobList = buildAppealFilesArray; + + return blobList; + }; + const updateRepresentation = async ( values, sendSavedEmail, @@ -727,17 +808,18 @@ let MakeRepresentation = (props) => { ? router.locale + "/myportal" : "/myportal" )) - : values.hasOwnProperty("representationDocuments") && - (values.representationDocuments.map((Blob) => - buildFileArray.push({ - "name": Blob.name, - "size": Blob.size, - }) - ), - Object.assign(values, { - "filesList": buildFileArray, - })), - uploadRepresentationFiles(values), + : //values.hasOwnProperty("representationDocuments") && + // sortFileObj() + // (values.representationDocuments.map((Blob) => + // buildFileArray.push({ + // "name": Blob.name, + // "size": Blob.size, + // }) + // ), + // Object.assign(values, { + // "filesList": buildFileArray, + // })), + uploadRepresentationFiles(values), generateRepPDF( values, props.props.accountDetails.containerID, @@ -929,18 +1011,19 @@ let MakeRepresentation = (props) => { const repForm = props.props.form; - try { - let value = props.initialValues; - setRepresentationCapacity( - props.initialValues.representationCapacity.toLowerCase() - ); - //setRepresentationSubmit(false); - } catch { - console.log("not has props"); - } + // try { + // let value = props.initialValues; + // setRepresentationCapacity( + // props.initialValues.representationCapacity.toLowerCase() + // ); + // //setRepresentationSubmit(false); + // } catch { + // console.log("not has props"); + // } return (
+
hello {currentView.representationSubmit ? "yep" : "no"}
{currentView.representationSubmit == true ? ( { let { t } = useTranslation(); + const [confirmSections, setConfirmSections] = useState(false); const router = useRouter(); const { locale } = router; @@ -33,8 +34,6 @@ const RepCompleteSubmit = (props) => { )); - const [confirmSections, setConfirmSections] = useState(false); - const repFormData = formObj.representationForm.values; //const repDate = new Date(); @@ -133,29 +132,27 @@ const RepCompleteSubmit = (props) => { let buildAppealFilesArray = []; - let filesUploadObj = - formObj.representationForm.values.representationDocuments; + // let filesUploadObj = + // formObj.representationForm.values.representationDocuments; - for (let key in filesUploadObj) { - typeof filesUploadObj[key].name != "undefined" && - buildAppealFilesArray.push({ - "name": filesUploadObj[key].name, - "size": filesUploadObj[key].size, - }); - } + // for (let key in filesUploadObj) { + // typeof filesUploadObj[key].name != "undefined" && + // buildAppealFilesArray.push({ + // "name": filesUploadObj[key].name, + // "size": filesUploadObj[key].size, + // }); + // } - console.log( - buildAppealFilesArray, - formObj.representationForm.values.filesList - ); + // console.log( + // buildAppealFilesArray, + // formObj.representationForm.values.filesList + // ); buildAppealFilesArray = formObj.representationForm.values.hasOwnProperty( "filesList" ) - ? buildAppealFilesArray.concat( - formObj.representationForm.values.filesList - ) - : buildAppealFilesArray; + ? formObj.representationForm.values.filesList + : []; console.log(buildAppealFilesArray); @@ -163,19 +160,19 @@ const RepCompleteSubmit = (props) => { // ...new Map(buildAppealFilesArray.map((v) => [v.name, v])).values(), // ]; - buildAppealFilesArray = buildAppealFilesArray.filter(function (el) { - return el != null; - }); + // buildAppealFilesArray = buildAppealFilesArray.filter(function (el) { + // return el != null; + // }); - const arrUniq = buildAppealFilesArray.filter( - (obj1, i, arr) => arr.findIndex((obj2) => obj2.name === obj1.name) === i - ); + // const arrUniq = buildAppealFilesArray.filter( + // (obj1, i, arr) => arr.findIndex((obj2) => obj2.name === obj1.name) === i + // ); - console.log(arrUniq); + // console.log(arrUniq); - Object.assign(formObj.representationForm.values, { - "filesList": arrUniq, - }); + // Object.assign(formObj.representationForm.values, { + // "filesList": arrUniq, + // }); let filterFiles = []; return ( @@ -357,37 +354,36 @@ const RepCompleteSubmit = (props) => {
- {formObj.representationForm.values - .filesList.length > 0 - ? ((filterFiles = - formObj.representationForm.values.filesList.filter( - function (el) { - return el != null; - } - )), - filterFiles.map((blob, i) => ( -
- {blob.name} + {buildAppealFilesArray.length > 0 + ? buildAppealFilesArray.map( + (blob, i) => ( +
+ {blob.name} - - {blob.name} ( - {bytesToSize( - blob.size - )} - ) - -
- ))) - : ""}{" "} + + {blob.name} ( + {bytesToSize( + blob.size + )} + ) + +
+ ) + ) + : ""}
diff --git a/components/case/representation/representationElements.js b/components/case/representation/representationElements.js index 444045d0..70927e13 100644 --- a/components/case/representation/representationElements.js +++ b/components/case/representation/representationElements.js @@ -966,21 +966,46 @@ export const RenderFileUpload = (field) => { let blobList = filelistObj; - // let buildAppealFilesArray = []; + function removeObjectsWithUndefinedKey(arr, key) { + return arr.filter((obj) => obj[key] !== undefined); + } - // let filesUploadObj = field.input.value; + function removeEmptyObjects(arr) { + return arr.filter((obj) => Object.keys(obj).length > 0); + } - // for (let key in filesUploadObj) { - // typeof filesUploadObj[key].name != "undefined" && - // buildAppealFilesArray.push({ - // "name": filesUploadObj[key].name, - // "size": filesUploadObj[key].size, - // }); - // } + blobList = removeEmptyObjects(blobList); + blobList = removeObjectsWithUndefinedKey(blobList, "name"); - // buildAppealFilesArray = buildAppealFilesArray.concat(blobList); + let buildAppealFilesArray = []; - // blobList = buildAppealFilesArray; + let filesUploadObj = field.input.value; + + for (let key in filesUploadObj) { + typeof filesUploadObj[key].name != "undefined" && + buildAppealFilesArray.push({ + "name": filesUploadObj[key].name, + "size": filesUploadObj[key].size, + }); + } + + buildAppealFilesArray = buildAppealFilesArray.concat(blobList); + + function removeDuplicates(arr) { + const seen = new Set(); + return arr.filter((obj) => { + const serializedObj = JSON.stringify(obj); + if (seen.has(serializedObj)) { + return false; // Skip this object (duplicate) + } + seen.add(serializedObj); // Add the serialized object to the "seen" set + return true; // Keep this object + }); + } + + buildAppealFilesArray = removeDuplicates(buildAppealFilesArray); + + blobList = buildAppealFilesArray; const deleteThisBlob = async ( containerName, @@ -1054,7 +1079,7 @@ export const RenderFileUpload = (field) => { {field.meta.touched && field.meta.error && ( {field.meta.error} )} - {files && Array.isArray(files) && ( + {blobList && Array.isArray(files) && (
    {files.map( (file, i) => diff --git a/components/case/representation/representationLPA.js b/components/case/representation/representationLPA.js index aac77cc3..9efe74c5 100644 --- a/components/case/representation/representationLPA.js +++ b/components/case/representation/representationLPA.js @@ -5,7 +5,7 @@ import { useRouter } from "next/router"; import { useDropzone } from "react-dropzone"; import { connect } from "react-redux"; import { Field, change, formValueSelector, reduxForm } from "redux-form"; -import { useState } from "react"; +import { useState, useEffect } from "react"; import { FileUploadField, @@ -41,7 +41,6 @@ let RepLPA = (props) => { } = props; const { acceptedFiles, getRootProps, getInputProps } = useDropzone(); const [savingStatus, setSavingStatus] = useState(false); - const files = acceptedFiles.map((file) => (
  • {file.path} - {file.size} bytes @@ -49,34 +48,6 @@ let RepLPA = (props) => { )); const required = (value) => (value ? undefined : "Required"); - const updateQuestionnaireCount = () => { - { - switch (currentView.caseReference.appealType) { - case 846040000: - case 846040001: - case 846040006: - case 846040025: - case 846040004: - case 846040018: - case 846040003: - case 846040009: - case 846040008: - setQuestionnaireCount(7); - break; - - case 846040005: - case 846040006: - case 846040007: - setQuestionnaireCount(9); - - break; - default: - setQuestionnaireCount(7); - - break; - } - } - }; const whichQuestionnaire = () => { { switch (currentView.caseReference.appealType) { @@ -90,7 +61,6 @@ let RepLPA = (props) => { case 846040009: case 846040008: case 846040017: - updateQuestionnaireCount(); return ( { case 846040005: case 846040006: case 846040007: - updateQuestionnaireCount(); return ( { ); resultsObj = resultsObj[0]; - props.formObj["representationForm"].hasOwnProperty("values") && + props.formObj.hasOwnProperty("representationForm") && + props.formObj["representationForm"].hasOwnProperty("values") && props.formObj["representationForm"].values.hasOwnProperty( "representationCapacity" ) && @@ -409,7 +379,6 @@ let RepLPA = (props) => { Back )} - {savingStatus ? ( {router.locale == "cy" diff --git a/components/myportal/topthree_reps.js b/components/myportal/topthree_reps.js index 6a445648..5bd02076 100644 --- a/components/myportal/topthree_reps.js +++ b/components/myportal/topthree_reps.js @@ -21,6 +21,7 @@ import { import { setCurrentReference, setCurrentView, + setRepresentationCapacity, } from "../../store/currentView/action"; import { setMyRepresentations, @@ -45,6 +46,7 @@ const TopThree = (props) => { setAwaitingSubmissionDetails, setMyRepresentations, setMyRepresentationsDetails, + setRepresentationCapacity, } = props; const router = useRouter(); @@ -107,6 +109,13 @@ const TopThree = (props) => { }); }; + const isLPA = + props.accountDetails.accountDetails[ + "pinswg_typeofinvolvement@OData.Community.Display.V1.FormattedValue" + ] == "LPA" + ? true + : false; + const deleteRepItem = (containerID, caseID, repfile) => { let cookies = parseCookies(); //console.log("sssss", containerID, caseID, repfile); @@ -205,6 +214,7 @@ const TopThree = (props) => { showTopThreeArr[key].appealType, "repDetails": showTopThreeArr[key], }); + isLPA && setRepresentationCapacity("lpa"); }} > {showTopThreeArr[key].pinswg_name} @@ -343,6 +353,9 @@ const mapDispatchToProps = (dispatch) => { setMyRepresentationsDetails: (myRepresentationsDetails) => { dispatch(setMyRepresentationsDetails(myRepresentationsDetails)); }, + setRepresentationCapacity: (representationCapacity) => { + dispatch(setRepresentationCapacity(representationCapacity)); + }, }; };