diff --git a/actions/azurestorage.js b/actions/azurestorage.js
index eab8146f..5af1760f 100644
--- a/actions/azurestorage.js
+++ b/actions/azurestorage.js
@@ -501,10 +501,10 @@ export const deleteBlobCase = async (containerName, blobName) => {
}
//containerClient.deleteBlob(blobName);
- console.log(`deleted blob ${blobName}`);
- for await (const blob of containerClient.listBlobsFlat()) {
- console.log(" ------ :", blob.name);
- }
+ // console.log(`deleted blob ${blobName}`);
+ // for await (const blob of containerClient.listBlobsFlat()) {
+ // console.log(" ------ :", blob.name);
+ // }
return { "deleted": blobName };
};
diff --git a/components/case/representation/representationElements.js b/components/case/representation/representationElements.js
index adc14a0f..4a5cb881 100644
--- a/components/case/representation/representationElements.js
+++ b/components/case/representation/representationElements.js
@@ -6,9 +6,9 @@ import React, { useMemo, useState } from "react";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import Dropzone from "react-dropzone";
-import "react-quill/dist/quill.snow.css";
+import "react-quill-new/dist/quill.snow.css";
import { Field } from "redux-form";
-const ReactQuill = dynamic(() => import("react-quill"), { ssr: false });
+const ReactQuill = dynamic(() => import("react-quill-new"), { ssr: false });
import {
addDays,
diff --git a/components/elements/index.js b/components/elements/index.js
index acfb19a0..a7748b4c 100644
--- a/components/elements/index.js
+++ b/components/elements/index.js
@@ -24,8 +24,8 @@ import {
subMonths,
subYears,
} from "date-fns";
-import "react-quill/dist/quill.snow.css";
-const ReactQuill = dynamic(() => import("react-quill"), { ssr: false });
+import "react-quill-new/dist/quill.snow.css";
+const ReactQuill = dynamic(() => import("react-quill-new"), { ssr: false });
const RenderTextfield = ({
id,
diff --git a/components/myportal/awaitingsubmissionfromblob.js b/components/myportal/awaitingsubmissionfromblob.js
index 53f15827..78875b50 100644
--- a/components/myportal/awaitingsubmissionfromblob.js
+++ b/components/myportal/awaitingsubmissionfromblob.js
@@ -26,20 +26,31 @@ const AwaitingSubmissionFromBlob = (props) => {
const { locale } = router;
const { setCurrentView } = props;
+ function sortByISODate(arr, dateKey) {
+ return arr.sort((a, b) => new Date(b[dateKey]) - new Date(a[dateKey]));
+ }
+
+ function sortByField(arr, field, ascending = true) {
+ return arr.sort((a, b) => {
+ if (a[field] < b[field]) return ascending ? -1 : 1;
+ if (a[field] > b[field]) return ascending ? 1 : -1;
+ return 0; // Equal
+ });
+ }
+ function filterByExistingFieldValue(arr, filterArr, field) {
+ const filterValues = filterArr.map((item) => item[field]);
+ return arr.filter((item) => !filterValues.includes(item[field]));
+ }
+
let topthreeRowArr = [];
let showTopThreeArr = props.awaitingSubmissionFromBlob.value;
let showTopThreeArrDets = props.awaitingSubmissionFromBlob.case;
- Object.keys(showTopThreeArrDets).map((key, index) => {
- let createdDate = showTopThreeArrDets[key].createdon;
- showTopThreeArr[key].createdDate = createdDate;
- });
+ showTopThreeArr = sortByField(showTopThreeArr, "pinswg_name");
+ showTopThreeArrDets = sortByField(showTopThreeArrDets, "ticketnumber");
- showTopThreeArr.sort(function compare(a, b) {
- var dateA = new Date(a.createdDate);
- var dateB = new Date(b.createdDate);
- return dateB - dateA;
- });
+ showTopThreeArr = sortByISODate(showTopThreeArr, "createdDate");
+ showTopThreeArrDets = sortByISODate(showTopThreeArrDets, "createdon");
const raisedDate = (datePart) => {
var dateObj = new Date(datePart);
diff --git a/components/newappeal/buildcheckrow.js b/components/newappeal/buildcheckrow.js
index e65c1d89..29d8c515 100644
--- a/components/newappeal/buildcheckrow.js
+++ b/components/newappeal/buildcheckrow.js
@@ -23,6 +23,7 @@ let BuildCheckRow = (props) => {
sectionCount,
onSubmit,
updateCurrentSection,
+ setCurrentSection,
mandatoryFieldsData,
} = props;
@@ -161,20 +162,19 @@ let BuildCheckRow = (props) => {
)
: fieldtype[0].value ==
"{16D63FD6-119B-4353-BDCA-18358721C3FE}"
- ? (console.log(
+ ? console.log(
props.props.form[
"appealForm"
].values[
datafieldname[0].value
]
- ),
- (
sdfsd eeefsdfs
))
+ )
: fieldtype[0].value ==
"{0273EDBD-AC1D-40d3-9FB2-095C621B552D}"
? props.props.form[
"appealForm"
].values[
- datafieldname[0].value
+ datafieldname[0].value[0]
].map((tenant, index) => {
return (
{
className="govuk-link"
href="#"
onClick={() => {
- updateCurrentSection(
+ setCurrentSection(
whichSection
);
}}
@@ -248,6 +248,9 @@ let BuildCheckRow = (props) => {
const mapDispatchToProps = (dispatch) => {
return {
+ setCurrentSection: (currentSection) => {
+ dispatch(setCurrentSection(currentSection));
+ },
updateCurrentSection: (whichSection) => {
dispatch(setCurrentSection(whichSection));
dispatch(setFormComplete("true"));
diff --git a/components/newappeal/buildchecksection.js b/components/newappeal/buildchecksection.js
index 29f0f4ce..0c0816eb 100644
--- a/components/newappeal/buildchecksection.js
+++ b/components/newappeal/buildchecksection.js
@@ -4,7 +4,7 @@ import Link from "next/link";
import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import { connect } from "react-redux";
-import { formValueSelector } from "redux-form";
+import { formValueSelector, Field, reduxForm } from "redux-form";
import xpath from "xpath";
import fieldLookup from "../../data/crmfieldlookuptranslations.json";
import {
@@ -55,11 +55,11 @@ let BuildCheckSection = (props) => {
const handleParam = (setValue) => (e) => setValue(e.target.value);
- const basicSearch = (event) => {
- event.preventDefault();
- console.log(query);
- // /searchresults
- };
+ // const basicSearch = (event) => {
+ // event.preventDefault();
+ // //console.log(query);
+ // // /searchresults
+ // };
const onHandleSubmit = (values) => {
//alert(1);
@@ -71,32 +71,37 @@ let BuildCheckSection = (props) => {
let buildAppealFilesArray = [];
//console.log("attached docs: - ", buildAppealFilesArray);
+ buildAppealFilesArray = props.props.form.appealForm.values.filesList || [];
- // let filesUploadObj = Object.keys(props.props.form.appealForm.values)
- // .filter(function (k) {
- // return k.indexOf("pinswg_fileUpload") == 0;
- // })
- // .reduce(function (newData, k) {
- // newData[k] = props.props.form.appealForm.values[k];
- // return newData;
- // }, {});
+ let filesUploadObj = props.appealType.fileList.value[0];
- // for (let key in filesUploadObj) {
- // for (let j in filesUploadObj[key]) {
- // typeof filesUploadObj[key][j].name != "undefined" &&
- // buildAppealFilesArray.push({
- // "name": filesUploadObj[key][j].name,
- // "size": filesUploadObj[key][j].size,
- // });
- // }
- // }
-
- buildAppealFilesArray = props.props.form.appealForm.values.filesList;
+ for (let key in filesUploadObj) {
+ typeof filesUploadObj[key].name != "undefined" &&
+ buildAppealFilesArray.push({
+ "name": filesUploadObj[key].name,
+ "size": filesUploadObj[key].contentLength,
+ });
+ }
buildAppealFilesArray.filter(function (item, idx) {
return item.name;
});
- console.log(buildAppealFilesArray);
+ //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 = removeDuplicates(buildAppealFilesArray, "name");
let pdfObj = props.props.form.appealForm.values;
@@ -124,7 +129,7 @@ let BuildCheckSection = (props) => {
const finaliseAppeal = async () => {
setFinaliseAppealProcess(true);
- console.log("finalising appeal:");
+ //console.log("finalising appeal:");
await generateAppealPDF(
pdfObj,
props.props.accountDetails.containerID,
@@ -141,7 +146,7 @@ let BuildCheckSection = (props) => {
);
})
.then(() => {
- console.log("have sent complete message :");
+ //console.log("have sent complete message :");
setCurrentSection(9999);
});
};
@@ -208,7 +213,7 @@ let BuildCheckSection = (props) => {
className="govuk-link"
href="#"
onClick={() => {
- updateCurrentSection(
+ setCurrentSection(
sectionCount
);
}}
@@ -300,6 +305,15 @@ let BuildCheckSection = (props) => {
>
{t("newappeal:submit-appeal-button")}
+
+ setCurrentSection(sectionCount - 1)
+ }
+ >
+ {t("common:back-link")}
+
>
)}
@@ -338,4 +352,13 @@ const mapDispatchToProps = (dispatch) => {
const selector = formValueSelector("appealForm"); // <-- same as form name
-export default connect(mapStateToProps, mapDispatchToProps)(BuildCheckSection);
+export default connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(
+ reduxForm({
+ form: "appealForm",
+ destroyOnUnmount: false,
+ enableReinitialize: true, // this is needed!!
+ })(BuildCheckSection)
+);
diff --git a/components/newappeal/buildprogress.js b/components/newappeal/buildprogress.js
index 0318d7f5..ff2a525d 100644
--- a/components/newappeal/buildprogress.js
+++ b/components/newappeal/buildprogress.js
@@ -126,6 +126,53 @@ const BuildProgress = (props) => {
))}
+ {/*
+
+ */}
diff --git a/components/newappeal/buildsection.js b/components/newappeal/buildsection.js
index 7da6aaaf..3a06da3b 100644
--- a/components/newappeal/buildsection.js
+++ b/components/newappeal/buildsection.js
@@ -99,10 +99,10 @@ let BuildSection = (props) => {
//console.log(fileListObj);
- console.log(
- "\n////////////////////////\n upload files:",
- props.props.accountDetails.containerID
- );
+ // console.log(
+ // "\n////////////////////////\n upload files:",
+ // props.props.accountDetails.containerID
+ // );
var dataObj = values;
@@ -130,7 +130,7 @@ let BuildSection = (props) => {
let incidentId = props.appealType.caseReference.incidentid;
let updateBody = values || {};
let buildAppealFilesArray = [];
- console.log("attached docs: - ", buildAppealFilesArray);
+ //console.log("attached docs: - ", buildAppealFilesArray);
let filesUploadObj = Object.keys(values)
.filter(function (k) {
@@ -141,7 +141,7 @@ let BuildSection = (props) => {
return newData;
}, {});
- console.log(filesUploadObj);
+ //console.log(filesUploadObj);
for (let key in filesUploadObj) {
for (let j in filesUploadObj[key]) {
@@ -167,14 +167,14 @@ let BuildSection = (props) => {
setSavingStatus(useSaveStatus);
uploadAppealFiles(values);
- 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;
@@ -251,22 +251,22 @@ let BuildSection = (props) => {
"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,
- "/////////////////////////////////"
- );
+ // 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,
+ // "/////////////////////////////////"
+ // );
sendSavedEmail == true &&
sendEmail(
@@ -297,7 +297,7 @@ let BuildSection = (props) => {
return newData;
}, {});
- console.log(filesUploadObj);
+ //console.log(filesUploadObj);
for (let key in filesUploadObj) {
for (let j in filesUploadObj[key]) {
@@ -308,13 +308,13 @@ let BuildSection = (props) => {
}
}
- console.log(buildAppealFilesArray);
+ //console.log(buildAppealFilesArray);
setFilesForAppeal(buildAppealFilesArray);
// Object.assign(values, { "filesList": buildAppealFilesArray });
delete valuesObj["_pinswg_appellant_value"];
- console.log("has errors:", props.invalid);
+ //console.log("has errors:", props.invalid);
props.invalid == false && updateCaseProgress(valuesObj, false, false);
setCurrentSection(currentSection + 1);
@@ -467,16 +467,16 @@ let BuildSection = (props) => {
props.props.form[props.form]
.values || {};
- console.log(
- "valuesobj:",
- valuesObj
- );
+ // console.log(
+ // "valuesobj:",
+ // valuesObj
+ // );
delete valuesObj[
"_pinswg_appellant_value"
];
- console.log("on save:", valuesObj);
+ // console.log("on save:", valuesObj);
updateCaseProgress(
valuesObj,
true,
@@ -487,6 +487,13 @@ let BuildSection = (props) => {
{t("common:save-exit-button")}
)}
+ {/*
+ setCurrentSection(sectionCount + 1)
+ }
+ >
+ goto check
+ */}
>
) : (
""
@@ -622,15 +629,22 @@ let BuildSection = (props) => {
);
};
-const mapStateToProps = (state) => {
- return {
- search: state.search,
- searchResultsObj: state.searchResultsObj,
- formData: state.formData,
- appealType: state.appealType,
- initialValues: state.appealType.caseReference.caseDetails,
- //form: state.form,
- };
+const mapStateToProps = (state, ownProps) => {
+ return ownProps.props.hasOwnProperty("initialValues")
+ ? {
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ formData: state.formData,
+ appealType: state.appealType,
+ initialValues: state.appealType.caseReference.caseDetails,
+ }
+ : {
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ formData: state.formData,
+ appealType: state.appealType,
+ //form: state.form,
+ };
};
const mapDispatchToProps = (dispatch) => {
diff --git a/package.json b/package.json
index 71bbce3e..5dbe6827 100644
--- a/package.json
+++ b/package.json
@@ -75,7 +75,7 @@
"react-leaflet": "^4.2.1",
"react-pdf": "^7.6.0",
"react-pdf-html": "^1.1.18",
- "react-quill": "^2.0.0",
+ "react-quill-new": "^3.3.3",
"react-redux": "^7.2.6",
"redux": "^4.2.1",
"redux-form": "^8.3.10",
@@ -97,4 +97,4 @@
"eslint-plugin-jsdoc": "^48.2.3",
"prisma": "^5.0.0"
}
-}
+}
\ No newline at end of file