Merge from git

This commit is contained in:
2021-11-01 11:21:39 +00:00
parent adcff32d73
commit d94b3b3e5a
210 changed files with 69742 additions and 3359 deletions
+240 -53
View File
@@ -9,20 +9,33 @@ 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 { useEffect } from "react";
import {
setLoggedInUserId,
setAccountDetails,
} from "../../store/accountDetails/action";
import {
setAppealType,
setAppealTypeTitle,
setAppealTypeID,
getAppealTypeObj,
setAppealLPA,
setCaseReference,
} from "../../store/appealType/action";
import { setForm, getFormObj } from "../../store/formData/action";
import { getFormData, getAppealsTypes, createCase } from "../../actions";
import {
getSASToken,
getFormData,
getAppealsTypes,
getMandatoryFields,
createCase,
getPickLists,
updateCase,
} from "../../actions";
import xpath from "xpath";
import { reduxForm, FormName } from "redux-form";
@@ -31,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();
@@ -52,24 +91,22 @@ let Home = (props) => {
doc
);
var sectionCount = xpath.select("/form/tabs/tab[*]", doc);
sectionCount = sectionCount.length;
sectionCount = 1; //sectionCount.length;
var tabs = xpath.select("//form/tabs/tab[*]", doc);
let optionsStr = props.appealType.appealTypeOptions.GlobalOptionSet.Options;
let optionsStr = props.appealType.appealTypeOptions.value;
let selectedObj = jsonpath.query(
optionsStr,
"$..LocalizedLabels[?(@.Label)].Label"
);
let selectedObj = jsonpath.query(optionsStr, "$..value");
//let optionsTitleObj = [];
const optionsTitleObj = selectedObj.reduce(
(obj, arrValue) => (
(obj[arrValue] = arrValue
.replace(/[\s\-\+\(\)\,]/g, "")
.toLowerCase()),
.replace(/(\band|[\s\-\+\(\)\,\&])/g, "")
.toLowerCase()
.slice(0, 39)),
obj
),
{}
@@ -79,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 <HouseholderAppealHasForm props={props} />;
}
re;
};
const { onSubmit } = props;
@@ -105,15 +204,75 @@ let Home = (props) => {
<div>
<Head>
<title>
{t("search:page-title")} - {t("common:service-name")}
{t("newappeal:page-title")} - {t("common:service-name")}
</title>
<>
<link
rel="canonical"
href={t("common:gov-wales-link") + router.asPath}
/>
<meta
key="og:locale"
property="og:locale"
content={router.locale}
/>
{/* If they have a Twitter Handle, include the meta details below */}
<meta
key="og:site_name"
property="og:site_name"
content={t("common:service-name")}
/>
<meta
key="twitter:site"
property="twitter:site"
content="@UKGovWales"
/>
<meta
name="description"
content={t("common:service-description")}
/>
<meta
property="og:site_name"
content={t("common:gov-wales-label")}
/>
<meta
property="og:title"
content={t("newappeal:page-title")}
/>
<meta
property="og:description"
content={t("common:service-description")}
/>
<meta property="og:type" content="website" />
<meta
property="og:url"
content={t("common:gov-wales-link")}
/>
<meta
property="og:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-1200.png"
/>
<meta name="twitter:card" content="summary" />
<meta
name="twitter:title"
content={t("common:gov-wales-label")}
/>
<meta
name="twitter:url"
content={t("common:gov-wales-link") + router.asPath}
/>
<meta
name="twitter:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-120.png"
/>
</>
</Head>
<div id="page_wrapper">
<CookieBanner />
<Header courseName={t("common:service-name")} />
<div className="govuk-width-container">
<Banner />
<Breadcrumbs slug={appealtypes} formTitle={formTitle} />
<main
className="govuk-main-wrapper--auto-spacing"
@@ -121,7 +280,7 @@ let Home = (props) => {
role="main"
>
{props.appealType.currentSection == 9999 ? (
<CompleteAppeal />
<CompleteAppeal props={props} />
) : props.appealType.currentSection ==
sectionCount + 1 ? (
<BuildCheckSection
@@ -131,15 +290,24 @@ let Home = (props) => {
formTitle={formTitle}
appealType={props.appealType}
props={props}
mandatoryFieldsData={
props.formData.mandatoryFieldsData
}
/>
) : (
<BuildSection
formXML={formXML}
sectionCount={sectionCount}
onSubmit={onSubmit}
formTitle={formTitle}
props={props}
/>
<>
<BuildSection
formXML={formXML}
sectionCount={sectionCount}
onSubmit={onSubmit}
formTitle={formTitle}
mandatoryFieldsData={
props.formData.mandatoryFieldsData
}
props={props}
/>
{/* {getFormType(appealtypes)} */}
</>
)}
</main>
</div>
@@ -151,24 +319,42 @@ let Home = (props) => {
};
export const getServerSideProps = wrapper.getServerSideProps(
(store) =>
async ({ query, req, res }) => {
//console.log("the query", query);
const [appealTypeData, formdata] = await Promise.all([
await getAppealsTypes(),
await getFormData(query.appealtypes),
]);
(store) => async (ctx) => {
const { query, req, res } = ctx;
const { cookies } = req;
const caseReference = createCase("asasa", "asasa");
console.log(cookies);
console.log("the query", query);
let loggedInUser = cookies.pinsUser;
let xmlStr = formdata;
xmlStr = formdata.value[0].formxml;
xmlStr = xmlStr.replace(/\\"/g, "");
store.dispatch(setAppealTypeID(query.appealtypes));
store.dispatch(setCaseReference(caseReference));
store.dispatch(setForm(xmlStr));
store.dispatch(setAppealType(appealTypeData));
}
const token = await getSASToken();
const [
caseReferenceData,
appealTypeData,
mandatoryFieldsData,
pickListData,
formdata,
] = await Promise.all([
await createCase(token, query.apt, loggedInUser),
await getAppealsTypes(token),
await getMandatoryFields(token, query.appealtypes),
await getPickLists(token, query.appealtypes),
await getFormData(token, query.appealtypes),
]);
let caseReference = caseReferenceData;
let xmlStr = formdata;
xmlStr = formdata.value[0].formxml;
xmlStr = xmlStr.replace(/\\"/g, "");
//console.log(caseReference, query.appealtypes, formdata);
store.dispatch(setLoggedInUserId(loggedInUser));
store.dispatch(setAppealLPA(query.lpa));
store.dispatch(setAppealTypeID(query.apt));
store.dispatch(setCaseReference(caseReference));
store.dispatch(setForm(xmlStr, mandatoryFieldsData, pickListData));
store.dispatch(setAppealType(appealTypeData));
}
);
const mapStateToProps = (state) => {
@@ -178,6 +364,7 @@ const mapStateToProps = (state) => {
formData: state.formData,
appealType: state.appealType,
form: state.form,
accountDetails: state.accountDetails,
};
};
+95 -19
View File
@@ -10,15 +10,18 @@ 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 { useState } from "react";
import { useEffect, useState } from "react";
import useTranslation from "next-translate/useTranslation";
import jsonpath from "jsonpath";
import { reduxForm, formValueSelector } from "redux-form";
import CreateCase from "../../components/newappeal/createCase";
import xpath from "xpath";
import {
setLoggedInUserId,
setAccountDetails,
} from "../../store/accountDetails/action";
import {
setAppealType,
setAppealTypeTitle,
@@ -26,7 +29,13 @@ import {
setAppealLPA,
getAppealTypeObj,
} from "../../store/appealType/action";
import { getAppealsTypes, getLPA } from "../../actions";
import {
getAppealsTypes,
getLPA,
updateCase,
createCase,
getSASToken,
} from "../../actions";
import { setLPA } from "../../store/lpa/action";
const Home = (props) => {
@@ -43,22 +52,82 @@ const Home = (props) => {
<div>
<Head>
<title>
{t("search:page-title")} - {t("common:service-name")}
{t("newappeal:page-title")} - {t("common:service-name")}
</title>
<>
<link
rel="canonical"
href={t("common:gov-wales-link") + router.asPath}
/>
<meta
key="og:locale"
property="og:locale"
content={router.locale}
/>
{/* If they have a Twitter Handle, include the meta details below */}
<meta
key="og:site_name"
property="og:site_name"
content={t("common:service-name")}
/>
<meta
key="twitter:site"
property="twitter:site"
content="@UKGovWales"
/>
<meta
name="description"
content={t("common:service-description")}
/>
<meta
property="og:site_name"
content={t("common:gov-wales-label")}
/>
<meta
property="og:title"
content={t("newappeal:page-title")}
/>
<meta
property="og:description"
content={t("common:service-description")}
/>
<meta property="og:type" content="website" />
<meta
property="og:url"
content={t("common:gov-wales-link")}
/>
<meta
property="og:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-1200.png"
/>
<meta name="twitter:card" content="summary" />
<meta
name="twitter:title"
content={t("common:gov-wales-label")}
/>
<meta
name="twitter:url"
content={t("common:gov-wales-link") + router.asPath}
/>
<meta
name="twitter:image"
content="https://gov.wales/themes/custom/govwales/images/content/og-global-120.png"
/>
</>
</Head>
<div id="page_wrapper">
<CookieBanner />
<Header courseName={t("common:service-name")} />
<div className="govuk-width-container">
<Banner />
<Breadcrumbs slug={appealtypes} />
<main
className="govuk-main-wrapper--auto-spacing"
id="main-content"
role="main"
>
<h1>New Appeal</h1>
<h1>{t("newappeal:page-title")}</h1>
<CreateCase
LPAData={props.LPAData}
appealType={props.setAppealType}
@@ -73,19 +142,25 @@ const Home = (props) => {
};
export const getServerSideProps = wrapper.getServerSideProps(
(store) =>
async ({ query, req, res }) => {
res.setHeader(
"Cache-Control",
"public, s-maxage=604800, stale-while-revalidate"
);
const [appealTypeData, lpaData] = await Promise.all([
await getAppealsTypes(),
await getLPA(),
]);
store.dispatch(setAppealType(appealTypeData));
store.dispatch(setLPA(lpaData));
}
(store) => async (ctx) => {
const { req, res } = ctx;
const { cookies } = req;
console.log(cookies);
let loggedInUser = cookies.pinsUser;
const token = await getSASToken();
const [appealTypeData, lpaData, caseData] = await Promise.all([
await getAppealsTypes(token),
await getLPA(token),
]);
store.dispatch(setAppealType(appealTypeData));
store.dispatch(setLPA(lpaData));
store.dispatch(setLoggedInUserId(loggedInUser));
}
);
const mapStateToProps = (state) => {
@@ -96,6 +171,7 @@ const mapStateToProps = (state) => {
appealType: state.appealType,
LPAData: state.LPAData,
form: state.form,
accountDetails: state.accountDetails,
};
};
+1 -2
View File
@@ -10,7 +10,7 @@ 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";
@@ -32,7 +32,6 @@ const Home = (props) => {
<CookieBanner />
<Header courseName={t("common:service-name")} />
<div className="govuk-width-container">
<Banner />
<NewAppeal />
</div>
<Footer footerLinks={footerLinks} />
+1 -2
View File
@@ -9,7 +9,7 @@ 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 { useState } from "react";
import useTranslation from "next-translate/useTranslation";
@@ -76,7 +76,6 @@ const Home = (props) => {
<div className="govuk-grid-row">
<div className="govuk-grid-column-full">
<div className="govuk-width-container">
<Banner />
<Breadcrumbs slug={appealtypes} />
<h1>New Appeal</h1>