import { JSONPath as jsonpath } from "jsonpath-plus"; import useTranslation from "next-translate/useTranslation"; import Link from "next/link"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; import { connect } from "react-redux"; import { formValueSelector, Field, reduxForm } from "redux-form"; import xpath from "xpath"; import fieldLookup from "../../data/crmfieldlookuptranslations.json"; import { setCurrentSection, setFormComplete, } from "../../store/appealType/action"; import BuildCheckRow from "./buildcheckrow"; import { generateAppealPDF, sendCaseCompleteMessage } from "../../actions"; import { bytesToSize, getThumbnailIconByExtension } from "../utils"; let BuildCheckSection = (props) => { useEffect(() => { setFormComplete(); }, []); let { t } = useTranslation(); const router = useRouter(); const { locale } = router; const { formXML, sectionCount, onSubmit, handleSubmit, formTitle, setCurrentSection, updateCurrentSection, mandatoryFieldsData, } = props; const parser = new DOMParser(); var doc = parser.parseFromString(props.formXML, "text/xml"); var titles = xpath.select( "//form/tabs/tab[*]/labels/label/@description", doc ); var rowXML = xpath.select( "/form/tabs/tab[*]/columns//sections/section/rows/row", doc ); var titleList = xpath.select( "//form/tabs/tab[*]/labels/label/@description", doc ); const handleParam = (setValue) => (e) => setValue(e.target.value); // const basicSearch = (event) => { // event.preventDefault(); // //console.log(query); // // /searchresults // }; const onHandleSubmit = (values) => { //alert(1); //updateCaseProgress(values); // setCurrentSection(9999); alert(1); }; let buildAppealFilesArray = []; //console.log("attached docs: - ", buildAppealFilesArray); buildAppealFilesArray = props.props.form.appealForm.values.filesList || []; let filesUploadObj = props.appealType.fileList.hasOwnProperty("value") ? props.appealType.fileList.value[0] : []; 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); 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; Object.assign(pdfObj, { "containerID": props.props.accountDetails.containerID, "casefolderID": props.appealType.caseReference.ticketnumber, }); const [confirmSections, setConfirmSections] = useState(false); const [finaliseAppealProcess, setFinaliseAppealProcess] = useState(false); const FieldsTranslations = (label) => { const router = useRouter(); const { locale } = router; const { appealtypes } = router.query; let formObj = jsonpath("$['" + appealtypes + "']", fieldLookup); let labelTrans = router.locale == "cy" ? jsonpath('$..[?(@.value=="' + label + '")].value_cy', formObj) : label; return labelTrans; }; const finaliseAppeal = async () => { //console.log("finalising appeal:", pdfObj); const uniqueArray = pdfObj.filesList.filter( (value, index, self) => index === self.findIndex((t) => t.name === value.name) ); pdfObj.filesList = uniqueArray; confirmSections ? (setFinaliseAppealProcess(true), await generateAppealPDF( pdfObj, props.props.accountDetails.containerID, props.appealType.caseReference.ticketnumber, router.query.appealtypes, pdfObj.filesList // props.appealType.fileList ) .then((data) => { console.log("have generated pdf:", data); sendCaseCompleteMessage( props.props.accountDetails.containerID, props.appealType.caseReference.ticketnumber, props.props.accountDetails.accountDetails .pinswg_typeofinvolvement ); }) .then(() => { //console.log("have sent complete message :"); setCurrentSection(9999); })) : setConfirmSections(false); }; return (

Are these answers correct?

{Object.keys(titles).map((key) => (

{FieldsTranslations(titles[key].value)}

))}
{/*
{buildAppealFilesArray.length > 0 ? buildAppealFilesArray.map((blob, i) => { return (
{blob.name}
{blob.name} ( {bytesToSize( blob.size || blob.contentLength )} )
{ setCurrentSection( sectionCount ); }} > {t( "newappeal:change-link-label" )}
); }) : ""}
*/}
{finaliseAppealProcess ? (

Finalising your appeal submission

Currenly uploading files and finalising your appeal submission

Please wait

) : ( <>
{ setConfirmSections( !confirmSections ); }} />

{t( "newappeal:new-appeal-check-confirm-paragraph-one" )}

{t( "newappeal:new-appeal-check-confirm-paragraph-two" )}{" "} {t( "newappeal:new-appeal-check-confirm-paragraph-two-link" )}

{ finaliseAppeal(); }} > {t("newappeal:submit-appeal-button")} setCurrentSection(sectionCount)} > {t("common:back-link")}
)}
); }; const mapStateToProps = (state) => { return { search: state.search, searchResultsObj: state.searchResultsObj, formData: state.formData, appealType: state.appealType, form: state.form, }; }; const mapDispatchToProps = (dispatch) => { return { setCurrentSection: (currentSection) => { dispatch(setCurrentSection(currentSection)); }, updateCurrentSection: (whichSection) => { dispatch(setCurrentSection(whichSection)); dispatch(setFormComplete("true")); }, }; }; // BuildCheckSection = reduxForm({ // // a unique name for the form // form: "sssappealForm", // destroyOnUnmount: false, // })(BuildCheckSection); const selector = formValueSelector("appealForm"); // <-- same as form name export default connect( mapStateToProps, mapDispatchToProps )( reduxForm({ form: "appealForm", destroyOnUnmount: false, enableReinitialize: true, // this is needed!! })(BuildCheckSection) );