fomrs split out

This commit is contained in:
2021-10-05 09:47:57 +01:00
parent 2ace28aa40
commit 8714d71189
48 changed files with 42577 additions and 146 deletions
+105
View File
@@ -0,0 +1,105 @@
import _ from "lodash";
import { useState } from "react";
import Head from "next/head";
import Header from "../../components/header";
import Banner from "../../components/banner";
import CookieBanner from "../../components/cookieBanner";
import Breadcrumbs from "../../components/breadcrumbs";
import Search from "../../components/search";
import Footer from "../../components/footer";
import Errorpage from "../../components/errorpage";
import styles from "../../styles/Home.module.css";
import { useSelector, shallowEqual, connect } from "react-redux";
import { wrapper } from "../../store/store";
import Cookies from "cookies";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import CRMError from "../../components/crmError";
import {
setAppealType,
setAppealTypeTitle,
setAppealTypeID,
setAppealLPA,
getAppealTypeObj,
} from "../../store/appealType/action";
import {
getAppealsTypes,
getLPA,
updateCase,
createCase,
getSASToken,
} from "../../actions";
import { setLPA } from "../../store/lpa/action";
const Home = (props) => {
const { footerLinks, pages } = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
const { appealtypes } = router.query;
console.log(props, props.LPAData);
var hasError =
_.has(props.LPAData.LPAData, "errorCode") ||
_.has(props.appealType.appealType, "errorCode")
? true
: false;
return (
<div>
<Head>
<title>
{t("search:page-title")} - {t("common:service-name")}
</title>
</Head>
<div id="page_wrapper">
<CookieBanner />
<Header courseName={t("common:service-name")} />
<div className="govuk-width-container">
<Banner />
<Breadcrumbs slug={appealtypes} />
{hasError ? (
<CRMError props={props} whichError="advancedSearch" />
) : (
<Search
lpadata={props.LPAData}
appealType={props.appealType}
/>
)}
</div>
<Footer footerLinks={footerLinks} />
</div>
</div>
);
};
export const getServerSideProps = wrapper.getServerSideProps(
(store) =>
async ({ query, req, res }) => {
const token = await getSASToken();
const [appealTypeData, lpaData] = await Promise.all([
await getAppealsTypes(token),
await getLPA(token),
]);
store.dispatch(setAppealType(appealTypeData));
store.dispatch(setLPA(lpaData));
}
);
const mapStateToProps = (state) => {
return {
search: state.search,
searchResultsObj: state.searchResultsObj,
formData: state.formData,
appealType: state.appealType,
LPAData: state.LPAData,
//form: state.form,
accountDetails: state.accountDetails,
};
};
export default connect(mapStateToProps)(Home);
+142
View File
@@ -0,0 +1,142 @@
import _ from "lodash";
import Head from "next/head";
import Header from "../../components/header";
import Banner from "../../components/banner";
import CookieBanner from "../../components/cookieBanner";
import Breadcrumbs from "../../components/breadcrumbs";
import SearchResults from "../../components/searchresults";
import Footer from "../../components/footer";
import Errorpage from "../../components/errorpage";
import styles from "../../styles/Home.module.css";
import { useSelector, shallowEqual, connect } from "react-redux";
import { wrapper } from "../../store/store";
import Cookies from "cookies";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import jsonpath from "jsonpath";
import data from "../../data/collections.json";
import { setSearch, getSearchObj } from "../store/search/action";
import {
setSearchResults,
setSearchDetails,
setDocumentDetails,
setDocumentHistory,
getSearchResultsObj,
} from "../../store/searchOutput/action";
import {
getAdvancedSearch,
getBasicSearchDetails,
getSearchDocumentDetails,
getSearchDocumentHistory,
getSASToken,
} from "../../actions";
const Home = (props) => {
const { footerLinks, pages } = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
const { appealtypes } = router.query;
return (
<div>
<Head>
<title>
{t("search:page-title")} - {t("common:service-name")}
</title>
</Head>
<div id="page_wrapper">
<CookieBanner />
<Header courseName={t("common:service-name")} />
<div className="govuk-width-container">
<Banner />
<Breadcrumbs slug={appealtypes} />
<SearchResults
searchString={props.search.searchString}
searchResultsObj={props.searchResultsObj}
advancedSearch={true}
/>
</div>
<Footer footerLinks={footerLinks} />
</div>
</div>
);
};
export const getServerSideProps = wrapper.getServerSideProps(
(store) =>
async ({ query, req, res }) => {
console.log("query-", query);
//console.log("search array:", Object.entries(query));
const token = await getSASToken();
const searchResultsObj = await getAdvancedSearch(token, query);
const searchDetailsObj = await getSearchDetails(
token,
searchResultsObj
);
store.dispatch(setSearchResults(searchResultsObj));
store.dispatch(setSearchDetails(searchDetailsObj));
}
);
const getFormCollection = (formtype) => {
const collectionName = jsonpath.query(
data,
"$..[?(@.LogicalName=='" + formtype + "')].LogicalCollectionName"
);
//console.log(collectionName[0]);
return collectionName[0];
};
const getSearchDetails = (token, searchResultsObj) => {
//console.log(searchResultsObj);
let detailsArr = [];
//console.log("searcg results", searchResultsObj);
searchResultsObj = searchResultsObj.value;
const detailsObj = searchResultsObj.map((searchDetail, index) => {
if (searchDetail.pinswg_appealcasetype == null) {
console.log(searchDetail.ticketnumber);
} else {
detailsArr.push(
getBasicSearchDetails(
token,
getFormCollection(
"pinswg_" +
searchDetail[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
]
.replace(/(\band|[\s\-\+\(\)\,\&])/g, "")
.toLowerCase()
.slice(0, 39)
),
searchDetail.ticketnumber
)
);
}
});
//console.log(detailsArr);
return Promise.all(detailsArr);
};
const mapStateToProps = (state) => {
return {
currentView: state.currentView,
search: state.search,
searchResultsObj: state.searchResultsObj,
formData: state.formData,
appealType: state.appealType,
form: state.form,
myCases: state.myCases,
watchedCases: state.watchedCases,
myRepresentations: state.myRepresentations,
awaitingSubmission: state.awaitingSubmission,
};
};
export default connect(mapStateToProps)(Home);
+118 -27
View File
@@ -44,6 +44,32 @@ import BuildSection from "../../components/newappeal/buildsection";
import BuildCheckSection from "../../components/newappeal/buildchecksection";
import CompleteAppeal from "../../components/newappeal/complete";
import AdvertsForm from "../../data/forms/adverts";
import Callinss77Form from "../../data/forms/callinss77";
import CommonLandForm from "../../data/forms/commonland";
import CommunityInfrastructureLevys117118119Form from "../../data/forms/communityinfrastructurelevys117118119";
import CompulsoryPurchaseOrdersForm from "../../data/forms/compulsorypurchaseorders";
import DNSForm from "../../data/forms/dns";
import ElectricityActForm from "../../data/forms/electricityact";
import EnforcementListedBuildingConservationapForm from "../../data/forms/enforcementlistedbuildingconservationap";
import EnforcementNoticeAppeals174Form from "../../data/forms/enforcementnoticeappeals174";
import EnvironmentalPermittingForm from "../../data/forms/environmentalpermitting";
import HarbourRevisionOrderForm from "../../data/forms/harbourrevisionorder";
import HedgesHedgerowsTreePreservationReplacemForm from "../../data/forms/hedgeshedgerowstreepreservationreplacem";
import HouseholderAppealHasForm from "../../data/forms/householderappealhas";
import LawfulDevelopmentCertificateForm from "../../data/forms/lawfuldevelopmentcertificate";
import LdpForm from "../../data/forms/ldp";
import ListedBuildingAndConservationAreaConsenForm from "../../data/forms/listedbuildingandconservationareaconsen";
import MaintenanceOfLands217Form from "../../data/forms/maintenanceoflands217";
import MiscellaneousCaseworkForm from "../../data/forms/miscellaneouscasework";
import NonValidationForm from "../../data/forms/nonvalidation";
import PlanningAppeals78Form from "../../data/forms/planningappeals78";
import PlanningConditionss73s79Form from "../../data/forms/planningconditionss73s79";
import PlanningObligationAppeals106Form from "../../data/forms/planningobligationappeals106";
import RowForm from "../../data/forms/row";
import TransportAndWorkActForm from "../../data/forms/transportandworkact";
import WayleaveForm from "../../data/forms/wayleave";
let Home = (props) => {
const { footerLinks, pages, formData } = props;
let { t, lang } = useTranslation();
@@ -90,25 +116,87 @@ let Home = (props) => {
(key) => optionsTitleObj[key] === appealtypes
);
//console.log(formTitle);
const getFormType = (appealType) => {
switch (appealType) {
case "adverts":
return <AdvertsForm props={props} />;
case "callinss77":
return <Callinss77Form props={props} />;
case "commonland":
return <CommonLandForm props={props} />;
case "communityinfrastructurelevys117118119":
return (
<CommunityInfrastructureLevys117118119Form props={props} />
);
case "compulsorypurchaseorders":
return <CompulsoryPurchaseOrdersForm props={props} />;
case "dns":
return <DNSForm props={props} />;
case "electricityact":
return <ElectricityActForm props={props} />;
case "enforcementlistedbuildingconservationap":
return (
<EnforcementListedBuildingConservationapForm
props={props}
/>
);
case "enforcementnoticeappeals174":
return <EnforcementNoticeAppeals174Form props={props} />;
case "environmentalpermitting":
return <EnvironmentalPermittingForm props={props} />;
case "harbourrevisionorder":
return <HarbourRevisionOrderForm props={props} />;
case "harbourrhedgeshedgerowstreepreservationreplacemevisionorder":
return (
<HedgesHedgerowsTreePreservationReplacemForm
props={props}
/>
);
case "householderappealhas":
return <HouseholderAppealHasForm props={props} />;
case "lawfuldevelopmentcertificate":
return <LawfulDevelopmentCertificateForm props={props} />;
// crm api query for looking up picklist fields/drop downs
// <url path to >/api/data/v8.2/EntityDefinitions(LogicalName='{appeal type form}')/Attributes(LogicalName='{drop down datafield name}')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=GlobalOptionSet($select=Options)
// eg https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/EntityDefinitions(LogicalName='pinswg_householderappealhas')/Attributes(LogicalName='pinswg_casetype')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=GlobalOptionSet($select=Options)
// query for labels in section eg for section 2 - /form/tabs/tab[2]//rows//labels
// query for getting guids of form element types /form/tabs/tab[*]//rows/row//control[@classid]/@classid
//
// 270BD3DB-D9AF-4782-9025-509E298DEC0A - read only
// 3EF39988-22BB-4f0b-BBBE-64B5A3748AEE - drop down list controlled by datafieldname for content - datafieldname picklist entity
// 67FAC785-CD58-4f9f-ABB3-4B7DDC6ED5ED - boolean flag / yes no radio button
// 4273EDBD-AC1D-40d3-9FB2-095C621B552D - text field
// 5B773807-9FB2-42db-97C3-7A91EFF8ADFF - date field
// E0DECE4B-6FC8-4a8f-A065-082708572369 - multiline
// C6D124CA-7EDA-4a60-AEA9-7FB8D318B68F - numeric field
// C3EFE0C3-0EC6-42be-8349-CBD9079DFD8E - decimal
case "ldp":
return <LdpForm props={props} />;
/// to get dropdowns names
// form/tabs/tab[*]//rows/row//control[@classid="{3EF39988-22BB-4f0b-BBBE-64B5A3748AEE}"]/@datafieldname
case "listedbuildingandconservationareaconsen":
return (
<ListedBuildingAndConservationAreaConsenForm
props={props}
/>
);
case "maintenanceoflands217":
return <MaintenanceOfLands217Form props={props} />;
case "miscellaneouscasework":
return <MiscellaneousCaseworkForm props={props} />;
case "nonvalidation":
return <NonValidationForm props={props} />;
case "planningappeals78":
return <PlanningAppeals78Form props={props} />;
case "planningconditionss73s79":
return <PlanningConditionss73s79Form props={props} />;
case "planningobligationappeals106":
return <PlanningObligationAppeals106Form props={props} />;
case "row":
return <RowForm props={props} />;
case "transportandworkact":
return <TransportAndWorkActForm props={props} />;
case "wayleave":
return <WayleaveForm props={props} />;
default:
return <Blank />;
}
re;
};
const { onSubmit } = props;
@@ -147,16 +235,19 @@ let Home = (props) => {
}
/>
) : (
<BuildSection
formXML={formXML}
sectionCount={sectionCount}
onSubmit={onSubmit}
formTitle={formTitle}
mandatoryFieldsData={
props.formData.mandatoryFieldsData
}
props={props}
/>
<>
<BuildSection
formXML={formXML}
sectionCount={sectionCount}
onSubmit={onSubmit}
formTitle={formTitle}
mandatoryFieldsData={
props.formData.mandatoryFieldsData
}
props={props}
/>
{/* {getFormType(appealtypes)} */}
</>
)}
</main>
</div>
+1 -6
View File
@@ -36,11 +36,6 @@ import {
import { setLPA } from "../../store/lpa/action";
const Home = (props) => {
// useEffect(() => {
// // updateCase("3ffcf47c-5811-ec11-aac9-00224800be9c", "846040004");
// createCase();
// });
const { footerLinks, pages, formData } = props;
let { t, lang } = useTranslation();
@@ -69,7 +64,7 @@ const Home = (props) => {
id="main-content"
role="main"
>
<h1>New Appeal</h1>
<h1>{t("newappeal:page-title")}</h1>
<CreateCase
LPAData={props.LPAData}
appealType={props.setAppealType}