From f0f15b4f6ef41c0997b564800d16d5cd3effbc89 Mon Sep 17 00:00:00 2001
From: rdbsolutions
Date: Mon, 26 Jul 2021 16:53:32 +0100
Subject: [PATCH] initial commit for welsh government planning appeals
application
---
.eslintrc | 3 +
.gitignore | 20 +
.prettierrc | 5 +
.vscode/launch.json | 15 +
README 2.md | 66 +
README.md | 24 +
actions/index.js | 305 ++++
api/applicant.json | 2 +
api/lpa.json | 1 +
azure-pipelines.yml | 37 +
certificates/certificate.crt | 22 +
certificates/privateKey.key | 28 +
components/account/changepassword.js | 181 +++
components/account/personaldetails.js | 314 +++++
components/account/personaldetailsCheck.js | 311 ++++
components/account/registerform.js | 264 ++++
components/banner.js | 12 +
components/breadcrumbs.js | 231 +++
components/case.js | 28 +
components/case/documents.js | 65 +
components/case/summary.js | 276 ++++
components/caseresults.js | 45 +
components/checkanswers.js | 33 +
components/cookieBanner.js | 58 +
components/elements/index.js | 496 +++++++
components/errorpage.js | 58 +
components/footer.js | 119 ++
components/header.js | 107 ++
components/homepage/casecomment.js | 21 +
components/homepage/casesearch.js | 92 ++
components/homepage/inspectorate.js | 30 +
components/homepage/login.js | 87 ++
components/loading.js | 38 +
components/main.js | 36 +
components/myportal.js | 42 +
components/myportal/awaitingsubmission.js | 28 +
components/myportal/makenewappeal.js | 32 +
components/myportal/mycases.js | 28 +
components/myportal/myrepresentations.js | 28 +
components/myportal/searchcases.js | 96 ++
components/myportal/topthree.js | 56 +
components/myportal/watchedcases.js | 28 +
components/myportal/youraccount.js | 46 +
components/newappeal.js | 34 +
components/newappeal/advertapplication.js | 27 +
components/newappeal/buildCheckfield.js | 64 +
components/newappeal/buildcheckrow.js | 95 ++
components/newappeal/buildchecksection.js | 125 ++
components/newappeal/buildfield.js | 102 ++
components/newappeal/buildrow.js | 39 +
components/newappeal/buildsection.js | 278 ++++
components/newappeal/complete.js | 124 ++
components/newappeal/createCase.js | 257 ++++
components/newappeal/enforcementnotice.js | 24 +
components/newappeal/ldc.js | 27 +
components/newappeal/planningappeal.js | 26 +
components/search.js | 23 +
components/search/advancedsearch.js | 922 ++++++++++++
components/search/searchforcase.js | 158 +++
components/search/searchresults.js | 154 ++
components/search/viewall.js | 147 ++
components/searchresults.js | 46 +
components/skiplink.js | 11 +
components/viewall.js | 40 +
i18n.json | 39 +
locales/cy/case.json | 33 +
locales/cy/common.json | 15 +
locales/cy/home.json | 21 +
locales/cy/myportal.json | 18 +
locales/cy/newappeal.json | 5 +
locales/cy/search.json | 59 +
locales/en/case.json | 33 +
locales/en/common.json | 15 +
locales/en/home.json | 21 +
locales/en/myportal.json | 18 +
locales/en/newappeal.json | 5 +
locales/en/search.json | 59 +
next.config.js | 49 +
package.json | 55 +
pages/_app.js | 24 +
pages/_document.js | 40 +
pages/_error.js | 17 +
pages/account/changepassword.js | 102 ++
pages/account/personaldetails.js | 94 ++
pages/account/register.js | 152 ++
pages/advancedsearch.js | 84 ++
pages/api/appealforms/pinswg_dns.js | 20 +
.../pinswg_harbourrevisionorder.js | 20 +
.../pinswg_householderappealhas.js | 20 +
.../appealforms/pinswg_planningappeals78.js | 20 +
.../pinswg_planningconditionss73s79.js | 20 +
.../pinswg_planningobligationappeals106.js | 20 +
pages/api/appealforms/pinswg_row.js | 20 +
.../appealforms/pinswg_transportandworkact.js | 20 +
pages/api/forms.txt | 33 +
pages/api/incidents_form.js | 29 +
pages/api/lookups/personaldetails.js | 17 +
pages/api/lookups/pinswg_appealcasetype.js | 1249 +++++++++++++++++
pages/api/lookups/pinswg_appointedby.js | 251 ++++
pages/api/lookups/pinswg_band.js | 157 +++
pages/api/lookups/pinswg_casetype.js | 441 ++++++
pages/api/lookups/pinswg_caseworkreason.js | 157 +++
pages/api/lookups/pinswg_decision.js | 204 +++
pages/api/lookups/pinswg_decisionbranch.js | 347 +++++
pages/api/lookups/pinswg_lpa.js | 161 +++
pages/api/searchresults.js | 101 ++
pages/api/searchresults2.js | 191 +++
pages/api/viewall.js | 101 ++
pages/case.js | 81 ++
pages/index.js | 66 +
pages/myportal/index.js | 80 ++
pages/newappeal/[appealtypes].js | 193 +++
pages/newappeal/index.js | 102 ++
pages/newappeal/planningappeal.js | 78 +
pages/newappeal/selectappeal.js | 151 ++
pages/searchresults.js | 102 ++
pages/viewall.js | 95 ++
public/assets/fonts/bold-b542beb274-v2.woff2 | Bin 0 -> 31480 bytes
public/assets/fonts/light-94a07e06a1-v2.woff2 | Bin 0 -> 33382 bytes
.../images/HM-Govt-Supplier-to-Govt.jpg | Bin 0 -> 11220 bytes
public/assets/images/PINS_dual_logo_400.png | Bin 0 -> 74745 bytes
public/assets/images/govuk-crest-2x.png | Bin 0 -> 8884 bytes
public/assets/images/govuk-crest.png | Bin 0 -> 3584 bytes
.../javascript/govuk-frontend-3.13.0.min.js | 1 +
public/favicon.ico | Bin 0 -> 10806 bytes
public/vercel.svg | 4 +
server.js | 84 ++
server/README.md | 3 +
server/server.js | 37 +
server/sitemapAndRobots.js | 18 +
server/static.js | 9 +
store/accountDetails/action.js | 17 +
store/accountDetails/reducer.js | 20 +
store/appealType/action.js | 66 +
store/appealType/reducer.js | 53 +
store/formData/action.js | 18 +
store/formData/reducer.js | 16 +
store/lpa/action.js | 19 +
store/lpa/reducer.js | 17 +
store/progress/action.js | 18 +
store/progress/reducer.js | 16 +
store/search/action.js | 18 +
store/search/reducer.js | 16 +
store/searchOutput/action.js | 18 +
store/searchOutput/reducer.js | 16 +
store/store.js | 111 ++
styles/Home.module.css | 122 ++
styles/_server.js | 25 +
styles/globals.css | 16 +
styles/sass/components/_cookie-banner.scss | 27 +
styles/sass/components/_progress-nav.scss | 0
styles/sass/patterns/_card.scss | 272 ++++
styles/sass/patterns/_inset-text.scss | 6 +
styles/sass/patterns/_link.scss | 9 +
styles/sass/patterns/_related-items.scss | 11 +
.../sass/patterns/_step-by-step-header.scss | 31 +
styles/sass/patterns/_step-by-step-nav.scss | 459 ++++++
.../sass/patterns/_step-by-step-related.scss | 62 +
styles/sass/patterns/_task-list.scss | 74 +
styles/sass/styles.scss | 28 +
styles/sass/welshgov/_application.scss | 269 ++++
styles/sass/welshgov/_application_old.scss | 1038 ++++++++++++++
styles/sass/welshgov/_variables.scss | 11 +
163 files changed, 15097 insertions(+)
create mode 100644 .eslintrc
create mode 100644 .prettierrc
create mode 100644 .vscode/launch.json
create mode 100644 README 2.md
create mode 100644 README.md
create mode 100644 actions/index.js
create mode 100644 api/applicant.json
create mode 100644 api/lpa.json
create mode 100644 azure-pipelines.yml
create mode 100644 certificates/certificate.crt
create mode 100644 certificates/privateKey.key
create mode 100644 components/account/changepassword.js
create mode 100644 components/account/personaldetails.js
create mode 100644 components/account/personaldetailsCheck.js
create mode 100644 components/account/registerform.js
create mode 100644 components/banner.js
create mode 100644 components/breadcrumbs.js
create mode 100644 components/case.js
create mode 100644 components/case/documents.js
create mode 100644 components/case/summary.js
create mode 100644 components/caseresults.js
create mode 100644 components/checkanswers.js
create mode 100644 components/cookieBanner.js
create mode 100644 components/elements/index.js
create mode 100644 components/errorpage.js
create mode 100644 components/footer.js
create mode 100644 components/header.js
create mode 100644 components/homepage/casecomment.js
create mode 100644 components/homepage/casesearch.js
create mode 100644 components/homepage/inspectorate.js
create mode 100644 components/homepage/login.js
create mode 100644 components/loading.js
create mode 100644 components/main.js
create mode 100644 components/myportal.js
create mode 100644 components/myportal/awaitingsubmission.js
create mode 100644 components/myportal/makenewappeal.js
create mode 100644 components/myportal/mycases.js
create mode 100644 components/myportal/myrepresentations.js
create mode 100644 components/myportal/searchcases.js
create mode 100644 components/myportal/topthree.js
create mode 100644 components/myportal/watchedcases.js
create mode 100644 components/myportal/youraccount.js
create mode 100644 components/newappeal.js
create mode 100644 components/newappeal/advertapplication.js
create mode 100644 components/newappeal/buildCheckfield.js
create mode 100644 components/newappeal/buildcheckrow.js
create mode 100644 components/newappeal/buildchecksection.js
create mode 100644 components/newappeal/buildfield.js
create mode 100644 components/newappeal/buildrow.js
create mode 100644 components/newappeal/buildsection.js
create mode 100644 components/newappeal/complete.js
create mode 100644 components/newappeal/createCase.js
create mode 100644 components/newappeal/enforcementnotice.js
create mode 100644 components/newappeal/ldc.js
create mode 100644 components/newappeal/planningappeal.js
create mode 100644 components/search.js
create mode 100644 components/search/advancedsearch.js
create mode 100644 components/search/searchforcase.js
create mode 100644 components/search/searchresults.js
create mode 100644 components/search/viewall.js
create mode 100644 components/searchresults.js
create mode 100644 components/skiplink.js
create mode 100644 components/viewall.js
create mode 100644 i18n.json
create mode 100644 locales/cy/case.json
create mode 100644 locales/cy/common.json
create mode 100644 locales/cy/home.json
create mode 100644 locales/cy/myportal.json
create mode 100644 locales/cy/newappeal.json
create mode 100644 locales/cy/search.json
create mode 100644 locales/en/case.json
create mode 100644 locales/en/common.json
create mode 100644 locales/en/home.json
create mode 100644 locales/en/myportal.json
create mode 100644 locales/en/newappeal.json
create mode 100644 locales/en/search.json
create mode 100644 next.config.js
create mode 100644 package.json
create mode 100644 pages/_app.js
create mode 100644 pages/_document.js
create mode 100644 pages/_error.js
create mode 100644 pages/account/changepassword.js
create mode 100644 pages/account/personaldetails.js
create mode 100644 pages/account/register.js
create mode 100644 pages/advancedsearch.js
create mode 100644 pages/api/appealforms/pinswg_dns.js
create mode 100644 pages/api/appealforms/pinswg_harbourrevisionorder.js
create mode 100644 pages/api/appealforms/pinswg_householderappealhas.js
create mode 100644 pages/api/appealforms/pinswg_planningappeals78.js
create mode 100644 pages/api/appealforms/pinswg_planningconditionss73s79.js
create mode 100644 pages/api/appealforms/pinswg_planningobligationappeals106.js
create mode 100644 pages/api/appealforms/pinswg_row.js
create mode 100644 pages/api/appealforms/pinswg_transportandworkact.js
create mode 100644 pages/api/forms.txt
create mode 100644 pages/api/incidents_form.js
create mode 100644 pages/api/lookups/personaldetails.js
create mode 100644 pages/api/lookups/pinswg_appealcasetype.js
create mode 100644 pages/api/lookups/pinswg_appointedby.js
create mode 100644 pages/api/lookups/pinswg_band.js
create mode 100644 pages/api/lookups/pinswg_casetype.js
create mode 100644 pages/api/lookups/pinswg_caseworkreason.js
create mode 100644 pages/api/lookups/pinswg_decision.js
create mode 100644 pages/api/lookups/pinswg_decisionbranch.js
create mode 100644 pages/api/lookups/pinswg_lpa.js
create mode 100644 pages/api/searchresults.js
create mode 100644 pages/api/searchresults2.js
create mode 100644 pages/api/viewall.js
create mode 100644 pages/case.js
create mode 100644 pages/index.js
create mode 100644 pages/myportal/index.js
create mode 100644 pages/newappeal/[appealtypes].js
create mode 100644 pages/newappeal/index.js
create mode 100644 pages/newappeal/planningappeal.js
create mode 100644 pages/newappeal/selectappeal.js
create mode 100644 pages/searchresults.js
create mode 100644 pages/viewall.js
create mode 100644 public/assets/fonts/bold-b542beb274-v2.woff2
create mode 100644 public/assets/fonts/light-94a07e06a1-v2.woff2
create mode 100644 public/assets/images/HM-Govt-Supplier-to-Govt.jpg
create mode 100644 public/assets/images/PINS_dual_logo_400.png
create mode 100644 public/assets/images/govuk-crest-2x.png
create mode 100644 public/assets/images/govuk-crest.png
create mode 100644 public/assets/javascript/govuk-frontend-3.13.0.min.js
create mode 100644 public/favicon.ico
create mode 100644 public/vercel.svg
create mode 100644 server.js
create mode 100644 server/README.md
create mode 100644 server/server.js
create mode 100644 server/sitemapAndRobots.js
create mode 100644 server/static.js
create mode 100644 store/accountDetails/action.js
create mode 100644 store/accountDetails/reducer.js
create mode 100644 store/appealType/action.js
create mode 100644 store/appealType/reducer.js
create mode 100644 store/formData/action.js
create mode 100644 store/formData/reducer.js
create mode 100644 store/lpa/action.js
create mode 100644 store/lpa/reducer.js
create mode 100644 store/progress/action.js
create mode 100644 store/progress/reducer.js
create mode 100644 store/search/action.js
create mode 100644 store/search/reducer.js
create mode 100644 store/searchOutput/action.js
create mode 100644 store/searchOutput/reducer.js
create mode 100644 store/store.js
create mode 100644 styles/Home.module.css
create mode 100644 styles/_server.js
create mode 100644 styles/globals.css
create mode 100644 styles/sass/components/_cookie-banner.scss
create mode 100644 styles/sass/components/_progress-nav.scss
create mode 100644 styles/sass/patterns/_card.scss
create mode 100644 styles/sass/patterns/_inset-text.scss
create mode 100644 styles/sass/patterns/_link.scss
create mode 100644 styles/sass/patterns/_related-items.scss
create mode 100644 styles/sass/patterns/_step-by-step-header.scss
create mode 100644 styles/sass/patterns/_step-by-step-nav.scss
create mode 100644 styles/sass/patterns/_step-by-step-related.scss
create mode 100644 styles/sass/patterns/_task-list.scss
create mode 100644 styles/sass/styles.scss
create mode 100644 styles/sass/welshgov/_application.scss
create mode 100644 styles/sass/welshgov/_application_old.scss
create mode 100644 styles/sass/welshgov/_variables.scss
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 00000000..15b1ed91
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,3 @@
+{
+ "extends": "next"
+}
diff --git a/.gitignore b/.gitignore
index b24d71e2..4c7619c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,3 +48,23 @@ Thumbs.db
*.mov
*.wmv
+
+// .gitignore
+# next.js build output
+.next
+
+# dotenv environment variables file - set in pipeline as environment variables
+.env
+.env.build
+
+# Dependency directories
+node_modules/
+
+# Logs
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+#lock files
+yarn.lock
+package-lock.json
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 00000000..ced81142
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,5 @@
+{
+ "tabWidth": 4,
+ "useTabs": false,
+"quoteProps":"preserve"
+}
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 00000000..562cc640
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,15 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "pwa-chrome",
+ "request": "launch",
+ "name": "Launch Chrome against localhost",
+ "url": "http://localhost:3000",
+ "webRoot": "${workspaceFolder}"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/README 2.md b/README 2.md
new file mode 100644
index 00000000..11c4912e
--- /dev/null
+++ b/README 2.md
@@ -0,0 +1,66 @@
+## Setting up environment
+
+These instructions assumes that you already have Git installed and working
+You will need to install NodeJs [https://nodejs.org/en/download/](https://nodejs.org/en/download/)
+
+If you have necessary installation privileges
+
+- download and run the installer version
+
+If you dont have privileges
+
+- download the zip archive
+- extract the folder to your environment
+- Add the path to this folder in to your PATH Environment Variable
+- verify installation by opening a new terminal window and do the following
+
+```bash
+node -v
+```
+
+- verify npm by typing the following
+
+```bash
+npm -v
+```
+
+Next, Clone the repository from Azure DevOps to a relevant folder
+
+Open a terminal window to this folder and install the packages needed:
+
+```bash
+npm install
+```
+
+if there is an error message regarding access via the proxy
+
+```bash
+npm config set proxy "http://domain\username:password@servername:port/"
+```
+
+or unable to get packages try the following:
+
+```bash
+npm config set registry "http://registry.npmjs.org/"
+```
+
+## Getting Started
+
+First, run the development server:
+
+```bash
+npm run dev
+# or
+yarn dev
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+Note: there may be a firewall message pop up.....
+
+## Learn More
+
+To learn more about Next.js, take a look at the following resources:
+
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..14b0447b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,24 @@
+# Introduction
+ PINS Frontend APC and DNS portal
+
+# Getting Started
+OFM Communications
+
+Simon Matthews
+Serice URL
+https://gov.wales/domain-names#section-33014
+https://www.gov.uk/service-manual/design/naming-your-service
+
+Accessability
+Footers - Accesability
+https://www.gov.uk/service-manual/design/naming-your-service
+
+Roland Allan
+https://gov.wales/footer-guidance-govwales-products
+https://gov.wales/accessibility-standards-govwales
+https://gov.wales/appeal-or-search-planning-decision-or-notice
+
+# Build and Test
+
+
+# Contribute
diff --git a/actions/index.js b/actions/index.js
new file mode 100644
index 00000000..89f544b9
--- /dev/null
+++ b/actions/index.js
@@ -0,0 +1,305 @@
+import axios from "axios";
+import https from "https";
+//import {XMLHttpRequest} from 'xmlhttprequest';
+
+process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;
+
+let BASE_URL;
+const port = parseInt(process.env.PORT, 10) || 3000;
+
+if (process.browser) {
+ BASE_URL = window.apiRoot;
+} else {
+ BASE_URL = process.env.API_ROOT || `http://localhost:${port}`;
+}
+
+const agent = new https.Agent({
+ rejectUnauthorized: false,
+});
+const crmHeaders = {
+ withCredentials: true,
+ headers: {
+ "Content-Type": "application/json; charset=utf-8",
+ "OData-MaxVersion": "4.0",
+ "OData-Version": "4.0",
+ "Accept": "application/json",
+ "Prefer": 'odata.include-annotations="*"',
+ agent,
+ },
+ auth: {
+ username: "xm\bondr",
+ password: "!Sky9fish1972",
+ },
+};
+
+export const getBasicSearch = (searchString) => {
+ console.log("got to axios", searchString);
+ console.log("api_root: ", BASE_URL);
+ return (
+ axios
+ //.get("https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/incidents?$select=_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title&$filter=contains(title, '" + searchString + "')&$count=true", crmHeaders)
+ //.get("https://jsonplaceholder.typicode.com/todos/1",{proxy:{protocol: 'http',host:'lon3.sme.zscloud.net',port: 80}})
+ .get(BASE_URL + "/api/searchresults2", {
+ httpsAgent: new https.Agent({ rejectUnauthorized: false }),
+ })
+ .then((res) => res.data)
+ .catch((error) => {
+ console.log("thiserror", error);
+ })
+ );
+};
+
+export const getFormData = (whichForm) => {
+ console.log("got to axios", whichForm);
+ console.log("api_root: ", BASE_URL);
+ return (
+ axios
+ //.get("api/appealforms/pinswg_dns", {
+ //.get("api/appealforms/pinswg_planningobligationappeals106", {
+ //.get("api/appealforms/pinswg_planningconditionss73s79", {
+ //.get("api/appealforms/pinswg_row", {
+ //.get("api/appealforms/pinswg_transportandworkact", {
+ //.get("api/appealforms/pinswg_harbourrevisionorder", {
+ //.get("api/appealforms/pinswg_planningappeals78", {
+ //.get(api/appealforms/pinswg_householderappealhas", {
+ .get(BASE_URL + "/api/appealforms/pinswg_" + whichForm, {
+ httpsAgent: new https.Agent({ rejectUnauthorized: false }),
+ })
+ .then((res) => res.data)
+ .catch((error) => {
+ console.log("thiserror", error);
+ })
+ );
+};
+
+export const getAppealsTypes = () => {
+ console.log("got to axios: appeal types");
+ console.log("api_root: ", BASE_URL);
+ return axios
+ .get(BASE_URL + "/api/lookups/pinswg_appealcasetype", {
+ httpsAgent: new https.Agent({ rejectUnauthorized: false }),
+ })
+ .then((res) => res.data)
+ .catch((error) => {
+ console.log("thiserror", error);
+ });
+};
+
+export const getBasicSearch2 = (searchString) => {
+ var req = new XMLHttpRequest();
+ req.open(
+ "GET",
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/incidents?$select=_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title&$filter=contains(title, '" +
+ searchString +
+ "')&$count=true",
+ true
+ );
+ req.setRequestHeader("OData-MaxVersion", "4.0");
+ req.setRequestHeader("OData-Version", "4.0");
+ req.setRequestHeader("Accept", "application/json");
+ req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
+ req.setRequestHeader("Prefer", 'odata.include-annotations="*"');
+ req.onreadystatechange = function () {
+ if (this.readyState === 4) {
+ req.onreadystatechange = null;
+ if (this.status === 200) {
+ var results = JSON.parse(this.response);
+ var recordCount = results["@odata.count"];
+ for (var i = 0; i < results.value.length; i++) {
+ var _accountid_value = results.value[i]["_accountid_value"];
+ var _accountid_value_formatted =
+ results.value[i][
+ "_accountid_value@OData.Community.Display.V1.FormattedValue"
+ ];
+ var _accountid_value_lookuplogicalname =
+ results.value[i][
+ "_accountid_value@Microsoft.Dynamics.CRM.lookuplogicalname"
+ ];
+ var _customerid_value =
+ results.value[i]["_customerid_value"];
+ var _customerid_value_formatted =
+ results.value[i][
+ "_customerid_value@OData.Community.Display.V1.FormattedValue"
+ ];
+ var _customerid_value_lookuplogicalname =
+ results.value[i][
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname"
+ ];
+ var pinswg_appealcasetype =
+ results.value[i]["pinswg_appealcasetype"];
+ var pinswg_appealcasetype_formatted =
+ results.value[i][
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
+ ];
+ var statuscode = results.value[i]["statuscode"];
+ var ticketnumber = results.value[i]["ticketnumber"];
+ var title = results.value[i]["title"];
+ }
+ } else {
+ console.log(this.statusText);
+ }
+ }
+ };
+ return req.send();
+};
+
+//get list of entitydefinitions
+//https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/EntityDefinitions?$select=LogicalName
+
+// get list of appealtypes
+//https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/stringmaps?$filter=attributename%20eq%20%27pinswg_appealcasetype%27&$count=true
+
+//get crm xml form for appealtype
+//https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/systemforms?$select=formid,name,formxml&$filter=(objecttypecode%20eq%20%27pinswg_dns%27and%20type%20eq%202)&$count=true
+// then use regex to remove the escape
+// convert xml to json and return
+// promise example
+// var xml2js = require('xml2js');
+// var xml = ' ';
+
+// // With parser
+// var parser = new xml2js.Parser(/* options */);
+// parser.parseStringPromise(data).then(function (result) {
+// console.dir(result);
+// console.log('Done');
+// })
+// .catch(function (err) {
+// // Failed
+// });
+
+export const getAppealTypeDetail = (caseReference, appealcasetype) => {
+ console.log("got to axios", searchString);
+ console.log("api_root: ", BASE_URL);
+ // example appealcasetype type pinswg_householderappealhases
+ return axios
+ .get(
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/" +
+ appealcasetype +
+ "?$filter=pinswg_name eq '" +
+ caseReference +
+ "'",
+ { httpsAgent: new https.Agent({ rejectUnauthorized: false }) }
+ )
+ .then((res) => res.data)
+ .catch((error) => {
+ console.log("thi serror", error);
+ });
+};
+//https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/pinswg_planningappeals78s?$filter=pinswg_name eq 'CAS-00015-L7J9H1'
+
+export const getLPA = () => {
+ console.log("api_root: ", BASE_URL);
+ return axios
+
+ .get(
+ BASE_URL + "/api/lookups/pinswg_lpa",
+ //.get("https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/accounts?$select=name",
+ { httpsAgent: new https.Agent({ rejectUnauthorized: false }) }
+ )
+ .then((res) => res.data)
+ .catch((error) => {
+ console.log("thi serror", error);
+ });
+};
+
+export const getPersonalAccount = () => {
+ console.log("api_root: ", BASE_URL);
+ return axios
+
+ .get(
+ BASE_URL + "/api/lookups/personaldetails",
+ //.get("https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/contacts?$select=name",
+ { httpsAgent: new https.Agent({ rejectUnauthorized: false }) }
+ )
+ .then((res) => res.data)
+ .catch((error) => {
+ console.log("thi serror", error);
+ });
+};
+
+function makeid(length) {
+ var result = "";
+ var characters =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+ var charactersLength = characters.length;
+ for (var i = 0; i < length; i++) {
+ result += characters.charAt(
+ Math.floor(Math.random() * charactersLength)
+ );
+ }
+ return result;
+}
+
+export const createCase = (lpaType, appealType) => {
+ console.log();
+
+ const lastPart = makeid(6);
+
+ const middlePart = Math.floor(100000 + Math.random() * 900000);
+
+ return "CAS-" + middlePart + "-" + lastPart.toUpperCase();
+};
+
+// var req = new XMLHttpRequest();
+// req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.2/incidents?$select=_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title&$filter=contains(title, '000')&$count=true", true);
+// req.setRequestHeader("OData-MaxVersion", "4.0");
+// req.setRequestHeader("OData-Version", "4.0");
+// req.setRequestHeader("Accept", "application/json");
+// req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
+// req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
+// req.onreadystatechange = function() {
+// if (this.readyState === 4) {
+// req.onreadystatechange = null;
+// if (this.status === 200) {
+// var results = JSON.parse(this.response);
+// var recordCount = results["@odata.count"];
+// for (var i = 0; i < results.value.length; i++) {
+// var _accountid_value = results.value[i]["_accountid_value"];
+// var _accountid_value_formatted = results.value[i]["_accountid_value@OData.Community.Display.V1.FormattedValue"];
+// var _accountid_value_lookuplogicalname = results.value[i]["_accountid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
+// var _customerid_value = results.value[i]["_customerid_value"];
+// var _customerid_value_formatted = results.value[i]["_customerid_value@OData.Community.Display.V1.FormattedValue"];
+// var _customerid_value_lookuplogicalname = results.value[i]["_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
+// var pinswg_appealcasetype = results.value[i]["pinswg_appealcasetype"];
+// var pinswg_appealcasetype_formatted = results.value[i]["pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"];
+// var statuscode = results.value[i]["statuscode"];
+// var ticketnumber = results.value[i]["ticketnumber"];
+// var title = results.value[i]["title"];
+// }
+// } else {
+// Xrm.Utility.alertDialog(this.statusText);
+// }
+// }
+// };
+// req.send();
+
+// //jquery version to get case number from an lpa and an appeal type
+// var entity = {};
+// entity.caseorigincode = 3;
+// entity["customerid_account@odata.bind"] = "/accounts(c75f6f84-49da-eb11-aabd-00224800d1bd)";
+// entity.pinswg_appealcasetype = 846040004;
+
+// $.ajax({
+// type: "POST",
+// contentType: "application/json; charset=utf-8",
+// datatype: "json",
+// url: Xrm.Page.context.getClientUrl() + "/api/data/v8.2/incidents",
+// data: JSON.stringify(entity),
+// beforeSend: function(XMLHttpRequest) {
+// XMLHttpRequest.setRequestHeader("OData-MaxVersion", "4.0");
+// XMLHttpRequest.setRequestHeader("OData-Version", "4.0");
+// XMLHttpRequest.setRequestHeader("Accept", "application/json");
+// XMLHttpRequest.setRequestHeader("Prefer", "odata.include-annotations=\"*\",return=representation");
+// },
+// async: true,
+// success: function(data, textStatus, xhr) {
+// var uri = xhr.getResponseHeader("OData-EntityId");
+// var regExp = /\(([^)]+)\)/;
+// var matches = regExp.exec(uri);
+// var newEntityId = matches[1];
+// //Handle returned attributes
+// },
+// error: function(xhr, textStatus, errorThrown) {
+// Xrm.Utility.alertDialog(textStatus + " " + errorThrown);
+// }
+// });
diff --git a/api/applicant.json b/api/applicant.json
new file mode 100644
index 00000000..7f7849fd
--- /dev/null
+++ b/api/applicant.json
@@ -0,0 +1,2 @@
+{"@odata.context":"https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#contacts(address1_addressid,address1_addresstypecode,address1_city,address1_country,address1_county,address1_fax,firstname,lastname)",value:[0:{@odata.etag:"W/"509484"",address1_addressid:"6c267cf9-1ba2-4e38-9f48-2b94a341e392",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname: null ,lastname:"Trembath",contactid:"9d481bc3-7c64-eb11-aaba-00224800be9c"},1:{@odata.etag:"W/"509501"",address1_addressid:"9a546d64-b7b5-42bf-bafd-b547e718fddd",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname: null ,lastname:"Jones",contactid:"1e2e0e6f-7e64-eb11-aaba-00224800be9c"},2:{@odata.etag:"W/"509506"",address1_addressid:"214e5b63-9bc8-478a-90e2-39417d9e096b",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname: null ,lastname:"Thomas",contactid:"d1658f77-7e64-eb11-aaba-00224800be9c"},3:{@odata.etag:"W/"694902"",address1_addressid:"6258fd0c-2d18-41dd-b629-123c880f16a1",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname:"James",lastname:"Hollowhead",contactid:"755e07ea-82ad-eb11-aac3-00224800be9c"},4:{@odata.etag:"W/"694906"",address1_addressid:"436104d2-5ee0-4494-b0f8-3059f738e9cf",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname:"T",lastname:"Gillbert",contactid:"b8022d00-83ad-eb11-aac3-00224800be9c"},5:{@odata.etag:"W/"694910"",address1_addressid:"36e9cccc-ac84-4023-ae92-d6b9556d8ddf",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname:"Mike",lastname:"Parker",contactid:"99b3220f-83ad-eb11-aac3-00224800be9c"},6:{@odata.etag:"W/"694914"",address1_addressid:"83169722-1283-4a4c-b346-28f50cd208cd",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname:"Lloyd",lastname:"Evans",contactid:"5bee9821-83ad-eb11-aac3-00224800be9c"},7:{@odata.etag:"W/"694918"",address1_addressid:"a164b5d8-f9d2-46d4-b97b-b59327173f0a",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname:"Mr",lastname:"Bartlett",contactid:"c2be7d2e-83ad-eb11-aac3-00224800be9c"},8:{@odata.etag:"W/"709237"",address1_addressid:"b75d552e-3896-46a7-bd65-a743f457f119",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname:"Zoe",lastname:"Dawson",contactid:"003eef05-29ba-eb11-aac4-00224800be9c"},9:{@odata.etag:"W/"750707"",address1_addressid:"34bbd453-7d23-4c17-806e-1edf2e981cc8",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname:"Appellant Contact",lastname:"Gary Trembath",contactid:"985cc5f8-1dd8-eb11-aac5-00224800be9c"},10:{@odata.etag:"W/"750703"",address1_addressid:"20ce70a9-571c-4a81-b410-f521d64d3dcb",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address1_fax: null ,firstname:"Agent Contact",lastname:"Gary Trembath",contactid:"9eb124a5-1ed8-eb11-aac5-00224800be9c"},11:{@odata.etag:"W/"750860"",address1_addressid:"a6a4641c-0875-4d5e-8360-99355eb73ee4",address1_addresstypecode: null ,address1_city: null ,address1_country: null ,address1_county: null ,address
+
\ No newline at end of file
diff --git a/api/lpa.json b/api/lpa.json
new file mode 100644
index 00000000..bd225a4d
--- /dev/null
+++ b/api/lpa.json
@@ -0,0 +1 @@
+0:{@odata.context:"https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#accounts(name)",value:[0:{@odata.etag:"W/"547952"",name:"Bridgend CBC",accountid:"56e7ef63-7e64-eb11-aaba-00224800be9c"},1:{@odata.etag:"W/"694923"",name:"Bishop Landaff High School",accountid:"c9389617-82ad-eb11-aac3-00224800be9c"},2:{@odata.etag:"W/"694925"",name:"Stanwell High school",accountid:"24537624-82ad-eb11-aac3-00224800be9c"},3:{@odata.etag:"W/"694927"",name:"Barry Boys High School",accountid:"80d99a34-82ad-eb11-aac3-00224800be9c"},4:{@odata.etag:"W/"694929"",name:"St Sirus High School",accountid:"6d337b5a-82ad-eb11-aac3-00224800be9c"},5:{@odata.etag:"W/"694931"",name:"Fitzalan High School",accountid:"984d0e75-82ad-eb11-aac3-00224800be9c"},6:{@odata.etag:"W/"709453"",name:"Zoe",accountid:"41fead24-29ba-eb11-aac4-00224800be9c"},7:{@odata.etag:"W/"755017"",name:"Blaenau Gwent County Borough Council",accountid:"744c69f4-48da-eb11-aac5-00224800be9c"},8:{@odata.etag:"W/"755020"",name:"Caerphilly County Borough Council",accountid:"243c0009-49da-eb11-aac5-00224800be9c"},9:{@odata.etag:"W/"755026"",name:"Bridgend County Borough Council",accountid:"c35f6f84-49da-eb11-aabd-00224800d1bd"},10:{@odata.etag:"W/"755029"",name:"Cardiff Council",accountid:"c75f6f84-49da-eb11-aabd-00224800d1bd"},11:{@odata.etag:"W/"755032"",name:"Carmarthenshire County Council",accountid:"c95f6f84-49da-eb11-aabd-00224800d1bd"},12:{@odata.etag:"W/"755035"",name:"Ceredigion County Council",accountid:"cb5f6f84-49da-eb11-aabd-00224800d1bd"},13:{@odata.etag:"W/"755038"",name:"Conwy County Borough Council",accountid:"cd5f6f84-49da-eb11-aabd-00224800d1bd"},14:{@odata.etag:"W/"755041"",name:"Denbighshire County Council",accountid:"cf5f6f84-49da-eb11-aabd-00224800d1bd"},15:{@odata.etag:"W/"755044"",name:"Flintshire County Council",accountid:"d15f6f84-49da-eb11-aabd-00224800d1bd"},16:{@odata.etag:"W/"755047"",name:"Gwynedd Council",accountid:"d35f6f84-49da-eb11-aabd-00224800d1bd"},17:{@odata.etag:"W/"755050"",name:"Isle of Anglesey County Council",accountid:"d55f6f84-49da-eb11-aabd-00224800d1bd"},18:{@odata.etag:"W/"755053"",name:"Merthyr Tydfil County Borough Council",accountid:"d75f6f84-49da-eb11-aabd-00224800d1bd"},19:{@odata.etag:"W/"755056"",name:"Monmouthshire County Council",accountid:"d95f6f84-49da-eb11-aabd-00224800d1bd"},20:{@odata.etag:"W/"755059"",name:"Neath Port Talbot County Borough Council",accountid:"db5f6f84-49da-eb11-aabd-00224800d1bd"},21:{@odata.etag:"W/"755062"",name:"Newport City Council",accountid:"dd5f6f84-49da-eb11-aabd-00224800d1bd"},22:{@odata.etag:"W/"755065"",name:"Pembrokeshire County Council",accountid:"df5f6f84-49da-eb11-aabd-00224800d1bd"},23:{@odata.etag:"W/"755068"",name:"Powys County Council",accountid:"e15f6f84-49da-eb11-aabd-00224800d1bd"},24:{@odata.etag:"W/"755071"",name:"Rhondda Cynon Taf County Borough Council",accountid:"e35f6f84-49da-eb11-aabd-00224800d1bd"},25:{@odata.etag:"W/"755074"",name:"Swansea Council",accountid:"e55f6f84-49da-eb11-aabd-00224800d1bd"},26:{@odata.etag:"W/"755077"",name:"Torfaen County Borough Council",accountid:"e75f6f84-49da-eb11-aabd-00224800d1bd"},27:{@odata.etag:"W/"755080"",name:"Vale of Glamorgan Council",accountid:"e95f6f84-49da-eb11-aabd-00224800d1bd"},28:{@odata.etag:"W/"755083"",name:"Wrexham County Borough Council",accountid:"eb5f6f84-49da-eb11-aabd-00224800d1bd"}]}
\ No newline at end of file
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
new file mode 100644
index 00000000..12187cc9
--- /dev/null
+++ b/azure-pipelines.yml
@@ -0,0 +1,37 @@
+# Node.js
+# Build a general Node.js project with npm.
+# Add steps that analyze code, save build artifacts, deploy, and more:
+# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript
+
+trigger:
+ - main
+
+pool:
+ vmImage: ubuntu-latest
+
+steps:
+ - task: NodeTool@0
+ inputs:
+ versionSpec: "10.x"
+ displayName: "Install Node.js"
+
+ - script: |
+ npm install
+ npm run build
+ displayName: "npm install and build"
+
+ - task: CopyFiles@2
+ displayName: "Copy Files to: $(build.artifactstagingdirectory)"
+ inputs:
+ Contents: |
+ **/*
+ !node_modules/**/*
+ !.git/**/*
+ TargetFolder: "$(build.artifactstagingdirectory)"
+
+ - task: PublishBuildArtifacts@1
+ displayName: "Publish Artifact: drop"
+ inputs:
+ PathtoPublish: "$(Build.ArtifactStagingDirectory)"
+ ArtifactName: "drop"
+ publishLocation: "Container"
diff --git a/certificates/certificate.crt b/certificates/certificate.crt
new file mode 100644
index 00000000..f2948799
--- /dev/null
+++ b/certificates/certificate.crt
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDjTCCAnWgAwIBAgIUVcGexO0o2d+pgVMwkIdrnBI9L5QwDQYJKoZIhvcNAQEL
+BQAwVjELMAkGA1UEBhMCVUsxDzANBgNVBAgMBlN1c3NleDETMBEGA1UEBwwKRWFz
+dGJvdXJuZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTIx
+MDcwNTExMTcwNVoXDTIyMDcwNTExMTcwNVowVjELMAkGA1UEBhMCVUsxDzANBgNV
+BAgMBlN1c3NleDETMBEGA1UEBwwKRWFzdGJvdXJuZTEhMB8GA1UECgwYSW50ZXJu
+ZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEAxzfQqGriUq8sKeWmgkgFssCDfsBLwijhP9nMVSCSwyWgxMZlGtj/Wbyf20Sl
+cg7X3jj2rGEWU3TkJtNUwjQcYRRK2+QlC3bQMIJEfe0JXqkeMWSwR3Fs0IE7lzYf
+CVHtcu7Z8muSEvinGULhg8jjBYp9mknjokjdwEy/eI7UYHEQx0sziapgAUITgSpL
+45qZvgw3BJShq/En3DYX0dIiX2yswagOFUBPtCeFaP3LsPh0kTOPxhv9Y3SxQfPV
+dTq3719HGVSLgQs18F82HxZeXjxAUqV+Sl5an5DnArRtFA3U34IDXkpc9RiLtoYb
+GDrJuyt1TzpAxoBr8Ld5ySRDqQIDAQABo1MwUTAdBgNVHQ4EFgQUNZqF/sycnZe5
+t6scKrWbEnW4Dc8wHwYDVR0jBBgwFoAUNZqF/sycnZe5t6scKrWbEnW4Dc8wDwYD
+VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEALs3OiGk6Xj7d51rChPsg
+JL05Vj/DbI7Rr3jj2vGcNVd0GfIH9zrX0AMj6Uzxt8LCyI3QtrgzYSw9sKh9Q9I3
+3h7sIBm9zXV5gbMSG3rAl965ryiQt4INKUamz1XLQKvaMRvHD/DmRmIbFo399gYN
+duZQdwqdKavZ6wOw3GRmtjBlUzxO7DCrJMFsj7dfNqHSrZiwScNItArLecYeYQYg
+npjsvJekpSQLjvvjVuHLfEp+vNH6liL7qFFcBzUgwISFvcAI99e/zZtewkb3Vw+7
++7wbMgpibU1kbL9Bpru8PS89CsVGEh1TmzO3e8j1GnYAcnzRe70IzOTdMUE0AEg6
+FA==
+-----END CERTIFICATE-----
diff --git a/certificates/privateKey.key b/certificates/privateKey.key
new file mode 100644
index 00000000..4713899a
--- /dev/null
+++ b/certificates/privateKey.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHN9CoauJSrywp
+5aaCSAWywIN+wEvCKOE/2cxVIJLDJaDExmUa2P9ZvJ/bRKVyDtfeOPasYRZTdOQm
+01TCNBxhFErb5CULdtAwgkR97QleqR4xZLBHcWzQgTuXNh8JUe1y7tnya5IS+KcZ
+QuGDyOMFin2aSeOiSN3ATL94jtRgcRDHSzOJqmABQhOBKkvjmpm+DDcElKGr8Sfc
+NhfR0iJfbKzBqA4VQE+0J4Vo/cuw+HSRM4/GG/1jdLFB89V1OrfvX0cZVIuBCzXw
+XzYfFl5ePEBSpX5KXlqfkOcCtG0UDdTfggNeSlz1GIu2hhsYOsm7K3VPOkDGgGvw
+t3nJJEOpAgMBAAECggEBAKkkd5F25l+jgRC1fhEhS01AbKTCadAY215V8knYlSMB
+IKXReGg6E1vCbctCVmInvhpcLPugls8W8NsSFOWqTuoRy5k09Erufsag47wy9ACe
+ABeZ0J1n7SZ+gvTYq7NDDyLFLuDHekeHPICTK1uzxSSgOBI2aAISccxinTKjuieC
+eEtcBSu66g+cvyKGZglzfd4ugNDIaH9ibIFYPJzexw3lAz9j3mKpccxGsokFGw7T
+qwovML2I9+laD1N23H9lJ2YLr73uqusI0cxsCvGwRtBHHIEsR6aL43GAMG7TtWw/
+BoSECBZHRE+RxDjAab0XmrhcD3kf5v1DFk+Bnh+2rYECgYEA57w/tw9SmJ//PLMz
+6siHkx6vzvD2bdAKsinXkR987vYHmlpISKf2VeN02aj6BND2KM9OSCMNzaD+Hz0c
+Uv+5RInpr4LpBmDiRPOyTkJjFEuM1ZSgAm01wGY8k8CuHnZs3ueJaSZMmCXmEC8G
+F4v/K+nMiOcbl8f23tUOmmJ1KnECgYEA3BPtb64DfBTcnbGvBzZU1WoPOWe8ujFg
+yjICX4elKr2jlOzrdw4eU4peU3jVXl+sDPw++NKWUimhdcuimLF7lfOi3VUM8DWr
+cCMWfvwFc7URv/42UltN58p6/FceU5WzF+785r8N2tyOtKi81Dsz5uDIytMuqmft
+MRlu56FeGLkCgYAiyklKg1tkHIkmJMVDl017Ud0VFWn5vIUOkGeTmwWXnoovqyQ0
+/DpoVJijYNIATRrXr5/SBqk42NWt/O+2qju3RXk251FyqrLtpSR8yUy0rE79da28
+D4dFVlP73q6FVkQsBtjDV4OiR/ZNMbIZcOQjRJt3ZjLnS5cNhzEFDokGkQKBgQCm
+th295NbU7sS0XD4XO4wF4oLH3JJ1hSQp5rovfYSbnO5GyTYRiMtmQ0Hy/2y6QcUG
+TSqyuGuQr+KUZf60pnXVAKtV+LCFYlKM7reC2AyVOwvIIZ0qw+l+9b42WxQpAxSY
+w7wmW4H2Ue90YQIxzushMRRJuLH3+iQOdpKxumaaWQKBgH5HMvJLiueY1pRMomnQ
+fAirquPPeqILTGmnfNhNm+8Fv2HHNUHmfSdMOxK15g+RPEJRDERRDhdLHOep0Lx9
+AVcINmkeQVChWcPu1LwoNt0c0AZbB/vDUSh5GadC/dFV85xb58C+Fc7WYvOIYwS4
+KvvWnCWcue5qxZCd2G+6oNx/
+-----END PRIVATE KEY-----
diff --git a/components/account/changepassword.js b/components/account/changepassword.js
new file mode 100644
index 00000000..54bf59ee
--- /dev/null
+++ b/components/account/changepassword.js
@@ -0,0 +1,181 @@
+import _ from "lodash";
+import React, { useState } from "react";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import {
+ Field,
+ reduxForm,
+ formValueSelector,
+ getFormSubmitErrors,
+} from "redux-form";
+import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
+import {
+ Textfield,
+ DateField,
+ DateFieldPicker,
+ YesNofield,
+ PickList,
+ MultiLinefield,
+ NumericField,
+ ReadOnlyfield,
+ DecimalField,
+} from "../elements";
+
+const RenderTextfield = ({
+ id,
+ className,
+ rows,
+ datafieldname,
+ name,
+ label,
+ input,
+ type,
+ errorMsg,
+ meta: { touched, error },
+ ...custom
+}) => {
+ return (
+ <>
+
+
+ {label}
+
+ {touched && error && (
+
+ Error: {" "}
+ {touched &&
+ ((error && (
+ {errorMsg ? errorMsg : error}
+ )) ||
+ (warning && {warning} ))}
+
+ )}
+
+
+ >
+ );
+};
+
+const ChangePassword = (props) => {
+ const { footerLinks, pages, handleSubmit, value } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ let errorsobj = {};
+
+ const onHandleSubmit = (values) => {
+ console.log(values);
+ };
+
+ const required = (value) => (value ? undefined : "Is required");
+
+ const matchInput = (input, allInputs) => {
+ return input === allInputs.password
+ ? undefined
+ : "Passwords do not match";
+ };
+
+ const email = (value) =>
+ value && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)
+ ? "Invalid email address"
+ : undefined;
+ const phoneNumber = (value) =>
+ value &&
+ !/^(?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0))(?:(?:\d{5}\)?[\s-]?\d{4,5})|(?:\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3}))|(?:\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4})|(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}))(?:[\s-]?(?:x|ext\.?|\#)\d{3,4})?$/i.test(
+ value
+ )
+ ? "Invalid phone number"
+ : undefined;
+
+ const [hasErrors, setHasErrors] = useState("");
+
+ return (
+ <>
+ {/* {hasErrors == true ? (
+
+ ) : (
+ ""
+ )} */}
+
+ >
+ );
+};
+
+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));
+ },
+ };
+};
+
+const selector = formValueSelector("changepasswordForm"); // <-- same as form name
+
+export default connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(
+ reduxForm({
+ form: "changepasswordForm",
+ destroyOnUnmount: false,
+ })(ChangePassword)
+);
diff --git a/components/account/personaldetails.js b/components/account/personaldetails.js
new file mode 100644
index 00000000..f88fc88b
--- /dev/null
+++ b/components/account/personaldetails.js
@@ -0,0 +1,314 @@
+import _ from "lodash";
+import Link from "next/link";
+import React, { useState } from "react";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import {
+ Field,
+ reduxForm,
+ formValueSelector,
+ getFormSubmitErrors,
+} from "redux-form";
+import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
+import {
+ Textfield,
+ DateField,
+ DateFieldPicker,
+ YesNofield,
+ PickList,
+ MultiLinefield,
+ NumericField,
+ ReadOnlyfield,
+ DecimalField,
+} from "../elements";
+import BuildCheckPersonalDetails from "./personaldetailsCheck";
+
+const RenderTextfield = ({
+ id,
+ className,
+ rows,
+ datafieldname,
+ name,
+ label,
+ input,
+ type,
+ errorMsg,
+ meta: { touched, error },
+ ...custom
+}) => {
+ return (
+ <>
+
+
+ {label}
+
+ {touched && error && (
+
+ Error: {" "}
+ {touched &&
+ ((error && (
+ {errorMsg ? errorMsg : error}
+ )) ||
+ (warning && {warning} ))}
+
+ )}
+
+
+ >
+ );
+};
+
+const PersonalDetails = (props) => {
+ const { footerLinks, pages, handleSubmit, value } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ let errorsobj = {};
+
+ const onHandleSubmit = (values) => {
+ console.log(values);
+ };
+
+ const required = (value) => (value ? undefined : "Is required");
+ const email = (value) =>
+ value && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)
+ ? "Invalid email address"
+ : undefined;
+ const phoneNumber = (value) =>
+ value &&
+ !/^(?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0))(?:(?:\d{5}\)?[\s-]?\d{4,5})|(?:\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3}))|(?:\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4})|(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}))(?:[\s-]?(?:x|ext\.?|\#)\d{3,4})?$/i.test(
+ value
+ )
+ ? "Invalid phone number"
+ : undefined;
+
+ const [hasErrors, setHasErrors] = useState("");
+
+ const [personalDetailsComplete, setPersonalDetailsComplete] =
+ useState(false);
+
+ return (
+ <>
+ {/* {hasErrors == true ? (
+
+ ) : (
+ ""
+ )} */}
+
+ {personalDetailsComplete == false ? (
+
+ ) : (
+ <>
+
+
+ >
+ )}
+ >
+ );
+};
+
+const mapStateToProps = (state) => {
+ return {
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ formData: state.formData,
+ appealType: state.appealType,
+ accountDetails: state.accountDetails,
+ //form: state.form,
+ };
+};
+
+const mapDispatchToProps = (dispatch) => {
+ return {
+ setCurrentSection: (currentSection) => {
+ dispatch(setCurrentSection(currentSection));
+ },
+ };
+};
+
+const selector = formValueSelector("personalDetailsForm"); // <-- same as form name
+
+export default connect(mapStateToProps, mapDispatchToProps, (state) => ({
+ initialValues: state.accountDetails.accountDetails.data,
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ formData: state.formData,
+ appealType: state.appealType,
+ accountDetails: state.accountDetails,
+ form: state.form,
+ // pull initial values from account reducer
+}))(
+ reduxForm({
+ form: "personalDetailsForm",
+ enableReinitialize: true, // this is needed!!
+ destroyOnUnmount: false,
+ })(PersonalDetails)
+);
diff --git a/components/account/personaldetailsCheck.js b/components/account/personaldetailsCheck.js
new file mode 100644
index 00000000..e1150161
--- /dev/null
+++ b/components/account/personaldetailsCheck.js
@@ -0,0 +1,311 @@
+import _ from "lodash";
+import React, { useState } from "react";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import {
+ Field,
+ reduxForm,
+ formValueSelector,
+ getFormSubmitErrors,
+} from "redux-form";
+import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
+
+const BuildCheckPersonalDetails = (props) => {
+ const {
+ footerLinks,
+ pages,
+ handleSubmit,
+ value,
+ setPersonalDetailsComplete,
+ } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+ <>
+ About you
+
+
+
+
+
+
+
+
+ Your address
+
+
+
+
+
+
+
+ >
+ );
+};
+
+const mapStateToProps = (state) => {
+ return {
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ formData: state.formData,
+ appealType: state.appealType,
+ accountDetails: state.accountDetails,
+ //form: state.form,
+ };
+};
+
+const mapDispatchToProps = (dispatch) => {
+ return {
+ setCurrentSection: (currentSection) => {
+ dispatch(setCurrentSection(currentSection));
+ },
+ };
+};
+
+const selector = formValueSelector("personalDetailsForm"); // <-- same as form name
+
+export default connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(BuildCheckPersonalDetails);
diff --git a/components/account/registerform.js b/components/account/registerform.js
new file mode 100644
index 00000000..b751f88a
--- /dev/null
+++ b/components/account/registerform.js
@@ -0,0 +1,264 @@
+import _ from "lodash";
+import React, { useState } from "react";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import {
+ Field,
+ reduxForm,
+ formValueSelector,
+ getFormSubmitErrors,
+} from "redux-form";
+import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
+import {
+ Textfield,
+ DateField,
+ DateFieldPicker,
+ YesNofield,
+ PickList,
+ MultiLinefield,
+ NumericField,
+ ReadOnlyfield,
+ DecimalField,
+} from "../elements";
+
+const RenderTextfield = ({
+ id,
+ className,
+ rows,
+ datafieldname,
+ name,
+ label,
+ input,
+ type,
+ errorMsg,
+ meta: { touched, error },
+ ...custom
+}) => {
+ return (
+ <>
+
+
+ {label}
+
+ {touched && error && (
+
+ Error: {" "}
+ {touched &&
+ ((error && (
+ {errorMsg ? errorMsg : error}
+ )) ||
+ (warning && {warning} ))}
+
+ )}
+
+
+ >
+ );
+};
+
+const RegisterForm = (props) => {
+ const { footerLinks, pages, handleSubmit, value } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ let errorsobj = {};
+
+ const onHandleSubmit = (values) => {
+ console.log(values);
+ };
+
+ const required = (value) => (value ? undefined : "Is required");
+ const email = (value) =>
+ value && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)
+ ? "Invalid email address"
+ : undefined;
+ const phoneNumber = (value) =>
+ value &&
+ !/^(?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0))(?:(?:\d{5}\)?[\s-]?\d{4,5})|(?:\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3}))|(?:\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4})|(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}))(?:[\s-]?(?:x|ext\.?|\#)\d{3,4})?$/i.test(
+ value
+ )
+ ? "Invalid phone number"
+ : undefined;
+
+ const [hasErrors, setHasErrors] = useState("");
+
+ return (
+ <>
+ {/* {hasErrors == true ? (
+
+ ) : (
+ ""
+ )} */}
+
+ >
+ );
+};
+
+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));
+ },
+ };
+};
+
+const selector = formValueSelector("accountRegisterForm"); // <-- same as form name
+
+export default connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(
+ reduxForm({
+ form: "accountRegisterForm",
+ destroyOnUnmount: false,
+ })(RegisterForm)
+);
diff --git a/components/banner.js b/components/banner.js
new file mode 100644
index 00000000..3736061e
--- /dev/null
+++ b/components/banner.js
@@ -0,0 +1,12 @@
+import Link from "next/link";
+
+export default function Banner() {
+ return (
+
+
+ beta
+ This is a new service
+
+
+ );
+}
diff --git a/components/breadcrumbs.js b/components/breadcrumbs.js
new file mode 100644
index 00000000..15455839
--- /dev/null
+++ b/components/breadcrumbs.js
@@ -0,0 +1,231 @@
+import Link from "next/link";
+import jsonpath from "jsonpath";
+import _ from "lodash";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+const Breadcrumbs = (props) => {
+ const {
+ courseContent,
+ slug,
+ formTitle,
+ activitysub,
+ activity,
+ applicant_id,
+ course_id,
+ applicant_ref,
+ } = props;
+ const router = useRouter();
+ const { appealType, section } = router.query;
+
+ let { t } = useTranslation();
+
+ function Breadcrumb() {
+ if (slug) {
+ var coursePageURL = appealType + "/" + slug;
+ if (_.isEmpty(courseContent)) {
+ return null;
+ } else {
+ var sectionObj = jsonpath.query(
+ courseContent,
+ '$..sections[?(@.path=="/' + coursePageURL + '")]'
+ );
+ var breadcrumb = sectionObj[0].chapter.title; //sectionObj[0].chapter
+ return (
+
+ {breadcrumb}
+
+ );
+ }
+ } else {
+ return null;
+ }
+ }
+
+ return (
+
+
+
+ );
+};
+export default Breadcrumbs;
diff --git a/components/case.js b/components/case.js
new file mode 100644
index 00000000..b55d1f58
--- /dev/null
+++ b/components/case.js
@@ -0,0 +1,28 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useContext } from "react";
+import useTranslation from "next-translate/useTranslation";
+import Summary from "./case/summary";
+import Documents from "./case/documents";
+
+export default function CaseSummary({ children, pages }) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+ );
+}
diff --git a/components/case/documents.js b/components/case/documents.js
new file mode 100644
index 00000000..96a0b42f
--- /dev/null
+++ b/components/case/documents.js
@@ -0,0 +1,65 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function CaseSummary() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+
+
+
Documents
+
+
+
+ {t("case:documents-name-label")}
+
+
+ {t("case:documents-doc-type-label")}
+
+
+ {t("case:documents-date-published-label")}
+
+
+ {t("case:documents-size-label")}
+
+
+
+
+
+
+
+ );
+}
diff --git a/components/case/summary.js b/components/case/summary.js
new file mode 100644
index 00000000..3d98b971
--- /dev/null
+++ b/components/case/summary.js
@@ -0,0 +1,276 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function CaseSummary() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+
+
+
+ Reference: CAS-00010-J9W6L5
+
+
+
+
+
+ {t("case:summary-applicant-label")}
+
+
+ Mr J Pocknell
+
+
+
+
+ {t("case:summary-agent-label")}
+
+
+ Mr Cos Polito
+
+
+
+
+ {t("case:summary-site-address-label")}
+
+
+ 72 Guild Street
+
+ London
+
+ SE23 6FH
+
+
+
+
+
+
+
+ {/*
*/}
+
+ );
+}
diff --git a/components/caseresults.js b/components/caseresults.js
new file mode 100644
index 00000000..b7c0223e
--- /dev/null
+++ b/components/caseresults.js
@@ -0,0 +1,45 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useContext } from "react";
+import useTranslation from "next-translate/useTranslation";
+import SearchForCase from "./search/searchforcase";
+import SearchResults from "./search/searchresults";
+
+export default function Search({ children, pages }) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+
+ );
+}
diff --git a/components/checkanswers.js b/components/checkanswers.js
new file mode 100644
index 00000000..3ce9038f
--- /dev/null
+++ b/components/checkanswers.js
@@ -0,0 +1,33 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useContext } from "react";
+import useTranslation from "next-translate/useTranslation";
+import BuildCheckSection from "./newappeal/buildchecksection";
+
+const CheckAnswers = (props) => {
+ const { formXML, formTitle, rowXML, whichSection, sectionCount, onSubmit } =
+ props;
+
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+ sss
+
+
+ );
+};
+
+export default CheckAnswers;
diff --git a/components/cookieBanner.js b/components/cookieBanner.js
new file mode 100644
index 00000000..1666cb40
--- /dev/null
+++ b/components/cookieBanner.js
@@ -0,0 +1,58 @@
+import CookieConsent from "react-cookie-consent";
+import Link from "next/link";
+
+const CookieBanner = () => {
+ return (
+
+
+
+
+
+
+
+
+ Tell us whether you accept cookies
+
+
+ GOV.UK uses cookies which are essential
+ for the site to work. We also use
+ non-essential cookies to help us improve
+ government digital services. Any data
+ collected is anonymised. By continuing
+ to use this site, you agree to our use
+ of cookies.
+
+
+
+
+
+
+
+
+ );
+};
+
+export default CookieBanner;
diff --git a/components/elements/index.js b/components/elements/index.js
new file mode 100644
index 00000000..8b3409a8
--- /dev/null
+++ b/components/elements/index.js
@@ -0,0 +1,496 @@
+import useSWR from "swr";
+import { Field, reduxForm } from "redux-form";
+import router from "next/router";
+import DatePicker from "react-datepicker";
+import React, { useState } from "react";
+import "react-datepicker/dist/react-datepicker.css";
+import moment from "moment";
+
+const RenderTextfield = ({
+ id,
+ className,
+ rows,
+ datafieldname,
+ name,
+ label,
+ input,
+ errorMsg,
+ meta: { touched, error },
+ ...custom
+}) => {
+ return (
+ <>
+
+
+ {label}
+
+ {touched && error && (
+
+ Error: {" "}
+ {errorMsg}
+
+ )}
+
+
+ >
+ );
+};
+
+export function Textfield(props) {
+ const { name, label, validate } = props;
+ const required = (value) => (value ? undefined : "Required");
+
+ return (
+
+ );
+}
+
+const RenderMultiline = ({
+ className,
+ rows,
+ datafieldname,
+ name,
+ label,
+ input,
+ meta: { touched, error },
+ ...custom
+}) => {
+ return (
+ <>
+
+ >
+ );
+};
+
+export function MultiLinefield(props) {
+ const { name, label } = props;
+
+ return (
+
+
+
+ {props.label}
+
+
+
+ Do not include personal or financial information, like your
+ National Insurance number or credit card details.
+
+
+
+
+ );
+}
+
+const RenderDatePicker = ({
+ datafieldname,
+ name,
+ label,
+ id,
+ errorMsg,
+ input: { onChange, value },
+ meta: { touched, error },
+ ...custom
+}) => {
+ return (
+ <>
+
+
+
+
+ {label}
+
+
+ {touched && error && (
+
+
+ Error:
+ {" "}
+ {errorMsg}
+
+ )}
+
+
+
+ >
+ );
+};
+
+export function DateFieldPicker(props) {
+ const { name, label } = props;
+ const required = (value) => (value ? undefined : "Required");
+
+ return (
+
+ );
+}
+
+export function DateField(props) {
+ const { name, label } = props;
+
+ return (
+
+
+
+
+ {props.label}
+
+
+
+
+
+ );
+}
+
+const RenderYesNo = ({
+ datafieldname,
+ name,
+ label,
+ id,
+ errorMsg,
+ options,
+ input: { onChange, value },
+ meta: { touched, error },
+ ...custom
+}) => {
+ return (
+ <>
+
+
+
+
+ {label}
+
+
+ {touched && error && (
+
+
+ Error:
+ {" "}
+ {errorMsg}
+
+ )}
+
+ {Object.keys(options).map((key, index) => (
+
+
+
+ {options[key]}
+
+
+ ))}
+
+
+
+ >
+ );
+};
+
+export function YesNofield(props) {
+ const { name, label } = props;
+ const yesNo = ["Yes", "No"];
+ const required = (value) => (value ? undefined : "Required");
+
+ return (
+
+ );
+}
+
+const RenderPickList = ({
+ datafieldname,
+ name,
+ label,
+ input,
+ meta: { touched, errorStr },
+}) => {
+ const fetcher = (url) => fetch(url).then((res) => res.json());
+
+ const { data, error } = useSWR("/api/lookups/" + datafieldname, fetcher);
+ if (error)
+ return (
+
+
+ {label}
+
+
+ empty
+
+
+ );
+ if (!data)
+ return (
+
+ );
+ //console.log(JSON.stringify(data.GlobalOptionSet.Options));
+
+ const dropdownObj = data.GlobalOptionSet.Options;
+
+ return (
+
+
+ Select...
+ {Object.keys(dropdownObj).map((key, index) => {
+ return (
+
+ {dropdownObj[key].Label.LocalizedLabels[0].Label}
+
+ );
+ })}
+
+
+ {touched && errorStr && {errorStr} }
+
+ );
+};
+
+export function PickList(props) {
+ const { name, label, datafieldname } = props;
+
+ return (
+
+
+ {props.label}
+
+
+
+ );
+}
+
+export function NumericField(props) {
+ const { name, label } = props;
+
+ return (
+
+
+ {props.label}
+
+
+
+ );
+}
+
+export function DecimalField(props) {
+ const { name, label } = props;
+
+ return (
+
+
+ {props.label}
+
+
+
+ );
+}
+
+const RenderCaseID = {};
+
+export function ReadOnlyfield(props) {
+ const { name, label, value } = props;
+ //console.log(props.value.refno);
+ return (
+
+
+ {props.label}
+
+
+
+ );
+}
diff --git a/components/errorpage.js b/components/errorpage.js
new file mode 100644
index 00000000..eb3cb573
--- /dev/null
+++ b/components/errorpage.js
@@ -0,0 +1,58 @@
+import Link from "next/link";
+import Header from "./header";
+import Banner from "./breadcrumbs";
+import Breadcrumbs from "./banner";
+import Footer from "./footer";
+
+const Errorpage = () => {
+ var m = new Date();
+ var dateString =
+ m.getUTCDate() +
+ "/" +
+ (m.getUTCMonth() + 1) +
+ "/" +
+ m.getUTCFullYear() +
+ " " +
+ m.getUTCHours() +
+ ":" +
+ m.getUTCMinutes() +
+ ":" +
+ m.getUTCSeconds();
+
+ return (
+
+
+
+
+
+
+
There has been a problem
+
+ Unfortunately something has gone wrong!
+
+
{dateString}
+
+
+ Try again
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Errorpage;
diff --git a/components/footer.js b/components/footer.js
new file mode 100644
index 00000000..fbccab2a
--- /dev/null
+++ b/components/footer.js
@@ -0,0 +1,119 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function Footer(props) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ var linksArr = props.footerLinks || [{}];
+
+ const linksBlock = Object.keys(linksArr).map((key) => (
+
+
+ {linksArr[key].title}
+
+
+ ));
+
+ return (
+
+
+
+
+
+
Support links
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/components/header.js b/components/header.js
new file mode 100644
index 00000000..f44a131c
--- /dev/null
+++ b/components/header.js
@@ -0,0 +1,107 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function Header({ courseName }) {
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+ );
+}
diff --git a/components/homepage/casecomment.js b/components/homepage/casecomment.js
new file mode 100644
index 00000000..32101655
--- /dev/null
+++ b/components/homepage/casecomment.js
@@ -0,0 +1,21 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function CaseComment() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/homepage/casesearch.js b/components/homepage/casesearch.js
new file mode 100644
index 00000000..720918f8
--- /dev/null
+++ b/components/homepage/casesearch.js
@@ -0,0 +1,92 @@
+import Link from "next/link";
+import { useState } from "react";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function CaseSearch() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const [query, setQuery] = useState("");
+ const [validationError, setValidationError] = useState("");
+ const handleParam = (setValue) => (e) => setValue(e.target.value);
+
+ const basicSearch = (event) => {
+ event.preventDefault();
+
+ if (query == "" || query == null) {
+ setValidationError(true);
+ } else {
+ setValidationError(false);
+ console.log(query);
+ // /searchresults
+
+ router.push({
+ pathname: "/searchresults",
+ query: { q: query },
+ });
+ }
+ };
+
+ return (
+
+ );
+}
diff --git a/components/homepage/inspectorate.js b/components/homepage/inspectorate.js
new file mode 100644
index 00000000..d980c2fd
--- /dev/null
+++ b/components/homepage/inspectorate.js
@@ -0,0 +1,30 @@
+import Link from "next/link";
+import Image from "next/image";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function Inspectorate() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/homepage/login.js b/components/homepage/login.js
new file mode 100644
index 00000000..b741d6c3
--- /dev/null
+++ b/components/homepage/login.js
@@ -0,0 +1,87 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function Login() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+
+
+ {t("home:login-card-title")}
+
+
+
+
+
+
+ );
+}
diff --git a/components/loading.js b/components/loading.js
new file mode 100644
index 00000000..cb82583e
--- /dev/null
+++ b/components/loading.js
@@ -0,0 +1,38 @@
+import Head from "next/head";
+import Banner from "../components/banner";
+import Footer from "../components/footer";
+import Header from "../components/header";
+
+export default function SkipLink(props) {
+ return (
+
+
+
Appeals Casework Portal
+
+
+
+
+
+
+
+
+
+
+
+ Please enable javascript
+
+
+
Loading...
+
+
+
+
+
+
+
+ );
+}
diff --git a/components/main.js b/components/main.js
new file mode 100644
index 00000000..c5095231
--- /dev/null
+++ b/components/main.js
@@ -0,0 +1,36 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useContext } from "react";
+import useTranslation from "next-translate/useTranslation";
+import Login from "./homepage/login";
+import CaseSearch from "./homepage/casesearch";
+import Inspectorate from "./homepage/inspectorate";
+import CaseComment from "./homepage/casecomment";
+
+
+export default function Home({ children, pages }) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+ );
+}
diff --git a/components/myportal.js b/components/myportal.js
new file mode 100644
index 00000000..3f65ea8e
--- /dev/null
+++ b/components/myportal.js
@@ -0,0 +1,42 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useContext } from "react";
+import useTranslation from "next-translate/useTranslation";
+import MakeNewAppeal from "./myportal/makenewappeal";
+import MyCases from "./myportal/mycases";
+import SearchCases from "./myportal/searchcases";
+import AwaitingSubmission from "./myportal/awaitingsubmission";
+import MyRepresentations from "./myportal/myrepresentations";
+import WatchedCases from "./myportal/watchedcases";
+import YourAccount from "./myportal/youraccount";
+
+export default function MyPortal({ children, pages }) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+ );
+}
diff --git a/components/myportal/awaitingsubmission.js b/components/myportal/awaitingsubmission.js
new file mode 100644
index 00000000..83eb3244
--- /dev/null
+++ b/components/myportal/awaitingsubmission.js
@@ -0,0 +1,28 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import TopThree from "./topthree";
+
+export default function AwaitingSubmission() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/myportal/makenewappeal.js b/components/myportal/makenewappeal.js
new file mode 100644
index 00000000..aa0af61f
--- /dev/null
+++ b/components/myportal/makenewappeal.js
@@ -0,0 +1,32 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function MakeNewAppeal() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/myportal/mycases.js b/components/myportal/mycases.js
new file mode 100644
index 00000000..73774de8
--- /dev/null
+++ b/components/myportal/mycases.js
@@ -0,0 +1,28 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import TopThree from "./topthree";
+export default function MyCases() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/myportal/myrepresentations.js b/components/myportal/myrepresentations.js
new file mode 100644
index 00000000..4b39a92e
--- /dev/null
+++ b/components/myportal/myrepresentations.js
@@ -0,0 +1,28 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import TopThree from "./topthree";
+export default function MyRepresentations() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/myportal/searchcases.js b/components/myportal/searchcases.js
new file mode 100644
index 00000000..955dbafe
--- /dev/null
+++ b/components/myportal/searchcases.js
@@ -0,0 +1,96 @@
+import Link from "next/link";
+import { useState } from "react";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function SearchCases() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const [query, setQuery] = useState("");
+ const [validationError, setValidationError] = useState("");
+ const handleParam = (setValue) => (e) => setValue(e.target.value);
+
+ const basicSearch = (event) => {
+ event.preventDefault();
+
+ if (query == "" || query == null) {
+ setValidationError(true);
+ } else {
+ setValidationError(false);
+ console.log(query);
+ // /searchresults
+
+ router.push({
+ pathname: "/searchresults",
+ query: { q: query },
+ });
+ }
+ };
+
+ return (
+
+ );
+}
diff --git a/components/myportal/topthree.js b/components/myportal/topthree.js
new file mode 100644
index 00000000..109d2748
--- /dev/null
+++ b/components/myportal/topthree.js
@@ -0,0 +1,56 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function TopThree() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+ <>
+
+
+
+
+ Address: Beggars Lane
+
+
+
—
+
+
+
+
+
+ Address: Beggars Lane
+
+
+
—
+
+
+
+
+
+ Address: Beggars Lane
+
+
+
—
+
+ >
+ );
+}
diff --git a/components/myportal/watchedcases.js b/components/myportal/watchedcases.js
new file mode 100644
index 00000000..7ca84b66
--- /dev/null
+++ b/components/myportal/watchedcases.js
@@ -0,0 +1,28 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import TopThree from "./topthree";
+export default function WatchedCases() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/myportal/youraccount.js b/components/myportal/youraccount.js
new file mode 100644
index 00000000..e5819793
--- /dev/null
+++ b/components/myportal/youraccount.js
@@ -0,0 +1,46 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function YourAccount() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/components/newappeal.js b/components/newappeal.js
new file mode 100644
index 00000000..48befd90
--- /dev/null
+++ b/components/newappeal.js
@@ -0,0 +1,34 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useContext } from "react";
+import useTranslation from "next-translate/useTranslation";
+import PlanningAppeal from "./newappeal/planningappeal";
+import EnforcementNotice from "./newappeal/enforcementnotice";
+import LDC from "./newappeal/ldc";
+import AdvertApplication from "./newappeal/advertapplication";
+
+export default function NewAppeal({ children, pages }) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+ );
+}
diff --git a/components/newappeal/advertapplication.js b/components/newappeal/advertapplication.js
new file mode 100644
index 00000000..c278235b
--- /dev/null
+++ b/components/newappeal/advertapplication.js
@@ -0,0 +1,27 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function MakeAdvertApplication() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/newappeal/buildCheckfield.js b/components/newappeal/buildCheckfield.js
new file mode 100644
index 00000000..a8b8e48d
--- /dev/null
+++ b/components/newappeal/buildCheckfield.js
@@ -0,0 +1,64 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import xpath from "xpath";
+import {
+ Textfield,
+ DateField,
+ DateFieldPicker,
+ YesNofield,
+ PickList,
+ MultiLinefield,
+ NumericField,
+ ReadOnlyfield,
+ DecimalField,
+} from "../elements";
+import moment from "moment";
+
+export default function BuildField(props) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ const { fieldType, label, datafieldname, fieldValue } = props;
+
+ const parser = new DOMParser();
+
+ const whichFieldType = (classid) => {
+ switch (classid) {
+ case "{270BD3DB-D9AF-4782-9025-509E298DEC0A}":
+ return <>{fieldValue}>;
+ break;
+ case "{3EF39988-22BB-4f0b-BBBE-64B5A3748AEE}":
+ return <>{fieldValue}>;
+ break;
+ case "{67FAC785-CD58-4f9f-ABB3-4B7DDC6ED5ED}":
+ return <>{fieldValue}>;
+ break;
+ case "{ 4273EDBD-AC1D-40d3-9FB2-095C621B552D}":
+ return <>{fieldValue}>;
+ break;
+ case "{5B773807-9FB2-42db-97C3-7A91EFF8ADFF}":
+ return (
+ <>
+ hello
+ >
+ );
+ break;
+ case "{E0DECE4B-6FC8-4a8f-A065-082708572369}":
+ return <>{fieldValue}>;
+ break;
+ case "{C6D124CA-7EDA-4a60-AEA9-7FB8D318B68F}":
+ return <>{fieldValue}>;
+ break;
+ case "{C3EFE0C3-0EC6-42be-8349-CBD9079DFD8E}":
+ return <>{fieldValue}>;
+ break;
+ default:
+ return <>{fieldValue}>;
+ }
+ };
+
+ return <>{whichFieldType(props.fieldType)}>;
+}
diff --git a/components/newappeal/buildcheckrow.js b/components/newappeal/buildcheckrow.js
new file mode 100644
index 00000000..145abfc8
--- /dev/null
+++ b/components/newappeal/buildcheckrow.js
@@ -0,0 +1,95 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import xpath from "xpath";
+import BuildCheckField from "./buildCheckfield";
+import { useSelector, shallowEqual, connect } from "react-redux";
+import {
+ setCaseReference,
+ setCurrentSection,
+ setFormComplete,
+} from "../../store/appealType/action";
+
+let BuildCheckRow = (props) => {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ const {
+ formXML,
+ whichSection,
+ sectionCount,
+ onSubmit,
+ updateCurrentSection,
+ } = props;
+
+ const parser = new DOMParser();
+ var doc = parser.parseFromString(props.formXML, "text/xml");
+
+ var rowXML = xpath.select(
+ "/form/tabs/tab[" +
+ whichSection +
+ "]/columns//sections/section/rows/row",
+ doc
+ );
+
+ return (
+ <>
+ {Object.keys(rowXML).map((key, index) => {
+ var doc = parser.parseFromString(
+ rowXML[key].outerHTML,
+ "text/xml"
+ );
+ var rows = xpath.select("//label/@description", doc);
+ var fieldtype = xpath.select("//@classid", doc);
+ var datafieldname = xpath.select("//@datafieldname", doc);
+
+ return (
+
+ );
+ })}
+ >
+ );
+};
+
+const mapDispatchToProps = (dispatch) => {
+ return {
+ updateCurrentSection: (whichSection) => {
+ dispatch(setCurrentSection(whichSection));
+ dispatch(setFormComplete("true"));
+ },
+ };
+};
+
+const mapStateToProps = (state) => ({
+ count: state.count,
+});
+
+export default connect(mapStateToProps, mapDispatchToProps)(BuildCheckRow);
diff --git a/components/newappeal/buildchecksection.js b/components/newappeal/buildchecksection.js
new file mode 100644
index 00000000..ca02941a
--- /dev/null
+++ b/components/newappeal/buildchecksection.js
@@ -0,0 +1,125 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import { useState, useEffect } from "react";
+import xpath from "xpath";
+import BuildCheckRow from "./buildcheckrow";
+import { reduxForm, formValueSelector } from "redux-form";
+import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
+import {
+ setCurrentSection,
+ setFormComplete,
+} from "../../store/appealType/action";
+
+let BuildCheckSection = (props) => {
+ useEffect(() => {
+ setFormComplete();
+ }, []);
+
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ const {
+ formXML,
+ sectionCount,
+ onSubmit,
+ handleSubmit,
+ formTitle,
+ setCurrentSection,
+ } = 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
+ };
+
+ return (
+
+
+
+
+ Are these answers correct?
+
+ {Object.keys(titles).map((key) => (
+ <>
+
+ {titles[key].value}
+
+
+
+
+
+ >
+ ))}
+
+
+
+
+
+
+
+ );
+};
+
+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));
+ },
+ };
+};
+
+// 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)(BuildCheckSection);
diff --git a/components/newappeal/buildfield.js b/components/newappeal/buildfield.js
new file mode 100644
index 00000000..520749ee
--- /dev/null
+++ b/components/newappeal/buildfield.js
@@ -0,0 +1,102 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import xpath from "xpath";
+import {
+ Textfield,
+ DateField,
+ DateFieldPicker,
+ YesNofield,
+ PickList,
+ MultiLinefield,
+ NumericField,
+ ReadOnlyfield,
+ DecimalField,
+} from "../elements";
+
+export default function BuildField(props) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ const { fieldType, label, datafieldname } = props;
+
+ const parser = new DOMParser();
+
+ const whichFieldType = (classid) => {
+ switch (classid) {
+ case "{270BD3DB-D9AF-4782-9025-509E298DEC0A}":
+ return (
+
+ );
+ break;
+ case "{3EF39988-22BB-4f0b-BBBE-64B5A3748AEE}":
+ return (
+
+ );
+ break;
+ case "{67FAC785-CD58-4f9f-ABB3-4B7DDC6ED5ED}":
+ return (
+
+ );
+ break;
+ case "{ 4273EDBD-AC1D-40d3-9FB2-095C621B552D}":
+ return (
+
+ );
+ break;
+ case "{5B773807-9FB2-42db-97C3-7A91EFF8ADFF}":
+ return (
+
+ );
+ break;
+ case "{E0DECE4B-6FC8-4a8f-A065-082708572369}":
+ return (
+
+ );
+ break;
+ case "{C6D124CA-7EDA-4a60-AEA9-7FB8D318B68F}":
+ return (
+
+ );
+ break;
+ case "{C3EFE0C3-0EC6-42be-8349-CBD9079DFD8E}":
+ return (
+
+ );
+ break;
+ default:
+ return (
+
+ );
+ }
+ };
+
+ return (
+ {whichFieldType(props.fieldType)}
+ );
+}
diff --git a/components/newappeal/buildrow.js b/components/newappeal/buildrow.js
new file mode 100644
index 00000000..f5211c4e
--- /dev/null
+++ b/components/newappeal/buildrow.js
@@ -0,0 +1,39 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+import xpath from "xpath";
+import BuildField from "./buildfield";
+
+export default function BuildRow(props) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ const { rowXML, whichSection, sectionCount, onSubmit } = props;
+
+ const parser = new DOMParser();
+
+ return (
+
+ {Object.keys(rowXML).map((key, index) => {
+ var doc = parser.parseFromString(
+ rowXML[key].outerHTML,
+ "text/xml"
+ );
+ var rows = xpath.select("//label/@description", doc);
+ var fieldtype = xpath.select("//@classid", doc);
+ var datafieldname = xpath.select("//@datafieldname", doc);
+ return (
+
+ );
+ })}
+
+ );
+}
diff --git a/components/newappeal/buildsection.js b/components/newappeal/buildsection.js
new file mode 100644
index 00000000..0002d5dd
--- /dev/null
+++ b/components/newappeal/buildsection.js
@@ -0,0 +1,278 @@
+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,
+} from "../../store/appealType/action";
+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,
+ formTitle,
+ setCurrentSection,
+ refno,
+ gotoSection,
+ } = props;
+
+ 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",
+ doc
+ );
+
+ var titleList = xpath.select(
+ "//form/tabs/tab[*]/labels/label/@description",
+ doc
+ );
+
+ const handleParam = (setValue) => (e) => setValue(e.target.value);
+
+ const onHandleSubmit = (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}{" "}
+
+
+
+
+
+
+ Progress:
+
+
+
+
+
+
+
+
+
+ );
+};
+
+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));
+ },
+ gotoSection: (thisSection) => {
+ dispatch(setCurrentSection(thisSection));
+ },
+ };
+};
+
+const selector = formValueSelector("appealForm"); // <-- same as form name
+
+export default connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(
+ reduxForm({
+ form: "appealForm",
+ destroyOnUnmount: false,
+ })(BuildSection)
+);
diff --git a/components/newappeal/complete.js b/components/newappeal/complete.js
new file mode 100644
index 00000000..1d6791ad
--- /dev/null
+++ b/components/newappeal/complete.js
@@ -0,0 +1,124 @@
+import Link from "next/link";
+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 } from "redux-form";
+import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
+import { setCurrentSection } from "../../store/appealType/action";
+
+let CompleteAppeal = (props) => {
+ // useEffect(() => {
+ // window.scrollTo(0, 0);
+ // });
+
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ const {
+ formXML,
+ sectionCount,
+ onSubmit,
+ handleSubmit,
+ formTitle,
+ setCurrentSection,
+ } = props;
+
+ 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",
+ doc
+ );
+
+ var titleList = xpath.select(
+ "//form/tabs/tab[*]/labels/label/@description",
+ doc
+ );
+
+ const handleParam = (setValue) => (e) => setValue(e.target.value);
+
+ const onHandleSubmit = (values) => {
+ setCurrentSection(currentSection + 1);
+ };
+
+ return (
+
+
+
+
Appeal complete
+
+ Your reference number
+
+ {props.appealType.caseReference}
+
+
+
+
+ We have sent you a confirmation email.
+
+
+
What happens next
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ Morbi a metus non quam mollis egestas. Integer ac leo
+ cursus, laoreet nulla sed, tempus tellus. Mauris condimentum
+ erat arcu.
+
+
+ Sed imperdiet dignissim ipsum. Orci varius natoque penatibus
+ et magnis dis parturient montes, nascetur ridiculus mus. In
+ id leo in turpis aliquam venenatis ut non erat. Ut est arcu,
+ luctus sit amet pretium sed, iaculis non purus. Etiam dictum
+ tortor commodo luctus rhoncus.
+
+
+
+
+ Back to My Portal
+
+
+
+
+
+ What did you think of this service?
+
+ (takes 30 seconds)
+
+
+
+ );
+};
+
+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));
+ },
+ };
+};
+
+const selector = formValueSelector("appealForm"); // <-- same as form name
+
+export default connect(mapStateToProps, mapDispatchToProps)(CompleteAppeal);
diff --git a/components/newappeal/createCase.js b/components/newappeal/createCase.js
new file mode 100644
index 00000000..f80c367e
--- /dev/null
+++ b/components/newappeal/createCase.js
@@ -0,0 +1,257 @@
+import Link from "next/link";
+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, Field } from "redux-form";
+import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
+import jsonpath from "jsonpath";
+import {
+ setAppealType,
+ setAppealTypeTitle,
+ setAppealTypeID,
+ setAppealLPA,
+ getAppealTypeObj,
+} from "../../store/appealType/action";
+
+let CreateCase = (props) => {
+ // useEffect(() => {
+ // window.scrollTo(0, 0);
+ // });
+
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ const { LPAData, onSubmit, handleSubmit } = props;
+
+ const appealOptionsObj = _.isEmpty(props)
+ ? [{}]
+ : _.isEmpty(props.appealType)
+ ? [{}]
+ : _.isEmpty(props.appealType.appealTypeOptions)
+ ? [{}]
+ : _.isEmpty(props.appealType.appealTypeOptions.GlobalOptionSet)
+ ? [{}]
+ : _.isEmpty(props.appealType.appealTypeOptions.GlobalOptionSet.Options)
+ ? [{}]
+ : props.appealType.appealTypeOptions.GlobalOptionSet.Options;
+
+ let lpaOptionsObj = _.isEmpty(props)
+ ? [{}]
+ : _.isEmpty(props.LPAData)
+ ? [{}]
+ : _.isEmpty(props.LPAData.LPAData)
+ ? [{}]
+ : jsonpath.query(props.LPAData.LPAData, "$..name");
+
+ const RenderLPAList = ({
+ name,
+ input,
+ optionsObj,
+ meta: { touched, error },
+ label,
+ errorMsg,
+ }) => {
+ return (
+ <>
+
+ {" "}
+
+ {label}
+
+ {touched && error && (
+
+
+ Error:
+ {" "}
+ {errorMsg}
+
+ )}
+
+ props.onChangeSelectLPA(e)}
+ >
+
+ Select...
+
+ {_.isEmpty(optionsObj)
+ ? ""
+ : Object.keys(optionsObj).map((key, index) => {
+ return (
+
+ {optionsObj[key]}
+
+ );
+ })}
+
+
+
+ >
+ );
+ };
+
+ const RenderAppealTypeList = ({
+ name,
+ input,
+ optionsObj,
+ meta: { touched, error },
+ label,
+ errorMsg,
+ }) => {
+ return (
+ <>
+
+
+ {label}
+
+ {touched && error && (
+
+
+ Error:
+ {" "}
+ {errorMsg}
+
+ )}
+
+ props.onChangeSelectAppealType(e)}
+ >
+
+ Select...
+
+ {_.isEmpty(optionsObj)
+ ? ""
+ : Object.keys(optionsObj).map((key, index) => {
+ return (
+
+ {
+ optionsObj[key].Label
+ .LocalizedLabels[0].Label
+ }
+
+ );
+ })}
+
+
+
+ >
+ );
+ };
+
+ const required = (value) => (value ? undefined : "Required");
+
+ const onHandleSubmit = (values) => {
+ event.preventDefault();
+ router.replace("/newappeal/" + values.appealTypes, null, {
+ shallow: true,
+ });
+ };
+
+ return (
+
+ );
+};
+
+const mapStateToProps = (state) => {
+ return {
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ formData: state.formData,
+ appealType: state.appealType,
+ //form: state.form,
+ };
+};
+
+const mapDispatchToProps = (dispatch) => {
+ return {
+ onChangeSelectAppealType: (event) => {
+ dispatch(
+ setAppealTypeTitle(
+ event.target.options[event.target.selectedIndex].text
+ )
+ );
+ dispatch(setAppealTypeID(event.target.value));
+ },
+ onChangeSelectLPA: (event) => {
+ dispatch(setAppealLPA(event.target.value));
+ },
+ };
+};
+
+const selector = formValueSelector("caseForm"); // <-- same as form name
+
+export default connect(
+ mapStateToProps,
+ mapDispatchToProps
+)(
+ reduxForm({
+ form: "caseForm",
+ destroyOnUnmount: false,
+ })(CreateCase)
+);
diff --git a/components/newappeal/enforcementnotice.js b/components/newappeal/enforcementnotice.js
new file mode 100644
index 00000000..ca00f199
--- /dev/null
+++ b/components/newappeal/enforcementnotice.js
@@ -0,0 +1,24 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function MakeEnforcementNotice() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/newappeal/ldc.js b/components/newappeal/ldc.js
new file mode 100644
index 00000000..e73db489
--- /dev/null
+++ b/components/newappeal/ldc.js
@@ -0,0 +1,27 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function MakeLDC() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/newappeal/planningappeal.js b/components/newappeal/planningappeal.js
new file mode 100644
index 00000000..08c0cf53
--- /dev/null
+++ b/components/newappeal/planningappeal.js
@@ -0,0 +1,26 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function MakeNewAppeal() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/search.js b/components/search.js
new file mode 100644
index 00000000..fcebb057
--- /dev/null
+++ b/components/search.js
@@ -0,0 +1,23 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useContext } from "react";
+import useTranslation from "next-translate/useTranslation";
+import SearchForCase from "./search/searchforcase";
+import AdvancedSearch from "./search/advancedsearch";
+
+export default function Search({ children, pages }) {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+ );
+}
diff --git a/components/search/advancedsearch.js b/components/search/advancedsearch.js
new file mode 100644
index 00000000..13fc9b43
--- /dev/null
+++ b/components/search/advancedsearch.js
@@ -0,0 +1,922 @@
+import Link from "next/link";
+import { useState } from "react";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function AdvancedSearch(props) {
+ let { t } = useTranslation();
+
+ const [query, setQuery] = useState("");
+ const handleParam = (setValue) => (e) => setValue(e.target.value);
+
+ const advancedSearch = (event) => {
+ event.preventDefault();
+ console.log(query);
+ // /searchresults
+
+ router.push({
+ pathname: "/searchresults",
+ query: { q: query },
+ });
+ };
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/search/searchforcase.js b/components/search/searchforcase.js
new file mode 100644
index 00000000..1974b78f
--- /dev/null
+++ b/components/search/searchforcase.js
@@ -0,0 +1,158 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function SearchForCase() {
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ return (
+
+ );
+}
diff --git a/components/search/searchresults.js b/components/search/searchresults.js
new file mode 100644
index 00000000..7dcfd6c8
--- /dev/null
+++ b/components/search/searchresults.js
@@ -0,0 +1,154 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function SearchResults(props) {
+ const { searchString, searchResultsObj } = props;
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ var resultsArr = props.searchResultsObj.searchResultsObj.value || [{}];
+ const resultRow = Object.keys(resultsArr).map((key, index) => {
+
+
+
+
+
+ wwwwwwwCase Reference:
+
+ {resultsArr[key].title}
+
+
+
+
+ Site Address:
+ 23 Martineau Lane
+ HASTINGS
+
+ TN35 5DS
+
+
+
+ Appellant/Applicant:
+
+ Mr J Pocknell
+
+
+ Authority:
+ Hastings Borough Council{" "}
+
+
+ Case Type:
+ Planning (W){" "}
+
+
+ Status:
+ In Progress
+
+
;
+ });
+
+ return (
+
+
+
+ {t("search:searchresults-title-label")}
+
+
+ {t("search:searchresults-count-label", {
+ count: props.searchResultsObj.searchResultsObj[
+ "@odata.count"
+ ].toString(),
+ })}
+ . You searched for "{searchString}"
+
+
+
+
+ {t("search:searchresults-case-reference-label")}
+
+
+ {t("search:searchresults-site-address-label")}
+
+
+ {t("search:searchresults-applicant-label")}
+
+
+ {t("search:searchresults-authority-label")}
+
+
+ {t("search:searchresults-case-type-label")}
+
+
+ {t("search:searchresults-status-label")}
+
+
+
+ {resultsArr.map((item, key) => {
+ return (
+
+
+
+
+
+ Case Reference:
+
+ {item.title}
+
+
+
+
+
+ Site Address:{" "}
+
+ 23 Martineau Lane
+ HASTINGS
+
+ TN35 5DS
+
+
+
+ Appellant/Applicant:
+
+ Mr J Pocknell
+
+
+
+ Authority:
+
+ {
+ item[
+ "_customerid_value@OData.Community.Display.V1.FormattedValue"
+ ]
+ }
+
+
+
+ Case Type:
+
+ {
+ item[
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
+ ]
+ }
+
+
+
+ Status:
+
+ {
+ item[
+ "statuscode@OData.Community.Display.V1.FormattedValue"
+ ]
+ }
+
+
+ );
+ })}
+
+
+
+ );
+}
diff --git a/components/search/viewall.js b/components/search/viewall.js
new file mode 100644
index 00000000..3d358cd2
--- /dev/null
+++ b/components/search/viewall.js
@@ -0,0 +1,147 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import useTranslation from "next-translate/useTranslation";
+
+export default function ViewAllResults(props) {
+ const { searchString, searchResultsObj } = props;
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ var resultsArr = props.searchResultsObj.searchResultsObj.value || [{}];
+ const resultRow = Object.keys(resultsArr).map((key, index) => {
+
+
+
+
+
+ Case Reference:
+
+ {resultsArr[key].title}
+
+
+
+
+ Site Address:
+ 23 Martineau Lane
+ HASTINGS
+
+ TN35 5DS
+
+
+
+ Appellant/Applicant:
+
+ Mr J Pocknell
+
+
+ Authority:
+ Hastings Borough Council{" "}
+
+
+ Case Type:
+ Planning (W){" "}
+
+
+ Status:
+ In Progress
+
+
;
+ });
+
+ return (
+
+
+
+ Your cases
+
+
+
+
+
+ {t("search:searchresults-case-reference-label")}
+
+
+ {t("search:searchresults-site-address-label")}
+
+
+ {t("search:searchresults-applicant-label")}
+
+
+ {t("search:searchresults-authority-label")}
+
+
+ {t("search:searchresults-case-type-label")}
+
+
+ {t("search:searchresults-status-label")}
+
+
+
+ {resultsArr.map((item, key) => {
+ return (
+
+
+
+
+
+ Case Reference:
+
+ {item.title}
+
+
+
+
+
+ Site Address:{" "}
+
+ 23 Martineau Lane
+ HASTINGS
+
+ TN35 5DS
+
+
+
+ Appellant/Applicant:
+
+ Mr J Pocknell
+
+
+
+ Authority:
+
+ {
+ item[
+ "_customerid_value@OData.Community.Display.V1.FormattedValue"
+ ]
+ }
+
+
+
+ Case Type:
+
+ {
+ item[
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
+ ]
+ }
+
+
+
+ Status:
+
+ {
+ item[
+ "statuscode@OData.Community.Display.V1.FormattedValue"
+ ]
+ }
+
+
+ );
+ })}
+
+
+
+ );
+}
diff --git a/components/searchresults.js b/components/searchresults.js
new file mode 100644
index 00000000..c42e37cb
--- /dev/null
+++ b/components/searchresults.js
@@ -0,0 +1,46 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useContext } from "react";
+import useTranslation from "next-translate/useTranslation";
+import SearchForCase from "./search/searchforcase";
+import SearchResults from "./search/searchresults";
+
+export default function Search(props) {
+ const { searchString, searchResultsObj } = props;
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+
+ );
+}
diff --git a/components/skiplink.js b/components/skiplink.js
new file mode 100644
index 00000000..6f3ca15b
--- /dev/null
+++ b/components/skiplink.js
@@ -0,0 +1,11 @@
+export default function SkipLink(props) {
+ return (
+
+ );
+}
diff --git a/components/viewall.js b/components/viewall.js
new file mode 100644
index 00000000..1452b9c7
--- /dev/null
+++ b/components/viewall.js
@@ -0,0 +1,40 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { useContext } from "react";
+import useTranslation from "next-translate/useTranslation";
+import SearchForCase from "./search/searchforcase";
+import ViewAllResults from "./search/viewall";
+
+export default function ViewAll(props) {
+ const { searchString, searchResultsObj } = props;
+ let { t } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+
+ );
+}
diff --git a/i18n.json b/i18n.json
new file mode 100644
index 00000000..757c62e0
--- /dev/null
+++ b/i18n.json
@@ -0,0 +1,39 @@
+{
+ "locales": [
+ "en",
+ "cy"
+ ],
+ "defaultLocale": "en",
+ "pages": {
+ "*": [
+ "common"
+ ],
+ "/": [
+ "home"
+ ],
+ "/myportal": [
+ "myportal"
+ ],
+ "/advancedsearch": [
+ "search"
+ ],
+ "/searchresults": [
+ "search"
+ ],
+ "/viewall": [
+ "search"
+ ],
+ "/case": [
+ "case"
+ ],
+ "/newappeal": [
+ "newappeal"
+ ],
+ "/newappeal/selectappeal": [
+ "newappeal"
+ ],
+ "/newappeal/*": [
+ "newappeal"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/locales/cy/case.json b/locales/cy/case.json
new file mode 100644
index 00000000..3797ca04
--- /dev/null
+++ b/locales/cy/case.json
@@ -0,0 +1,33 @@
+{
+ "case-card-title": "Reference: APP/B1415/W/20/3271702",
+ "summary-applicant-label": "Apelydd/Ymgeisydd",
+ "summary-agent-label": "Asiant",
+ "summary-site-address-label": "Cyfeiriad y Safle",
+ "summary-make-representation-label": "Cyflwyno cynrychiolaeth",
+ "summary-back-button-label": "Ewch yn ôl",
+ "summary-case-details-label": "Manylion yr Achos",
+ "summary-case-type-label": "Math o Achos",
+ "summary-lpa-label": "Awdurdod Cynllunio Lleol",
+ "summary-case-summary-label": "Crynodeb o'r Achos",
+ "summary-case-officer-label": "Swyddog Achos",
+ "summary-procedure-label": "Gweithdrefn",
+ "summary-status-label": "Statws",
+ "summary-decision-label": "Penderfyniad a chanlyniad",
+ "summary-case-link-status-label": "Statws cysylltiad yr Achos",
+ "summary-linked-cases-label": "Achosion cysylltiedig",
+ "summary-dates-label": "Dyddiadau",
+ "summary-start-date-label": "Dyddiad Dechrau",
+ "summary-questionnaire-due-date-label": "Holiadur i ddod",
+ "summary-statement-due-date-label": "Datganiad (au) i ddod",
+ "summary-interested-party-date-label": "Sylwadau Parti â Buddiant i ddod",
+ "summary-applicant-final-comments-date-label": "Sylwadau Terfynol yr Apelydd/ACLl i ddod",
+ "summary-inquiry-evidence-date-label": "Tystiolaeth yr Ymchwiliad i ddod",
+ "summary-event-date-label": "Dyddiad y Digwyddiad",
+ "summary-decision-date-label": "Dyddiad y Penderfyniad",
+ "summary-documents-button-label": "Dogfennau",
+ "documents-document-count-label": "Dogfennau",
+ "documents-name-label": "Math y Ddogfen",
+ "documents-doc-type-label": "Math y Ddogfen",
+ "documents-date-published-label": "Dyddiad cyhoeddi",
+ "documents-size-label": "Maint y ffeil (kb)"
+}
\ No newline at end of file
diff --git a/locales/cy/common.json b/locales/cy/common.json
new file mode 100644
index 00000000..34319560
--- /dev/null
+++ b/locales/cy/common.json
@@ -0,0 +1,15 @@
+{
+ "service-name": "Cynllunio gwaith achos",
+ "breadcrumb-back-link": "Yn ôl",
+ "error-radio": "Dewiswch opsiwn",
+ "error-checkbox": "Enter a value",
+ "error-textbox": "Choose an option",
+ "available-in": "English",
+ "continue-button": "Parhewch",
+ "submit-and-start": "Cyflwyno a dechrau'r cwrs",
+ "footer-terms-conditions-link": "Telerau ac amodau",
+ "footer-privacy-link": "Rhybudd Preifatrwydd",
+ "footer-cookies-link": "Chwcis",
+ "footer-accessibility-link": "Hygyrchedd",
+ "footer-feedback-link": "Adborth"
+}
\ No newline at end of file
diff --git a/locales/cy/home.json b/locales/cy/home.json
new file mode 100644
index 00000000..90d207e4
--- /dev/null
+++ b/locales/cy/home.json
@@ -0,0 +1,21 @@
+{
+ "login-card-title": "Mewngofnodi neu cofrestru",
+ "login-card-id-label": "Dynodydd Defnyddiwr (ID) Porth y Llywodraeth",
+ "login-card-id-hint": "Gallai hyn fod hyd at 12 o gymeriadau.",
+ "login-card-password-label": "Cyfrinair",
+ "login-card-button": "Mewngofnodi",
+ "login-card-register-label": "Cwsmer newydd wyf a hoffwn",
+ "login-card-register-link": "Gofrestru",
+ "login-card-forgotten-label": "Wedi anghofio eich cyfrinair neu'ch enw defnyddiwr?",
+ "login-card-forgotten-link": "Cliciwch yma",
+ "casesearch-card-title": "Chwilio am achos",
+ "casesearch-card-search-hint": "Chwiliwch drwy roi cyfeirnod 7 digid yr achos",
+ "casesearch-card-search-example-label": "Enghraifft",
+ "casesearch-card-button": "Cyflwyno Chwiliad",
+ "casesearch-card-advanced-link": "Fel arall, gallwch chwilio gan ddefnyddio ein meini prawf eraill gyda'n chwiliad uwch",
+ "casescomment-card-title": "Gwneud sylw ar achos",
+ "casescomment-card-paragraph-one": "Chwiliwch am eich achos a chliciwch y botwm 'Gwneud Sylw'. Y ffordd orau o roi sylwadau ar achos cyfredol yw trwy gofrestru gyda ni'n gyntaf gan fod hynny'n gwneud olrhain achosion a chyflwyno sylwadau yn haws.",
+ "casescomment-card-paragraph-two": "Yn achos apeliadau deiliaid tai ac apeliadau masnachol, nid yw partïon â buddiant yn gallu gwneud sylwadau yn y cam apelio. Caiff unrhyw sylwadau a wneir yn y cam ymgeisio eu darparu gan yr awdurdod cynllunio lleol ac fe'u hystyrir gan yr Arolygydd.",
+ "inspectorate-card-visit-label" : "Ymweld Yr Arolygiaeth Gynllunio",
+ "inspectorate-card-visit-link": "Hafan"
+}
\ No newline at end of file
diff --git a/locales/cy/myportal.json b/locales/cy/myportal.json
new file mode 100644
index 00000000..d826927d
--- /dev/null
+++ b/locales/cy/myportal.json
@@ -0,0 +1,18 @@
+{
+ "viewall-link": "Gweld y cyfan",
+ "page-title": "Fy mhorth",
+ "makenewappeal-card-title": "Gwneud apêl newydd",
+ "makenewappeal-card-paragraph-one": "Cyn cyflwyno apêl newydd, sicrhewch eich bod wedi darllen yr holl ganllawiau sy'n",
+ "makenewappeal-card-link": "berthnasol i'r math o apêl sydd gennych.",
+ "makenewappeal-card-paragraph-two": "Wedi i chi glicio'r botwm 'gwneud apêl newydd' isod, cewch eich arwain drwy broses i'ch helpu i ddewis y math cywir o apêl.",
+ "makenewappeal-card-button-label": "Gwneud apêl newydd",
+ "mycases-card-title": "Fy achosion",
+ "searchcases-card-title": "Chwilio am achos/cyflwyno cynrychiolaeth",
+ "searchcases-card-search-hint": "Chwiliwch drwy roi cyfeirnod 7 digid yr achos yn y blwch isod:",
+ "searchcases-card-search-example-label": "Enghraifft",
+ "searchcases-card-button": "Cyflwyno Chwiliad",
+ "searchcases-card-advanced-link": "Fel arall, gallwch chwilio gan ddefnyddio ein meini prawf eraill gyda'n chwiliad uwch",
+ "awatitingsubmission-card-title": "Eto i’w gyflwyno",
+ "myrepresentations-card-title": "Cyflwyniadau'r achos",
+ "watchedcases-card-title": "Achosion a gwylio"
+}
\ No newline at end of file
diff --git a/locales/cy/newappeal.json b/locales/cy/newappeal.json
new file mode 100644
index 00000000..054e5030
--- /dev/null
+++ b/locales/cy/newappeal.json
@@ -0,0 +1,5 @@
+{
+ "viewall-link": "View all",
+ "parent-page-title": "My portal",
+ "page-title": "New appeal"
+}
\ No newline at end of file
diff --git a/locales/cy/search.json b/locales/cy/search.json
new file mode 100644
index 00000000..8c06a24a
--- /dev/null
+++ b/locales/cy/search.json
@@ -0,0 +1,59 @@
+{
+ "page-title": "Crynodeb o’r Achos ar gyfer",
+ "search-title-label": "Crynodeb o’r Achos ar gyfer",
+ "casereference-label": "Cyfeirnod yr Achos (7 digid olaf)",
+ "sitelocation-legend": "Lleoliad y Safle",
+ "address-line-one-label": "Llinell gyntaf y cyfeiriad",
+ "town-label": "Tref/Dinas (agosaf)",
+ "county-label": "Sir",
+ "postcode-label": "Cod Post",
+ "lpa-label": "Awdurdod Cynllunio Lleol",
+ "lpa-reference-label": "Cyfeirnod yr Awdurdod Cynllunio Lleol",
+ "case-type-label": "Math o Achos",
+ "case-type-option-1": "--Dewiswch--",
+ "case-type-option-2": "Unrhyw fath/Pob math",
+ "case-type-option-3": "Apeliadau Hysbysebu",
+ "case-type-option-4": "Ceisiadau Cynllunio a Alwyd i Mewn",
+ "case-type-option-5": "Apeliadau Gorchymyn i ben",
+ "case-type-option-6": "Apeliadau gorfodi parthed adeilad rhestredig ac ardal gadwraeth",
+ "case-type-option-7": "Apeliadau Gorfodi",
+ "case-type-option-8": "Apeliadau perchennog tŷ",
+ "case-type-option-9": "Apeliadau Tystysgrid Datblygiad Cyfreithlon",
+ "case-type-option-10": "Apeliadau Cynllunio",
+ "case-type-option-11": "Apeliadau Rhwymedigaethau Cynllunio",
+ "case-type-option-12": "Apeliadau cynllunio adeiladau rhestredig ac ardal gadwraeth",
+ "advanced-search-title-label": "Chwiliad manwl",
+ "applicant-label": "Apelydd/Ymgeisydd",
+ "other-party-label": "Parti Arall",
+ "hearing-date-label": "Dyddiad y Gwrandawaid/Ymchwiliad",
+ "site-visit-date-label": "Dyddiad yr Ymweliad a’r Safle",
+ "callin-date-label": "Dyddiad galw i mewn",
+ "date-received": "Dyddiad Derbyn",
+ "start-date-label": "Dyddiad Dechrau",
+ "decision-date-label": "Dyddiad y Penderfyniad",
+ "procedure-type-label": "Math o weithdrefn",
+ "procedure-type-option-1": "--Dewiswch--",
+ "procedure-type-option-2": "Gwrandawiad",
+ "procedure-type-option-3": "Ymchwiliad",
+ "procedure-type-option-4": "Sylwadau ysgrifenedig",
+ "status-label": "Statws",
+ "status-option-1": "--Dewiswch--",
+ "status-option-2": "Unrhyw rai",
+ "status-option-3": "Yn mynd rhagddo",
+ "status-option-4": "Cyflawn",
+ "date-margin-label": "+/- 30 diwrnod",
+ "search-button-label": "Chwilio",
+ "clear-button-label": "Cliriwch",
+ "clear-all-button-label": "Clirio Pob Un",
+ "searchresults-title-label": "Crynodeb o’r Achos ar gyfer",
+ "searchresults-count-label": "Cafodd eich chwiliad {{count}} o ganlyniadau",
+ "searchresults-case-reference-label": "Cyfeirnod yr Achos",
+ "searchresults-site-address-label": "Cyfeiriad y Safle",
+ "searchresults-applicant-label": "Apelydd/Ymgeisydd",
+ "searchresults-authority-label": "ACLl",
+ "searchresults-case-type-label": "Math o Achos",
+ "searchresults-status-label": "Statws",
+ "searchresults-watch-label": "Gwylio",
+ "searchresults-search-button-label": "Mireinio'r chwiliad",
+ "searchresults-new-search-button-label": "Chwiliad newydd"
+}
\ No newline at end of file
diff --git a/locales/en/case.json b/locales/en/case.json
new file mode 100644
index 00000000..93cccc5e
--- /dev/null
+++ b/locales/en/case.json
@@ -0,0 +1,33 @@
+{
+ "case-card-title": "Reference: APP/B1415/W/20/3271702",
+ "summary-applicant-label": "Appellant/Applicant",
+ "summary-agent-label": "Agent",
+ "summary-site-address-label": "Site Address",
+ "summary-make-representation-label": "Make representation",
+ "summary-back-button-label": "Go back",
+ "summary-case-details-label": "Case Details",
+ "summary-case-type-label": "Case Type",
+ "summary-lpa-label": "Local Planning Authority",
+ "summary-case-summary-label": "Case Summary",
+ "summary-case-officer-label": "Case Officer",
+ "summary-procedure-label": "Procedure",
+ "summary-status-label": "Status",
+ "summary-decision-label": "Decision and Outcome",
+ "summary-case-link-status-label": "Case Link Status",
+ "summary-linked-cases-label": "Linked Cases",
+ "summary-dates-label": "Dates",
+ "summary-start-date-label": "Start Date",
+ "summary-questionnaire-due-date-label": "Questionnaire due",
+ "summary-statement-due-date-label": "Statement(s) due",
+ "summary-interested-party-date-label": "Interested Party Comments due",
+ "summary-applicant-final-comments-date-label": "Appellant/LPA Final Comments due",
+ "summary-inquiry-evidence-date-label": "Inquiry Evidence due",
+ "summary-event-date-label": "Event Date",
+ "summary-decision-date-label": "Decision Date",
+ "summary-documents-button-label": "Documents",
+ "documents-document-count-label": "Document(s)",
+ "documents-name-label": "Name",
+ "documents-doc-type-label": "Document type",
+ "documents-date-published-label": "Date published",
+ "documents-size-label": "Size (KB)"
+}
\ No newline at end of file
diff --git a/locales/en/common.json b/locales/en/common.json
new file mode 100644
index 00000000..96012069
--- /dev/null
+++ b/locales/en/common.json
@@ -0,0 +1,15 @@
+{
+ "service-name": "Planning casework",
+ "breadcrumb-back-link": "Back",
+ "error-radio": "Choose an option",
+ "error-checkbox": "Choose an option",
+ "error-textbox": "Choose an option",
+ "available-in": "Cymraeg",
+ "continue-button": "Continue",
+ "submit-and-start": "Submit and start course",
+ "footer-terms-conditions-link": "Terms and conditions",
+ "footer-privacy-link": "Privacy Notice",
+ "footer-cookies-link": "Cookies",
+ "footer-accessibility-link": "Accessibility",
+ "footer-feedback-link": "Feedback"
+}
\ No newline at end of file
diff --git a/locales/en/home.json b/locales/en/home.json
new file mode 100644
index 00000000..70f60604
--- /dev/null
+++ b/locales/en/home.json
@@ -0,0 +1,21 @@
+{
+ "login-card-title": "Log in or Register",
+ "login-card-id-label": "Government Gateway user ID",
+ "login-card-id-hint": "This could be up to 12 characters.",
+ "login-card-password-label": "Password",
+ "login-card-button": "Sign in",
+ "login-card-register-label": "I am a new user and would like to",
+ "login-card-register-link": "Register",
+ "login-card-forgotten-label": "Forgotten your password or username?",
+ "login-card-forgotten-link": "Click here",
+ "casesearch-card-title": "Search for a case",
+ "casesearch-card-search-hint": "Search by entering the 7 digit case reference number:",
+ "casesearch-card-search-example-label": "Example",
+ "casesearch-card-button": "Submit Search",
+ "casesearch-card-advanced-link": "Advanced Search",
+ "casescomment-card-title": "Comment on a case",
+ "casescomment-card-paragraph-one": "Simply search for your case and click on the 'Make Representation' button. The best way to comment on an existing case is to register with us first as that makes it easier to track cases and submit comments.",
+ "casescomment-card-paragraph-two": "For Householder and Commercial appeals, interested parties are unable to make representations at appeal stage. Any representations made at application stage will be provided by the local planning authority and considered by the Inspector.",
+ "inspectorate-card-visit-label" : "Visit the Planning Inspectorate",
+ "inspectorate-card-visit-link": "Home"
+}
\ No newline at end of file
diff --git a/locales/en/myportal.json b/locales/en/myportal.json
new file mode 100644
index 00000000..1da93f50
--- /dev/null
+++ b/locales/en/myportal.json
@@ -0,0 +1,18 @@
+{
+ "viewall-link": "View all",
+ "page-title": "My Portal",
+ "makenewappeal-card-title": "Make a new appeal",
+ "makenewappeal-card-paragraph-one": "Before submitting a new appeal, please ensure you have read all of the guidance",
+ "makenewappeal-card-link": "relevant to your appeal type.",
+ "makenewappeal-card-paragraph-two": "Once you click the 'make a new appeal' button below you will be guided through a process to help you select the correct appeal type",
+ "makenewappeal-card-button-label": "Make a new appeal",
+ "mycases-card-title": "My cases",
+ "searchcases-card-title": "Search for a case/submit representation",
+ "searchcases-card-search-hint": "Search by entering the 7 digit case reference number:",
+ "searchcases-card-search-example-label": "Example",
+ "searchcases-card-button": "Submit Search",
+ "searchcases-card-advanced-link": "Advanced Search",
+ "awatitingsubmission-card-title": "Awaiting submission",
+ "myrepresentations-card-title": "My representations",
+ "watchedcases-card-title": "Watched cases"
+}
\ No newline at end of file
diff --git a/locales/en/newappeal.json b/locales/en/newappeal.json
new file mode 100644
index 00000000..054e5030
--- /dev/null
+++ b/locales/en/newappeal.json
@@ -0,0 +1,5 @@
+{
+ "viewall-link": "View all",
+ "parent-page-title": "My portal",
+ "page-title": "New appeal"
+}
\ No newline at end of file
diff --git a/locales/en/search.json b/locales/en/search.json
new file mode 100644
index 00000000..f01021e7
--- /dev/null
+++ b/locales/en/search.json
@@ -0,0 +1,59 @@
+{
+ "page-title": "Search for a case",
+ "search-title-label": "Search for a case",
+ "casereference-label": "Case reference (last 7 digits)",
+ "sitelocation-legend": "Site location",
+ "address-line-one-label": "First line of address",
+ "town-label": "Town/City (nearest)",
+ "county-label": "County",
+ "postcode-label": "Postcode",
+ "lpa-label": "Local Planning Authority",
+ "lpa-reference-label": "LPA reference number",
+ "case-type-label": "Case type",
+ "case-type-option-1": "-- Select --",
+ "case-type-option-2": "Any/All",
+ "case-type-option-3": "Advertisement Appeals",
+ "case-type-option-4": "Called in Planning Applications",
+ "case-type-option-5": "Discontinuance Notice Appeals",
+ "case-type-option-6": "Enforcement Listed Building and Conservation Area Appeals",
+ "case-type-option-7": "Enforcement Appeals",
+ "case-type-option-8": "Householder Appeals",
+ "case-type-option-9": "Lawful Development Certificate Appeals",
+ "case-type-option-10": "Planning Appeals",
+ "case-type-option-11": "Planning Obligation Appeals",
+ "case-type-option-12": "Planning Listed Building and Conservation Area Appeals",
+ "advanced-search-title-label": "Advanced search",
+ "applicant-label": "Appellant/Applicant",
+ "other-party-label": "Other Party",
+ "hearing-date-label": "Hearing/Enquiry date",
+ "site-visit-date-label": "Site visit date",
+ "callin-date-label": "Call-in date",
+ "date-received": "Date received",
+ "start-date-label": "Start date",
+ "decision-date-label": "Decision date",
+ "procedure-type-label": "Procedure type",
+ "procedure-type-option-1": "--Select--",
+ "procedure-type-option-2": "Hearing",
+ "procedure-type-option-3": "Inquiry",
+ "procedure-type-option-4": "Written representations",
+ "status-label": "Status",
+ "status-option-1": "--Select--",
+ "status-option-2": "Any",
+ "status-option-3": "In Progress",
+ "status-option-4": "Complete",
+ "date-margin-label": "+/- 30 days",
+ "search-button-label": "Search",
+ "clear-button-label": "Clear",
+ "clear-all-button-label": "Clear all",
+ "searchresults-title-label": "Search for a case",
+ "searchresults-count-label": "Your search returned {{count}} results",
+ "searchresults-case-reference-label": "Case reference",
+ "searchresults-site-address-label": "Site address",
+ "searchresults-applicant-label": "Appellant/Applicant",
+ "searchresults-authority-label": "Authority",
+ "searchresults-case-type-label": "Case type",
+ "searchresults-status-label": "Status",
+ "searchresults-watch-label": "Watch",
+ "searchresults-search-button-label": "Refine Search",
+ "searchresults-new-search-button-label": "New Search"
+}
\ No newline at end of file
diff --git a/next.config.js b/next.config.js
new file mode 100644
index 00000000..c627d891
--- /dev/null
+++ b/next.config.js
@@ -0,0 +1,49 @@
+// next.config.js
+const withStyles = require("@webdeb/next-styles");
+//const { nextI18NextRewrites } = require("next-i18next/rewrites");
+const nextTranslate = require("next-translate");
+
+//acp
+// module.exports = {
+// poweredByHeader: false,
+// env: {
+// API_ROOT: "http://pel-beta-backend",
+// GRANT_TYPE: "password",
+// USERNAME: "api",
+// PASSWORD: "tJRq4o2ZBQ",
+// CLIENT_ID: "2d3df41b-9b59-4bbd-85a7-9314125c1689",
+// CLIENT_SECRET: "85H8qdrEvKEzbW5",
+// },
+// ...nextTranslate(),
+// };
+
+module.exports = withStyles({
+ sass: true, // use .scss files
+ modules: true, // style.(m|module).css & style.(m|module).scss for module files
+ sassLoaderOptions: {
+ sassOptions: {
+ includePaths: [
+ "/styles/sass",
+ "node_modules/govuk-frontend/govuk/all",
+ "/styles/sass/patterns",
+ "/styles/sass/prevent-training",
+ ], // @import 'variables'; # loads (src/styles/varialbes.scss), you got it..
+ },
+ },
+});
+module.exports = {
+ generateBuildId: async () => {
+ // You can, for example, get the latest git commit hash here
+ return "pinswg-build-id";
+ },
+ poweredByHeader: false,
+ env: {
+ // GRANT_TYPE : 'password',
+ // USERNAME : 'api',
+ // API_ROOT : "https://api.dev.prevent.internal.rehab",
+ // PASSWORD : 'B69eQwv7rzPBNcA',
+ // CLIENT_ID : 'fa1f0ef2-f10f-462e-98a5-843359db6066',
+ // CLIENT_SECRET : 'B69eQwv7rzPBNcA',
+ },
+ ...nextTranslate(),
+};
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..14186c7e
--- /dev/null
+++ b/package.json
@@ -0,0 +1,55 @@
+{
+ "name": "acp",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "dev:app": "node ./server/server.js && yarn lint:js",
+ "build": "NODE_ENV=production node_modules/next/dist/bin/next build --debug",
+ "start": "node_modules/next/dist/bin/next start"
+ },
+ "dependencies": {
+ "@webdeb/next-styles": "^1.1.1",
+ "applicationinsights": "^2.1.3",
+ "axios": "^0.21.1",
+ "compression": "^1.7.4",
+ "cookies": "^0.8.0",
+ "dom": "^0.0.3",
+ "dynamics-web-api": "^1.7.4",
+ "express": "^4.17.1",
+ "govuk-frontend": "^3.13.0",
+ "https": "^1.0.0",
+ "jsonpath": "^1.1.1",
+ "jsonpath-plus": "^5.1.0",
+ "lodash": "^4.17.21",
+ "moment": "^2.29.1",
+ "next": "^11.0.1",
+ "next-i18next": "^8.5.1",
+ "next-redux-wrapper": "^7.0.2",
+ "next-translate": "^1.0.7",
+ "pm2": "^5.1.0",
+ "react": "17.0.2",
+ "react-cookie-consent": "^6.2.4",
+ "react-datepicker": "^4.1.1",
+ "react-dom": "17.0.2",
+ "react-redux": "^7.2.4",
+ "react-xml-parser": "^1.1.8",
+ "redux-devtools-extension": "^2.13.9",
+ "redux-form": "^8.3.7",
+ "redux-persist": "^6.0.0",
+ "redux-thunk": "^2.3.0",
+ "sass": "^1.35.1",
+ "sass-loader": "^12.1.0",
+ "swr": "^0.5.6",
+ "webpack": "^5.40.0",
+ "xml2js": "^0.4.23",
+ "xmldom": "^0.6.0",
+ "xmlhttprequest": "^1.8.0",
+ "xpath": "^0.0.32"
+ },
+ "devDependencies": {
+ "eslint": "^7.29.0",
+ "eslint-config-next": "^11.0.1",
+ "prettier": "2.3.2"
+ }
+}
diff --git a/pages/_app.js b/pages/_app.js
new file mode 100644
index 00000000..84cf6788
--- /dev/null
+++ b/pages/_app.js
@@ -0,0 +1,24 @@
+//import "../styles/globals.css";
+import "../styles/sass/styles.scss";
+import Loading from "../components/loading";
+import { wrapper } from "../store/store";
+import { useStore, Provider } from "react-redux";
+import { persistStore } from "redux-persist";
+import { PersistGate } from "redux-persist/integration/react";
+
+const MyApp = ({ Component, pageProps }) => {
+ const store = useStore((state) => state);
+ const persistor = persistStore(store, {}, function () {
+ persistor.persist();
+ });
+
+ return (
+
+ }>
+
+
+
+ );
+};
+
+export default wrapper.withRedux(MyApp);
diff --git a/pages/_document.js b/pages/_document.js
new file mode 100644
index 00000000..237f4716
--- /dev/null
+++ b/pages/_document.js
@@ -0,0 +1,40 @@
+import Document, { Html, Head, Main, NextScript } from "next/document";
+import SkipLink from "../components/skiplink";
+//import basicAuthMiddleware from "nextjs-basic-auth-middleware";
+
+class MyDocument extends Document {
+ // static async getInitialProps(ctx) {
+ // const initialProps = await Document.getInitialProps(ctx);
+ // if (ctx.req && ctx.res) {
+ // await basicAuthMiddleware(ctx.req, ctx.res, {
+ // users: [
+ // {
+ // name: "rehab",
+ // password: "preventTesting",
+ // },
+ // ],
+ // });
+ // }
+ // return { ...initialProps };
+ // }
+
+ render() {
+ return (
+
+
+
+ {!process.browser && (
+
+ )}
+
+
+
+
+
+ );
+ }
+}
+
+export default MyDocument;
diff --git a/pages/_error.js b/pages/_error.js
new file mode 100644
index 00000000..8e16f147
--- /dev/null
+++ b/pages/_error.js
@@ -0,0 +1,17 @@
+function Error({ statusCode }) {
+ return (
+
+ An error....
+ {statusCode
+ ? `An error ${statusCode} occurred on server`
+ : "An error occurred on client"}
+
+ );
+}
+
+Error.getInitialProps = ({ res, err }) => {
+ const statusCode = res ? res.statusCode : err ? err.statusCode : 404;
+ return { statusCode };
+};
+
+export default Error;
diff --git a/pages/account/changepassword.js b/pages/account/changepassword.js
new file mode 100644
index 00000000..2261c885
--- /dev/null
+++ b/pages/account/changepassword.js
@@ -0,0 +1,102 @@
+import Link from "next/link";
+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 Footer from "../../components/footer";
+
+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";
+import jsonpath from "jsonpath";
+import { reduxForm, formValueSelector } from "redux-form";
+
+import ChangePassword from "../../components/account/changepassword";
+import xpath from "xpath";
+import {
+ setAppealType,
+ setAppealTypeTitle,
+ setAppealTypeID,
+ setAppealLPA,
+ getAppealTypeObj,
+} from "../../store/appealType/action";
+import { getAppealsTypes, getLPA } from "../../actions";
+import { setLPA } from "../../store/lpa/action";
+
+const Home = (props) => {
+ const { footerLinks, pages, formData } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ const { appealType, LPAData } = props;
+
+ return (
+
+
+
+ {t("search:page-title")} - {t("common:service-name")}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Change password
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export const getServerSideProps = wrapper.getServerSideProps(
+ (store) =>
+ async ({ query, req, res }) => {
+ const appealTypeData = await getAppealsTypes();
+ const lpaData = await getLPA();
+ console.log("appeal types", appealTypeData);
+ console.log("lpa typeswwwww", lpaData);
+ 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,
+ };
+};
+
+export default connect(mapStateToProps)(Home);
diff --git a/pages/account/personaldetails.js b/pages/account/personaldetails.js
new file mode 100644
index 00000000..837aa2b6
--- /dev/null
+++ b/pages/account/personaldetails.js
@@ -0,0 +1,94 @@
+import Link from "next/link";
+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 Footer from "../../components/footer";
+
+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";
+import jsonpath from "jsonpath";
+import { reduxForm, formValueSelector } from "redux-form";
+
+import PersonalDetails from "../../components/account/personaldetails";
+import xpath from "xpath";
+import { setAccountDetails } from "../../store/accountDetails/action";
+import { getPersonalAccount } from "../../actions";
+import { setLPA } from "../../store/lpa/action";
+
+const Home = (props) => {
+ const { footerLinks, formData } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ const { appealType, LPAData } = props;
+
+ return (
+
+
+
+ {t("search:page-title")} - {t("common:service-name")}
+
+
+
+
+ );
+};
+
+export const getServerSideProps = wrapper.getServerSideProps(
+ (store) =>
+ async ({ query, req, res }) => {
+ const accountDetails = await getPersonalAccount();
+ console.log("perosnal: ", accountDetails);
+ store.dispatch(setAccountDetails(accountDetails));
+ }
+);
+
+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);
diff --git a/pages/account/register.js b/pages/account/register.js
new file mode 100644
index 00000000..5c80398e
--- /dev/null
+++ b/pages/account/register.js
@@ -0,0 +1,152 @@
+import Link from "next/link";
+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 Footer from "../../components/footer";
+
+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";
+import jsonpath from "jsonpath";
+import { reduxForm, formValueSelector } from "redux-form";
+
+import RegisterForm from "../../components/account/registerform";
+import xpath from "xpath";
+import {
+ setAppealType,
+ setAppealTypeTitle,
+ setAppealTypeID,
+ setAppealLPA,
+ getAppealTypeObj,
+} from "../../store/appealType/action";
+import { getAppealsTypes, getLPA } from "../../actions";
+import { setLPA } from "../../store/lpa/action";
+
+const Home = (props) => {
+ const { footerLinks, pages, formData } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ const { appealType, LPAData } = props;
+
+ return (
+
+
+
+ {t("search:page-title")} - {t("common:service-name")}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Create a new account
+
+
+
+
+
+ Help
+
+
+
+ Companies or submissions by more
+ than one individual (groups)
+
+
+
+ If you are submitting an appeal or
+ representation from a company e.g.
+ "Acme Inc" or a group of
+ people e.g. "Residents of 1-10
+ High street", you should enter
+ the name of the company or group in
+ the Company/Group field. You will be
+ deemed as acting as their
+ representative.
+
+
+
+ Enforcement appeals by married/civil
+ partnership couples
+
+
+
+ You should not enter a group name.
+ You need only enter your
+ partner's name on the appeal
+ form itself as an additional
+ appellant.
+
+
+
+ Other appeals by married/civil
+ partnership couples
+
+
+
+ For any other type of appeal, for
+ example a planning appeal, you
+ should enter a group name when
+ creating your account e.g. "Mr
+ and Mrs Smith", if that is the
+ name on the application.
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export const getServerSideProps = wrapper.getServerSideProps(
+ (store) =>
+ async ({ query, req, res }) => {
+ const appealTypeData = await getAppealsTypes();
+ const lpaData = await getLPA();
+ console.log("appeal types", appealTypeData);
+ console.log("lpa typeswwwww", lpaData);
+ 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,
+ };
+};
+
+export default connect(mapStateToProps)(Home);
diff --git a/pages/advancedsearch.js b/pages/advancedsearch.js
new file mode 100644
index 00000000..8af17fa9
--- /dev/null
+++ b/pages/advancedsearch.js
@@ -0,0 +1,84 @@
+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 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";
+
+const Home = (props) => {
+ const { footerLinks, pages } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+ {t("search:page-title")} - {t("common:service-name")}
+
+
+
+
+ );
+};
+
+// export const getServerSideProps = wrapper.getServerSideProps(
+// async ({ locale, store, req, res }) => {
+// const token = await getToken();
+// let accessToken = token.access_token;
+
+// const apiRoot = process.browser ? window.API_ROOT : process.env.API_ROOT;
+
+// const [pages, footerLinks, courseListContent] = await Promise.all([
+// await getPages(accessToken, locale),
+// await getFooterLinks(accessToken, locale),
+// await getCourseList(accessToken, locale),
+// ]);
+// //const courseID = await getCourseID
+// store.dispatch(setApiRoot(apiRoot));
+// store.dispatch(setPages(pages));
+// store.dispatch(setFooterLinks(footerLinks));
+// store.dispatch(setCourseListContent(courseListContent));
+// }
+// );
+
+// const mapStateToProps = (state) => {
+// //console.log(state);
+
+// return {
+// apiroot: state.apiroot,
+// courseListContent: state.courseListContent.courseListContent,
+// pages: state.pages.pages,
+// footerLinks: state.footerLinks.footerLinks,
+// regions: state.regions,
+// sectors: state.sectors,
+// form: state.form,
+// };
+// };
+
+const mapStateToProps = (state) => {
+ return {
+ search: state.search,
+ };
+};
+
+export default connect(mapStateToProps)(Home);
diff --git a/pages/api/appealforms/pinswg_dns.js b/pages/api/appealforms/pinswg_dns.js
new file mode 100644
index 00000000..2bc8c3f3
--- /dev/null
+++ b/pages/api/appealforms/pinswg_dns.js
@@ -0,0 +1,20 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#systemforms(formid,name,formxml)",
+ "@odata.count": 1,
+ "value": [
+ {
+ "@odata.etag": 'W/"741371"',
+ "formid": "f004343c-b599-4174-bc96-e4ebc44239b7",
+ "name": "Information",
+ "formxml":
+ '',
+ "objecttypecode": "pinswg_dns",
+ "type": 2,
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/appealforms/pinswg_harbourrevisionorder.js b/pages/api/appealforms/pinswg_harbourrevisionorder.js
new file mode 100644
index 00000000..acfc2377
--- /dev/null
+++ b/pages/api/appealforms/pinswg_harbourrevisionorder.js
@@ -0,0 +1,20 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#systemforms(formid,name,formxml)",
+ "@odata.count": 1,
+ "value": [
+ {
+ "@odata.etag": 'W/"741574"',
+ "formid": "bb043f1b-ad18-41d0-9eaa-f0e561cb3948",
+ "name": "Information",
+ "formxml":
+ '',
+ "objecttypecode": "pinswg_harbourrevisionorder",
+ "type": 2,
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/appealforms/pinswg_householderappealhas.js b/pages/api/appealforms/pinswg_householderappealhas.js
new file mode 100644
index 00000000..34e4a28a
--- /dev/null
+++ b/pages/api/appealforms/pinswg_householderappealhas.js
@@ -0,0 +1,20 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#systemforms(formid,name,formxml)",
+ "@odata.count": 1,
+ "value": [
+ {
+ "@odata.etag": 'W/"741656"',
+ "formid": "e9ecc810-db6d-4fb4-abb4-a1a45d8cd11c",
+ "name": "Information",
+ "formxml":
+ '',
+ "objecttypecode": "pinswg_householderappealhas",
+ "type": 2,
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/appealforms/pinswg_planningappeals78.js b/pages/api/appealforms/pinswg_planningappeals78.js
new file mode 100644
index 00000000..02237549
--- /dev/null
+++ b/pages/api/appealforms/pinswg_planningappeals78.js
@@ -0,0 +1,20 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#systemforms(formid,name,formxml)",
+ "@odata.count": 1,
+ "value": [
+ {
+ "@odata.etag": 'W/"741929"',
+ "formid": "d0293a90-3d6a-4a25-bbf3-2b579a0ec134",
+ "name": "Information",
+ "formxml":
+ '',
+ "objecttypecode": "pinswg_planningappeals78",
+ "type": 2,
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/appealforms/pinswg_planningconditionss73s79.js b/pages/api/appealforms/pinswg_planningconditionss73s79.js
new file mode 100644
index 00000000..e31c3b9a
--- /dev/null
+++ b/pages/api/appealforms/pinswg_planningconditionss73s79.js
@@ -0,0 +1,20 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#systemforms(formid,name,formxml)",
+ "@odata.count": 1,
+ "value": [
+ {
+ "@odata.etag": 'W/"741978"',
+ "formid": "dfb64730-0df3-4e48-8c76-7899e72eddc2",
+ "name": "Information",
+ "formxml":
+ '',
+ "objecttypecode": "pinswg_planningconditionss73s79",
+ "type": 2,
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/appealforms/pinswg_planningobligationappeals106.js b/pages/api/appealforms/pinswg_planningobligationappeals106.js
new file mode 100644
index 00000000..df0c7d51
--- /dev/null
+++ b/pages/api/appealforms/pinswg_planningobligationappeals106.js
@@ -0,0 +1,20 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#systemforms(formid,name,formxml)",
+ "@odata.count": 1,
+ "value": [
+ {
+ "@odata.etag": 'W/"742035"',
+ "formid": "61d8a8a7-d1d3-4349-b64a-3b274a55b612",
+ "name": "Information",
+ "formxml":
+ '',
+ "objecttypecode": "pinswg_planningobligationappeals106",
+ "type": 2,
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/appealforms/pinswg_row.js b/pages/api/appealforms/pinswg_row.js
new file mode 100644
index 00000000..809c6e61
--- /dev/null
+++ b/pages/api/appealforms/pinswg_row.js
@@ -0,0 +1,20 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#systemforms(formid,name,formxml)",
+ "@odata.count": 1,
+ "value": [
+ {
+ "@odata.etag": 'W/"742078"',
+ "formid": "45e17e5d-ba77-4e39-b20e-5a5336d5b1f3",
+ "name": "Information",
+ "formxml":
+ '',
+ "objecttypecode": "pinswg_row",
+ "type": 2,
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/appealforms/pinswg_transportandworkact.js b/pages/api/appealforms/pinswg_transportandworkact.js
new file mode 100644
index 00000000..f6519030
--- /dev/null
+++ b/pages/api/appealforms/pinswg_transportandworkact.js
@@ -0,0 +1,20 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#systemforms(formid,name,formxml)",
+ "@odata.count": 1,
+ "value": [
+ {
+ "@odata.etag": 'W/"742121"',
+ "formid": "f3bd3169-29d3-4c8c-9c14-dbf301220143",
+ "name": "Information",
+ "formxml":
+ '',
+ "objecttypecode": "pinswg_transportandworkact",
+ "type": 2,
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/forms.txt b/pages/api/forms.txt
new file mode 100644
index 00000000..11b30e1d
--- /dev/null
+++ b/pages/api/forms.txt
@@ -0,0 +1,33 @@
+
+pinswg_dns
+pinswg_planningobligationappeals106
+pinswg_planningconditionss73s79
+pinswg_row
+pinswg_transportandworkact
+pinswg_harbourrevisionorder
+pinswg_miscellaneouscasework
+pinswg_planningappeals78
+pinswg_lawfuldevelopmentcertificate
+pinswg_householderappealhas
+pinswg_enforcementlistedbuildingconservationap
+pinswg_callinss77
+pinswg_commonland
+pinswg_adverts
+pinswg_hedgeshedgerowstreepreservationreplacem
+pinswg_compulsorypurchaseorders
+pinswg_communityinfrastructurelevys117118119
+pinswg_objectiveconfig
+pinswg_nonvalidation
+pinswg_caseinvolvement
+pinswg_advertisementappealanddiscontinuance
+pinswg_documenthistory
+pinswg_document
+pinswg_wayleave
+pinswg_listedbuildingandconservationareaconsen
+pinswg_environmentalpermitting
+pinswg_enforcementnoticeappeals174
+pinswg_ldp
+pinswg_maintenanceoflands217
+pinswg_electricityact
+
+https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/EntityDefinitions(LogicalName='incident')/Attributes(LogicalName='pinswg_appealcasetype')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=GlobalOptionSet($select=Options)
\ No newline at end of file
diff --git a/pages/api/incidents_form.js b/pages/api/incidents_form.js
new file mode 100644
index 00000000..adbf6be7
--- /dev/null
+++ b/pages/api/incidents_form.js
@@ -0,0 +1,29 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#systemforms(formid,name,formxml)",
+ "@odata.count": 2,
+ "value": [
+ {
+ "@odata.etag": 'W/"706035"',
+ "formid": "4a63c8d1-6c1e-48ec-9db4-3e6c7155334c",
+ "name": "Case",
+ "formxml":
+ '',
+ "objecttypecode": "incident",
+ "type": 2,
+ },
+ {
+ "@odata.etag": 'W/"462223"',
+ "formid": "f658c846-f74c-459b-b591-b97558958106",
+ "name": "Information",
+ "formxml":
+ '',
+ "objecttypecode": "incident",
+ "type": 2,
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/lookups/personaldetails.js b/pages/api/lookups/personaldetails.js
new file mode 100644
index 00000000..57583333
--- /dev/null
+++ b/pages/api/lookups/personaldetails.js
@@ -0,0 +1,17 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ data: {
+ firstname: "Steve",
+ lastname: "Johnson",
+ email: "steve@test.co.uk",
+ telephone: "0000000000",
+ companygroup: "Test Company",
+ addressline1: "1 Test Street",
+ towncity: "TestTown",
+ county: "Test County",
+ postcode: "TN12 12N",
+ },
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/lookups/pinswg_appealcasetype.js b/pages/api/lookups/pinswg_appealcasetype.js
new file mode 100644
index 00000000..42dd844d
--- /dev/null
+++ b/pages/api/lookups/pinswg_appealcasetype.js
@@ -0,0 +1,1249 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#EntityDefinitions('incident')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(LogicalName,GlobalOptionSet,GlobalOptionSet(Options))/$entity",
+ "LogicalName": "pinswg_appealcasetype",
+ "MetadataId": "a3498964-816b-eb11-aabb-00224800be9c",
+ "GlobalOptionSet": {
+ "@odata.type": "#Microsoft.Dynamics.CRM.OptionSetMetadata",
+ "Options": [
+ {
+ "Value": 846040025,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label":
+ "Listed Building and Convention S73 + S79",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "2077776e-9090-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Listed Building and Convention S73 + S79",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "2077776e-9090-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "2277776e-9090-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "2277776e-9090-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040000,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Planning Appeal - S78",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "af059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Planning Appeal - S78",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "af059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b1059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b1059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040001,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Planning Conditions - S73 + S79",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b2059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Planning Conditions - S73 + S79",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b2059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b4059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b4059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040002,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label":
+ "Planning Listed Buildings and Conservation Area Appeal - S20",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b5059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label":
+ "Planning Listed Buildings and Conservation Area Appeal - S20",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b5059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b7059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b7059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040003,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Planning Obligation Appeal - S106",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b8059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Planning Obligation Appeal - S106",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b8059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "ba059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "ba059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040004,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Householder Appeal (HAS)",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bb059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Householder Appeal (HAS)",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bb059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bd059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bd059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040005,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Enforcement Notice Appeal - S174",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "be059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Enforcement Notice Appeal - S174",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "be059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c0059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c0059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040006,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label":
+ "Enforcement Listed Building and Conservation Appeal - S39",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c1059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label":
+ "Enforcement Listed Building and Conservation Appeal - S39",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c1059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c3059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c3059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040007,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Maintenance of Land - S217",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c4059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Maintenance of Land - S217",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c4059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c6059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c6059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040008,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label":
+ "Lawful Development Certificate Appeal - S194 + 195",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c7059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label":
+ "Lawful Development Certificate Appeal - S194 + 195",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c7059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c9059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "c9059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040009,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label":
+ "Community Infrastructure Levy - S117, 118, & 119",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "ca059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label":
+ "Community Infrastructure Levy - S117, 118, & 119",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "ca059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "cc059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "cc059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040010,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Call-Ins - S77",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "cd059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Call-Ins - S77",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "cd059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "cf059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "cf059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040011,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "DNS",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "d0059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "DNS",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "d0059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "d2059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "d2059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040012,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Electricity Act",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "d3059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Electricity Act",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "d3059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "d5059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "d5059358-806b-eb11-aabb-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040013,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Transport and Works Act",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a1c174ee-1f75-eb11-aabd-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Transport and Works Act",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a1c174ee-1f75-eb11-aabd-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a3c174ee-1f75-eb11-aabd-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a3c174ee-1f75-eb11-aabd-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040014,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Harbour Revision Order",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a4c174ee-1f75-eb11-aabd-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Harbour Revision Order",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a4c174ee-1f75-eb11-aabd-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a6c174ee-1f75-eb11-aabd-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a6c174ee-1f75-eb11-aabd-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040015,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "ROW",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "5d316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "ROW",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "5d316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "5f316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "5f316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040016,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Common Land",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "60316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Common Land",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "60316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "62316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "62316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040017,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label":
+ "High Hedges, Tree Preservation orders, Hedgerows, Tree Replacement Notice.",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "63316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label":
+ "High Hedges, Tree Preservation orders, Hedgerows, Tree Replacement Notice.",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "63316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "65316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "65316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040018,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Adverts",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "66316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Adverts",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "66316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "68316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "68316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040019,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Compulsory Purchase Orders",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "69316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Compulsory Purchase Orders",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "69316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "6b316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "6b316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040020,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Environmental Permitting",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "6c316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Environmental Permitting",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "6c316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "6e316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "6e316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040021,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Wayleave",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "6f316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Wayleave",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "6f316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "71316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "71316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040022,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Misc Casework",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "72316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Misc Casework",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "72316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "74316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "74316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040023,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "LDP",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "75316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "LDP",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "75316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "77316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "77316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040024,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Non-Validation",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "78316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Non-Validation",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "78316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "7a316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "7a316dc3-7590-eb11-aac2-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ ],
+ "MetadataId": "ac059358-806b-eb11-aabb-00224800be9c",
+ },
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/lookups/pinswg_appointedby.js b/pages/api/lookups/pinswg_appointedby.js
new file mode 100644
index 00000000..743c6f1c
--- /dev/null
+++ b/pages/api/lookups/pinswg_appointedby.js
@@ -0,0 +1,251 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#EntityDefinitions('pinswg_householderappealhas')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(LogicalName,GlobalOptionSet,GlobalOptionSet(Options))/$entity",
+ "LogicalName": "pinswg_appointedby",
+ "MetadataId": "3c10eef7-6f85-eb11-aac2-00224800be9c",
+ "GlobalOptionSet": {
+ "@odata.type": "#Microsoft.Dynamics.CRM.OptionSetMetadata",
+ "Options": [
+ {
+ "Value": 846040000,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "MHCLG",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "899c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "MHCLG",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "899c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "8b9c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "8b9c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040001,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Welsh Government",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "8c9c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Welsh Government",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "8c9c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "8e9c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "8e9c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040003,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Secretary of State for Transport",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "929c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Secretary of State for Transport",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "929c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "949c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "949c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040004,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "BEIS",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "959c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "BEIS",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "959c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "979c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "979c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040005,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Council",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "989c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Council",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "989c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "9a9c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "9a9c9260-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ ],
+ "MetadataId": "869c9260-3683-eb11-aac0-00224800be9c",
+ },
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/lookups/pinswg_band.js b/pages/api/lookups/pinswg_band.js
new file mode 100644
index 00000000..b8bc9717
--- /dev/null
+++ b/pages/api/lookups/pinswg_band.js
@@ -0,0 +1,157 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#EntityDefinitions('pinswg_householderappealhas')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(LogicalName,GlobalOptionSet,GlobalOptionSet(Options))/$entity",
+ "LogicalName": "pinswg_band",
+ "MetadataId": "bddafa01-7085-eb11-aac2-00224800be9c",
+ "GlobalOptionSet": {
+ "@odata.type": "#Microsoft.Dynamics.CRM.OptionSetMetadata",
+ "Options": [
+ {
+ "Value": 846040000,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Band 1",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "3d8e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Band 1",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "3d8e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "3f8e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "3f8e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040001,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Band 2",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "408e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Band 2",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "408e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "428e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "428e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040002,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Band 3",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "438e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Band 3",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "438e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "458e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "458e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ ],
+ "MetadataId": "3a8e4173-3683-eb11-aac0-00224800be9c",
+ },
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/lookups/pinswg_casetype.js b/pages/api/lookups/pinswg_casetype.js
new file mode 100644
index 00000000..d2bf26e7
--- /dev/null
+++ b/pages/api/lookups/pinswg_casetype.js
@@ -0,0 +1,441 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#EntityDefinitions('pinswg_householderappealhas')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(LogicalName,GlobalOptionSet,GlobalOptionSet(Options))/$entity",
+ "LogicalName": "pinswg_casetype",
+ "MetadataId": "fa824014-7085-eb11-aac2-00224800be9c",
+ "GlobalOptionSet": {
+ "@odata.type": "#Microsoft.Dynamics.CRM.OptionSetMetadata",
+ "Options": [
+ {
+ "Value": 846040000,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Planning Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "fd6d05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Planning Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "fd6d05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "ff6d05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "ff6d05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040001,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label":
+ "Listed Building Conservation Area Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "006e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Listed Building Conservation Area Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "006e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "026e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "026e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040002,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Planning Conditions Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "036e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Planning Conditions Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "036e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "056e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "056e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040003,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Planning Obligations Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "066e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Planning Obligations Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "066e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "086e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "086e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040004,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Householder/Minor Commercial Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "096e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Householder/Minor Commercial Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "096e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "0b6e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "0b6e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040005,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Advertisement Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "0c6e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Advertisement Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "0c6e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "0e6e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "0e6e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040006,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label":
+ "Lawful Development Certificate Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "0f6e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Lawful Development Certificate Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "0f6e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "116e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "116e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040007,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Community Infrastructure Levy Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "126e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Community Infrastructure Levy Appeal",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "126e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "146e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "146e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040008,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Call-In Application",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "156e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Call-In Application",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "156e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "176e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "176e05d7-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ ],
+ "MetadataId": "fa6d05d7-3683-eb11-aac0-00224800be9c",
+ },
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/lookups/pinswg_caseworkreason.js b/pages/api/lookups/pinswg_caseworkreason.js
new file mode 100644
index 00000000..b8bc9717
--- /dev/null
+++ b/pages/api/lookups/pinswg_caseworkreason.js
@@ -0,0 +1,157 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#EntityDefinitions('pinswg_householderappealhas')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(LogicalName,GlobalOptionSet,GlobalOptionSet(Options))/$entity",
+ "LogicalName": "pinswg_band",
+ "MetadataId": "bddafa01-7085-eb11-aac2-00224800be9c",
+ "GlobalOptionSet": {
+ "@odata.type": "#Microsoft.Dynamics.CRM.OptionSetMetadata",
+ "Options": [
+ {
+ "Value": 846040000,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Band 1",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "3d8e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Band 1",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "3d8e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "3f8e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "3f8e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040001,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Band 2",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "408e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Band 2",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "408e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "428e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "428e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040002,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Band 3",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "438e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Band 3",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "438e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "458e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "458e4173-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ ],
+ "MetadataId": "3a8e4173-3683-eb11-aac0-00224800be9c",
+ },
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/lookups/pinswg_decision.js b/pages/api/lookups/pinswg_decision.js
new file mode 100644
index 00000000..790e7794
--- /dev/null
+++ b/pages/api/lookups/pinswg_decision.js
@@ -0,0 +1,204 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#EntityDefinitions('pinswg_householderappealhas')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(LogicalName,GlobalOptionSet,GlobalOptionSet(Options))/$entity",
+ "LogicalName": "pinswg_decision",
+ "MetadataId": "3e383643-7085-eb11-aac2-00224800be9c",
+ "GlobalOptionSet": {
+ "@odata.type": "#Microsoft.Dynamics.CRM.OptionSetMetadata",
+ "Options": [
+ {
+ "Value": 846040000,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Allowed",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "4de653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Allowed",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "4de653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "4fe653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "4fe653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040001,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Dismissed",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "50e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Dismissed",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "50e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "52e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "52e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040002,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Split Decision",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "53e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Split Decision",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "53e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "55e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "55e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040003,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Invalid",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "56e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Invalid",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "56e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "58e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "58e653f8-3683-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ ],
+ "MetadataId": "4ae653f8-3683-eb11-aac0-00224800be9c",
+ },
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/lookups/pinswg_decisionbranch.js b/pages/api/lookups/pinswg_decisionbranch.js
new file mode 100644
index 00000000..87feb9a4
--- /dev/null
+++ b/pages/api/lookups/pinswg_decisionbranch.js
@@ -0,0 +1,347 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#EntityDefinitions('pinswg_householderappealhas')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata(LogicalName,GlobalOptionSet,GlobalOptionSet(Options))/$entity",
+ "LogicalName": "pinswg_decisionbranch",
+ "MetadataId": "15429e52-7085-eb11-aac2-00224800be9c",
+ "GlobalOptionSet": {
+ "@odata.type": "#Microsoft.Dynamics.CRM.OptionSetMetadata",
+ "Options": [
+ {
+ "Value": 846040000,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "The Welsh Ministers",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a9d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "The Welsh Ministers",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "a9d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "abd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "abd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040001,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "PINS",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "acd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "PINS",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "acd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "aed887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "aed887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040002,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "BEIS",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "afd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "BEIS",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "afd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b1d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b1d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040003,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "Department for Transport",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b2d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "Department for Transport",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b2d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b4d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b4d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040004,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "County Council",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b5d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "County Council",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b5d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b7d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b7d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040005,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label":
+ "Department for Transport (Bridges and Ferries)",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b8d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label":
+ "Department for Transport (Bridges and Ferries)",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "b8d887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bad887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bad887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ {
+ "Value": 846040006,
+ "Label": {
+ "LocalizedLabels": [
+ {
+ "Label": "MHCLG",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bbd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "MHCLG",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bbd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Description": {
+ "LocalizedLabels": [
+ {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bdd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ ],
+ "UserLocalizedLabel": {
+ "Label": "",
+ "LanguageCode": 1033,
+ "IsManaged": false,
+ "MetadataId":
+ "bdd887c2-3783-eb11-aac0-00224800be9c",
+ "HasChanged": null,
+ },
+ },
+ "Color": "#0000ff",
+ "IsManaged": false,
+ "MetadataId": null,
+ "HasChanged": null,
+ },
+ ],
+ "MetadataId": "a6d887c2-3783-eb11-aac0-00224800be9c",
+ },
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/lookups/pinswg_lpa.js b/pages/api/lookups/pinswg_lpa.js
new file mode 100644
index 00000000..2cefaa17
--- /dev/null
+++ b/pages/api/lookups/pinswg_lpa.js
@@ -0,0 +1,161 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#accounts(name)",
+ "@odata.count": 30,
+ "value": [
+ {
+ "@odata.etag": 'W/"547952"',
+ "name": "Bridgend CBC",
+ "accountid": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"694923"',
+ "name": "Bishop Landaff High School",
+ "accountid": "c9389617-82ad-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"694925"',
+ "name": "Stanwell High school",
+ "accountid": "24537624-82ad-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"762163"',
+ "name": "Barry Boys High School",
+ "accountid": "80d99a34-82ad-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"694929"',
+ "name": "St Sirus High School",
+ "accountid": "6d337b5a-82ad-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"694931"',
+ "name": "Fitzalan High School",
+ "accountid": "984d0e75-82ad-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"757759"',
+ "name": "Zoe",
+ "accountid": "41fead24-29ba-eb11-aac4-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"755100"',
+ "name": "Blaenau Gwent County Borough Council",
+ "accountid": "744c69f4-48da-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"755102"',
+ "name": "Caerphilly County Borough Council",
+ "accountid": "243c0009-49da-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"757756"',
+ "name": "Test 2",
+ "accountid": "bf14b684-8ee0-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"755104"',
+ "name": "Bridgend County Borough Council",
+ "accountid": "c35f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755106"',
+ "name": "Cardiff Council",
+ "accountid": "c75f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755108"',
+ "name": "Carmarthenshire County Council",
+ "accountid": "c95f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755110"',
+ "name": "Ceredigion County Council",
+ "accountid": "cb5f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755112"',
+ "name": "Conwy County Borough Council",
+ "accountid": "cd5f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755114"',
+ "name": "Denbighshire County Council",
+ "accountid": "cf5f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755116"',
+ "name": "Flintshire County Council",
+ "accountid": "d15f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755118"',
+ "name": "Gwynedd Council",
+ "accountid": "d35f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755120"',
+ "name": "Isle of Anglesey County Council",
+ "accountid": "d55f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755122"',
+ "name": "Merthyr Tydfil County Borough Council",
+ "accountid": "d75f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755124"',
+ "name": "Monmouthshire County Council",
+ "accountid": "d95f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755126"',
+ "name": "Neath Port Talbot County Borough Council",
+ "accountid": "db5f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755128"',
+ "name": "Newport City Council",
+ "accountid": "dd5f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755130"',
+ "name": "Pembrokeshire County Council",
+ "accountid": "df5f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755132"',
+ "name": "Powys County Council",
+ "accountid": "e15f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755134"',
+ "name": "Rhondda Cynon Taf County Borough Council",
+ "accountid": "e35f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755136"',
+ "name": "Swansea Council",
+ "accountid": "e55f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755138"',
+ "name": "Torfaen County Borough Council",
+ "accountid": "e75f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755140"',
+ "name": "Vale of Glamorgan Council",
+ "accountid": "e95f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ {
+ "@odata.etag": 'W/"755142"',
+ "name": "Wrexham County Borough Council",
+ "accountid": "eb5f6f84-49da-eb11-aabd-00224800d1bd",
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/searchresults.js b/pages/api/searchresults.js
new file mode 100644
index 00000000..caa53307
--- /dev/null
+++ b/pages/api/searchresults.js
@@ -0,0 +1,101 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#incidents(_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title)",
+ "@odata.count": 9,
+ "value": [
+ {
+ "@odata.etag": 'W/"704047"',
+ "_accountid_value": null,
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype": 846040000,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00009-W8N6W4",
+ "title": "CAS-00009-W8N6W4",
+ "incidentid": "9919eac3-21af-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"704095"',
+ "_accountid_value": null,
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype": 846040011,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00010-J9W6L5",
+ "title": "CAS-00010-J9W6L5",
+ "incidentid": "55f4fc74-33af-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"709250"',
+ "_accountid_value": null,
+ "_customerid_value": "41fead24-29ba-eb11-aac4-00224800be9c",
+ "pinswg_appealcasetype": 846040001,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00011-K1N0J8",
+ "title": "CAS-00011-K1N0J8",
+ "incidentid": "6bd04d33-29ba-eb11-aac4-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"710463"',
+ "_accountid_value": null,
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype": 846040000,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00012-D9W6S8",
+ "title": "CAS-00012-D9W6S8",
+ "incidentid": "b9c9cbe4-6abc-eb11-aac4-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"746096"',
+ "_accountid_value": null,
+ "_customerid_value": "80d99a34-82ad-eb11-aac3-00224800be9c",
+ "pinswg_appealcasetype": 846040025,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00013-Z0B5Z9",
+ "title": "CAS-00013-Z0B5Z9",
+ "incidentid": "34071ec4-54d3-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"749764"',
+ "_accountid_value": null,
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype": 846040021,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00014-S3L9B4",
+ "title": "CAS-00014-S3L9B4",
+ "incidentid": "2230700b-ebd7-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"750875"',
+ "_accountid_value": null,
+ "_customerid_value": "cfb7b446-a7d8-eb11-aac5-00224800be9c",
+ "pinswg_appealcasetype": 846040000,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00015-L7J9H1",
+ "title": "CAS-00015-L7J9H1",
+ "incidentid": "d5b7b446-a7d8-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"755001"',
+ "_accountid_value": null,
+ "_customerid_value": "cfb7b446-a7d8-eb11-aac5-00224800be9c",
+ "pinswg_appealcasetype": 846040004,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00016-Y9K9Q0",
+ "title": "CAS-00016-Y9K9Q0",
+ "incidentid": "cc6f93ea-bdd9-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"755216"',
+ "_accountid_value": null,
+ "_customerid_value": "243c0009-49da-eb11-aac5-00224800be9c",
+ "pinswg_appealcasetype": 846040004,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00017-B8X7N0",
+ "title": "CAS-00017-B8X7N0",
+ "incidentid": "73895a1b-68dd-eb11-aac5-00224800be9c",
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/searchresults2.js b/pages/api/searchresults2.js
new file mode 100644
index 00000000..d1c43979
--- /dev/null
+++ b/pages/api/searchresults2.js
@@ -0,0 +1,191 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#incidents(_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title)",
+ "@odata.count": "9",
+ "value": [
+ {
+ "@odata.etag": 'W/"704047"',
+ "_accountid_value": null,
+ "_customerid_value@OData.Community.Display.V1.FormattedValue":
+ "Bridgend CBC",
+ "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":
+ "customerid_account",
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":
+ "account",
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue":
+ "Planning Appeal - S78",
+ "pinswg_appealcasetype": "846040000",
+ "statuscode@OData.Community.Display.V1.FormattedValue":
+ "In Progress",
+ "statuscode": "1",
+ "ticketnumber": "CAS-00009-W8N6W4",
+ "title": "CAS-00009-W8N6W4",
+ "incidentid": "9919eac3-21af-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"704095"',
+ "_accountid_value": null,
+ "_customerid_value@OData.Community.Display.V1.FormattedValue":
+ "Bridgend CBC",
+ "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":
+ "customerid_account",
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":
+ "account",
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue":
+ "DNS",
+ "pinswg_appealcasetype": "846040011",
+ "statuscode@OData.Community.Display.V1.FormattedValue":
+ "In Progress",
+ "statuscode": "1",
+ "ticketnumber": "CAS-00010-J9W6L5",
+ "title": "CAS-00010-J9W6L5",
+ "incidentid": "55f4fc74-33af-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"709250"',
+ "_accountid_value": null,
+ "_customerid_value@OData.Community.Display.V1.FormattedValue":
+ "Zoe",
+ "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":
+ "customerid_account",
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":
+ "account",
+ "_customerid_value": "41fead24-29ba-eb11-aac4-00224800be9c",
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue":
+ "Planning Conditions - S73 + S79",
+ "pinswg_appealcasetype": "846040001",
+ "statuscode@OData.Community.Display.V1.FormattedValue":
+ "In Progress",
+ "statuscode": "1",
+ "ticketnumber": "CAS-00011-K1N0J8",
+ "title": "CAS-00011-K1N0J8",
+ "incidentid": "6bd04d33-29ba-eb11-aac4-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"710463"',
+ "_accountid_value": null,
+ "_customerid_value@OData.Community.Display.V1.FormattedValue":
+ "Bridgend CBC",
+ "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":
+ "customerid_account",
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":
+ "account",
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue":
+ "Planning Appeal - S78",
+ "pinswg_appealcasetype": "846040000",
+ "statuscode@OData.Community.Display.V1.FormattedValue":
+ "In Progress",
+ "statuscode": "1",
+ "ticketnumber": "CAS-00012-D9W6S8",
+ "title": "CAS-00012-D9W6S8",
+ "incidentid": "b9c9cbe4-6abc-eb11-aac4-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"74609"',
+ "_accountid_value": null,
+ "_customerid_value@OData.Community.Display.V1.FormattedValue":
+ "Barry Boys High School",
+ "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":
+ "customerid_account",
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":
+ "account",
+ "_customerid_value": "80d99a34-82ad-eb11-aac3-00224800be9c",
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue":
+ "Listed Building and Convention S73 + S79",
+ "pinswg_appealcasetype": "846040025",
+ "statuscode@OData.Community.Display.V1.FormattedValue":
+ "In Progress",
+ "statuscode": "1",
+ "ticketnumber": "CAS-00013-Z0B5Z9",
+ "title": "CAS-00013-Z0B5Z9",
+ "incidentid": "34071ec4-54d3-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"749764"',
+ "_accountid_value": null,
+ "_customerid_value@OData.Community.Display.V1.FormattedValue":
+ "Bridgend CBC",
+ "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":
+ "customerid_account",
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":
+ "account",
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue":
+ "Wayleave",
+ "pinswg_appealcasetype": "846040021",
+ "statuscode@OData.Community.Display.V1.FormattedValue":
+ "In Progress",
+ "statuscode": "1",
+ "ticketnumber": "CAS-00014-S3L9B4",
+ "title": "CAS-00014-S3L9B4",
+ "incidentid": "2230700b-ebd7-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"750875"',
+ "_accountid_value": null,
+ "_customerid_value@OData.Community.Display.V1.FormattedValue":
+ "test customer",
+ "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":
+ "customerid_contact",
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":
+ "contact",
+ "_customerid_value": "cfb7b446-a7d8-eb11-aac5-00224800be9c",
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue":
+ "Planning Appeal - S78",
+ "pinswg_appealcasetype": "846040000",
+ "statuscode@OData.Community.Display.V1.FormattedValue":
+ "In Progress",
+ "statuscode": "1",
+ "ticketnumber": "CAS-00015-L7J9H1",
+ "title": "CAS-00015-L7J9H1",
+ "incidentid": "d5b7b446-a7d8-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"755001"',
+ "_accountid_value": null,
+ "_customerid_value@OData.Community.Display.V1.FormattedValue":
+ "test customer",
+ "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":
+ "customerid_contact",
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":
+ "contact",
+ "_customerid_value": "cfb7b446-a7d8-eb11-aac5-00224800be9c",
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue":
+ "Householder Appeal (HAS)",
+ "pinswg_appealcasetype": "846040004",
+ "statuscode@OData.Community.Display.V1.FormattedValue":
+ "In Progress",
+ "statuscode": "1",
+ "ticketnumber": "CAS-00016-Y9K9Q0",
+ "title": "CAS-00016-Y9K9Q0",
+ "incidentid": "cc6f93ea-bdd9-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"755216"',
+ "_accountid_value": null,
+ "_customerid_value@OData.Community.Display.V1.FormattedValue":
+ "Caerphilly County Borough Council",
+ "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":
+ "customerid_account",
+ "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":
+ "account",
+ "_customerid_value": "243c0009-49da-eb11-aac5-00224800be9c",
+ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue":
+ "Householder Appeal (HAS)",
+ "pinswg_appealcasetype": "846040004",
+ "statuscode@OData.Community.Display.V1.FormattedValue":
+ "In Progress",
+ "statuscode": "1",
+ "ticketnumber": "CAS-00017-B8X7N0",
+ "title": "CAS-00017-B8X7N0",
+ "incidentid": "73895a1b-68dd-eb11-aac5-00224800be9c",
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/api/viewall.js b/pages/api/viewall.js
new file mode 100644
index 00000000..caa53307
--- /dev/null
+++ b/pages/api/viewall.js
@@ -0,0 +1,101 @@
+const ApiResponse = (req, res) => {
+ res.statusCode = 200;
+ res.json({
+ "@odata.context":
+ "https://devcrm2016.llcdt.gov.wales/DVPINS/api/data/v8.2/$metadata#incidents(_accountid_value,_customerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title)",
+ "@odata.count": 9,
+ "value": [
+ {
+ "@odata.etag": 'W/"704047"',
+ "_accountid_value": null,
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype": 846040000,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00009-W8N6W4",
+ "title": "CAS-00009-W8N6W4",
+ "incidentid": "9919eac3-21af-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"704095"',
+ "_accountid_value": null,
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype": 846040011,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00010-J9W6L5",
+ "title": "CAS-00010-J9W6L5",
+ "incidentid": "55f4fc74-33af-eb11-aac3-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"709250"',
+ "_accountid_value": null,
+ "_customerid_value": "41fead24-29ba-eb11-aac4-00224800be9c",
+ "pinswg_appealcasetype": 846040001,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00011-K1N0J8",
+ "title": "CAS-00011-K1N0J8",
+ "incidentid": "6bd04d33-29ba-eb11-aac4-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"710463"',
+ "_accountid_value": null,
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype": 846040000,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00012-D9W6S8",
+ "title": "CAS-00012-D9W6S8",
+ "incidentid": "b9c9cbe4-6abc-eb11-aac4-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"746096"',
+ "_accountid_value": null,
+ "_customerid_value": "80d99a34-82ad-eb11-aac3-00224800be9c",
+ "pinswg_appealcasetype": 846040025,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00013-Z0B5Z9",
+ "title": "CAS-00013-Z0B5Z9",
+ "incidentid": "34071ec4-54d3-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"749764"',
+ "_accountid_value": null,
+ "_customerid_value": "56e7ef63-7e64-eb11-aaba-00224800be9c",
+ "pinswg_appealcasetype": 846040021,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00014-S3L9B4",
+ "title": "CAS-00014-S3L9B4",
+ "incidentid": "2230700b-ebd7-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"750875"',
+ "_accountid_value": null,
+ "_customerid_value": "cfb7b446-a7d8-eb11-aac5-00224800be9c",
+ "pinswg_appealcasetype": 846040000,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00015-L7J9H1",
+ "title": "CAS-00015-L7J9H1",
+ "incidentid": "d5b7b446-a7d8-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"755001"',
+ "_accountid_value": null,
+ "_customerid_value": "cfb7b446-a7d8-eb11-aac5-00224800be9c",
+ "pinswg_appealcasetype": 846040004,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00016-Y9K9Q0",
+ "title": "CAS-00016-Y9K9Q0",
+ "incidentid": "cc6f93ea-bdd9-eb11-aac5-00224800be9c",
+ },
+ {
+ "@odata.etag": 'W/"755216"',
+ "_accountid_value": null,
+ "_customerid_value": "243c0009-49da-eb11-aac5-00224800be9c",
+ "pinswg_appealcasetype": 846040004,
+ "statuscode": 1,
+ "ticketnumber": "CAS-00017-B8X7N0",
+ "title": "CAS-00017-B8X7N0",
+ "incidentid": "73895a1b-68dd-eb11-aac5-00224800be9c",
+ },
+ ],
+ });
+};
+export default ApiResponse;
diff --git a/pages/case.js b/pages/case.js
new file mode 100644
index 00000000..cc39a64e
--- /dev/null
+++ b/pages/case.js
@@ -0,0 +1,81 @@
+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 CaseSummary from "../components/case";
+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 Case from "../components/case";
+
+const Home = (props) => {
+ const { footerLinks, pages } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ return (
+
+
+
+ {t("case:page-title")} - {t("common:service-name")}
+
+
+
+
+ );
+};
+
+// export const getServerSideProps = wrapper.getServerSideProps(
+// async ({ locale, store, req, res }) => {
+// const token = await getToken();
+// let accessToken = token.access_token;
+
+// const apiRoot = process.browser ? window.API_ROOT : process.env.API_ROOT;
+
+// const [pages, footerLinks, courseListContent] = await Promise.all([
+// await getPages(accessToken, locale),
+// await getFooterLinks(accessToken, locale),
+// await getCourseList(accessToken, locale),
+// ]);
+// //const courseID = await getCourseID
+// store.dispatch(setApiRoot(apiRoot));
+// store.dispatch(setPages(pages));
+// store.dispatch(setFooterLinks(footerLinks));
+// store.dispatch(setCourseListContent(courseListContent));
+// }
+// );
+
+// const mapStateToProps = (state) => {
+// //console.log(state);
+
+// return {
+// apiroot: state.apiroot,
+// courseListContent: state.courseListContent.courseListContent,
+// pages: state.pages.pages,
+// footerLinks: state.footerLinks.footerLinks,
+// regions: state.regions,
+// sectors: state.sectors,
+// form: state.form,
+// };
+// };
+
+export default Home; //connect(mapStateToProps)(Home);
diff --git a/pages/index.js b/pages/index.js
new file mode 100644
index 00000000..0b5bac9e
--- /dev/null
+++ b/pages/index.js
@@ -0,0 +1,66 @@
+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 Main from "../components/main";
+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 { getIncidents } from "../actions";
+
+const Home = (props) => {
+ const { footerLinks, pages } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
{t("common:service-name")}
+
+
+
+ );
+};
+
+// export const getServerSideProps = wrapper.getServerSideProps(
+// (store) =>
+// async ({ query, req, res }) => {
+// const incidents = await getIncidents;
+// console.log(incidents);
+// }
+// );
+
+
+// const mapStateToProps = (state) => {
+// //console.log(state);
+
+// return {
+// apiroot: state.apiroot,
+// courseListContent: state.courseListContent.courseListContent,
+// pages: state.pages.pages,
+// footerLinks: state.footerLinks.footerLinks,
+// regions: state.regions,
+// sectors: state.sectors,
+// form: state.form,
+// };
+// };
+
+export default Home; //connect(mapStateToProps)(Home);
diff --git a/pages/myportal/index.js b/pages/myportal/index.js
new file mode 100644
index 00000000..df7b2d22
--- /dev/null
+++ b/pages/myportal/index.js
@@ -0,0 +1,80 @@
+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 MyPortal from "../../components/myportal";
+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";
+
+const Home = (props) => {
+ const { footerLinks, pages } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ return (
+
+
+
+ {t("myportal:page-title")} - {t("common:service-name")}
+
+
+
+
+ );
+};
+
+// export const getServerSideProps = wrapper.getServerSideProps(
+// async ({ locale, store, req, res }) => {
+// const token = await getToken();
+// let accessToken = token.access_token;
+
+// const apiRoot = process.browser ? window.API_ROOT : process.env.API_ROOT;
+
+// const [pages, footerLinks, courseListContent] = await Promise.all([
+// await getPages(accessToken, locale),
+// await getFooterLinks(accessToken, locale),
+// await getCourseList(accessToken, locale),
+// ]);
+// //const courseID = await getCourseID
+// store.dispatch(setApiRoot(apiRoot));
+// store.dispatch(setPages(pages));
+// store.dispatch(setFooterLinks(footerLinks));
+// store.dispatch(setCourseListContent(courseListContent));
+// }
+// );
+
+// const mapStateToProps = (state) => {
+// //console.log(state);
+
+// return {
+// apiroot: state.apiroot,
+// courseListContent: state.courseListContent.courseListContent,
+// pages: state.pages.pages,
+// footerLinks: state.footerLinks.footerLinks,
+// regions: state.regions,
+// sectors: state.sectors,
+// form: state.form,
+// };
+// };
+
+export default Home; //connect(mapStateToProps)(Home);
diff --git a/pages/newappeal/[appealtypes].js b/pages/newappeal/[appealtypes].js
new file mode 100644
index 00000000..c8a077e3
--- /dev/null
+++ b/pages/newappeal/[appealtypes].js
@@ -0,0 +1,193 @@
+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 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 { useEffect } from "react";
+import {
+ setAppealType,
+ setAppealTypeTitle,
+ setAppealTypeID,
+ getAppealTypeObj,
+ setCaseReference,
+} from "../../store/appealType/action";
+import { setForm, getFormObj } from "../../store/formData/action";
+import { getFormData, getAppealsTypes, createCase } from "../../actions";
+
+import xpath from "xpath";
+import { reduxForm, FormName } from "redux-form";
+
+import BuildSection from "../../components/newappeal/buildsection";
+import BuildCheckSection from "../../components/newappeal/buildchecksection";
+import CompleteAppeal from "../../components/newappeal/complete";
+
+let Home = (props) => {
+ const { footerLinks, pages, formData } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ useEffect(() => {
+ //setFormTitle(formTitle);
+ setCaseReference(router.query.refno);
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
+
+ const formXML = props.formData.formData;
+ const parser = new DOMParser();
+ var doc = parser.parseFromString(formXML, "text/xml");
+ var titles = xpath.select(
+ "//form/tabs/tab[*]/labels/label[@description]/@description",
+ doc
+ );
+ var sectionCount = xpath.select("/form/tabs/tab[*]", doc);
+ sectionCount = sectionCount.length;
+
+ var tabs = xpath.select("//form/tabs/tab[*]", doc);
+
+ let optionsStr = props.appealType.appealTypeOptions.GlobalOptionSet.Options;
+
+ let selectedObj = jsonpath.query(
+ optionsStr,
+ "$..LocalizedLabels[?(@.Label)].Label"
+ );
+
+ //let optionsTitleObj = [];
+
+ const optionsTitleObj = selectedObj.reduce(
+ (obj, arrValue) => (
+ (obj[arrValue] = arrValue
+ .replace(/[\s\-\+\(\)\,]/g, "")
+ .toLowerCase()),
+ obj
+ ),
+ {}
+ );
+
+ const formTitle = Object.keys(optionsTitleObj).find(
+ (key) => optionsTitleObj[key] === appealtypes
+ );
+
+ //console.log(formTitle);
+
+ // crm api query for looking up picklist fields/drop downs
+ // /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
+
+ /// to get dropdowns names
+ // form/tabs/tab[*]//rows/row//control[@classid="{3EF39988-22BB-4f0b-BBBE-64B5A3748AEE}"]/@datafieldname
+
+ const { onSubmit } = props;
+
+ return (
+
+
+
+ {t("search:page-title")} - {t("common:service-name")}
+
+
+
+
+
+
+
+
+
+
+ {props.appealType.currentSection == 9999 ? (
+
+ ) : props.appealType.currentSection ==
+ sectionCount + 1 ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+
+ );
+};
+
+export const getServerSideProps = wrapper.getServerSideProps(
+ (store) =>
+ async ({ query, req, res }) => {
+ //console.log("the query", query);
+ store.dispatch(setAppealTypeID(query.appealtypes));
+ const appealTypeData = await getAppealsTypes();
+ const formdata = (await getFormData(query.appealtypes)) || null;
+
+ const caseReference = createCase("asasa", "asasa");
+
+ let xmlStr = formdata;
+ xmlStr = formdata.value[0].formxml;
+ xmlStr = xmlStr.replace(/\\"/g, "");
+ store.dispatch(setCaseReference(caseReference));
+ store.dispatch(setForm(xmlStr));
+ store.dispatch(setAppealType(appealTypeData));
+ }
+);
+
+const mapStateToProps = (state) => {
+ return {
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ formData: state.formData,
+ appealType: state.appealType,
+ form: state.form,
+ };
+};
+
+const mapDispatchToProps = (dispatch) => {
+ return {
+ setFormTitle: (title) => {
+ dispatch(setAppealTypeTitle(title));
+ },
+ setCaseReference: (refno) => {
+ dispatch(setCaseReference(refno));
+ },
+ };
+};
+
+export default connect(mapStateToProps, mapDispatchToProps)(Home);
diff --git a/pages/newappeal/index.js b/pages/newappeal/index.js
new file mode 100644
index 00000000..f5570892
--- /dev/null
+++ b/pages/newappeal/index.js
@@ -0,0 +1,102 @@
+import Link from "next/link";
+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 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 { 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 {
+ setAppealType,
+ setAppealTypeTitle,
+ setAppealTypeID,
+ setAppealLPA,
+ getAppealTypeObj,
+} from "../../store/appealType/action";
+import { getAppealsTypes, getLPA } from "../../actions";
+import { setLPA } from "../../store/lpa/action";
+
+const Home = (props) => {
+ const { footerLinks, pages, formData } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ const { appealType, LPAData } = props;
+
+ return (
+
+
+
+ {t("search:page-title")} - {t("common:service-name")}
+
+
+
+
+
+
+
+
+
+
+
+
+ New Appeal
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export const getServerSideProps = wrapper.getServerSideProps(
+ (store) =>
+ async ({ query, req, res }) => {
+ const appealTypeData = await getAppealsTypes();
+ const lpaData = await getLPA();
+ console.log("appeal types", appealTypeData);
+ console.log("lpa typeswwwww", lpaData);
+ 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,
+ };
+};
+
+export default connect(mapStateToProps)(Home);
diff --git a/pages/newappeal/planningappeal.js b/pages/newappeal/planningappeal.js
new file mode 100644
index 00000000..0c8acad3
--- /dev/null
+++ b/pages/newappeal/planningappeal.js
@@ -0,0 +1,78 @@
+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 NewAppeal from "../../components/newappeal";
+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";
+
+const Home = (props) => {
+ const { footerLinks, pages } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+
+ return (
+
+
+
+ {t("myportal:page-title")} - {t("common:service-name")}
+
+
+
+
+ );
+};
+
+// export const getServerSideProps = wrapper.getServerSideProps(
+// async ({ locale, store, req, res }) => {
+// const token = await getToken();
+// let accessToken = token.access_token;
+
+// const apiRoot = process.browser ? window.API_ROOT : process.env.API_ROOT;
+
+// const [pages, footerLinks, courseListContent] = await Promise.all([
+// await getPages(accessToken, locale),
+// await getFooterLinks(accessToken, locale),
+// await getCourseList(accessToken, locale),
+// ]);
+// //const courseID = await getCourseID
+// store.dispatch(setApiRoot(apiRoot));
+// store.dispatch(setPages(pages));
+// store.dispatch(setFooterLinks(footerLinks));
+// store.dispatch(setCourseListContent(courseListContent));
+// }
+// );
+
+// const mapStateToProps = (state) => {
+// //console.log(state);
+
+// return {
+// apiroot: state.apiroot,
+// courseListContent: state.courseListContent.courseListContent,
+// pages: state.pages.pages,
+// footerLinks: state.footerLinks.footerLinks,
+// regions: state.regions,
+// sectors: state.sectors,
+// form: state.form,
+// };
+// };
+
+export default Home; //connect(mapStateToProps)(Home);
diff --git a/pages/newappeal/selectappeal.js b/pages/newappeal/selectappeal.js
new file mode 100644
index 00000000..3f6c4590
--- /dev/null
+++ b/pages/newappeal/selectappeal.js
@@ -0,0 +1,151 @@
+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 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 { useState } from "react";
+import useTranslation from "next-translate/useTranslation";
+
+import {
+ setAppealType,
+ setAppealTypeTitle,
+ setAppealTypeID,
+ getAppealTypeObj,
+} from "../../store/appealType/action";
+import { getAppealsTypes } from "../../actions";
+import xpath from "xpath";
+
+const Home = (props) => {
+ const { footerLinks, pages, formData } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ const { appealType } = props;
+
+ const optionsObj = props.appealType.appealTypeOptions.GlobalOptionSet
+ .Options || [{}];
+
+ const appealOptions = Object.keys(optionsObj).map((key, index) => (
+
+ {optionsObj[key].Label.LocalizedLabels[0].Label}
+
+ ));
+
+ const [appealTypeSelect, setAppealTypeSelect] = useState("");
+ const handleParam = (setValue) => (e) => setValue(e.target.value);
+
+ const selectAppealType = (event) => {
+ event.preventDefault();
+ router.replace("/newappeal/" + props.appealType.appealTypeID, null, {
+ shallow: true,
+ });
+ };
+
+ return (
+
+
+
+ {t("search:page-title")} - {t("common:service-name")}
+
+
+
+
+ );
+};
+
+export const getServerSideProps = wrapper.getServerSideProps(
+ (store) =>
+ async ({ query, req, res }) => {
+ const appealTypeData = await getAppealsTypes();
+ console.log("appeal types", appealTypeData);
+ store.dispatch(setAppealType(appealTypeData));
+ }
+);
+
+const mapStateToProps = (state) => {
+ return {
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ formData: state.formData,
+ appealType: state.appealType,
+ };
+};
+
+const mapDispatchToProps = (dispatch) => {
+ return {
+ onChangeSelect: (event) => {
+ dispatch(
+ setAppealTypeTitle(
+ event.target.options[event.target.selectedIndex].text
+ )
+ );
+ dispatch(setAppealTypeID(event.target.value));
+ },
+ };
+};
+
+export default connect(mapStateToProps, mapDispatchToProps)(Home);
diff --git a/pages/searchresults.js b/pages/searchresults.js
new file mode 100644
index 00000000..744a0cf6
--- /dev/null
+++ b/pages/searchresults.js
@@ -0,0 +1,102 @@
+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 { setSearch, getSearchObj } from "../store/search/action";
+import {
+ setSearchResults,
+ getSearchResultsObj,
+} from "../store/searchOutput/action";
+import { getBasicSearch } from "../actions";
+
+const Home = (props) => {
+ const { footerLinks, pages } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ return (
+
+
+
+ {t("search:page-title")} - {t("common:service-name")}
+
+
+
+
+ );
+};
+
+export const getServerSideProps = wrapper.getServerSideProps(
+ (store) =>
+ async ({ query, req, res }) => {
+ console.log("query-", query);
+ const searchResultsObj = (await getBasicSearch(query.q)) || null;
+ store.dispatch(setSearchResults(searchResultsObj));
+ store.dispatch(setSearch(query.q));
+ }
+);
+
+// export const getServerSideProps = wrapper.getServerSideProps(
+// async ({ locale, store, query, req, res }) => {
+// // const token = await getToken();
+// // let accessToken = token.access_token;
+
+// // const apiRoot = process.browser ? window.API_ROOT : process.env.API_ROOT;
+
+// // const [pages, footerLinks, courseListContent] = await Promise.all([
+// // await getPages(accessToken, locale),
+// // await getFooterLinks(accessToken, locale),
+// // await getCourseList(accessToken, locale),
+// // ]);
+// // //const courseID = await getCourseID
+// // store.dispatch(setApiRoot(apiRoot));
+// // store.dispatch(setPages(pages));
+// // store.dispatch(setFooterLinks(footerLinks));
+// // store.dispatch(setCourseListContent(courseListContent));
+// console.log(query);
+// //store.dispatch(setSearch(query.search));
+// }
+// );
+
+const mapStateToProps = (state) => {
+ return {
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ // // apiroot: state.apiroot,
+ // // courseListContent: state.courseListContent.courseListContent,
+ // // pages: state.pages.pages,
+ // // footerLinks: state.footerLinks.footerLinks,
+ // // regions: state.regions,
+ // // sectors: state.sectors,
+ // // form: state.form,
+ };
+};
+
+export default connect(mapStateToProps)(Home);
diff --git a/pages/viewall.js b/pages/viewall.js
new file mode 100644
index 00000000..53aefc6d
--- /dev/null
+++ b/pages/viewall.js
@@ -0,0 +1,95 @@
+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 ViewAll from "../components/viewall";
+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 { setSearch, getSearchObj } from "../store/search/action";
+import {
+ setSearchResults,
+ getSearchResultsObj,
+} from "../store/searchOutput/action";
+import { getBasicSearch } from "../actions";
+
+const Home = (props) => {
+ const { footerLinks, pages } = props;
+ let { t, lang } = useTranslation();
+
+ const router = useRouter();
+ const { locale } = router;
+ const { appealtypes } = router.query;
+
+ return (
+
+
+
+ {t("search:page-title")} - {t("common:service-name")}
+
+
+
+
+ );
+};
+
+export const getServerSideProps = wrapper.getServerSideProps(
+ (store) =>
+ async ({ req, res }) => {
+ const searchResultsObj = (await getBasicSearch("View All")) || null;
+ store.dispatch(setSearchResults(searchResultsObj));
+ store.dispatch(setSearch("View All"));
+ }
+);
+
+// export const getServerSideProps = wrapper.getServerSideProps(
+// async ({ locale, store, query, req, res }) => {
+// // const token = await getToken();
+// // let accessToken = token.access_token;
+
+// // const apiRoot = process.browser ? window.API_ROOT : process.env.API_ROOT;
+
+// // const [pages, footerLinks, courseListContent] = await Promise.all([
+// // await getPages(accessToken, locale),
+// // await getFooterLinks(accessToken, locale),
+// // await getCourseList(accessToken, locale),
+// // ]);
+// // //const courseID = await getCourseID
+// // store.dispatch(setApiRoot(apiRoot));
+// // store.dispatch(setPages(pages));
+// // store.dispatch(setFooterLinks(footerLinks));
+// // store.dispatch(setCourseListContent(courseListContent));
+// console.log(query);
+// //store.dispatch(setSearch(query.search));
+// }
+// );
+
+const mapStateToProps = (state) => {
+ return {
+ search: state.search,
+ searchResultsObj: state.searchResultsObj,
+ form: state.form,
+ };
+};
+
+export default connect(mapStateToProps)(Home);
diff --git a/public/assets/fonts/bold-b542beb274-v2.woff2 b/public/assets/fonts/bold-b542beb274-v2.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..81fd14985d53e32f07101bc1aa33ebae16bb2298
GIT binary patch
literal 31480
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