import Link from "next/link"; import _, { has } from "lodash"; import { useRouter } from "next/router"; import useTranslation from "next-translate/useTranslation"; import { useState, useEffect } from "react"; import xpath from "xpath"; import BuildRow from "./buildrow"; import { reduxForm, formValueSelector, getFormSubmitErrors } from "redux-form"; import { useDispatch, useSelector, shallowEqual, connect } from "react-redux"; import { setCaseReference, setCurrentSection, setDocumentsList, } from "../../store/appealType/action"; import { getFormCollectionByID } from "../utils"; import { updateCase, patchCase } from "../../actions"; import { FieldsTranslations } from "../elements"; import { query } from "jsonpath"; let BuildSection = (props) => { // useEffect(() => { // window.scrollTo(0, 0); // }); let { t } = useTranslation(); const router = useRouter(); const { locale } = router; const { formXML, sectionCount, onSubmit, handleSubmit, load, pristine, reset, formTitle, setCurrentSection, refno, gotoSection, mandatoryFieldsData, } = props; const documentListObj = props.appealType.documentList; const currentSection = props.appealType.currentSection; const parser = new DOMParser(); var doc = parser.parseFromString(props.formXML, "text/xml"); var titles = xpath.select( "//form/tabs/tab[" + currentSection + " ]/labels/label/@description", doc ); var rowXML = xpath.select( "/form/tabs/tab[" + currentSection + "]/columns//sections/section/rows/row", //"/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 updateCaseProgress = (values) => { let incidentId = props.appealType.caseReference.incidentid; let updateBody = values || {}; let appTypeCollection = getFormCollectionByID( props.appealType.appealTypeID ); let updateBindAppealTypeToIncident = appTypeCollection.NavigationProperty; Object.assign(updateBody, { "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); Object.keys(updateBody).forEach((key) => { if (updateBody[key] === null) { delete updateBody[key]; } if (key.indexOf("_") == 0) { delete updateBody[key]; } }); console.log(updateBody); let updateFormCollection = appTypeCollection.LogicalCollectionName; let primaryAttribute = appTypeCollection.PrimaryIdAttribute; console.log( incidentId, updateBody, updateFormCollection, primaryAttribute, props.appealType.caseReference.ticketnumber ); updateCase( incidentId, updateBody, updateFormCollection, primaryAttribute, props.appealType.caseReference.ticketnumber ); //console.log("patching////////"); //patchCase(incidentId); }; const onHandleSubmit = (values) => { //alert(1); //updateCaseProgress(values); setCurrentSection(currentSection + 1); }; const [hasErrors, setHasErrors] = useState(""); const getErrors = () => { let errorsobj = props.props.form["appealForm"]; //setHasErrors(errorsobj.hasOwnProperty("syncErrors")); window.scrollTo(0, 0); }; let errorsobj = {}; const ShowErrorHeader = (props) => { errorsobj = props.props.appealForm.syncErrors; errorsobj = _.keys(errorsobj); const getErrorLabel = (whichField) => { var doc = parser.parseFromString(props.formXML, "text/xml"); var errorFieldLabel = xpath.select( "//*[control/@id='" + whichField + "']//@description", doc ); return errorFieldLabel[0].value; }; const ShowErrors = () => { let errorList = []; for (let i = 0; i < errorsobj.length; ++i) { //get label from error key - search rowxml for id = errorobj errorList.push(
  • {" "} {getErrorLabel(errorsobj[i])}
  • ); } return errorList; }; return !_.isEmpty(errorsobj) ? (

    The following fields have a problem :

    ) : ( "" ); }; return (

    {titles[0].value}

    {hasErrors == true ? ( ) : ( "" )}
    {props.sectionCount != currentSection ? ( ) : ( "" )} {props.sectionCount == currentSection ? ( ) : ( "" )} {currentSection > 1 ? ( setCurrentSection(currentSection - 1) } > Back ) : ( "" )}
    {Object.keys(documentListObj).length > 0 && (

    {t("newappeal:new-appeal-documentlist-nav")}:


        1. {Object.entries( documentListObj ).map(([key, value]) => { return (
        2. {value}
        3. ); })}
    )}
    ); }; 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 mapDispatchToProps = (dispatch) => { return { setCurrentSection: (currentSection) => { dispatch(setCurrentSection(currentSection)); }, gotoSection: (thisSection) => { dispatch(setCurrentSection(thisSection)); }, setDocumentsList: (documentList) => { dispatch(setDocumentsList(documentList)); }, }; }; const selector = formValueSelector("appealForm"); // <-- same as form name export default connect( mapStateToProps, mapDispatchToProps )( reduxForm({ form: "appealForm", destroyOnUnmount: false, enableReinitialize: true, // this is needed!! })(BuildSection) );