Author SHA1 Message Date
robbond d36a56c4c9 refactor(representations): decompose representation flow shell into form stage and timetable panel (Slice R4, behaviour-preserving) 2026-04-20 13:27:53 +01:00
robbond ebed61799e docs(representations): finalise refactor tracker and closeout state 2026-04-20 13:23:08 +01:00
Robert Bond 670e98a0a1 Merged PR 2258: refactor(summary-types): standardise case summary markup with SummaryCard/SummaryRow wrappers
Related work items: #22441
2026-04-20 12:15:43 +00:00
Robert Bond b6ca73d76a Merged PR 2257: refactor(representations): isolate finalisation boundary helpers (slice R8)
refactor(representations): isolate finalisation boundary helpers (slice R8)

Related work items: #22441
2026-04-17 13:23:55 +00:00
Robert Bond 7713fc3724 Merged PR 2256: refactor(representations): preserve Welsh conditional validation and summary...
refactor(representations): preserve Welsh conditional validation and summary parity

Related work items: #22441
2026-04-17 12:44:23 +00:00
Robert Bond 33f31ad3c8 Merged PR 2255: refactor(representations): extract deterministic data-resolution helpers for...
refactor(representations): extract deterministic data-resolution helpers for representation flow (Slice R6, behaviour-preserving)

Related work items: #22441
2026-04-17 10:07:52 +00:00
Robert Bond 8e21ec1dd7 Merged PR 2254: refactor(representations): normalise shared type-selector and action-row frag...
refactor(representations): normalise shared type-selector and action-row fragments in main representation variants (Slice R5, behaviour-preserving)

Related work items: #22441
2026-04-17 09:22:36 +00:00
Robert Bond d05e54c020 Merged PR 2252: refactor(representations): extract journey step-resolution helpers (Slice R3,...
refactor(representations): extract journey step-resolution helpers (Slice R3, behaviour-preserving)

Related work items: #22441
2026-04-17 06:45:21 +00:00
Robert Bond a43eb76e3a Merged PR 2251: refactor(representations): separate representation page SSR loaders into lib/...
refactor(representations): separate representation page SSR loaders into lib/representation/pageLoaders (Slice R2, behaviour-preserving)

Related work items: #22441
2026-04-17 05:30:38 +00:00
robbond 011be977a2 Merge branch 'SIPS-Development' of https://welshgovernment.visualstudio.com/PEDW%20-%20Planning%20Casework/_git/FrontEnd into refactor 2026-04-16 12:35:44 +01:00
robbond e3614dba7b Merge branch 'refactor' of https://welshgovernment.visualstudio.com/PEDW%20-%20Planning%20Casework/_git/FrontEnd into refactor 2026-04-15 10:31:59 +01:00
Robert Bond ecd6075c3a Merged PR 2246: refactor reps first slice
Related work items: #22570, #22576, #22577, #22583, #22586, #22587, #22588, #22590, #22591
2026-04-15 09:28:50 +00:00
Robert Bond f3a05db323 Merged PR 2241: refactor(newappeal): simplify start flow readability (Slice 8)
refactor(newappeal): simplify start flow readability (Slice 8)

Related work items: #22590
2026-04-13 12:55:58 +00:00
Robert Bond ffcccf8981 Merged PR 2240: refactor(newappeal): simplify nested prop boundaries (Slice 7)
refactor(newappeal): simplify nested prop boundaries (Slice 7)

Related work items: #22588
2026-04-13 12:25:45 +00:00
Robert Bond 783786b9eb Merged PR 2239: refactor(newappeal): replace BuildCheckRow formatter chain with map (Slice 6)
refactor(newappeal): replace BuildCheckRow formatter chain with map (Slice 6)

Related work items: #22587
2026-04-13 11:53:45 +00:00
Robert Bond 20eea5b128 Merged PR 2238: refactor(newappeal): extract BuildCheckSection presentation components (Slice 5)
refactor(newappeal): extract BuildCheckSection presentation components (Slice 5)

Related work items: #22586
2026-04-13 10:59:27 +00:00
Robert Bond 869264b7fa Merged PR 2237: refactor(newappeal): extract BuildSection presentation components (Slice 4)
refactor(newappeal): extract BuildSection presentation components (Slice 4)

Related work items: #22583
2026-04-13 10:15:56 +00:00
Robert Bond d0f667ffbb Merged PR 2236: refactor(newappeal): add side-effect facade wrappers (Slice 3)
refactor(newappeal): add side-effect facade wrappers (Slice 3)

Related work items: #22583
2026-04-13 09:31:14 +00:00
robbond f8b7f4fffd refactor(newappeal): add side-effect facade wrappers (Slice 3) 2026-04-13 10:26:35 +01:00
Robert Bond 21f511c34b Merged PR 2235: refactor(newappeal): extract file merge and dedupe helpers (Slice 2b)
refactor(newappeal): extract file merge and dedupe helpers (Slice 2b)

Related work items: #22577
2026-04-13 09:11:49 +00:00
robbond 7c4ce131bf refactor(newappeal): extract file merge and dedupe helpers (Slice 2b) 2026-04-13 10:07:58 +01:00
Robert Bond ddbf2116f5 Merged PR 2234: refactor(newappeal): extract payload cleanup helpers (Slice 2a)
refactor(newappeal): extract payload cleanup helpers (Slice 2a)

- extracted boolean normalization

- extracted null key removal

- extracted internal key stripping

- no behaviour change

Related work items: #22576
2026-04-13 08:31:23 +00:00
robbond 5233f62d59 refactor(newappeal): extract payload cleanup helpers (Slice 2a)
- extracted boolean normalization

- extracted null key removal

- extracted internal key stripping

- no behaviour change
2026-04-10 16:37:42 +01:00
Robert Bond 5f78a881c5 Merged PR 2232: xml form derivation
Related work items: #22570
2026-04-10 14:37:02 +00:00
robbond 7f7d4daa8f docs(refactor): update refactor tracker status 2026-04-10 15:34:06 +01:00
robbond e9d4b65a3d chore(refactor): commit current refactor branch updates and slice1 xml/form derivation extraction 2026-04-10 09:39:28 +01:00
354 changed files with 14810 additions and 53808 deletions
+133 -42
View File
@@ -18,8 +18,8 @@ CLIENT_SECRET = .Jf8Q~tKMObCJjhh_hy3J5AIctFrBalU4FS~tdxk
RELAY_ROOT = https://ar-ns-lz-pedw-dev-uks-01.servicebus.windows.net/ar-hc-lz-pedw-dev-uks-01/ RELAY_ROOT = https://ar-ns-lz-pedw-dev-uks-01.servicebus.windows.net/ar-hc-lz-pedw-dev-uks-01/
RELAYURI = "ar-ns-lz-pedw-dev-uks-01.servicebus.windows.net" RELAYURI = "ar-ns-lz-pedw-dev-uks-01.servicebus.windows.net"
RELAYPATH = "ar-hc-lz-pedw-dev-uks-01" RELAYPATH = "ar-hc-lz-pedw-dev-uks-01"
CRMURL = "dv-pedw.crm11.dynamics.com" CRMURL = "devcrm2016.llcdt.gov.wales/DVPINS"
CRMURL_VERSION = "v9.2" CRMURL_VERSION = "v8.2"
# //New Test # //New Test
CLIENT_ID = d40b9373-96c2-4b04-8bd8-c2a2fe6444c1 CLIENT_ID = d40b9373-96c2-4b04-8bd8-c2a2fe6444c1
@@ -33,13 +33,18 @@ CRMURL = "ts-pedw.crm11.dynamics.com"
CRMURL_VERSION = "v9.2" CRMURL_VERSION = "v9.2"
# //New PreProd # //New PreProd
CLIENT_ID = ab6c4678-b31a-4eb3-b429-e039120e488a # CLIENT_ID = ab6c4678-b31a-4eb3-b429-e039120e488a
CLIENT_SECRET = VWY8Q~9EtRzGXpd8Xs~5OS1fej2IyVJ8JgTMncw3 # CLIENT_SECRET = VWY8Q~9EtRzGXpd8Xs~5OS1fej2IyVJ8JgTMncw3
RELAY_ROOT = https://ar-ns-lz-pedw-ppe-uks-01.servicebus.windows.net/ar-hc-lz-pedw-ppe-uks-01/ # RELAY_ROOT = https://ar-ns-lz-pedw-ppe-uks-01.servicebus.windows.net/ar-hc-lz-pedw-ppe-uks-01/
RELAYURI = "ar-ns-lz-pedw-ppe-uks-01.servicebus.windows.net" # RELAYURI = "ar-ns-lz-pedw-ppe-uks-01.servicebus.windows.net"
RELAYPATH = "ar-hc-lz-pedw-ppe-uks-01" # RELAYPATH = "ar-hc-lz-pedw-ppe-uks-01"
CRMURL = "wg-pp-pedw.crm11.dynamics.com" # # RELAY_ROOT = https://ar-ns-lz-pedw-ppe-ukw-01.servicebus.windows.net/ar-hc-lz-pedw-ppe-ukw-01/
CRMURL_VERSION = "v9.2" # # RELAYURI = "ar-ns-lz-pedw-ppe-ukw-01.servicebus.windows.net"
# # RELAYPATH = "ar-hc-lz-pedw-ppe-ukw-01"
# # CRMURL = "ppcrm2016.llcdt.gov.wales/PPPINSWales"
# # CRMURL_VERSION = "v8.2"
# CRMURL = "wg-pp-pedw.crm11.dynamics.com"
# CRMURL_VERSION = "v9.2"
# //Prod Oauth WGO # //Prod Oauth WGO
@@ -56,11 +61,61 @@ CRMURL_VERSION = "v9.2"
# RELAY_ROOT = https://ar-ns-lz-pedw-prod-uks-01.servicebus.windows.net/ar-hc-lz-pedw-prod-uks-01/ # RELAY_ROOT = https://ar-ns-lz-pedw-prod-uks-01.servicebus.windows.net/ar-hc-lz-pedw-prod-uks-01/
# RELAYURI = "ar-ns-lz-pedw-prod-uks-01.servicebus.windows.net" # RELAYURI = "ar-ns-lz-pedw-prod-uks-01.servicebus.windows.net"
# RELAYPATH = "ar-hc-lz-pedw-prod-uks-01" # RELAYPATH = "ar-hc-lz-pedw-prod-uks-01"
# # RELAY_ROOT = https://ar-ns-lz-pedw-ppe-ukw-01.servicebus.windows.net/ar-hc-lz-pedw-prod-ukw-01/
# # RELAYURI = "ar-ns-lz-pedw-prod-ukw-01.servicebus.windows.net"
# # RELAYPATH = "ar-hc-lz-pedw-prod-ukw-01"
# CRMURL = "crm2016.llc.gov.wales/PEDW" # CRMURL = "crm2016.llc.gov.wales/PEDW"
# CRMURL_VERSION = "v8.2" # CRMURL_VERSION = "v8.2"
# D365 cnr WGO
# CLIENT_ID = 3125ac03-91ac-46a7-a166-0086f0ed90b3
# CLIENT_SECRET = bFq8Q~9VX5Ra3lKnGGIXsB.G6-ZGMx7LqyqXjdr4
# RELAY_ROOT = https://ar-ns-lz-pedw-d365cnr-uks-01.servicebus.windows.net/ar-hc-lz-pedw-d365cnr-uks-01/
# RELAYURI = "ar-ns-lz-pedw-d365cnr-uks-01.servicebus.windows.net"
# RELAYPATH = "ar-hc-lz-pedw-d365cnr-uks-01"
# CRMURL = "dv-pedw.crm11.dynamics.com"
# CRMURL_VERSION = "v9.2"
# D365 Dev WGO
# CLIENT_ID = 9b834097-03d7-409b-b038-ecfec31a394a
# CLIENT_SECRET = .Jf8Q~tKMObCJjhh_hy3J5AIctFrBalU4FS~tdxk
# RELAY_ROOT = https://ar-ns-lz-pedw-d365dev-uks-01.servicebus.windows.net/ar-hc-lz-pedw-d365dev-uks-01/
# RELAYURI = "ar-ns-lz-pedw-d365dev-uks-01.servicebus.windows.net"
# RELAYPATH = "ar-hc-lz-pedw-d365dev-uks-01"
# CRMURL = "dv-pedw.crm11.dynamics.com"
# CRMURL_VERSION = "v9.2"
# D365 Test WGO
# CLIENT_ID = d40b9373-96c2-4b04-8bd8-c2a2fe6444c1
# CLIENT_SECRET = 6hT8Q~glL~jloWpGmvXw3UY37QFwjUE0r._jobEM
# RELAY_ROOT = https://ar-ns-lz-pedw-d365test-uks-01.servicebus.windows.net/ar-hc-lz-pedw-d365test-uks-01/
# RELAYURI = "ar-ns-lz-pedw-d365test-uks-01.servicebus.windows.net"
# RELAYPATH = "ar-hc-lz-pedw-d365test-uks-01"
# CRMURL = "ts-pedw.crm11.dynamics.com"
# CRMURL_VERSION = "v9.2"
# D365 PP WGO
# CLIENT_ID = ab6c4678-b31a-4eb3-b429-e039120e488a
# CLIENT_SECRET = V288Q~P1lFMvvX9Xnkx2pLixK~GOREH983Owqc1E
# RELAY_ROOT = https://ar-ns-lz-pedw-d365ppe-uks-01.servicebus.windows.net/ar-hc-lz-pedw-d365ppe-uks-01/
# RELAYURI = "ar-ns-lz-pedw-d365ppe-uks-01.servicebus.windows.net"
# RELAYPATH = "ar-hc-lz-pedw-d365ppe-uks-01"
# CRMURL = "wg-pp-pedw.crm11.dynamics.com"
# CRMURL_VERSION = "v9.2"
# D365 Prod WGO
# CLIENT_ID = 3e4141a3-1fbd-454e-98f0-7f3a4f14a3cc
# CLIENT_SECRET = ULC8Q~fZiXm0.teVLlZ_7LjxBOj2vIsWSApu2bAq
# RELAY_ROOT = https://ar-ns-lz-pedw-d365prod-uks-01.servicebus.windows.net/ar-hc-lz-pedw-d365prod-uks-01/
# RELAYURI = "ar-ns-lz-pedw-d365prod-uks-01.servicebus.windows.net"
# RELAYPATH = "ar-hc-lz-pedw-d365prod-uks-01"
# CRMURL = "wg-prod-pedw.crm11.dynamics.com"
# CRMURL_VERSION = "v9.2"
//GOOGLE_TAG_MANAGER = GTM-T78CBC3
GOOGLE_TAG_MANAGER = G-GTWW3JT03Z GOOGLE_TAG_MANAGER = G-GTWW3JT03Z
SHOWLOGIN = true SHOWLOGIN = true
@@ -80,24 +135,38 @@ NEXTAUTH_URL = $API_ROOT
NEXTAUTH_URL_INTERNAL = $API_ROOT NEXTAUTH_URL_INTERNAL = $API_ROOT
NEXTAUTH_SECRET = SuperSecret NEXTAUTH_SECRET = SuperSecret
# CNR sql server // CNR sql server
# DATABASE_URL = sqlserver://sql-srv-plt-pedw-cnr-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword # DATABASE_URL = sqlserver://sql-srv-plt-pedw-cnr-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
# dev test sql server // dev test sql server
DATABASE_URL = sqlserver://sql-srv-plt-pedw-dev-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword # DATABASE_URL = sqlserver://sql-srv-plt-pedw-dev-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
# test sql server // test sql server
DATABASE_URL = sqlserver://sql-srv-plt-pedw-test-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword DATABASE_URL = sqlserver://sql-srv-plt-pedw-test-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
# Pre prod sql server // Pre prod sql server
DATABASE_URL = sqlserver://sql-srv-plt-pedw-ppe-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustservercertificate=true;hostnameincertificate=*.database.windows.net;logintimeout=30;authentication=SqlPassword # DATABASE_URL = sqlserver://sql-srv-plt-pedw-ppe-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustservercertificate=true;hostnameincertificate=*.database.windows.net;logintimeout=30;authentication=SqlPassword
# Prod sql server // Prod sql server
# DATABASE_URL = sqlserver://pp-pedw-sql.database.windows.net:1433;database=PEDWPreProd;user=RobBondSQL;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword # DATABASE_URL = sqlserver://pp-pedw-sql.database.windows.net:1433;database=PEDWPreProd;user=RobBondSQL;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
# Prod sql server // Prod sql server
# DATABASE_URL = sqlserver://sql-srv-plt-pedw-prod-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword # DATABASE_URL = sqlserver://sql-srv-plt-pedw-prod-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
// D365 CNR sql server
# DATABASE_URL = sqlserver://sql-srv-plt-pedw-d365cnr-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
// D365 Dev sql server
# DATABASE_URL = sqlserver://sql-srv-plt-pedw-d365dev-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
// D365 Test sql server
# DATABASE_URL = sqlserver://sql-srv-plt-pedw-d365test-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
// D365 PPE sql server
# DATABASE_URL = sqlserver://sql-srv-plt-pedw-d365ppe-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
// D365 Prod sql server
# DATABASE_URL = sqlserver://sql-srv-plt-pedw-d365prod-uks-01.database.windows.net:1433;database=PEDW;user=PedwSqlAdmin;password=GhWKr62F5sQ69dZx;encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;authentication=ActiveDirectoryPassword
@@ -105,31 +174,31 @@ SECRET = SuperSecret
# Azure Storage Account //Azure Storage Account
AZURE_CLIENT_ID = $CLIENT_ID AZURE_CLIENT_ID = $CLIENT_ID
AZURE_TENANT_ID = $TENANT AZURE_TENANT_ID = $TENANT
AZURE_CLIENT_SECRET = $CLIENT_SECRET AZURE_CLIENT_SECRET = $CLIENT_SECRET
# CNR key // CNR key
AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwcnruks" AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwcnruks"
AZURE_STORAGE_ACCOUNT_KEY = hRffHq4IwctpaTKdS/U33Xq6nyTDF1t++WJgIwsw7gzstktZin/rRwbTIAL9KKqesVsK7EHrTTG6+ASt4+7skw== AZURE_STORAGE_ACCOUNT_KEY = hRffHq4IwctpaTKdS/U33Xq6nyTDF1t++WJgIwsw7gzstktZin/rRwbTIAL9KKqesVsK7EHrTTG6+ASt4+7skw==
AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwcnruks.blob.core.windows.net AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwcnruks.blob.core.windows.net
# new dev key // new dev key
AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwdevuks" AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwdevuks"
AZURE_STORAGE_ACCOUNT_KEY = MmrsrCjBfop9pI2oImsP/+lJUWU2DrXsAB8nq5bOVROTmPovSGxjCjKw9+TAFr00k8WDUK9r6mVx+AStcMLyAA== AZURE_STORAGE_ACCOUNT_KEY = MmrsrCjBfop9pI2oImsP/+lJUWU2DrXsAB8nq5bOVROTmPovSGxjCjKw9+TAFr00k8WDUK9r6mVx+AStcMLyAA==
AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwdevuks.blob.core.windows.net AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwdevuks.blob.core.windows.net
# New test key // New test key
AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwtestuks" AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwtestuks"
# AZURE_STORAGE_ACCOUNT_KEY = 5NdDO9GGlbTFLHFOXZRw8H2C0Ow5bFTvHwUHEbStyzg2mbd1uwHSeBSvM/dkN+HfdwrFzqAkwL5P+AStdO6cig== # AZURE_STORAGE_ACCOUNT_KEY = 5NdDO9GGlbTFLHFOXZRw8H2C0Ow5bFTvHwUHEbStyzg2mbd1uwHSeBSvM/dkN+HfdwrFzqAkwL5P+AStdO6cig==
AZURE_STORAGE_ACCOUNT_KEY = bqJAz5pYQVGee8dnVhlsqW+xHwinNTjgY2AmojNyB+d4uAotMR20WcO4Op13yB+9dFaXAkkjtIA4+AStHT/IYg== AZURE_STORAGE_ACCOUNT_KEY = bqJAz5pYQVGee8dnVhlsqW+xHwinNTjgY2AmojNyB+d4uAotMR20WcO4Op13yB+9dFaXAkkjtIA4+AStHT/IYg==
AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwtestuks.blob.core.windows.net AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwtestuks.blob.core.windows.net
# New preprod key // New preprod key
AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwppeuks" # AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwppeuks"
AZURE_STORAGE_ACCOUNT_KEY = B4GRKr+cA9b9mNM/GHFivzhzflJIZltG8bMmooXlYvGYySPAspTTHistAT30sHipnR+hh6dqUc9q+ASttAjPRQ== # AZURE_STORAGE_ACCOUNT_KEY = B4GRKr+cA9b9mNM/GHFivzhzflJIZltG8bMmooXlYvGYySPAspTTHistAT30sHipnR+hh6dqUc9q+ASttAjPRQ==
AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwppeuks.blob.core.windows.net # AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwppeuks.blob.core.windows.net
# PROD key # PROD key
@@ -142,33 +211,59 @@ AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwppeuks.blob.core.windows.net
# AZURE_STORAGE_ACCOUNT_KEY = OfV9MFqXcLLPam9GhEdMWadIOwIzhc5hd5TUqzIuQoswFdtV4ybaemjatSv+Kht0Ny1qQKjLplwY+AStUTZJrg== # AZURE_STORAGE_ACCOUNT_KEY = OfV9MFqXcLLPam9GhEdMWadIOwIzhc5hd5TUqzIuQoswFdtV4ybaemjatSv+Kht0Ny1qQKjLplwY+AStUTZJrg==
# AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwproduks.blob.core.windows.net # AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwproduks.blob.core.windows.net
# D365 CNR key
# AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwd365cnruks"
# AZURE_STORAGE_ACCOUNT_KEY = nEwCp+4FuVf/9a4DOyKuQO2yRRV4Ypigg20ch1YaiL09YmEhWMEO5pNLpYtI3WnQCkIqeu1CUqwM+AStCLW01g==
# AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwd365cnruks.blob.core.windows.net
# D365 DEV key
# AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwd365devuks"
# AZURE_STORAGE_ACCOUNT_KEY = XzwQxuZXSwYrVgemDUD2ymTpYTIfWqhypbmEALw1ZEEP0M4D3b3Gh28clSymxwFu7Gu9mhwkW4/V+AStZ6RF8Q==
# AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwd365devuks.blob.core.windows.net
# D365 TEST key
# AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwd365testuks"
# AZURE_STORAGE_ACCOUNT_KEY = 5NdDO9GGlbTFLHFOXZRw8H2C0Ow5bFTvHwUHEbStyzg2mbd1uwHSeBSvM/dkN+HfdwrFzqAkwL5P+AStdO6cig==
# AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwd365testuks.blob.core.windows.net
# D365 PP key
# AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwd365ppeuks"
# AZURE_STORAGE_ACCOUNT_KEY = xQz4FWDnQDE09uPOCj1t7axRiquvZG9vbxL88ywzVsJnTsAgewrHnuAGkxGPBCp2xGE53ffYOme6+AStSr8OoQ==
# AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwd365ppeuks.blob.core.windows.net
# D365 Prod key
# AZURE_STORAGE_ACCOUNT_NAME = "sapltpedwd365produks"
# AZURE_STORAGE_ACCOUNT_KEY = DvKcWhDpFKMFdVXFF2SqDG0sYQ3AkNCmJUBG0cvgzi5NBHS4Ahd2hPAlfA3hGi2EbohUag3vCucK+ASt1IdBhA==
# AZURE_PEDW_STORAGE_ENDPOINT = https://sapltpedwd365produks.blob.core.windows.net
AZURE_PEDW_CONTAINER = "pedwapplications" AZURE_PEDW_CONTAINER = "pedwapplications"
AZURE_PEDW_QUEUE_ENDPOINT = https://$AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net AZURE_PEDW_QUEUE_ENDPOINT = https://$AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net
# gov.notify //gov.notify
# NOTIFY_API_KEY = pedwnextauthkey-90f93710-9dae-423e-aea1-11eccd0dc132-0c9469d9-d671-444d-9e9d-3e5a62001043 //NOTIFY_API_KEY = pedwnextauthkey-90f93710-9dae-423e-aea1-11eccd0dc132-0c9469d9-d671-444d-9e9d-3e5a62001043
# NOTIFY_API_KEY = pedwnextauthlivekey-90f93710-9dae-423e-aea1-11eccd0dc132-5c0ed187-754a-4b04-8c99-978e5710c2c1 NOTIFY_API_KEY = pedwnextauthlivekey-90f93710-9dae-423e-aea1-11eccd0dc132-5c0ed187-754a-4b04-8c99-978e5710c2c1
NOTIFY_API_KEY = pedwnextauthlive01key-90f93710-9dae-423e-aea1-11eccd0dc132-72bfb1e1-c0b7-47cb-9887-3d47a4b11ad4
SHOW_DEBUG = true SHOW_DEBUG = true
# DEV Connection string // DEV Connection string
NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=4b7568b3-70bd-4591-9dc2-267c0a6501d1;IngestionEndpoint=https://ukwest-0.in.applicationinsights.azure.com/;LiveEndpoint=https://ukwest.livediagnostics.monitor.azure.com/;ApplicationId=447d38b5-5d40-4238-8fb3-0ef4741b3db1 //NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=4b7568b3-70bd-4591-9dc2-267c0a6501d1;IngestionEndpoint=https://ukwest-0.in.applicationinsights.azure.com/;LiveEndpoint=https://ukwest.livediagnostics.monitor.azure.com/;ApplicationId=447d38b5-5d40-4238-8fb3-0ef4741b3db1
APPLICATIONINSIGHTS_CONNECTIONSTRING = InstrumentationKey=7a06e24a-793c-47bc-8987-ce80f180e035;IngestionEndpoint=https://uksouth-1.in.applicationinsights.azure.com/;LiveEndpoint=https://uksouth.livediagnostics.monitor.azure.com/;ApplicationId=9906b6d0-b791-4add-8d53-c827a534e1d4 APPLICATIONINSIGHTS_CONNECTIONSTRING = InstrumentationKey=7a06e24a-793c-47bc-8987-ce80f180e035;IngestionEndpoint=https://uksouth-1.in.applicationinsights.azure.com/;LiveEndpoint=https://uksouth.livediagnostics.monitor.azure.com/;ApplicationId=9906b6d0-b791-4add-8d53-c827a534e1d4
# Test Connection string
// Test Connection string
NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=cc60e8e7-5b30-4c2b-a176-8b96b21b12df;IngestionEndpoint=https://ukwest-0.in.applicationinsights.azure.com/;LiveEndpoint=https://ukwest.livediagnostics.monitor.azure.com/;ApplicationId=2a4094be-6fd1-46ab-a67d-5f241692b129 NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=cc60e8e7-5b30-4c2b-a176-8b96b21b12df;IngestionEndpoint=https://ukwest-0.in.applicationinsights.azure.com/;LiveEndpoint=https://ukwest.livediagnostics.monitor.azure.com/;ApplicationId=2a4094be-6fd1-46ab-a67d-5f241692b129
# Preprod Connection string // Preprod Connection string
# NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=7370f0f9-834d-4c7a-b3c4-9951fcad5ad2;IngestionEndpoint=https://ukwest-0.in.applicationinsights.azure.com/;LiveEndpoint=https://ukwest.livediagnostics.monitor.azure.com/;ApplicationId=04362cb7-6dfc-469e-8274-12243e8be851 //NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=7370f0f9-834d-4c7a-b3c4-9951fcad5ad2;IngestionEndpoint=https://ukwest-0.in.applicationinsights.azure.com/;LiveEndpoint=https://ukwest.livediagnostics.monitor.azure.com/;ApplicationId=04362cb7-6dfc-469e-8274-12243e8be851
# NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=a41b91bf-f7dc-4f44-bb66-a67df4eee435;IngestionEndpoint=https://uksouth-1.in.applicationinsights.azure.com/;LiveEndpoint=https://uksouth.livediagnostics.monitor.azure.com/;ApplicationId=473d0632-16f1-4065-8984-d6bac62402c0 NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=a41b91bf-f7dc-4f44-bb66-a67df4eee435;IngestionEndpoint=https://uksouth-1.in.applicationinsights.azure.com/;LiveEndpoint=https://uksouth.livediagnostics.monitor.azure.com/;ApplicationId=473d0632-16f1-4065-8984-d6bac62402c0
# Prod Connection string // Prod Connection string
# NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=61f358c2-8075-4164-b897-17bc6dd31fee;IngestionEndpoint=https://ukwest-0.in.applicationinsights.azure.com/;LiveEndpoint=https://ukwest.livediagnostics.monitor.azure.com/;ApplicationId=0c297349-396b-4dc6-8b56-85f5c680adc6 //NEXT_PUBLIC_APP_INSIGHT = InstrumentationKey=61f358c2-8075-4164-b897-17bc6dd31fee;IngestionEndpoint=https://ukwest-0.in.applicationinsights.azure.com/;LiveEndpoint=https://ukwest.livediagnostics.monitor.azure.com/;ApplicationId=0c297349-396b-4dc6-8b56-85f5c680adc6
HIDEERRORLOGS = false HIDEERRORLOGS = false
@@ -177,7 +272,3 @@ SHOWSIPS = true
ALLOWED_IPS=::1,203.0.113.42,198.51.100.17 ALLOWED_IPS=::1,203.0.113.42,198.51.100.17
UPLOAD_BATCH_COUNT = 5 UPLOAD_BATCH_COUNT = 5
NRWDOMAIN = rdbmedia.co.uk
MAP_TARGET = pedw-dev
-2
View File
@@ -78,8 +78,6 @@ Minimum required before merge:
- `.clinerules` - `.clinerules`
- `CONTRIBUTING_AI.md` - `CONTRIBUTING_AI.md`
- `context/implementation-governance.md`
- `context/maintainability-adoption-programme.md`
- `context/runbook.md` - `context/runbook.md`
- `context/integration-map.md` - `context/integration-map.md`
- `memory-bank/README.md` - `memory-bank/README.md`
+81 -57
View File
@@ -1,7 +1,7 @@
import { DefaultAzureCredential } from "@azure/identity"; import { DefaultAzureCredential } from "@azure/identity";
import _ from "lodash"; import _ from "lodash";
import { hashAPIPath, consoleLogger } from "."; import { hashAPIPath, consoleLogger } from ".";
import { getDocumentTypeFromFilename, hasOwn } from "../components/utils"; import { getDocumentTypeFromFilename } from "../components/utils";
const { const {
ContainerClient, ContainerClient,
@@ -316,7 +316,7 @@ export const createBlob = async (formContent, containerName, caseref) => {
formContent = JSON.parse(formContent); formContent = JSON.parse(formContent);
let caseID = ""; let caseID = "";
caseID = hasOwn(formContent, "pinswg_name") caseID = _.has(formContent, "pinswg_name")
? formContent.pinswg_name ? formContent.pinswg_name
: caseref; : caseref;
@@ -476,19 +476,20 @@ export const createRepPDFBlob = async (
? await blockBlobClient.uploadData(content) ? await blockBlobClient.uploadData(content)
: await blockBlobClient.uploadStream(content); : await blockBlobClient.uploadStream(content);
const locationMap = [ let whichLocation =
{ key: "_IP_-_Comments_", value: "846040038" }, // most specific first repName.indexOf("_IP_") > 0
{ key: "_IP_", value: "846040005" }, ? "846040005"
{ key: "_Statement_", value: "846040002" }, : repName.indexOf("_Statement_") > 0
{ key: "_Questionnaire_", value: "846040001" }, ? "846040002"
{ key: "_Comments", value: "846040003" }, : repName.indexOf("_Questionnaire_") > 0
{ key: "_Impact", value: "846040029" }, ? "846040001"
{ key: "_Consultation_Response_", value: "846040036" } : repName.indexOf("_Comments") > 0
]; ? "846040003"
: repName.indexOf("_Impact") > 0
const whichLocation = ? "846040029"
locationMap.find((item) => repName.includes(item.key))?.value || : repName.indexOf("_Consultation_Response_") > 0
"846040002"; ? "846040036"
: "846040002";
const tags = { const tags = {
containerid: containerName, containerid: containerName,
@@ -617,46 +618,71 @@ export const uploadFile = async (formContent, containerName, foldername) => {
); );
console.log(data); console.log(data);
const fieldName = files[prop][0].fieldName; let whichLocation =
files[prop][0].fieldName.indexOf("_Statement_of_Case") >
const whichLocation = 0 ||
[ files[prop][0].fieldName.indexOf("_-_Statement_of_Case") >
// 1️⃣ LPA docs (grouped) 0 ||
{ files[prop][0].fieldName.indexOf("_-_Application_Form") >
match: [ 0 ||
"_Statement_of_Case", files[prop][0].fieldName.indexOf(
"_-_Statement_of_Case", "_-_Site_Ownership_Certificate"
"_-_Application_Form", ) > 0 ||
"_-_Site_Ownership_Certificate", files[prop][0].fieldName.indexOf("_-_Decision_Notice") >
"_-_Decision_Notice", 0 ||
"_-_Site_Location_Plan", files[prop][0].fieldName.indexOf("_-_Site_Location_Plan") >
"_-_Plans_Drawing_Documents", 0 ||
"_-_Additional_Plans_Drawings_Documents", files[prop][0].fieldName.indexOf(
"_-_Design_and_Access_Statement", "_-_Plans_Drawing_Documents"
"_-_NSB_LPA_Additional_Documents", ) > 0 ||
"_-_LPA_Correspondence", files[prop][0].fieldName.indexOf(
"_-_LPA_Original_Permission", "_-_Additional_Plans_Drawings_Documents"
"_-_LPA's_Registration_Letter", ) > 0 ||
"_-_Environmental_Statement", files[prop][0].fieldName.indexOf(
"_-_Cost_of_Application", "_-_Design_and_Access_Statement"
"_-_Other_Relevant_Material", ) > 0 ||
"_-_S106_Agreement_or_Unilateral_Undertaking" files[prop][0].fieldName.indexOf(
], "_-_NSB_LPA_Additional_Documents"
value: "846040000" ) > 0 ||
}, files[prop][0].fieldName.indexOf("_-_LPA_Correspondence") >
{ match: ["_IP_-_Comments_"], value: "846040038" }, 0 ||
{ files[prop][0].fieldName.indexOf(
match: ["_Consultation_Response_"], "_-_LPA_Original_Permission"
value: "846040036" ) > 0 ||
}, files[prop][0].fieldName.indexOf(
{ match: ["_Questionnaire_"], value: "846040001" }, "_-_LPA's_Registration_Letter"
{ match: ["_Statement_"], value: "846040002" }, ) > 0 ||
{ match: ["_Comments_"], value: "846040003" }, files[prop][0].fieldName.indexOf(
{ match: ["_Impact_"], value: "846040001" }, +"_-_Environmental_Statement"
{ match: ["_IP_"], value: "846040005" } ) > 0 ||
].find((rule) => files[prop][0].fieldName.indexOf("_-_Cost_of_Application") >
rule.match.some((key) => fieldName.includes(key)) 0 ||
)?.value || "846040000"; files[prop][0].fieldName.indexOf(
"_-_Other_Relevant_Material"
) > 0 ||
files[prop][0].fieldName.indexOf(
"_-_S106_Agreement_or_Unilateral_Undertaking" > 0
)
? "846040000"
: files[prop][0].fieldName.indexOf("_IP_") > 0
? "846040005"
: files[prop][0].fieldName.indexOf("_Statement_") > 0
? "846040002"
: files[prop][0].fieldName.indexOf(
"_Questionnaire_"
) > 0
? "846040001"
: files[prop][0].fieldName.indexOf("_Comments_") >
0
? "846040003"
: files[prop][0].fieldName.indexOf("_Impact_") >
0
? "846040001"
: files[prop][0].fieldName.indexOf(
"_Consultation_Response_"
) > 0
? "846040036"
: "846040000";
const tags = { const tags = {
containerid: containerName, containerid: containerName,
@@ -777,8 +803,6 @@ export const uploadSingleFile = async (
/_Statement_of_Case|_-_Statement_of_Case|_-_Application_Form|_-_Site_Ownership_Certificate|_-_Decision_Notice|_-_Site_Location_Plan|_-_Plans_Drawing_Documents|_-_Additional_Plans_Drawings_Documents|_-_Design_and_Access_Statement|_-_NSB_LPA_Additional_Documents|_-_LPA_Correspondence|_-_LPA_Original_Permission|_-_LPA's_Registration_Letter|_-_Environmental_Statement|_-_Cost_of_Application|_-_Other_Relevant_Material|_-_S106_Agreement_or_Unilateral_Undertaking/, /_Statement_of_Case|_-_Statement_of_Case|_-_Application_Form|_-_Site_Ownership_Certificate|_-_Decision_Notice|_-_Site_Location_Plan|_-_Plans_Drawing_Documents|_-_Additional_Plans_Drawings_Documents|_-_Design_and_Access_Statement|_-_NSB_LPA_Additional_Documents|_-_LPA_Correspondence|_-_LPA_Original_Permission|_-_LPA's_Registration_Letter|_-_Environmental_Statement|_-_Cost_of_Application|_-_Other_Relevant_Material|_-_S106_Agreement_or_Unilateral_Undertaking/,
value: "846040000" value: "846040000"
}, },
{ pattern: /_IP_-_Comments_/, value: "846040038" },
{ pattern: /_IP_/, value: "846040005" }, { pattern: /_IP_/, value: "846040005" },
{ pattern: /_Statement_/, value: "846040002" }, { pattern: /_Statement_/, value: "846040002" },
{ pattern: /_Questionnaire_/, value: "846040001" }, { pattern: /_Questionnaire_/, value: "846040001" },
+1 -1
View File
@@ -5,7 +5,7 @@ export const BASE_URL =
? window.apiRoot ? window.apiRoot
: process.env.API_ROOT || `http://localhost:${port}`; : process.env.API_ROOT || `http://localhost:${port}`;
export const API_PATH = "/api/data/v9.2/"; export const API_PATH = "/api/data/v8.2/";
export const WEBAPI_URL = export const WEBAPI_URL =
process.env.RELAY_ROOT || process.env.RELAY_ROOT ||
+32 -26
View File
@@ -1,4 +1,4 @@
import { hasOwn } from "../../components/utils"; import _ from "lodash";
const MASK = "[REDACTED]"; const MASK = "[REDACTED]";
@@ -50,38 +50,44 @@ export const consoleLogger = (err) => {
redactSensitive(err) + redactSensitive(err) +
"\n\n/////////////////////////////////////////////////\n" "\n\n/////////////////////////////////////////////////\n"
); );
var errStr =
const errStr = "\n\n/////////////////////////////////////////////////\nServer Error " +
"\n\n/////////////////////////////////////////////////\nServer Error\n" + "\n" +
(hasOwn(err, "name") ? `Name: ${err.name}\n` : "") + (_.has(err, "name") ? "Name: " + err.name + "\n" : "") +
(hasOwn(err, "code") ? `Code: ${err.code}\n` : "") + (_.has(err, "code") ? "Code: " + err.code + "\n" : "") +
(hasOwn(err, "query") ? `Query: ${err.query}\n` : "") + (_.has(err, "query") ? "Query: " + err.query + "\n" : "") +
(hasOwn(err, "message") ? `Message: ${err.message}\n` : "") + (_.has(err, "message") ? "Message: " + err.message + "\n" : "") +
(err?.request?.url ? `request.url: ${err.request.url}\n` : "") + (_.has(err, "request.url")
(err?.response?.status ? `Status: ${err.response.status}\n` : "") + ? "request.url: " + err.request.url + "\n"
(err?.response?.statusText
? `StatusText: ${err.response.statusText}\n`
: "") + : "") +
(err?.response?.request?.socket?.remoteAddress (_.has(err, "response.status") ? "Status: " + err.code + "\n" : "") +
? `Request IP: ${err.response.request.socket.remoteAddress}\n` (_.has(err, "response.statusText")
? "\nStatusText: " + err.response.status + "\n"
: "") + : "") +
(err?.response?.data?.error?.message (_.has(err, "response.request.socket.remoteAddress")
? `Message: ${redactSensitive(err.response.data.error.message)}\n` ? "\nRequest IP: " +
err.response.request.socket.remoteAddress +
"\n"
: "") + : "") +
(err?.response?.config?.url (_.has(err, "response.data.error.message")
? `Request URL: ${redactSensitive(err.response.config.url)}\n` ? "\nMessage: " +
redactSensitive(err.response.data.error.message) +
"\n"
: "") + : "") +
(err?.response?.headers?.date (_.has(err, "response.config.url")
? `Request Time: ${err.response.headers.date}\n` ? "\nRequest URL: " + redactSensitive(err.config.url) + "\n"
: "") + : "") +
(err?.config?.url (_.has(err, "response.headers.date")
? `Axios config url: ${redactSensitive(err.config.url)}\n` ? "\nRequest Time: " + err.response.headers.date + "\n"
: "") + : "") +
(err?.message (_.has(err, "config.url")
? `Axios message: ${redactSensitive(err.message)}\n` ? "\nAxios config url: " + redactSensitive(err.config.url) + "\n"
: "") + : "") +
(err?.config?.data (_.has(err, "config.url")
? `Request payload: ${redactSensitive(err.config.data)}\n` ? "\nAxios message url: " + redactSensitive(err.message) + "\n"
: "") +
(_.has(err, "config.data")
? "\nRequest payload: " + redactSensitive(err.config.data) + "\n"
: "") + : "") +
"\n/////////////////////////////////////////////////\n"; "\n/////////////////////////////////////////////////\n";
+5 -5
View File
@@ -28,13 +28,13 @@ export const getSelectQuery = (appealTypeName) => {
return "&$select=pinswg_detailedeiascreening,modifiedon,_pinswg_appellant_value,pinswg_name,pinswg_siteaddresscounty,pinswg_siteaddressline1,pinswg_siteaddressline2,pinswg_siteaddresspostcode,pinswg_siteaddresstown,pinswg_casedecisiondate,pinswg_dateeventrequested,pinswg_decision,pinswg_finalcommentsduedate,pinswg_otherpartiesstatement,pinswg_procedure,pinswg_proofsofevidencewrittenstatementsofeviden,pinswg_questionnaireduedate,pinswg_relevantauthorityname,pinswg_startdate,statuscode,pinswg_startdateoftheevent,pinswg_typeofevent,pinswg_statementduedate"; return "&$select=pinswg_detailedeiascreening,modifiedon,_pinswg_appellant_value,pinswg_name,pinswg_siteaddresscounty,pinswg_siteaddressline1,pinswg_siteaddressline2,pinswg_siteaddresspostcode,pinswg_siteaddresstown,pinswg_casedecisiondate,pinswg_dateeventrequested,pinswg_decision,pinswg_finalcommentsduedate,pinswg_otherpartiesstatement,pinswg_procedure,pinswg_proofsofevidencewrittenstatementsofeviden,pinswg_questionnaireduedate,pinswg_relevantauthorityname,pinswg_startdate,statuscode,pinswg_startdateoftheevent,pinswg_typeofevent,pinswg_statementduedate";
break; break;
case "pinswg_dnses": case "pinswg_dnses":
return "&$select=pinswg_eiarequired,pinswg_anticipatedgridreferenceeastingtext,pinswg_anticipatedgridreferencenorthingtext,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_addresscounty,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_choiceofprocedure,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofdecision,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_decision,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectdescription,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_suspensionenddates,pinswg_suspensionstartdates,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,_pinswg_dnsids_value,pinswg_startdateofevent,pinswg_typeofevent"; return "&$select=pinswg_eiarequired,pinswg_anticipatedgridreferenceeastingtext,pinswg_anticipatedgridreferencenorthingtext,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_addresscounty,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_choiceofprocedure,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofdecision,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_decision,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectdescription,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_suspensionenddates,pinswg_suspensionstartdates,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,pinswg_casestage,_pinswg_dnsids_value,pinswg_startdateofevent,pinswg_typeofevent";
break; break;
case "pinswg_electricityacts": case "pinswg_electricityacts":
return "&$select=pinswg_eiarequired,modifiedon,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_decision,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,pinswg_startdateofevent,pinswg_typeofevent"; return "&$select=pinswg_eiarequired,modifiedon,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_decision,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,pinswg_startdateofevent,pinswg_typeofevent";
break; break;
case "pinswg_harbourrevisionorders": case "pinswg_harbourrevisionorders":
return "&$select=pinswg_eiarequired,pinswg_anticipatedgridreferenceeastingtext,pinswg_anticipatedgridreferencenorthingtext,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_addresscounty,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_choiceofprocedure,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofdecision,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_decision,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectdiscription,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_suspensionenddates,pinswg_suspensionstartdate,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,pinswg_startdateofevent,pinswg_typeofevent"; return "&$select=pinswg_eiarequired,pinswg_anticipatedgridreferenceeastingtext,pinswg_anticipatedgridreferencenorthingtext,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_addresscounty,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_choiceofprocedure,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofdecision,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_decision,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectdiscription,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_suspensionenddates,pinswg_suspensionstartdate,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,pinswg_casestage,pinswg_startdateofevent,pinswg_typeofevent";
break; break;
case "pinswg_householderappealhases": case "pinswg_householderappealhases":
return "&$select=pinswg_eiarequired,modifiedon,_pinswg_appellant_value,pinswg_name,pinswg_siteaddressline1,pinswg_siteaddressline2,pinswg_siteaddresspostcode,pinswg_siteaddresstown,_pinswg_associatedlpa_value,pinswg_casedecisiondate,pinswg_dateeventrequested,pinswg_decision,pinswg_finalcommentsduedate,pinswg_otherpartiesstmt,pinswg_procedure,pinswg_questionnaireduedate,pinswg_startdate,pinswg_statementduedate,statuscode"; return "&$select=pinswg_eiarequired,modifiedon,_pinswg_appellant_value,pinswg_name,pinswg_siteaddressline1,pinswg_siteaddressline2,pinswg_siteaddresspostcode,pinswg_siteaddresstown,_pinswg_associatedlpa_value,pinswg_casedecisiondate,pinswg_dateeventrequested,pinswg_decision,pinswg_finalcommentsduedate,pinswg_otherpartiesstmt,pinswg_procedure,pinswg_questionnaireduedate,pinswg_startdate,pinswg_statementduedate,statuscode";
@@ -79,10 +79,10 @@ export const getSelectQuery = (appealTypeName) => {
return "&$select=modifiedon,_pinswg_appellant_value,pinswg_name,pinswg_siteaddressline1,pinswg_siteaddressline2,pinswg_siteaddresspostcode,pinswg_siteaddresstown,_pinswg_associatedlpa_value,statuscode"; return "&$select=modifiedon,_pinswg_appellant_value,pinswg_name,pinswg_siteaddressline1,pinswg_siteaddressline2,pinswg_siteaddresspostcode,pinswg_siteaddresstown,_pinswg_associatedlpa_value,statuscode";
break; break;
case "pinswg_transportandworkacts": case "pinswg_transportandworkacts":
return "&$select=pinswg_eiarequired,pinswg_anticipatedgridreferenceeastingtext,pinswg_anticipatedgridreferencenorthingtext,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_addresscounty,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_choiceofprocedure,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofdecision,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectdescription,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_suspensionenddates,pinswg_suspensionstartdate,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,pinswg_startdateofevent,pinswg_typeofevent"; return "&$select=pinswg_eiarequired,pinswg_anticipatedgridreferenceeastingtext,pinswg_anticipatedgridreferencenorthingtext,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_addresscounty,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_choiceofprocedure,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofdecision,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectdescription,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_suspensionenddates,pinswg_suspensionstartdate,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,pinswg_casestage,pinswg_startdateofevent,pinswg_typeofevent";
case "pinswg_sipses": case "pinswg_sipses":
// return "&$select=pinswg_anticipatedgridreferenceeastingtext,pinswg_anticipatedgridreferencenorthingtext,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_addresscounty,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_choiceofprocedure,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofdecision,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_decision,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectdescription,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_suspensionenddates,pinswg_suspensionstartdates,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,_pinswg_dnsids_value,pinswg_startdateofevent,pinswg_typeofevent"; // return "&$select=pinswg_anticipatedgridreferenceeastingtext,pinswg_anticipatedgridreferencenorthingtext,_pinswg_appellant_value,pinswg_name,pinswg_addressline1,pinswg_addressline2,pinswg_postcode,pinswg_addresstown,_pinswg_associatedlpa_value,pinswg_addresscounty,pinswg_applicationacceptedasvalid,pinswg_applicationrejectedasinvalid,pinswg_choiceofprocedure,pinswg_confirmrequesttovaryapplication,pinswg_dateeventrequested,pinswg_dateofdecision,pinswg_dateofrequesttovarytheapplication,pinswg_dateofsubmissionofapplication,pinswg_dateprojectpublishedonwebsite,pinswg_deadlineforsubmissionofapplication,pinswg_decision,pinswg_endofrepresentationperiod,pinswg_inspectorreportsubmittedtowelshgovernment,pinswg_procedureconfirmed,pinswg_projectdescription,pinswg_projectlocation,pinswg_recommendation,pinswg_rejectrequesttovaryapplication,pinswg_reportdueby,pinswg_suspensiondates,pinswg_suspensionenddates,pinswg_suspensionstartdates,pinswg_validnoticeofintentiontosubmitanapplicati,pinswg_webaddress,pinswg_withdrawndate,pinswg_writtenacceptanceofnotification,statuscode,pinswg_casestage,_pinswg_dnsids_value,pinswg_startdateofevent,pinswg_typeofevent";
return "&$select=pinswg_casedeadline,pinswg_sipseiarequired,pinswg_anticipatedgridrefeasting,pinswg_anticipatedgridrefnorthing,_pinswg_appellant_value,pinswg_name,_pinswg_associatedlpa_value,pinswg_choiceofprocedure,pinswg_decision,pinswg_projectdescription,pinswg_projectlocation,pinswg_recommendation,statuscode,_pinswg_sipscase_value,pinswg_writtenacceptanceofnotification,pinswg_validnoticeofintentiontosubmit,pinswg_deadlineforsubmissionofapplication,pinswg_screeningstartdate,pinswg_eiatargetdate,pinswg_targetextended,pinswg_directionissueddate,pinswg_scopingstartdate,pinswg_scopingtargetdate,pinswg_scopingtargetextended,pinswg_scopingoutcomeissueddate,pinswg_essubmitted,pinswg_deemedmarinelicenseappliedfor,pinswg_validationdeadlineextension,pinswg_consultationopen,pinswg_consultationclose,pinswg_reportissuedtowelshministers,pinswg_decisionissuedtoapplicant,pinswg_decisionoutcome,pinswg_redetermination,pinswg_redeterminationconsultationdeadline,pinswg_reportdeadline,pinswg_casesubmissiondate,pinswg_preexaminationmeetingneeded,pinswg_consultaionpublicitydeadline,pinswg_endofexaminationstartofreporting,pinswg_compulsoryacquisitionvariationsubmitted,pinswg_compulsoryacquisitionvariationaccepted,pinswg_schemeorderamendmentrequestaccepted,pinswg_schemeorderamendmentrequestsubmitted"; return "&$select=_pinswg_projecttype_value,pinswg_eiarequired,pinswg_anticipatedgridrefeasting,pinswg_anticipatedgridrefnorthing,_pinswg_appellant_value,pinswg_name,_pinswg_associatedlpa_value,pinswg_choiceofprocedure,pinswg_decision,pinswg_projectdescription,pinswg_projectlocation,pinswg_recommendation,statuscode,pinswg_casestage,_pinswg_sipscase_value,pinswg_writtenacceptanceofnotification,pinswg_validnoticeofintentiontosubmit,pinswg_deadlineforsubmissionofapplication,pinswg_screeningstartdate,pinswg_eiatargetdate,pinswg_targetextended,pinswg_directionissueddate,pinswg_eiarequired,pinswg_scopingstartdate,pinswg_scopingtargetdate,pinswg_scopingtargetextended,pinswg_scopingoutcomeissueddate,pinswg_essubmitted,pinswg_deemedmarinelicenseappliedfor,pinswg_validationdeadlineextension,pinswg_casesuspensionstartdate,pinswg_casesuspensionenddate,pinswg_consultationopen,pinswg_consultationclose,pinswg_reportissuedtowelshministers,pinswg_decisionissuedtoapplicant,pinswg_decisionoutcome,pinswg_redetermination,pinswg_redeterminationconsultationdeadline";
break; break;
default: default:
return ""; return "";
-20
View File
@@ -65,23 +65,3 @@ export const getNewDocumentsPaged = async (
return logAndReturnResponse(error); return logAndReturnResponse(error);
} }
}; };
export const getStatusByAppeal = async () => {
try {
return await getJson(
BASE_URL + "/api/admin/getStatusCountsByAppeal_api"
);
} catch (error) {
return logAndReturnResponse(error);
}
};
export const getStatusByAppealLPA = async () => {
try {
return await getJson(
BASE_URL + "/api/admin/getStatusCountsByAppealAndLPA_api"
);
} catch (error) {
return logAndReturnResponse(error);
}
};
+2 -10
View File
@@ -1,15 +1,7 @@
import { import {
getNewAppeals, getNewAppeals,
getNewAppealsPage, getNewAppealsPage,
getNewDocumentsPaged, getNewDocumentsPaged
getStatusByAppeal,
getStatusByAppealLPA
} from "./adminDirectService"; } from "./adminDirectService";
export { export { getNewAppeals, getNewAppealsPage, getNewDocumentsPaged };
getNewAppeals,
getNewAppealsPage,
getNewDocumentsPaged,
getStatusByAppeal,
getStatusByAppealLPA
};
+5 -13
View File
@@ -5,7 +5,7 @@ import { getJson, requestJson } from "../clients/endpointClient";
import { buildFileQuery, withBaseUrl } from "../clients/fileRouteBuilder"; import { buildFileQuery, withBaseUrl } from "../clients/fileRouteBuilder";
export const getCaseMessage = (searchString) => { export const getCaseMessage = (searchString) => {
const route = buildFileQuery("/api/cases/get-case-message", { const route = buildFileQuery("/api/endpoint/getcasemessage_api", {
id: searchString id: searchString
}); });
@@ -13,7 +13,7 @@ export const getCaseMessage = (searchString) => {
}; };
export const getIncidentbyID = (searchString) => { export const getIncidentbyID = (searchString) => {
const route = buildFileQuery("/api/cases/get-incident-by-id", { const route = buildFileQuery("/api/endpoint/getincidentbyid_api", {
searchString searchString
}); });
@@ -37,7 +37,7 @@ export const getPartSavedAppeal = (searchString) => {
}; };
export const getSIPSEvents = async (caseid) => { export const getSIPSEvents = async (caseid) => {
const route = buildFileQuery("/api/cases/get-sips-events", { const route = buildFileQuery("/api/endpoint/getsipsevents_api", {
caseid caseid
}); });
@@ -45,7 +45,7 @@ export const getSIPSEvents = async (caseid) => {
}; };
export const getSIPSMedia = async (caseid) => { export const getSIPSMedia = async (caseid) => {
const route = buildFileQuery("/api/cases/get-sips-media", { const route = buildFileQuery("/api/endpoint/getsipsmedia_api", {
caseid caseid
}); });
@@ -251,7 +251,7 @@ export const getAppealPDFDocument = async (incidentid) => {
}; };
export const getPortalModuleDetails = async (appealType, caseReference) => { export const getPortalModuleDetails = async (appealType, caseReference) => {
const route = buildFileQuery("/api/myportal/get-portal-module-details", { const route = buildFileQuery("/api/endpoint/getportalmoduledetails_api", {
appealType, appealType,
caseReference: encodeURI(caseReference) caseReference: encodeURI(caseReference)
}); });
@@ -274,11 +274,3 @@ export const getPortalModuleDetailsProxy = (appealType, caseReference) => {
consoleLogger(error); consoleLogger(error);
}); });
}; };
export const getCaseStatus = async (appealType, caseReference) => {
const route = buildFileQuery("/api/endpoint/getStatusCounts_api", {});
return getJson(withBaseUrl(BASE_URL, route)).catch((error) => {
consoleLogger(error);
});
};
+2 -4
View File
@@ -16,8 +16,7 @@ import {
getPartSavedAppeal, getPartSavedAppeal,
getIsPublishedbyID, getIsPublishedbyID,
getPortalModuleDetails, getPortalModuleDetails,
getPortalModuleDetailsProxy, getPortalModuleDetailsProxy
getCaseStatus
} from "./caseDirectService"; } from "./caseDirectService";
export { export {
@@ -38,6 +37,5 @@ export {
getPartSavedAppeal, getPartSavedAppeal,
getIsPublishedbyID, getIsPublishedbyID,
getPortalModuleDetails, getPortalModuleDetails,
getPortalModuleDetailsProxy, getPortalModuleDetailsProxy
getCaseStatus
}; };
+8 -12
View File
@@ -12,7 +12,7 @@ import {
} from "../clients/fileRouteBuilder"; } from "../clients/fileRouteBuilder";
export const getMyCases = (loggedInUserId) => { export const getMyCases = (loggedInUserId) => {
const route = buildFileQuery("/api/myportal/get-my-cases", { const route = buildFileQuery("/api/endpoint/getmycases_api", {
loggedInUserId loggedInUserId
}); });
@@ -32,7 +32,7 @@ export const getMyInvolvements = async (loggedInUserId) => {
}; };
export const getMyLPACases = (lpaid) => { export const getMyLPACases = (lpaid) => {
const route = buildFileQuery("/api/myportal/get-my-lpa-cases", { const route = buildFileQuery("/api/endpoint/getmylpacases_api", {
lpaid lpaid
}); });
@@ -85,7 +85,7 @@ export const getRepresentationsProxy = (incidentID) => {
}; };
export const getWatchedCases = (loggedInUserId) => { export const getWatchedCases = (loggedInUserId) => {
const route = buildFileQuery("/api/subscriptions/get-watched-cases", { const route = buildFileQuery("/api/endpoint/getwatchedcases_api", {
loggedInUserId loggedInUserId
}); });
@@ -95,7 +95,7 @@ export const getWatchedCases = (loggedInUserId) => {
}; };
export const getWatchedCasesProxy = (loggedInUserId) => { export const getWatchedCasesProxy = (loggedInUserId) => {
const route = buildFileQuery("/api/subscriptions/get-watched-cases-proxy", { const route = buildFileQuery("/api/endpoint/getwatchedcasesproxy_api", {
loggedInUserId loggedInUserId
}); });
@@ -129,7 +129,7 @@ export const getAwaitingSubmission = (loggedInUserId) => {
export const createWatchedCases = async (formValues) => { export const createWatchedCases = async (formValues) => {
var data = formValues; var data = formValues;
var queryUrl = buildFileQuery("/api/subscriptions/create-watched-case"); var queryUrl = buildFileQuery("/api/endpoint/createwatchedcases_api");
var config = { var config = {
method: "post", method: "post",
@@ -181,7 +181,7 @@ export const deleteAwaitingSubmissions = (incidentID) => {
}; };
export const deleteWatchedCases = async (watchedCaseID) => { export const deleteWatchedCases = async (watchedCaseID) => {
var queryUrl = buildFileQuery("/api/subscriptions/delete-watched-case", { var queryUrl = buildFileQuery("/api/endpoint/deletewatchedcases_api", {
watchedCaseID watchedCaseID
}); });
@@ -274,14 +274,10 @@ export const sendRepCompleteMessage = async (
}); });
}; };
export const setRepInvolvment = async (caseid, contactid, involvement) => { export const setRepInvolvment = async (caseid, contactid) => {
var queryUrl = buildFileQuery("/api/file/createrepinvolvement_api"); var queryUrl = buildFileQuery("/api/file/createrepinvolvement_api");
var data = { var data = { "incidentid": caseid, "contactid": contactid };
"incidentid": caseid,
"contactid": contactid,
"involvement": involvement
};
var config = { var config = {
method: "post", method: "post",
url: queryUrl, url: queryUrl,
+9 -9
View File
@@ -51,7 +51,7 @@ export const getBasicSearchPaged = (
showNumberOfRecords showNumberOfRecords
) => { ) => {
return getJson( return getJson(
"/api/search/basic-paged?searchString=" + "/api/endpoint/getbasicsearchpaged_api?searchString=" +
searchString + searchString +
"&pageNumber=" + "&pageNumber=" +
pageNumber + pageNumber +
@@ -103,7 +103,7 @@ export const getBasicDNSSearchPaged = (
export const getAdvancedSearch = (searchString) => { export const getAdvancedSearch = (searchString) => {
return getJson( return getJson(
BASE_URL + BASE_URL +
"/api/search/advanced?searchstring=" + "/api/endpoint/getadvancedsearch_api?searchstring=" +
JSON.stringify(searchString) JSON.stringify(searchString)
).catch(logAndReturnEmptyValueErrorResponse); ).catch(logAndReturnEmptyValueErrorResponse);
}; };
@@ -116,7 +116,7 @@ export const getAdvancedSearchPaged = (
showNumberOfRecords showNumberOfRecords
) => { ) => {
return getJson( return getJson(
"/api/search/advanced-paged?searchstring=" + "/api/endpoint/getadvancedsearchpaged_api?searchstring=" +
JSON.stringify(searchString) + JSON.stringify(searchString) +
"&pageNumber=" + "&pageNumber=" +
pageNumber + pageNumber +
@@ -186,12 +186,12 @@ export const getBasicSearchDetailsPaged = async (
}) })
.join(" or "); .join(" or ");
const groupedUrl = `/api/search/basic-details-paged?appealTypeName=${appealTypeName}&primaryIdAttribute=${primaryIdAttribute}&incidentID=${encodeURIComponent( const url = `/api/endpoint/getbasicsearchdetailspaged_api?appealTypeName=${appealTypeName}&primaryIdAttribute=${primaryIdAttribute}&incidentID=${encodeURIComponent(
filter filter
)}`; )}`;
try { try {
const data = await getJson(groupedUrl); const data = await getJson(url);
return data.value || []; return data.value || [];
} catch (error) { } catch (error) {
consoleLogger(error); consoleLogger(error);
@@ -201,7 +201,7 @@ export const getBasicSearchDetailsPaged = async (
export const getSearchDocumentDetails = (incidentID) => { export const getSearchDocumentDetails = (incidentID) => {
return getJson( return getJson(
"/api/documents/get-search-document-details?incidentid=" + incidentID "/api/endpoint/getsearchdocumentdetails_api?incidentid=" + incidentID
).catch((error) => { ).catch((error) => {
consoleLogger(error); consoleLogger(error);
throw error; throw error;
@@ -210,7 +210,7 @@ export const getSearchDocumentDetails = (incidentID) => {
export const getSearchDocumentTypes = (incidentID) => { export const getSearchDocumentTypes = (incidentID) => {
return getJson( return getJson(
"/api/documents/get-search-document-types?incidentid=" + incidentID "/api/endpoint/getsearchdocumentTypes_api?incidentid=" + incidentID
).catch((error) => { ).catch((error) => {
consoleLogger(error); consoleLogger(error);
}); });
@@ -225,7 +225,7 @@ export const getSearchDocumentDetailsPaged = (
documentType documentType
) => { ) => {
return getJson( return getJson(
"/api/documents/get-search-document-details-paged?incidentid=" + "/api/endpoint/getsearchdocumentdetailspaged_api?incidentid=" +
incidentID + incidentID +
"&pageNumber=" + "&pageNumber=" +
pageNumber + pageNumber +
@@ -244,7 +244,7 @@ export const getSearchDocumentDetailsPaged = (
export const getLinkedCases = (parentIncidentid) => { export const getLinkedCases = (parentIncidentid) => {
return getJson( return getJson(
"/api/cases/get-linked-cases?parentincidentid=" + parentIncidentid "/api/endpoint/getlinkedcases_api?parentincidentid=" + parentIncidentid
).catch((error) => { ).catch((error) => {
consoleLogger(error); consoleLogger(error);
}); });
-104
View File
@@ -1,104 +0,0 @@
import useTranslation from "next-translate/useTranslation";
import { parseCookies, setCookie } from "nookies";
import { useEffect, useRef, useState } from "react";
const COOKIE_NAME = "pedwAiPolicyNoticeHidden";
const COOKIE_DAYS = 7;
export default function AIPolicyNotice() {
let { t } = useTranslation();
const [hasCheckedCookie, setHasCheckedCookie] = useState(false);
const [isOpen, setIsOpen] = useState(false);
const dismissButtonRef = useRef(null);
useEffect(() => {
const cookies = parseCookies();
const isHidden = cookies[COOKIE_NAME] === "true";
setIsOpen(!isHidden);
setHasCheckedCookie(true);
}, []);
useEffect(() => {
if (isOpen && dismissButtonRef.current) {
dismissButtonRef.current.focus();
}
}, [isOpen]);
const dismissNotice = () => {
const now = new Date();
const expDate = new Date(now);
expDate.setDate(now.getDate() + COOKIE_DAYS);
setCookie(null, COOKIE_NAME, "true", {
path: "/",
expires: expDate
});
setIsOpen(false);
};
if (!hasCheckedCookie || !isOpen) {
return null;
}
return (
<div
className="modal aiModal fade show"
style={{
display: "flex",
alignItems: "center",
justifyContent: "center",
padding: "1rem"
}}
aria-hidden={false}
>
<div className="modal-dialog" style={{ margin: 0 }}>
<div
className="modal-content govuk-!-padding-6"
role="dialog"
aria-modal="true"
aria-labelledby="ai-policy-notice-title"
>
<h2
id="ai-policy-notice-title"
className="govuk-heading-m govuk-!-margin-bottom-3"
>
{t("home:ai-policy-notice-title")}
</h2>
<p className="govuk-body">
{t("home:ai-policy-notice-paragraph-one")}
</p>
<p className="govuk-body govuk-!-margin-bottom-4">
{t("home:ai-policy-notice-paragraph-two")}{" "}
<a
target="_blank"
rel="noopener noreferrer"
href={t(
"home:ai-policy-notice-paragraph-two-a-link"
)}
>
{t("home:ai-policy-notice-paragraph-two-a-label")}
</a>{" "}
{t("home:ai-policy-notice-paragraph-two-b")}
</p>
<button
ref={dismissButtonRef}
type="button"
className="govuk-button govuk-!-margin-bottom-0"
data-module="govuk-button"
onClick={dismissNotice}
>
{t("home:ai-policy-notice-dismiss-button")}
</button>
</div>
</div>
<div
className="modal-backdrop fade show"
style={{ opacity: 0.2 }}
></div>
</div>
);
}
+9 -9
View File
@@ -140,12 +140,12 @@ const RenderPickList = ({
input, input,
optionsArr, optionsArr,
meta: { touched, error }, meta: { touched, error },
errorMsg errorMsg,
}) => { }) => {
let { t, lang } = useTranslation(); let { t, lang } = useTranslation();
optionsArr = [ optionsArr = [
t("account:account-preferred-language-english") + ":846040001", t("account:account-preferred-language-english") + ":846040001",
t("account:account-preferred-language-welsh") + ":846040000" t("account:account-preferred-language-welsh") + ":846040000",
]; ];
return ( return (
<> <>
@@ -202,7 +202,7 @@ let PersonalDetails = (props) => {
load, load,
pristine, pristine,
reset, reset,
submitting submitting,
} = props; } = props;
let { t, lang } = useTranslation(); let { t, lang } = useTranslation();
@@ -324,8 +324,8 @@ let PersonalDetails = (props) => {
label={t("account:account-telephone-label")} label={t("account:account-telephone-label")}
/> />
<Field <Field
name="pinswg_companyname" name="company"
id="pinswg_companyname" id="company"
component={RenderTextfield} component={RenderTextfield}
type="text" type="text"
className="govuk-input govuk-input--width-20" className="govuk-input govuk-input--width-20"
@@ -444,7 +444,7 @@ const mapStateToProps = (state) => {
searchResultsObj: state.searchResultsObj, searchResultsObj: state.searchResultsObj,
formData: state.formData, formData: state.formData,
appealType: state.appealType, appealType: state.appealType,
accountDetails: state.accountDetails accountDetails: state.accountDetails,
//form: state.form, //form: state.form,
}; };
}; };
@@ -453,7 +453,7 @@ const mapDispatchToProps = (dispatch) => {
return { return {
setCurrentSection: (currentSection) => { setCurrentSection: (currentSection) => {
dispatch(setCurrentSection(currentSection)); dispatch(setCurrentSection(currentSection));
} },
}; };
}; };
@@ -484,12 +484,12 @@ const selector = formValueSelector("personalDetailsForm"); // <-- same as form n
PersonalDetails = reduxForm({ PersonalDetails = reduxForm({
form: "personalDetailsForm", form: "personalDetailsForm",
enableReinitialize: true, // this is needed!! enableReinitialize: true, // this is needed!!
destroyOnUnmount: false destroyOnUnmount: false,
})(PersonalDetails); })(PersonalDetails);
// You have to connect() to any reducers that you wish to connect to yourself // You have to connect() to any reducers that you wish to connect to yourself
PersonalDetails = connect((state) => ({ PersonalDetails = connect((state) => ({
initialValues: state.accountDetails.accountDetails // pull initial values from account reducer initialValues: state.accountDetails.accountDetails, // pull initial values from account reducer
}))(PersonalDetails); }))(PersonalDetails);
export default PersonalDetails; export default PersonalDetails;
+4 -4
View File
@@ -11,7 +11,7 @@ const BuildCheckPersonalDetails = (props) => {
handleSubmit, handleSubmit,
value, value,
setPersonalDetailsComplete, setPersonalDetailsComplete,
setAccountUpdatedComplete setAccountUpdatedComplete,
} = props; } = props;
let { t, lang } = useTranslation(); let { t, lang } = useTranslation();
@@ -142,7 +142,7 @@ const BuildCheckPersonalDetails = (props) => {
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{ {
props.props.props.form.personalDetailsForm.values props.props.props.form.personalDetailsForm.values
.pinswg_companyname .company
} }
</dd> </dd>
<dd className="govuk-summary-list__actions"> <dd className="govuk-summary-list__actions">
@@ -354,7 +354,7 @@ const mapStateToProps = (state) => {
searchResultsObj: state.searchResultsObj, searchResultsObj: state.searchResultsObj,
formData: state.formData, formData: state.formData,
appealType: state.appealType, appealType: state.appealType,
accountDetails: state.accountDetails accountDetails: state.accountDetails,
//form: state.form, //form: state.form,
}; };
}; };
@@ -363,7 +363,7 @@ const mapDispatchToProps = (dispatch) => {
return { return {
setCurrentSection: (currentSection) => { setCurrentSection: (currentSection) => {
dispatch(setCurrentSection(currentSection)); dispatch(setCurrentSection(currentSection));
} },
}; };
}; };
@@ -50,7 +50,7 @@ const PersonalDetailsComplete = (props) => {
} }
doUpdate(); doUpdate();
}, [loggedinUserId, formValues, prefLang, userLang]); }, [loggedinUserId, formValues, prefLang]);
return ( return (
<> <>
+5 -16
View File
@@ -66,7 +66,7 @@ const RegisterForm = (props) => {
setRegisterFormComplete, setRegisterFormComplete,
setAccountCreatedComplete, setAccountCreatedComplete,
loggedInUserEmail, loggedInUserEmail,
emailaddress1 emailaddress1,
} = props; } = props;
let { t, lang } = useTranslation(); let { t, lang } = useTranslation();
@@ -199,17 +199,6 @@ const RegisterForm = (props) => {
"account:register-new-account-phone-label" "account:register-new-account-phone-label"
)} )}
/> />
<Field
name="company"
id="company"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
validate={[required]}
label={t(
"account:register-new-account-company-label"
)}
/>
</fieldset> </fieldset>
<fieldset className="govuk-fieldset"> <fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m"> <legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
@@ -323,8 +312,8 @@ const mapStateToProps = (state, props) => {
appealType: state.appealType, appealType: state.appealType,
//form: state.form, //form: state.form,
initialValues: { initialValues: {
emailaddress1: props.loggedInUserEmail emailaddress1: props.loggedInUserEmail,
} },
}; };
}; };
@@ -332,7 +321,7 @@ const mapDispatchToProps = (dispatch) => {
return { return {
setCurrentSection: (currentSection) => { setCurrentSection: (currentSection) => {
dispatch(setCurrentSection(currentSection)); dispatch(setCurrentSection(currentSection));
} },
}; };
}; };
@@ -345,6 +334,6 @@ export default connect(
reduxForm({ reduxForm({
form: "accountRegisterForm", form: "accountRegisterForm",
enableReinitialize: true, enableReinitialize: true,
destroyOnUnmount: false destroyOnUnmount: false,
})(RegisterForm) })(RegisterForm)
); );
+2 -3
View File
@@ -3,7 +3,6 @@ import Link from "next/link";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import CRMError from "./crmError"; import CRMError from "./crmError";
import SearchResults from "./search/addresssearchresults"; import SearchResults from "./search/addresssearchresults";
import { hasOwn } from "./utils";
export default function Search(props) { export default function Search(props) {
const { const {
@@ -13,14 +12,14 @@ export default function Search(props) {
myportal, myportal,
watchedCases, watchedCases,
isLinkedCase, isLinkedCase,
showLoginCheck showLoginCheck,
} = props; } = props;
let { t } = useTranslation(); let { t } = useTranslation();
const router = useRouter(); const router = useRouter();
const { locale } = router; const { locale } = router;
var hasError = hasOwn(searchResultsObj.searchResultsObj, "errorCode") var hasError = _.has(searchResultsObj.searchResultsObj, "errorCode")
? true ? true
: false; : false;
+66 -52
View File
@@ -6,17 +6,15 @@ import Link from "next/link";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import PaginationControl from "../../../components/search/pagination"; import PaginationControl from "../../../components/search/pagination";
import { connect } from "react-redux"; import { connect } from "react-redux";
import transLookup from "../../../data/lookuptranslations.json";
import { import {
setSearchResults, setSearchResults,
setSearchDetails setSearchDetails
} from "../../../store/searchOutput/action"; } from "../../../store/searchOutput/action";
import { getDetailsProxy, getSearchDetailsPaged, hasOwn } from "../../utils"; import { getDetailsProxy, getSearchDetailsPaged } from "../../utils";
import { getAdvancedSearchPaged } from "../../../actions/services/searchService"; import { getAdvancedSearchPaged } from "../../../actions/services/searchService";
import { getNewAppealsPage } from "../../../actions/services/adminService"; import { getNewAppealsPage } from "../../../actions/services/adminService";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import { import {
setCurrentPage, setCurrentPage,
setCurrentReference setCurrentReference
@@ -30,15 +28,9 @@ function AppealsTab(props) {
const [fieldSortState, setfieldSortState] = useState("desc"); const [fieldSortState, setfieldSortState] = useState("desc");
const [loginToWatch, setLoginToWatch] = useState("true"); const [loginToWatch, setLoginToWatch] = useState("true");
const { const searchDetailsObj = props.searchResultsObj.searchDetailsObj || {};
searchResultsObj: searchResultsState, const resultsArr = props.searchResultsObj.searchResultsObj.value || [];
setSearchResults, const searchResultsObj = props.searchResultsObj.searchResultsObj;
setSearchDetails
} = props;
const searchDetailsObj = searchResultsState.searchDetailsObj || {};
const resultsArr = searchResultsState.searchResultsObj.value || [];
const searchResultsObj = searchResultsState.searchResultsObj;
const { t } = useTranslation(); const { t } = useTranslation();
const router = useRouter(); const router = useRouter();
@@ -83,14 +75,20 @@ function AppealsTab(props) {
fieldSort, fieldSort,
selectedOption selectedOption
).then((data) => { ).then((data) => {
setSearchResults(data); props.setSearchResults(data); // ✅ use props, not import
return getSearchDetailsPaged(data).then((details) => { return getSearchDetailsPaged(data).then((details) => {
setSearchDetails(details); props.setSearchDetails(details); // ✅ use props, not import
setShowSpinnerState(false); setShowSpinnerState(false);
}); });
}); });
}, },
[selectedOption, setSearchDetails, setSearchResults] [
advancedSearch,
searchString,
selectedOption,
props.setSearchDetails,
props.setSearchResults
]
); );
useEffect(() => { useEffect(() => {
@@ -257,8 +255,6 @@ function AppealsTab(props) {
className="govuk-link--no-underline" className="govuk-link--no-underline"
onClick={() => { onClick={() => {
setCurrentReference({ setCurrentReference({
"statuscode":
item.statuscode,
"ticketnumber": "ticketnumber":
item.ticketnumber, item.ticketnumber,
"currentReference": "currentReference":
@@ -308,7 +304,7 @@ function AppealsTab(props) {
)} )}
: :
</span> </span>
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_projectlocation" "pinswg_projectlocation"
) )
@@ -327,7 +323,7 @@ function AppealsTab(props) {
)[0] )[0]
: "" : ""
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline1" "pinswg_siteaddressline1"
) )
@@ -337,52 +333,52 @@ function AppealsTab(props) {
{/* {detailsObj.pinswg_siteaddressline1 != {/* {detailsObj.pinswg_siteaddressline1 !=
null && <br />} */} null && <br />} */}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline1" "pinswg_siteaddressline1"
) && ) &&
detailsObj.pinswg_siteaddressline1 != detailsObj.pinswg_siteaddressline1 !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline1" "pinswg_siteaddressline1"
) )
? detailsObj.pinswg_siteaddressline2 ? detailsObj.pinswg_siteaddressline2
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline2" "pinswg_siteaddressline2"
) && ) &&
detailsObj.pinswg_siteaddressline2 != detailsObj.pinswg_siteaddressline2 !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresstown" "pinswg_siteaddresstown"
) )
? detailsObj.pinswg_siteaddresstown ? detailsObj.pinswg_siteaddresstown
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresstown" "pinswg_siteaddresstown"
) && ) &&
detailsObj.pinswg_siteaddresstown != detailsObj.pinswg_siteaddresstown !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresscounty" "pinswg_siteaddresscounty"
) )
? detailsObj.pinswg_siteaddresscounty ? detailsObj.pinswg_siteaddresscounty
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresscounty" "pinswg_siteaddresscounty"
) && ) &&
detailsObj.pinswg_siteaddresscounty != detailsObj.pinswg_siteaddresscounty !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresspostcode" "pinswg_siteaddresspostcode"
) )
@@ -400,7 +396,7 @@ function AppealsTab(props) {
? item.pinswg_appellantfirstname + ? item.pinswg_appellantfirstname +
" " + " " +
item.pinswg_appellantlastname item.pinswg_appellantlastname
: hasOwn(detailsObj, [ : _.has(detailsObj, [
"_pinswg_appellant_value@OData.Community.Display.V1.FormattedValue" "_pinswg_appellant_value@OData.Community.Display.V1.FormattedValue"
]) ])
? detailsObj[ ? detailsObj[
@@ -415,17 +411,23 @@ function AppealsTab(props) {
)} )}
: :
</span> </span>
{hasOwn(item, [ {_.has(item, [
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue" "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
]) ])
? resolveCrmDisplayValue({ ? router.locale == "cy"
value: item[ ? jsonpath({
path:
'$..[?(@ && @.value=="' +
item[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true
})
: item[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue" "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
], ] || "N/A"
locale: router.locale,
translations: transLookup,
fallbackValue: "N/A"
})
: ""} : ""}
</dd> </dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16"> <dd className="govuk-summary-list__value govuk-!-font-size-16">
@@ -435,14 +437,20 @@ function AppealsTab(props) {
)} )}
: :
</span> </span>
{resolveCrmDisplayValue({ {router.locale == "cy"
value: item[ ? jsonpath({
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale: router.locale, item[
translations: transLookup, "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
fallbackValue: "N/A" ] +
})} '")].value_cy',
json: transLookup,
eval: true
})
: item[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] || "N/A"}
</dd> </dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16"> <dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden"> <span className="results-visually-hidden">
@@ -452,14 +460,20 @@ function AppealsTab(props) {
: :
</span> </span>
{resolveCrmDisplayValue({ {router.locale == "cy"
value: item[ ? jsonpath({
"statuscode@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale: router.locale, item[
translations: transLookup, "statuscode@OData.Community.Display.V1.FormattedValue"
fallbackValue: "N/A" ] +
})} '")].value_cy',
json: transLookup,
eval: true
})
: item[
"statuscode@OData.Community.Display.V1.FormattedValue"
] || "N/A"}
</dd> </dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16"> <dd className="govuk-summary-list__value govuk-!-font-size-16">
{item[ {item[
-273
View File
@@ -1,273 +0,0 @@
import { useMemo, useState } from "react";
import Link from "next/link";
export default function AppealStatusDashboard({ statusObj = [] }) {
const [openSections, setOpenSections] = useState({});
const sortedAppeals = useMemo(
() =>
[...statusObj].sort(
(a, b) => (b.caseCount || 0) - (a.caseCount || 0)
),
[statusObj]
);
const percentageOf = (value, total) =>
total ? `${(((value || 0) / total) * 100).toFixed(1)}%` : "0.0%";
const totalCases = sortedAppeals.reduce(
(sum, appeal) => sum + (appeal.caseCount || 0),
0
);
const largestAppeal = sortedAppeals[0];
const allStatuses = sortedAppeals.flatMap((appeal) =>
(appeal.statuses || []).map((status) => ({
...status,
appealType: appeal.value
}))
);
const statusTotals = allStatuses.reduce((acc, status) => {
if (!acc[status.statuscode]) {
acc[status.statuscode] = {
value: status.value,
statuscode: status.statuscode,
caseCount: 0
};
}
acc[status.statuscode].caseCount += status.caseCount || 0;
return acc;
}, {});
const mostCommonStatus = Object.values(statusTotals).sort(
(a, b) => b.caseCount - a.caseCount
)[0];
const maxAppealCount = largestAppeal?.caseCount || 1;
const allExpanded =
sortedAppeals.length > 0 &&
sortedAppeals.every((_, index) => openSections[index]);
const toggleSection = (index) => {
setOpenSections((current) => ({
...current,
[index]: !current[index]
}));
};
const showAll = () => {
const allOpen = {};
sortedAppeals.forEach((_, index) => {
allOpen[index] = true;
});
setOpenSections(allOpen);
};
const hideAll = () => {
setOpenSections({});
};
return (
<div className="govuk-grid-row">
<div className="govuk-grid-column-full">
<h1>Appeal case status dashboard</h1>
<div className="govuk-grid-row">
<DashboardCard title="Total cases" value={totalCases} />
<DashboardCard
title="Appeal types"
value={sortedAppeals.length}
/>
<DashboardCard
title="Largest appeal type"
value={largestAppeal?.caseCount || 0}
caption={largestAppeal?.value}
/>
<DashboardCard
title="Most common status"
value={mostCommonStatus?.caseCount || 0}
caption={mostCommonStatus?.value}
/>
</div>
<section className="govuk-!-margin-top-8">
<h2 className="govuk-heading-m">
Case counts and stage breakdown by appeal type
</h2>
<p className="govuk-body-s">
Select an appeal type row to show the case stage
breakdown.
</p>
<div className="govuk-accordion__controls">
<button
type="button"
className="govuk-accordion__show-all"
onClick={allExpanded ? hideAll : showAll}
>
<span className="govuk-accordion__show-all-text">
{allExpanded
? "Hide all sections"
: "Show all sections"}
</span>
</button>
</div>
<div
className="govuk-accordion appeal-stage-chart"
id="appeals-with-status-accordion"
>
{sortedAppeals.map((appeal, index) => {
const isOpen = !!openSections[index];
const barWidth =
((appeal.caseCount || 0) / maxAppealCount) *
100;
const sortedStatuses = [...(appeal.statuses || [])]
.filter((status) => (status.caseCount || 0) > 0)
.sort(
(a, b) =>
(b.caseCount || 0) - (a.caseCount || 0)
);
return (
<div
className={
isOpen
? "govuk-accordion__section govuk-accordion__section--expanded appeal-stage-chart__accordion-section"
: "govuk-accordion__section appeal-stage-chart__accordion-section"
}
key={appeal.appealType || index}
>
<div className="govuk-accordion__section-header">
<h2 className="govuk-accordion__section-heading">
<button
type="button"
className="govuk-accordion__section-button appeal-stage-chart__button"
id={`appeal-status-heading-${index}`}
aria-expanded={isOpen}
aria-controls={`appeal-status-content-${index}`}
onClick={() =>
toggleSection(index)
}
>
<span className="appeal-stage-chart__row">
<span className="appeal-stage-chart__label">
{appeal.value} (
{percentageOf(
appeal.caseCount,
totalCases
)}
)
</span>
<span className="appeal-stage-chart__bar-wrapper">
<span
className="appeal-stage-chart__bar"
style={{
width: `${barWidth}%`
}}
aria-hidden="true"
>
{sortedStatuses.map(
(
status,
statusIndex
) => (
<span
key={`${status.statuscode}-${statusIndex}`}
className={`appeal-stage-chart__segment appeal-stage-chart__segment--${
statusIndex %
6
}`}
style={{
width: `${
((status.caseCount ||
0) /
(appeal.caseCount ||
1)) *
100
}%`
}}
title={`${status.value}: ${status.caseCount}`}
/>
)
)}
</span>
<span className="appeal-stage-chart__count">
{appeal.caseCount ||
0}{" "}
cases
</span>
</span>
</span>
</button>
</h2>
</div>
<div
id={`appeal-status-content-${index}`}
className="govuk-accordion__section-content"
aria-labelledby={`appeal-status-heading-${index}`}
hidden={!isOpen}
>
<dl className="govuk-summary-list">
{sortedStatuses.map((status) => (
<div
className="govuk-summary-list__row"
key={status.statuscode}
>
<dt className="govuk-summary-list__key">
<Link
target="_blank"
href={`/advancedsearchresults?apt=${appeal.appealType}&statuscode=${status.statuscode}`}
>
{status.value}
</Link>
</dt>
<dd className="govuk-summary-list__value">
{status.caseCount || 0}{" "}
cases (
{percentageOf(
status.caseCount,
appeal.caseCount
)}{" "}
of this appeal type)
</dd>
</div>
))}
</dl>
</div>
</div>
);
})}
</div>
</section>
</div>
</div>
);
}
function DashboardCard({ title, value, caption }) {
return (
<div className="govuk-grid-column-one-quarter">
<div className="dashboard-card">
<p className="govuk-body-s dashboard-card__title">{title}</p>
<p className="govuk-heading-l dashboard-card__value">{value}</p>
{caption && (
<p className="govuk-body-s dashboard-card__caption">
{caption}
</p>
)}
</div>
</div>
);
}
@@ -1,571 +0,0 @@
import { useMemo, useState } from "react";
import Link from "next/link";
export default function AppealLpaStatusDashboard({ statusObj = [] }) {
const [openAppeals, setOpenAppeals] = useState({});
const [openLpaSections, setOpenLpaSections] = useState({});
const [openAppealLpas, setOpenAppealLpas] = useState({});
const [openLpaAppeals, setOpenLpaAppeals] = useState({});
const percentageOf = (value, total) =>
total ? `${(((value || 0) / total) * 100).toFixed(1)}%` : "0.0%";
const totalCases = useMemo(
() =>
statusObj.reduce((total, item) => total + (item.caseCount || 0), 0),
[statusObj]
);
const groupedAppeals = useMemo(() => {
const grouped = statusObj.reduce((acc, item) => {
const appealKey = item.appealType;
if (!acc[appealKey]) {
acc[appealKey] = {
appealType: item.appealType,
appealTypeName: item.appealTypeName,
caseCount: 0,
lpas: {}
};
}
acc[appealKey].caseCount += item.caseCount || 0;
const lpaKey = item.lpaId || "unknown-lpa";
if (!acc[appealKey].lpas[lpaKey]) {
acc[appealKey].lpas[lpaKey] = {
lpaId: item.lpaId,
lpaName: item.lpaName || "Unknown LPA",
caseCount: 0,
statuses: []
};
}
acc[appealKey].lpas[lpaKey].caseCount += item.caseCount || 0;
acc[appealKey].lpas[lpaKey].statuses.push({
statuscode: item.statuscode,
status: item.status,
caseCount: item.caseCount || 0
});
return acc;
}, {});
return Object.values(grouped)
.map((appeal) => ({
...appeal,
lpas: Object.values(appeal.lpas)
.map((lpa) => ({
...lpa,
statuses: lpa.statuses.sort(
(a, b) => (b.caseCount || 0) - (a.caseCount || 0)
)
}))
.sort((a, b) => (b.caseCount || 0) - (a.caseCount || 0))
}))
.sort((a, b) => (b.caseCount || 0) - (a.caseCount || 0));
}, [statusObj]);
const groupedLpas = useMemo(() => {
const grouped = statusObj.reduce((acc, item) => {
const lpaKey = item.lpaId || "unknown-lpa";
if (!acc[lpaKey]) {
acc[lpaKey] = {
lpaId: item.lpaId,
lpaName: item.lpaName || "Unknown LPA",
caseCount: 0,
appeals: {}
};
}
acc[lpaKey].caseCount += item.caseCount || 0;
const appealKey = item.appealType;
if (!acc[lpaKey].appeals[appealKey]) {
acc[lpaKey].appeals[appealKey] = {
appealType: item.appealType,
appealTypeName: item.appealTypeName,
caseCount: 0,
statuses: []
};
}
acc[lpaKey].appeals[appealKey].caseCount += item.caseCount || 0;
acc[lpaKey].appeals[appealKey].statuses.push({
statuscode: item.statuscode,
status: item.status,
caseCount: item.caseCount || 0
});
return acc;
}, {});
return Object.values(grouped)
.map((lpa) => ({
...lpa,
appeals: Object.values(lpa.appeals)
.map((appeal) => ({
...appeal,
statuses: appeal.statuses.sort(
(a, b) => (b.caseCount || 0) - (a.caseCount || 0)
)
}))
.sort((a, b) => (b.caseCount || 0) - (a.caseCount || 0))
}))
.sort((a, b) => (b.caseCount || 0) - (a.caseCount || 0));
}, [statusObj]);
const toggleAppeal = (appealType) => {
setOpenAppeals((current) => ({
...current,
[appealType]: !current[appealType]
}));
};
const toggleLpaSection = (lpaId) => {
setOpenLpaSections((current) => ({
...current,
[lpaId]: !current[lpaId]
}));
};
const toggleAppealLpa = (key) => {
setOpenAppealLpas((current) => ({
...current,
[key]: !current[key]
}));
};
const toggleLpaAppeal = (key) => {
setOpenLpaAppeals((current) => ({
...current,
[key]: !current[key]
}));
};
const sortedAppeals = useMemo(
() => [...statusObj].sort((a, b) => (b.lpaId || 0) - (a.lpaId || 0)),
[statusObj]
);
const allStatuses = sortedAppeals.flatMap((appeal) =>
(appeal.statuses || []).map((status) => ({
...status,
lpaId: appeal.lpaId,
lpaName: appeal.lpaName
}))
);
const statusTotals = allStatuses.reduce((acc, status) => {
if (!acc[status.statuscode]) {
acc[status.statuscode] = {
value: status.value,
statuscode: status.statuscode,
caseCount: 0
};
}
acc[status.statuscode].caseCount += status.caseCount || 0;
return acc;
}, {});
const largestAppeal = groupedLpas[0];
const mostCommonStatus = Object.values(groupedAppeals).sort(
(a, b) => b.caseCount - a.caseCount
)[0];
const maxAppealCount = largestAppeal?.caseCount || 1;
const maxGroupedAppealCount = groupedAppeals[0]?.caseCount || 1;
const allAppealsExpanded =
groupedAppeals.length > 0 &&
groupedAppeals.every((appeal) => openAppeals[appeal.appealType]);
const allLpasExpanded =
groupedLpas.length > 0 &&
groupedLpas.every((lpa) => openLpaSections[lpa.lpaId]);
const showAllAppeals = () => {
const allOpen = {};
groupedAppeals.forEach((appeal) => {
allOpen[appeal.appealType] = true;
});
setOpenAppeals(allOpen);
};
const showAllLpas = () => {
const allOpen = {};
groupedLpas.forEach((lpa) => {
allOpen[lpa.lpaId] = true;
});
setOpenLpaSections(allOpen);
};
const hideAllAppeals = () => {
setOpenAppeals({});
setOpenAppealLpas({});
};
const hideAllLpas = () => {
setOpenLpaSections({});
setOpenLpaAppeals({});
};
return (
<div className="govuk-grid-row">
<div className="govuk-grid-column-full">
<h1 className="">LPA Appeal case status dashboard</h1>
<div className="govuk-grid-row">
<DashboardCard title="Total cases" value={totalCases} />
<DashboardCard title="LPAs" value={groupedLpas.length} />
<DashboardCard
title="Largest number of appeals"
value={largestAppeal?.caseCount || 0}
caption={largestAppeal?.lpaName}
/>
<DashboardCard
title="Most common appeal"
value={mostCommonStatus?.caseCount || 0}
caption={mostCommonStatus?.appealTypeName}
/>
</div>
</div>
<section className="govuk-!-margin-top-8">
<h2 className="govuk-heading-m">
Appeal types and case stages by LPA
</h2>
<div className="govuk-accordion__controls">
<button
type="button"
className="govuk-accordion__show-all"
onClick={allLpasExpanded ? hideAllLpas : showAllLpas}
>
<span className="govuk-accordion__show-all-text">
{allLpasExpanded
? "Hide all sections"
: "Show all sections"}
</span>
</button>
</div>
<div
className="govuk-accordion"
id="lpa-appeal-status-accordion"
>
{groupedLpas.map((lpa) => {
const lpaOpen = !!openLpaSections[lpa.lpaId];
const width =
((lpa.caseCount || 0) / maxAppealCount) * 100;
return (
<div
className={
lpaOpen
? "govuk-accordion__section govuk-accordion__section--expanded"
: "govuk-accordion__section"
}
key={lpa.lpaId}
>
<div className="govuk-accordion__section-header">
<h3 className="govuk-accordion__section-heading">
<button
type="button"
className="govuk-accordion__section-button"
aria-expanded={lpaOpen}
onClick={() =>
toggleLpaSection(lpa.lpaId)
}
>
<div className="appeal-count-chart__row">
<div className="appeal-count-chart__label">
{lpa.lpaName} (
{percentageOf(
lpa.caseCount,
totalCases
)}
)
</div>
<div className="appeal-count-chart__bar-wrapper">
<span
className="appeal-count-chart__bar"
style={{
width: `${width}%`
}}
/>
<span className="appeal-count-chart__count">
{lpa.caseCount}
</span>
</div>
</div>
</button>
</h3>
</div>
<div
className="govuk-accordion__section-content"
hidden={!lpaOpen}
>
{lpa.appeals.map((appeal) => {
const key = `${lpa.lpaId}-${appeal.appealType}`;
const appealOpen =
!!openLpaAppeals[key];
return (
<div
className="lpa-status-block"
key={key}
>
<button
type="button"
className="lpa-status-block__button"
aria-expanded={appealOpen}
onClick={() =>
toggleLpaAppeal(key)
}
>
<span className="govuk-body-m">
{appeal.appealTypeName}
</span>
<span className="govuk-body-m">
{appeal.caseCount} cases
(
{percentageOf(
appeal.caseCount,
lpa.caseCount
)}
)
</span>
</button>
<div hidden={!appealOpen}>
<dl className="govuk-summary-list govuk-!-margin-bottom-4">
{appeal.statuses.map(
(status) => (
<div
className="govuk-summary-list__row"
key={
status.statuscode
}
>
<dt className="govuk-summary-list__key">
<Link
target="_blank"
href={`/advancedsearchresults?apt=${appeal.appealType}&lpa=${lpa.lpaId}&statuscode=${status.statuscode}`}
>
{
status.status
}
</Link>
</dt>
<dd className="govuk-summary-list__value">
{
status.caseCount
}{" "}
(
{percentageOf(
status.caseCount,
appeal.caseCount
)}
)
</dd>
</div>
)
)}
</dl>
</div>
</div>
);
})}
</div>
</div>
);
})}
</div>
</section>
<section className="govuk-!-margin-top-8">
<h2 className="govuk-heading-m">
Case stage by LPA and Appeal Type
</h2>
<p className="govuk-body-s">
Select an appeal type row to show the LPA and then case
stage breakdown.
</p>
<div className="govuk-accordion__controls">
<button
type="button"
className="govuk-accordion__show-all"
onClick={
allAppealsExpanded ? hideAllAppeals : showAllAppeals
}
>
<span className="govuk-accordion__show-all-text">
{allAppealsExpanded
? "Hide all sections"
: "Show all sections"}
</span>
</button>
</div>
<div
className="govuk-accordion"
id="appeal-lpa-status-accordion"
>
{groupedAppeals.map((appeal) => {
const appealOpen = !!openAppeals[appeal.appealType];
const width =
((appeal.caseCount || 0) / maxGroupedAppealCount) *
100;
return (
<div
className={
appealOpen
? "govuk-accordion__section govuk-accordion__section--expanded"
: "govuk-accordion__section"
}
key={appeal.appealType}
>
<div className="govuk-accordion__section-header">
<h2 className="govuk-accordion__section-heading">
<button
type="button"
className="govuk-accordion__section-button"
aria-expanded={appealOpen}
onClick={() =>
toggleAppeal(appeal.appealType)
}
>
<div className="appeal-count-chart__row">
<div className="appeal-count-chart__label">
{appeal.appealTypeName}{" "}
{/* {appeal.caseCount} cases */}
(
{percentageOf(
appeal.caseCount,
totalCases
)}
)
</div>
<div className="appeal-count-chart__bar-wrapper">
<span
className="appeal-count-chart__bar"
style={{
width: `${width}%`
}}
/>
<span className="appeal-count-chart__count">
{appeal.caseCount}
</span>
</div>
</div>
</button>
</h2>
</div>
<div
className="govuk-accordion__section-content"
hidden={!appealOpen}
>
{appeal.lpas.map((lpa) => {
const lpaKey = `${appeal.appealType}-${lpa.lpaId}`;
const lpaOpen =
!!openAppealLpas[lpaKey];
return (
<div
className="lpa-status-block"
key={lpaKey}
>
<button
type="button"
className="lpa-status-block__button"
aria-expanded={lpaOpen}
onClick={() =>
toggleAppealLpa(lpaKey)
}
>
<span className="govuk-body-m">
{lpa.lpaName}
</span>
<span className="govuk-body-m">
{lpa.caseCount} cases (
{percentageOf(
lpa.caseCount,
appeal.caseCount
)}
)
</span>
</button>
<div hidden={!lpaOpen}>
<dl className="govuk-summary-list govuk-!-margin-bottom-4">
{lpa.statuses.map(
(status) => (
<div
className="govuk-summary-list__row"
key={
status.statuscode
}
>
<dt className="govuk-summary-list__key">
<Link
target="_blank"
href={`/advancedsearchresults?apt=${appeal.appealType}&lpa=${lpa.lpaId}&statuscode=${status.statuscode}`}
>
{
status.status
}
</Link>
</dt>
<dd className="govuk-summary-list__value">
{
status.caseCount
}{" "}
(
{percentageOf(
status.caseCount,
lpa.caseCount
)}
)
</dd>
</div>
)
)}
</dl>
</div>
</div>
);
})}
</div>
</div>
);
})}
</div>
</section>
</div>
);
}
function DashboardCard({ title, value, caption }) {
return (
<div className="govuk-grid-column-one-quarter">
<div className="dashboard-card">
<p className="govuk-body-s dashboard-card__title">{title}</p>
<p className="govuk-heading-l dashboard-card__value">{value}</p>
{caption && (
<p className="govuk-body-s dashboard-card__caption">
{caption}
</p>
)}
</div>
</div>
);
}
-294
View File
@@ -1,294 +0,0 @@
// // components/admin/tabs/AccountsTab.js
// import Link from "next/link";
// export default function AppealsWithStatusTab({ statusObj }) {
// return (
// <div>
// <h1>User Accounts</h1>
// <dl className="govuk-summary-list govuk-!-margin-bottom-9 results">
// <div className="govuk-summary-list__row results-headings">
// <dd className="govuk-summary-list__key govuk-!-font-size-16">
// Name
// </dd>
// <dd className="govuk-summary-list__key govuk-!-font-size-16">
// Last accessed
// </dd>
// </div>
// {statusObj.map((appeal) => (
// <div key={appeal.id} className="govuk-summary-list__row">
// <dd className="govuk-summary-list__value govuk-!-font-size-16 ">
// <Link
// target="_blank"
// href={`/auth/signin2?email=${appeal.value}`}
// >
// {appeal.value}
// </Link>
// <br />
// <dl className="govuk-summary-list govuk-!-margin-bottom-9 govuk-!-margin-left-9 results">
// <div className="govuk-summary-list__row results-headings">
// <dd className="govuk-summary-list__key govuk-!-font-size-16">
// Name
// </dd>
// <dd className="govuk-summary-list__key govuk-!-font-size-16">
// Last accessed
// </dd>
// </div>
// {appeal.statuses.map((statuses) => (
// <div
// key={appeal.id}
// className="govuk-summary-list__row"
// >
// <dd className="govuk-summary-list__value govuk-!-font-size-16 ">
// {statuses.value}
// </dd>
// <dd className="govuk-summary-list__value govuk-!-font-size-16 ">
// Total: {statuses.caseCount}
// </dd>
// </div>
// ))}
// </dl>
// </dd>
// <dd className="govuk-summary-list__value govuk-!-font-size-16 ">
// Total: {appeal.caseCount}
// </dd>
// </div>
// ))}
// </dl>
// </div>
// );
// }
import { useState } from "react";
import Link from "next/link";
export default function AppealsWithStatusTab({ statusObj = [] }) {
const [openSections, setOpenSections] = useState({});
const toggleSection = (index) => {
setOpenSections((current) => ({
...current,
[index]: !current[index]
}));
};
const showAll = () => {
const allOpen = {};
statusObj.forEach((_, index) => {
allOpen[index] = true;
});
setOpenSections(allOpen);
};
const hideAll = () => {
setOpenSections({});
};
const allExpanded =
statusObj.length > 0 &&
statusObj.every((_, index) => openSections[index]);
const sortedAppeals = [...statusObj].sort(
(a, b) => (b.caseCount || 0) - (a.caseCount || 0)
);
const maxCount = sortedAppeals[0]?.caseCount || 1;
return (
<div>
<h1 className="govuk-heading-l">Case status by appeal type</h1>
<div className="govuk-!-margin-bottom-6">
<h2 className="govuk-heading-m">Case counts by appeal type</h2>
<dl className="appeal-count-chart">
{sortedAppeals.map((appeal) => {
const maxCount = sortedAppeals[0]?.caseCount || 1;
const width =
((appeal.caseCount || 0) / maxCount) * 100;
return (
<div
className="appeal-count-chart__row"
key={appeal.appealType}
>
<dt className="appeal-count-chart__label">
{appeal.value}
</dt>
<dd className="appeal-count-chart__bar-wrapper">
<span
className="appeal-count-chart__bar"
style={{ width: `${width}%` }}
/>
<span className="appeal-count-chart__count">
{appeal.caseCount || 0}
</span>
</dd>
</div>
);
})}
</dl>
</div>
<div className="govuk-!-margin-bottom-6">
<h2 className="govuk-heading-m">Case stages by appeal type</h2>
<dl className="appeal-stage-chart">
{sortedAppeals.map((appeal) => (
<div
className="appeal-stage-chart__row"
key={appeal.appealType}
>
<dt className="appeal-stage-chart__label">
{appeal.value}
</dt>
<dd className="appeal-stage-chart__bar-wrapper">
<div
className="appeal-stage-chart__bar"
style={{
width: `${((appeal.caseCount || 0) / maxCount) * 100}%`
}}
aria-label={`${appeal.value}, ${appeal.caseCount || 0} cases`}
>
{(appeal.statuses || [])
.filter(
(status) => status.caseCount > 0
)
.sort(
(a, b) => b.caseCount - a.caseCount
)
.map((status, index) => (
<span
key={status.statuscode}
className={`appeal-stage-chart__segment appeal-stage-chart__segment--${index % 6}`}
style={{
width: `${((status.caseCount || 0) / (appeal.caseCount || 1)) * 100}%`
}}
title={`${status.value}: ${status.caseCount}`}
/>
))}
</div>
<span className="appeal-stage-chart__count">
{appeal.caseCount || 0}
</span>
</dd>
</div>
))}
</dl>
</div>
<div className="govuk-accordion__controls">
<button
type="button"
className="govuk-accordion__show-all"
onClick={allExpanded ? hideAll : showAll}
>
<span className="govuk-accordion__show-all-text">
{allExpanded
? "Hide all sections"
: "Show all sections"}
</span>
</button>
</div>
<div className="govuk-accordion" id="appeals-with-status-accordion">
{[...statusObj]
.sort((a, b) => (b.caseCount || 0) - (a.caseCount || 0))
.map((appeal, index) => {
const isOpen = !!openSections[index];
return (
<div
className={
isOpen
? "govuk-accordion__section govuk-accordion__section--expanded"
: "govuk-accordion__section"
}
key={appeal.appealType || index}
>
<div className="govuk-accordion__section-header ">
<h2 className="govuk-accordion__section-heading">
<button
type="button"
className="govuk-accordion__section-button "
id={`appeal-status-heading-${index}`}
aria-expanded={isOpen}
aria-controls={`appeal-status-content-${index}`}
onClick={() => toggleSection(index)}
>
<span
style={{
display: "flex",
justifyContent:
"space-between",
alignItems: "center",
width: "100%",
paddingRight: "20px" // leaves room for accordion icon
}}
>
<span className="govuk-heading-s ">
{appeal.value}
</span>
<span
className="govuk-body-s"
style={{
fontWeight: "normal"
}}
>
{appeal.caseCount || 0}{" "}
cases
</span>
</span>
</button>
</h2>
</div>
<div
id={`appeal-status-content-${index}`}
className="govuk-accordion__section-content"
aria-labelledby={`appeal-status-heading-${index}`}
hidden={!isOpen}
>
<dl className="govuk-summary-list govuk-!-margin-left-9">
{(appeal.statuses || [])
.sort(
(a, b) =>
(b.caseCount || 0) -
(a.caseCount || 0)
)
.map((status) => (
<div
className="govuk-summary-list__row"
key={status.statuscode}
>
<dt className="govuk-summary-list__key">
<Link
target="_blank"
href={`/advancedsearchresults?apt=${appeal.appealType}&statuscode=${status.statuscode}`}
>
{status.value}
</Link>
</dt>
<dd className="govuk-summary-list__value">
{status.caseCount || 0}
</dd>
</div>
))}
</dl>
</div>
</div>
);
})}
</div>
</div>
);
}
+60 -34
View File
@@ -5,7 +5,7 @@ import { useRouter } from "next/router";
import { useCallback, useEffect, useRef, useState } from "react"; import { useCallback, useEffect, useRef, useState } from "react";
import { connect } from "react-redux"; import { connect } from "react-redux";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import { formatDates, getDocLink, hasOwn } from "../../utils"; import { formatDates, getDocLink } from "../../utils";
import PaginationControl from "../../../components/case/pagination"; import PaginationControl from "../../../components/case/pagination";
import DocumentLink from "../../utils/downloads"; import DocumentLink from "../../utils/downloads";
import { useDownloadQueue } from "../../utils/downloadmanager"; import { useDownloadQueue } from "../../utils/downloadmanager";
@@ -21,8 +21,6 @@ import { getNewDocumentsPaged } from "../../../actions/services/adminService";
import { setCurrentPage } from "../../../store/currentView/action"; import { setCurrentPage } from "../../../store/currentView/action";
import { setDocumentDetails } from "../../../store/searchOutput/action"; import { setDocumentDetails } from "../../../store/searchOutput/action";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
const getDocumentTypes = [ const getDocumentTypes = [
{ {
"Value": 846040009, "Value": 846040009,
@@ -399,11 +397,19 @@ const DocumentsTab = (props) => {
className="govuk-label-s govuk-checkboxes__label" className="govuk-label-s govuk-checkboxes__label"
htmlFor={item.Value} htmlFor={item.Value}
> >
{resolveCrmDisplayValue({ {router.locale == "cy"
value: item.Label, ? jsonpath({
locale, path:
translations: transLookup '$..[?(@ && @.value=="' +
})} item.Label +
'")].value_cy',
json: transLookup,
eval: true
})
: item.Label ||
t(
"case:summary-no-date-entered-label"
)}{" "}
</label> </label>
</div> </div>
); );
@@ -464,11 +470,19 @@ const DocumentsTab = (props) => {
className="govuk-label-s govuk-checkboxes__label" className="govuk-label-s govuk-checkboxes__label"
htmlFor={"origin_" + item.Value} htmlFor={"origin_" + item.Value}
> >
{resolveCrmDisplayValue({ {router.locale == "cy"
value: item.Label, ? jsonpath({
locale, path:
translations: transLookup '$..[?(@ && @.value=="' +
})} item.Label +
'")].value_cy',
json: transLookup,
eval: true
})
: item.Label ||
t(
"case:summary-no-date-entered-label"
)}{" "}
</label> </label>
</div> </div>
); );
@@ -740,7 +754,7 @@ const DocumentsTab = (props) => {
// )} // )}
// : // :
// </span> // </span>
// {hasOwn( // {_.has(
// detailsObj, // detailsObj,
// "pinswg_name" // "pinswg_name"
// ) // )
@@ -775,7 +789,7 @@ const DocumentsTab = (props) => {
)} )}
: :
</span> </span>
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_name" "pinswg_name"
) )
@@ -791,7 +805,7 @@ const DocumentsTab = (props) => {
)} )}
: :
</span> </span>
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_name" "pinswg_name"
) )
@@ -808,16 +822,23 @@ const DocumentsTab = (props) => {
: :
</span> </span>
{resolveCrmDisplayValue( {router.locale == "cy"
{ ? jsonpath({
value: detailsObj[ path:
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue" '$..[?(@ && @.value=="' +
], detailsObj[
locale, "pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
translations: ] +
transLookup '")].value_cy',
} json: transLookup,
)} eval: true
})
: detailsObj[
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
</dd> </dd>
<dd className="govuk-summary-list__value govuk-!-font-size-14"> <dd className="govuk-summary-list__value govuk-!-font-size-14">
<span className="results-visually-hidden"> <span className="results-visually-hidden">
@@ -827,7 +848,7 @@ const DocumentsTab = (props) => {
: :
</span> </span>
{hasOwn( {_.has(
detailsObj, detailsObj,
"createdon" "createdon"
) )
@@ -915,16 +936,17 @@ const DocumentsTab = (props) => {
) )
.then((data) => data) .then((data) => data)
.then((data) => { .then((data) => {
setDocumentDetails(data); props.setDocumentDetails(data);
setShowSpinnerState(false); setShowSpinnerState(false);
}); });
}, },
[ [
props.incidentid,
selectedOption, selectedOption,
selectedDocumentType, selectedDocumentType,
selectedWeeks, selectedWeeks,
selectedDocumentOrigin, selectedDocumentOrigin,
setDocumentDetails props.setDocumentDetails
] ]
); );
@@ -935,7 +957,7 @@ const DocumentsTab = (props) => {
orderBy, orderBy,
fieldSort fieldSort
).then((data) => { ).then((data) => {
setDocumentDetails(data); props.setDocumentDetails(data);
return data; return data;
}); });
@@ -1038,7 +1060,7 @@ const DocumentsTab = (props) => {
selectedDocumentType, selectedDocumentType,
selectedWeeks selectedWeeks
).then((data) => { ).then((data) => {
setDocumentDetails(data); props.setDocumentDetails(data);
setDocumentSearchState(true); setDocumentSearchState(true);
return data; return data;
@@ -1050,11 +1072,13 @@ const DocumentsTab = (props) => {
//const searchDocumentResultsObj = docDetailsObj(); //const searchDocumentResultsObj = docDetailsObj();
}, [ }, [
incidentid, incidentid,
setDocumentDetails, props.setDocumentDetails,
selectedOption, selectedOption,
selectedDocumentType, selectedDocumentType,
fieldSortState, fieldSortState,
orderByState, orderByState,
getDocumentTypes,
getOrigin,
getDocumentResults, getDocumentResults,
lang, lang,
selectedWeeks selectedWeeks
@@ -1083,7 +1107,9 @@ const DocumentsTab = (props) => {
return ( return (
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-grid-column-full"> <div className="govuk-grid-column-full">
<h1 className="">{t("case:documents-heading-label")}</h1> <h2 className="govuk-heading-m ">
{t("case:documents-heading-label")}
</h2>
{/* <div className=""> {/* <div className="">
MDU :{" "} MDU :{" "}
{countFieldValue( {countFieldValue(
@@ -1108,7 +1134,7 @@ const DocumentsTab = (props) => {
<select <select
onChange={(e) => { onChange={(e) => {
setSelectedWeeks(e.target.value); setSelectedWeeks(e.target.value);
setCurrentPage(1); props.setCurrentPage(1);
}} }}
value={selectedWeeks} value={selectedWeeks}
className="govuk-select" className="govuk-select"
+1 -31
View File
@@ -4,12 +4,9 @@ import Link from "next/link";
import { bytesToSize } from "../../../components/utils"; import { bytesToSize } from "../../../components/utils";
import { import {
deleteMyRepresentationsFromBlob, deleteMyRepresentationsFromBlob,
deleteAwaitingSubmissionsFromBlob, deleteAwaitingSubmissionsFromBlob
getRepsFromBlobProxy
} from "../../../actions/services/documentService"; } from "../../../actions/services/documentService";
import { sendRepCompleteMessage } from "../../../actions/services/portalService"; import { sendRepCompleteMessage } from "../../../actions/services/portalService";
import { parseCookies } from "nookies";
import { consoleLogger } from "../../../actions/core/logger";
import { formatBlobDates } from "../utils/adminHelper"; import { formatBlobDates } from "../utils/adminHelper";
@@ -24,33 +21,6 @@ export default function StorageTab({ data, repCompleteCount }) {
setShowTmpFile(newState); setShowTmpFile(newState);
}; };
const deleteRepItem = (containerID, caseID, repfile) => {
let cookies = parseCookies();
//console.log("sssss", containerID, caseID, repfile);
deleteMyRepresentationsFromBlob(containerID, caseID, repfile)
.then((data) => {
return data;
})
.then(() => {
getRepsFromBlobProxy(containerID)
.then((data) => {
setMyRepresentations(data);
setMyRepresentationsDetails(data);
})
.catch((error) => {
consoleLogger(error);
return null;
})
.then(() => {
setCurrentView({
"viewName": "My Representations",
"viewKey": "myRepresentations"
});
});
});
};
return ( return (
<div> <div>
<h1>Storage Account Contents</h1> <h1>Storage Account Contents</h1>
+1 -1
View File
@@ -37,7 +37,7 @@ export async function fetchAdminStorageData() {
const limit = pLimit(5); const limit = pLimit(5);
let data = await Promise.all( let data = await Promise.all(
users.map(async (user) => { users.map(async (user) => {
return limit(async () => { limit(async () => {
const containers = await listContainersForUser( const containers = await listContainersForUser(
blobServiceClient, blobServiceClient,
`${user.id}`, `${user.id}`,
+2 -2
View File
@@ -91,7 +91,7 @@ const Breadcrumbs = (props) => {
watchedCases: () => t("myportal:watchedcases-card-title"), watchedCases: () => t("myportal:watchedcases-card-title"),
myCases: () => t("myportal:mycases-card-title"), myCases: () => t("myportal:mycases-card-title"),
myRepresentations: () => t("myportal:myrepresentations-card-title"), myRepresentations: () => t("myportal:myrepresentations-card-title"),
mySubmittedReps: () => t("myportal:submitted-reps-card-title") mySubmittedReps: "Submitted representations"
}; };
const viewAllLabelResolver = labelsByKey[viewKey]; const viewAllLabelResolver = labelsByKey[viewKey];
@@ -186,7 +186,7 @@ const Breadcrumbs = (props) => {
<> <>
{renderLinkCrumb( {renderLinkCrumb(
isWelsh isWelsh
? `/${router.locale}/dnsapplications` ? `${router.locale}/dnsapplications`
: "/dnsapplications", : "/dnsapplications",
t("dnsCommon:service-name") t("dnsCommon:service-name")
)} )}
+8 -1
View File
@@ -44,8 +44,15 @@ const Case = (props) => {
showLoginCheck={props.showLoginCheck} showLoginCheck={props.showLoginCheck}
eventsObj={props.eventsObj} eventsObj={props.eventsObj}
mediaObj={props.mediaObj} mediaObj={props.mediaObj}
mapTarget={props.mapTarget}
/> />
{showRepresentations == true && (
<RepresentationList
incidentid={props.incidentid}
caseReference={props.caseReference}
representationsObj={props.representationsObj}
documentDetailsObj={props.documentDetailsObj}
/>
)}
</div> </div>
</div> </div>
</main> </main>
+385 -26
View File
@@ -5,7 +5,7 @@ import { useRouter } from "next/router";
import { useCallback, useEffect, useRef, useState } from "react"; import { useCallback, useEffect, useRef, useState } from "react";
import { connect } from "react-redux"; import { connect } from "react-redux";
import transLookup from "../../data/lookuptranslations.json"; import transLookup from "../../data/lookuptranslations.json";
import { formatDates, getDocLink, hasOwn } from "../utils"; import { formatDates, getDocLink } from "../utils";
import PaginationControl from "./pagination"; import PaginationControl from "./pagination";
import { sendGAEvent } from "@next/third-parties/google"; import { sendGAEvent } from "@next/third-parties/google";
@@ -19,7 +19,6 @@ import { setCurrentPage } from "../../store/currentView/action";
import { setDocumentDetails } from "../../store/searchOutput/action"; import { setDocumentDetails } from "../../store/searchOutput/action";
import DocumentLink from "../utils/downloads"; import DocumentLink from "../utils/downloads";
import { useDownloadQueue } from "../utils/downloadmanager"; import { useDownloadQueue } from "../utils/downloadmanager";
import resolveCrmDisplayValue from "../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
const DocumentDetails = (props) => { const DocumentDetails = (props) => {
let { t, lang } = useTranslation(); let { t, lang } = useTranslation();
@@ -39,8 +38,6 @@ const DocumentDetails = (props) => {
const router = useRouter(); const router = useRouter();
const { locale } = router; const { locale } = router;
const appealType = props.currentView?.caseReference?.appealType;
var documentDetailsArr = documentDetailsObj || []; var documentDetailsArr = documentDetailsObj || [];
const { startDownload, getStatus } = useDownloadQueue(3); const { startDownload, getStatus } = useDownloadQueue(3);
const [selectedOption, setSelectedOption] = useState(10); const [selectedOption, setSelectedOption] = useState(10);
@@ -95,6 +92,352 @@ const DocumentDetails = (props) => {
}; };
let ShowDocLinks = getDocLink(docsOffline); let ShowDocLinks = getDocLink(docsOffline);
const DocumentView = (documentDetailsArr) => {
documentDetailsArr = documentDetailsArr.value;
return (
<>
<p>
{documentDetailsObj["@odata.count"] > 1
? t("case:documents-count-label-1")
: t("case:documents-count-label-1a")}{" "}
{documentDetailsObj["@odata.count"]}{" "}
{documentDetailsObj["@odata.count"] > 1
? t("case:documents-count-label-2")
: t("case:documents-count-label-2a")}
</p>
<div className="documentFilters govuk-!-margin-top-5">
<div
id="recordDocumentTypeSelect"
className="govuk-grid-row govuk-!-margin-left-0"
>
<div className="govuk-form-group">
<label
className="govuk-label-s "
htmlFor="showDocumentType"
>
{t("case:documents-show-label")}
<select
onChange={(e) => {
setSelectedDocumentType(e.target.value);
setCurrentPage(1);
}}
value={selectedDocumentType}
className="govuk-select"
id="showDocumentType"
name="showDocumentType"
>
<option value="all" key="00">
{router.locale == "cy"
? jsonpath({
path: '$..[?(@ && @.value=="All")].value_cy',
json: transLookup,
eval: true
})
: "All"}
</option>
{documentTypes.map((item, key) => {
return (
<option
key={key}
value={
item.pinswg_isharedocumentlocations
}
>
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
item.pinswg_isharedocumentlocationsLabel +
'")].value_cy',
json: transLookup,
eval: true
})
: item.pinswg_isharedocumentlocationsLabel ||
t(
"case:summary-no-date-entered-label"
)}
</option>
);
})}
</select>
{t("case:documents-count-label-2")}
</label>
</div>
</div>
{documentDetailsObj["@odata.count"] > 5 && (
<div
id="recordCountSelect"
className="govuk-grid-row govuk-!-margin-left-0"
>
<div className="govuk-form-group">
<label
className="govuk-label-s "
htmlFor="showNumberOfRecords"
>
{t(
"search:searchresults-show-records-label-a"
)}
<select
onChange={(e) => {
setSelectedOption(e.target.value);
setCurrentPage(1);
}}
value={selectedOption}
className="govuk-select"
id="showNumberOfRecords"
name="showNumberOfRecords"
>
<option value="5">5</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
</select>{" "}
{t(
"search:searchresults-show-records-label-b"
)}
</label>
</div>
</div>
)}
</div>
{ShowDocLinks && (
<div className="govuk-warning-text ">
<span
className="govuk-warning-text__icon"
aria-hidden="true"
>
!
</span>
<strong className="govuk-warning-text__text govuk-!-margin-top-2">
<span className="govuk-visually-hidden">
Notice
</span>
{t("case:documents-not-available-label")}
</strong>
</div>
)}
<dl className="documentList govuk-summary-list govuk-!-margin-bottom-9 results">
<div className="govuk-summary-list__row results-headings">
<dd className="govuk-summary-list__key govuk-!-font-size-16 ">
<button
type="button"
onClick={() => sortDataBy("pinswg_name")}
className={
orderByState == "pinswg_name"
? fieldSortState == "asc"
? `govuk-link govuk-link--no-underline govuk-!-font-weight-bold govuk-!-font-size-16 sortAsc`
: `govuk-link govuk-link--no-underline govuk-!-font-weight-bold govuk-!-font-size-16 sortDesc`
: `govuk-link govuk-link--no-underline govuk-!-font-weight-bold govuk-!-font-size-16`
}
>
{t("case:documents-name-label")}
</button>
</dd>
<dd className="govuk-summary-list__key govuk-!-font-size-16">
{/* {t("case:documents-doc-type-label")} */}
<button
type="button"
onClick={() =>
sortDataBy("pinswg_isharedocumentlocations")
}
className={
orderByState ==
"pinswg_isharedocumentlocations"
? fieldSortState == "asc"
? `govuk-link govuk-link--no-underline govuk-!-font-weight-bold govuk-!-font-size-16 sortAsc`
: `govuk-link govuk-link--no-underline govuk-!-font-weight-bold govuk-!-font-size-16 sortDesc`
: `govuk-link govuk-link--no-underline govuk-!-font-weight-bold govuk-!-font-size-16`
}
>
{t("case:documents-doc-type-label")}
</button>
</dd>
<dd className="govuk-summary-list__key govuk-!-font-size-16">
{/* {t("case:documents-date-published-label")} */}
<button
type="button"
onClick={() => sortDataBy("createdon")}
className={
orderByState == "createdon"
? fieldSortState == "asc"
? `govuk-link govuk-link--no-underline govuk-!-font-weight-bold govuk-!-font-size-16 sortAsc`
: `govuk-link govuk-link--no-underline govuk-!-font-weight-bold govuk-!-font-size-16 sortDesc`
: `govuk-link govuk-link--no-underline govuk-!-font-weight-bold govuk-!-font-size-16`
}
>
{t("case:documents-date-published-label")}
</button>
</dd>
{/* <dd className="govuk-summary-list__key govuk-!-font-size-16">
{t("case:documents-size-label")}
</dd> */}
</div>
{showSpinnerState == true ? (
<div className="govuk-summary-list__row">
<div className="govuk-!-margin-top-4 govuk-!-margin-bottom-4 govuk-!-font-weight-bold govuk-!-font-size-20 ">
{t("common:spinner-fetching-data")}
<img
className="data-loading-icon"
src="/assets/images/loading.gif"
alt={
router.locale == "cy"
? "Nôl data"
: "Fetching data"
}
/>
</div>
</div>
) : (
documentDetailsArr.map((item, key) => {
let detailsObj = jsonpath({
path:
"$..[?(@ && @._pinswg_documentids_value=='" +
incidentid +
"')]",
json: item,
sanbox: {}
});
detailsObj = item;
return (
<div
className="govuk-summary-list__row"
key={key}
>
<dd className="govuk-summary-list__value govuk-!-font-size-16 ">
{showDownloadingState === key && (
<div className="coverLoadingLink downloading">
{/* <img
className="data-loading-icon"
src="/assets/images/loading.gif"
alt={
router.locale ==
"cy"
? "Nôl data"
: "Fetching data"
}
/> */}
</div>
)}
{!ShowDocLinks ? (
<Link
scroll={false}
href={
detailsObj.pinswg_hashlink
}
key={key}
onClick={() => {
(toggleDownLoadLink(key),
sendGAEvent(
"event",
"DownloadedFile",
{
caseReference:
props.caseReference,
filename:
detailsObj.pinswg_name
}
));
}}
>
<span className="results-visually-hidden">
{t(
"case:documents-name-label"
)}
:
</span>
{_.has(
detailsObj,
"pinswg_name"
)
? detailsObj.pinswg_name
: ""}
</Link>
) : (
<>
<span className="results-visually-hidden">
{t(
"case:documents-name-label"
)}
:
</span>
{_.has(
detailsObj,
"pinswg_name"
)
? detailsObj.pinswg_name
: ""}
</>
)}
</dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
{t("case:documents-doc-type-label")}
:
</span>
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
</dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
{t(
"case:documents-date-published-label"
)}
:
</span>
{_.has(
detailsObj,
"pinswg_latestpublisheddate"
)
? formatDates(
detailsObj.pinswg_latestpublisheddate
)
: ""}
</dd>
{/* <dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden">
{t("case:documents-size-label")}:
</span>
92
</dd> */}
</div>
);
})
)}
</dl>
<PaginationControl
showNoOfRecords={selectedOption}
currentPage={currentPage}
searchResultsObj={documentDetailsObj}
spinnerState={spinnerState}
orderBy={orderByState}
fieldSort={fieldSortState}
getDocumentResults={getDocumentResults}
/>
</>
);
};
const FilteredDocumentView = (documentDetailsArr) => { const FilteredDocumentView = (documentDetailsArr) => {
documentDetailsArr = documentDetailsArr.value; documentDetailsArr = documentDetailsArr.value;
@@ -204,11 +547,19 @@ const DocumentDetails = (props) => {
item.pinswg_isharedocumentlocations item.pinswg_isharedocumentlocations
} }
> >
{resolveCrmDisplayValue({ {router.locale == "cy"
value: item.pinswg_isharedocumentlocationsLabel, ? jsonpath({
locale, path:
translations: transLookup '$..[?(@ && @.value=="' +
})}{" "} item.pinswg_isharedocumentlocationsLabel +
'")].value_cy',
json: transLookup,
eval: true
})
: item.pinswg_isharedocumentlocationsLabel ||
t(
"case:summary-no-date-entered-label"
)}{" "}
- ({item.count}) - ({item.count})
</label> </label>
</div> </div>
@@ -434,7 +785,7 @@ const DocumentDetails = (props) => {
)} )}
: :
</span> </span>
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_name" "pinswg_name"
) )
@@ -450,7 +801,7 @@ const DocumentDetails = (props) => {
)} )}
: :
</span> </span>
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_name" "pinswg_name"
) )
@@ -466,13 +817,24 @@ const DocumentDetails = (props) => {
)} )}
: :
</span> </span>
{resolveCrmDisplayValue({
value: detailsObj[ {router.locale == "cy"
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup detailsObj[
})} "pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
</dd> </dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16"> <dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden"> <span className="results-visually-hidden">
@@ -482,7 +844,7 @@ const DocumentDetails = (props) => {
: :
</span> </span>
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_latestpublisheddate" "pinswg_latestpublisheddate"
) )
@@ -681,17 +1043,14 @@ const DocumentDetails = (props) => {
<h3> <h3>
{showDocumentSearchState == false {showDocumentSearchState == false
? t("case:documents-checking-label") ? t("case:documents-checking-label")
: appealType === 846040002 || : t("case:documents-non-available-label")}
appealType === 846040011
? t(
"case:documents-non-available-app-label"
)
: t("case:documents-non-available-label")}
</h3> </h3>
</div> </div>
</div> </div>
) : ( ) : showFilteredDocs == "true" ? (
FilteredDocumentView(documentDetailsArr) FilteredDocumentView(documentDetailsArr)
) : (
DocumentView(documentDetailsArr)
)} )}
</div> </div>
</div> </div>
+80 -123
View File
@@ -3,16 +3,9 @@ import { setCurrentPage } from "../../store/currentView/action";
import { connect } from "react-redux"; import { connect } from "react-redux";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { formatDates } from "../utils"; import { formatDates } from "../utils";
import {
getLivePublishedEvent,
isEventLiveNow
} from "./summary/utils/liveEvent";
import { useRouter } from "next/router";
const EventsDetails = (props) => { const EventsDetails = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
const router = useRouter();
const { locale } = router;
const EventView = (eventsArr) => { const EventView = (eventsArr) => {
eventsArr = eventsArr.value; eventsArr = eventsArr.value;
@@ -30,6 +23,8 @@ const EventsDetails = (props) => {
return obj.hasOwnProperty(property) && obj[property] !== null; return obj.hasOwnProperty(property) && obj[property] !== null;
} }
//console.log(eventsArr.length > 0);
return ( return (
eventsArr.length > 0 && ( eventsArr.length > 0 && (
<div className="govuk-grid-row"> <div className="govuk-grid-row">
@@ -68,26 +63,76 @@ const EventsDetails = (props) => {
{item.pinswg_eventname} {item.pinswg_eventname}
</div> </div>
)} )}
</div>
<div className="eventColumn">
{hasOwnPropertyAndNotNull( {hasOwnPropertyAndNotNull(
item, item,
[ "pinswg_eventaddressline1"
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue" ) && (
] <>
<div>
<b>
{t(
"case:event-address-label"
)}
</b>
:
</div>
<div>
{
item.pinswg_eventaddressline1
}
</div>
</>
)}
{hasOwnPropertyAndNotNull(
item,
"pinswg_eventaddressline2"
) && ( ) && (
<div> <div>
<b>
{t(
"case:event-type-of-event-label"
)}
</b>
:{" "}
{ {
item[ item.pinswg_eventaddressline2
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
]
} }
</div> </div>
)} )}
{hasOwnPropertyAndNotNull(
item,
"pinswg_eventaddresstown"
) && (
<div>
{
item.pinswg_eventaddresstown
}
</div>
)}
{hasOwnPropertyAndNotNull(
item,
"pinswg_eventaddresscounty"
) && (
<div>
{
item.pinswg_eventaddresscounty
}
</div>
)}
{hasOwnPropertyAndNotNull(
item,
"pinswg_eventaddresscounty"
) && (
<div>
{
item.pinswg_eventaddresspostcode
}
</div>
)}
</div>
{/* type of event
start date date of event - end date of event
if virtual event no address showNoOfRecords
show event address */}
<div className="eventColumn">
{hasOwnPropertyAndNotNull( {hasOwnPropertyAndNotNull(
item, item,
"pinswg_dateeventrequested" "pinswg_dateeventrequested"
@@ -126,113 +171,25 @@ const EventsDetails = (props) => {
<div className="eventColumn"> <div className="eventColumn">
{hasOwnPropertyAndNotNull( {hasOwnPropertyAndNotNull(
item, item,
"pinswg_eventaddressline1" [
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue",
]
) && ( ) && (
<> <div>
<div <b>
style={{
display: "flex"
}}
>
<b>
{t(
"case:event-address-label"
)}
</b>
:
<div
style={{
display:
"flex",
marginLeft:
"10px",
flexDirection:
"column"
}}
>
{hasOwnPropertyAndNotNull(
item,
"pinswg_eventaddressline1"
) && (
<span>
{
item.pinswg_eventaddressline1
}
</span>
)}
{hasOwnPropertyAndNotNull(
item,
"pinswg_eventaddressline2"
) && (
<span>
{
item.pinswg_eventaddressline2
}
</span>
)}
{hasOwnPropertyAndNotNull(
item,
"pinswg_eventaddresstown"
) && (
<span>
{
item.pinswg_eventaddresstown
}
</span>
)}
{hasOwnPropertyAndNotNull(
item,
"pinswg_eventaddresscounty"
) && (
<span>
{
item.pinswg_eventaddresscounty
}
</span>
)}
{hasOwnPropertyAndNotNull(
item,
"pinswg_eventaddresscounty"
) && (
<span>
{
item.pinswg_eventaddresspostcode
}
</span>
)}
</div>
</div>
</>
)}
</div>
{/* type of event
start date date of event - end date of event
if virtual event no address showNoOfRecords
show event address */}
{hasOwnPropertyAndNotNull(
item,
"pinswg_linktotheevent"
) &&
isEventLiveNow(item) && (
<div className="eventColumn">
<a
href={
locale === "en"
? item.pinswg_linktotheevent
: item.pinswg_linktotheeventstreamwelsh
}
className="govuk-link"
target="_blank"
rel="noopener noreferrer"
>
{t( {t(
"case:live-event-link" "case:event-type-of-event-label"
)} )}
</a> </b>
:{" "}
{
item[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
]
}
</div> </div>
)} )}
</div>
</div> </div>
</> </>
) )
@@ -246,7 +203,7 @@ const EventsDetails = (props) => {
const mapStateToProps = (state) => { const mapStateToProps = (state) => {
return { return {
...state ...state,
}; };
}; };
@@ -257,7 +214,7 @@ const mapDispatchToProps = (dispatch) => {
}, },
setCurrentPage: (currentPage) => { setCurrentPage: (currentPage) => {
dispatch(setCurrentPage(currentPage)); dispatch(setCurrentPage(currentPage));
} },
}; };
}; };
+411 -25
View File
@@ -1,7 +1,404 @@
// // import { setEventDetails } from "../../store/searchOutput/action";
// // import { setCurrentPage } from "../../store/currentView/action";
// // import { connect } from "react-redux";
// // import useTranslation from "next-translate/useTranslation";
// // import { formatDates } from "../utils";
// // const MediaDetails = (props) => {
// // let { t } = useTranslation();
// // const MediaView = (mediaArr) => {
// // mediaArr = mediaArr.value;
// // return mediaArr.map((item, key) => {
// // <div>{item.pinswg_name}</div>;
// // });
// // };
// // const mediaArr = props.mediaObj?.value || [];
// // // event publishiing flag set to true displa
// // function hasOwnPropertyAndNotNull(obj, property) {
// // return obj.hasOwnProperty(property) && obj[property] !== null;
// // }
// // //console.log(eventsArr.length > 0);
// // return (
// // mediaArr.length > 0 && (
// // <div className="govuk-grid-row">
// // <div className="card">
// // <div className="card-body">
// // <h2 className="govuk-heading-m ">
// // {t("case:event-title")}Media
// // </h2>
// // {mediaArr.map(
// // (item, key) =>
// // item.pinswg_publishtoweb && (
// // <>
// // {" "}
// // <div className="">
// // <div className="">
// // <div>
// // <b>
// // {" "}
// // {t(
// // "case:event-name-label",
// // )}
// // </b>
// // : {item.pinswg_name}
// // </div>
// // {hasOwnPropertyAndNotNull(
// // item,
// // "pinswg_description",
// // ) && (
// // <div>
// // <b>
// // {t(
// // "case:event-event-name-label",
// // )}
// // </b>
// // :{" "}
// // {
// // item.pinswg_description
// // }
// // </div>
// // )}
// // </div>
// // </div>
// // </>
// // ),
// // )}{" "}
// // </div>
// // </div>
// // </div>
// // )
// // );
// // };
// // const mapStateToProps = (state) => {
// // return {
// // ...state,
// // };
// // };
// // const mapDispatchToProps = (dispatch) => {
// // return {
// // setEventDetails: (mediaObj) => {
// // dispatch(setEventDetails(mediaObj));
// // },
// // setCurrentPage: (currentPage) => {
// // dispatch(setCurrentPage(currentPage));
// // },
// // };
// // };
// // export default connect(mapStateToProps, mapDispatchToProps)(MediaDetails);
// import { useEffect, useMemo, useState } from "react";
// import { connect } from "react-redux";
// import useTranslation from "next-translate/useTranslation";
// import { useRouter } from "next/router";
// const extractYouTubeId = (input) => {
// if (!input) return null;
// if (/^[a-zA-Z0-9_-]{11}$/.test(input)) return input;
// try {
// const url = new URL(input);
// if (url.hostname.includes("youtu.be"))
// return url.pathname.slice(1) || null;
// const v = url.searchParams.get("v");
// if (v) return v;
// const embedMatch = url.pathname.match(/\/embed\/([^/]+)/);
// if (embedMatch?.[1]) return embedMatch[1];
// const shortsMatch = url.pathname.match(/\/shorts\/([^/]+)/);
// if (shortsMatch?.[1]) return shortsMatch[1];
// return null;
// } catch {
// return null;
// }
// };
// export default function MediaDetails({ mediaObj, whichTab }) {
// const router = useRouter();
// const mediaArr = mediaObj?.value || [];
// const videoItems = useMemo(() => {
// const isWelsh = router.locale === "cy";
// return (mediaArr || [])
// .filter((x) => x?.pinswg_publishtoweb)
// .map((item) => {
// const url = isWelsh
// ? item.pinswg_mediaLinkCY
// : item.pinswg_mediaLinkEN;
// const videoId = extractYouTubeId(url);
// if (!videoId) return null;
// return {
// key:
// item.pinswg_documentid ||
// `${item.pinswg_name}-${videoId}`,
// videoId,
// name: item.pinswg_name || "Video",
// description: item.pinswg_description || "",
// thumbnail: `https://img.youtube.com/vi/${videoId}/hqdefault.jpg`,
// };
// })
// .filter(Boolean);
// }, [mediaArr, router.locale]);
// const [watchedIds, setWatchedIds] = useState(new Set());
// const [selectedIndex, setSelectedIndex] = useState(0);
// // Forces a fresh iframe instance whenever we need to hard-stop playback
// const [playerInstance, setPlayerInstance] = useState(0);
// const isActive = whichTab === "case-media";
// const selected = videoItems[selectedIndex] || null;
// // When leaving the media tab, hard-stop playback by unmounting (and bumping instance)
// useEffect(() => {
// if (!isActive) {
// setPlayerInstance((n) => n + 1);
// }
// }, [isActive]);
// // When list/locale changes, reset to first (no autoplay)
// useEffect(() => {
// setSelectedIndex(0);
// setPlayerInstance((n) => n + 1);
// }, [videoItems.length, router.locale]);
// if (!videoItems.length) return null;
// const embedBase = "https://www.youtube-nocookie.com/embed";
// // IMPORTANT:
// // - autoplay=0 for initial load
// // - autoplay=1 only when user clicks an item
// const [autoplay, setAutoplay] = useState(false);
// useEffect(() => {
// // whenever we leave tab or reset player, don't autoplay next time
// if (!isActive) setAutoplay(false);
// }, [isActive]);
// const embedSrc = selected
// ? `${embedBase}/${selected.videoId}?rel=0&modestbranding=1&playsinline=1&autoplay=${autoplay ? "1" : "0"}`
// : "";
// return (
// <div className="govuk-grid-row">
// <div className="card">
// <div className="card-body">
// <h2 className="govuk-heading-m">Media</h2>
// {/* Player: only render when tab is active */}
// {isActive && (
// <div className="videoWrapper govuk-!-margin-bottom-4">
// <iframe
// key={`${selected?.videoId}-${playerInstance}`}
// src={embedSrc}
// title={selected?.name || "YouTube video"}
// frameBorder="0"
// allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
// allowFullScreen
// />
// </div>
// )}
// <h3 className="govuk-heading-s">Videos</h3>
// <ul className="govuk-list govuk-list--spaced">
// {videoItems.map((v, idx) => {
// const isSelected = idx === selectedIndex;
// return (
// <li key={v.key}>
// <button
// type="button"
// className={`videoTabButton ${isSelected ? "active" : ""}`}
// onClick={() => {
// setSelectedIndex(idx);
// setAutoplay(true); // play only on user action
// setPlayerInstance((n) => n + 1); // ensure clean switch / stop previous
// setWatchedIds((prev) =>
// new Set(prev).add(v.videoId),
// );
// }}
// >
// <div className="videoTabContent">
// <div className="thumbnailWrapper">
// <img
// src={v.thumbnail}
// alt=""
// className="videoThumbnail"
// loading="lazy"
// />
// <span
// className="playIcon"
// aria-hidden="true"
// >
// ▶
// </span>
// {/* Duration badge (see section 2) */}
// {v.duration && (
// <span className="durationBadge">
// {v.duration}
// </span>
// )}
// {/* Watched indicator (see section 3) */}
// {watchedIds.has(v.videoId) && (
// <span className="watchedBadge">
// Watched
// </span>
// )}
// </div>
// <span className="videoTitle">
// {v.name}
// </span>
// </div>
// </button>
// </li>
// );
// })}
// </ul>
// </div>
// </div>
// <style jsx>{`
// .videoWrapper {
// position: relative;
// padding-bottom: 56.25%;
// height: 0;
// overflow: hidden;
// border: 1px solid #b1b4b6;
// border-radius: 4px;
// }
// .videoWrapper iframe {
// position: absolute;
// top: 0;
// left: 0;
// width: 100%;
// height: 100%;
// }
// .videoTabButton {
// width: 100%;
// text-align: left;
// background: transparent;
// border: 1px solid #b1b4b6;
// border-radius: 4px;
// padding: 10px 12px;
// cursor: pointer;
// }
// .videoTabButton:hover {
// background: #f3f2f1;
// }
// .videoTabButton.active {
// border-color: #1d70b8;
// box-shadow: inset 0 0 0 1px #1d70b8;
// background: #eef4ff;
// }
// .videoTabContent {
// display: flex;
// gap: 12px;
// align-items: center;
// }
// .videoThumbnail {
// width: 120px;
// aspect-ratio: 16 / 9;
// object-fit: cover;
// border-radius: 4px;
// border: 1px solid #b1b4b6;
// background: #000;
// }
// .videoTitle {
// font-weight: 600;
// }
// @media (max-width: 40.0625em) {
// .videoThumbnail {
// width: 90px;
// }
// }
// .thumbnailWrapper {
// position: relative;
// width: 120px;
// flex-shrink: 0;
// }
// .videoThumbnail {
// width: 100%;
// aspect-ratio: 16 / 9;
// object-fit: cover;
// border-radius: 4px;
// border: 1px solid #b1b4b6;
// background: #000;
// }
// /* ▶ Play icon */
// .playIcon {
// position: absolute;
// inset: 0;
// display: flex;
// align-items: center;
// justify-content: center;
// font-size: 32px;
// color: white;
// text-shadow: 0 0 6px rgba(0, 0, 0, 0.7);
// pointer-events: none;
// }
// /* ⏱ Duration badge */
// .durationBadge {
// position: absolute;
// bottom: 6px;
// right: 6px;
// background: rgba(0, 0, 0, 0.8);
// color: white;
// font-size: 12px;
// padding: 2px 6px;
// border-radius: 3px;
// }
// /* 👁 Watched badge */
// .watchedBadge {
// position: absolute;
// top: 6px;
// left: 6px;
// background: #00703c; /* GOV green */
// color: white;
// font-size: 11px;
// padding: 2px 6px;
// border-radius: 3px;
// }
// .videoTabContent {
// display: flex;
// gap: 12px;
// align-items: center;
// }
// .videoTitle {
// font-weight: 600;
// }
// `}</style>
// </div>
// );
// }
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { getBilingualText } from "./summary/utils/helpers";
/** /**
* MediaDetails * MediaDetails
@@ -50,19 +447,19 @@ const MediaDetails = ({ mediaObj, whichTab, title, useNoCookie = true }) => {
const { t } = useTranslation(); const { t } = useTranslation();
const router = useRouter(); const router = useRouter();
const sourceMedia = mediaObj?.value; const mediaArr = mediaObj?.value || [];
const isActive = whichTab ? whichTab === "case-media" : true; const isActive = whichTab ? whichTab === "case-media" : true;
// Build list of playable items (publishable only) // Build list of playable items (publishable only)
const videoItems = useMemo(() => { const videoItems = useMemo(() => {
const isWelsh = router.locale === "cy"; const isWelsh = router.locale === "cy";
return (sourceMedia || []) return (mediaArr || [])
.filter((x) => x?.pinswg_publishtoweb) .filter((x) => x?.pinswg_publishtoweb)
.map((item) => { .map((item) => {
const link = isWelsh const link = isWelsh
? item.pinswg_videoplatformurlwelsh ? item.pinswg_mediaLinkCY
: item.pinswg_videoplatformurl; : item.pinswg_mediaLinkEN;
const videoId = extractYouTubeId(link); const videoId = extractYouTubeId(link);
if (!videoId) return null; if (!videoId) return null;
@@ -71,19 +468,19 @@ const MediaDetails = ({ mediaObj, whichTab, title, useNoCookie = true }) => {
key: key:
item.pinswg_documentid || item.pinswg_documentid ||
item.pinswg_mediaid || item.pinswg_mediaid ||
`${item.pinswg_eventrecordingid}-${videoId}`, `${item.pinswg_name}-${videoId}`,
videoId, videoId,
name: item.pinswg_eventrecordingname || "Video", name: item.pinswg_name || "Video",
description: item.pinswg_description || "", description: item.pinswg_description || "",
// If you later store duration in CRM, map it here (e.g. "03:42") // If you later store duration in CRM, map it here (e.g. "03:42")
duration: item.pinswg_duration || null, duration: item.pinswg_duration || null,
thumbnailHQ: `https://img.youtube.com/vi/${videoId}/hqdefault.jpg`, thumbnailHQ: `https://img.youtube.com/vi/${videoId}/hqdefault.jpg`,
thumbnailMax: `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`, thumbnailMax: `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`,
raw: item raw: item,
}; };
}) })
.filter(Boolean); .filter(Boolean);
}, [sourceMedia, router.locale]); }, [mediaArr, router.locale]);
const [selectedIndex, setSelectedIndex] = useState(0); const [selectedIndex, setSelectedIndex] = useState(0);
@@ -149,22 +546,14 @@ const MediaDetails = ({ mediaObj, whichTab, title, useNoCookie = true }) => {
{selected && ( {selected && (
<div className="govuk-!-margin-bottom-4"> <div className="govuk-!-margin-bottom-4">
<div className="govuk-body"> <div className="govuk-body">
<b>{t("case:event-recording-name-label")}</b>:{" "} <b>{t("case:event-name-label")}</b>:{" "}
{getBilingualText(selected.name, router.locale)} {selected.name}
</div> </div>
{!!selected.description && ( {!!selected.description && (
<div className="govuk-body"> <div className="govuk-body">
<b> <b>{t("case:event-event-name-label")}</b>:{" "}
{t( {selected.description}
"case:event-recording-description-label"
)}
</b>
:{" "}
{getBilingualText(
selected.description,
router.locale
)}
</div> </div>
)} )}
</div> </div>
@@ -240,10 +629,7 @@ const MediaDetails = ({ mediaObj, whichTab, title, useNoCookie = true }) => {
</div> </div>
<span className="videoTitle"> <span className="videoTitle">
{getBilingualText( {v.name}
v.name,
router.locale
)}
</span> </span>
</div> </div>
</button> </button>
@@ -2,22 +2,22 @@ import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Field, change, reduxForm } from "redux-form"; import { Field, change, reduxForm } from "redux-form";
import { useEffect, useState } from "react"; import { useState } from "react";
import { bytesToSize, getThumbnailIconByExtension } from "../../utils"; import { bytesToSize, getThumbnailIconByExtension } from "../../utils";
import { import {
FileUploadField, FileUploadField,
RenderCondtionalRadioList, RenderCondtionalRadioList,
RenderPickList,
RenderRichMultiline, RenderRichMultiline,
shouldDisableButton shouldDisableButton,
} from "./representationElements"; } from "./representationElements";
import RepresentationTypeSelectorBlock from "./elements/RepresentationTypeSelectorBlock";
import { useDropzone } from "react-dropzone"; import { useDropzone } from "react-dropzone";
import { import {
setRepresentationCapacity, setRepresentationCapacity,
setRepresentationSubmit, setRepresentationSubmit,
setFilesForRepresentations setFilesForRepresentations,
} from "../../../store/currentView/action"; } from "../../../store/currentView/action";
const ConsultationAgent = (props) => { const ConsultationAgent = (props) => {
@@ -36,23 +36,9 @@ const ConsultationAgent = (props) => {
setSavingStatus, setSavingStatus,
savingStatus, savingStatus,
setFilesForRepresentations, setFilesForRepresentations,
onRepresentationTypeChange,
onTypeSelectionConfirmed
} = props; } = props;
const { acceptedFiles, getRootProps, getInputProps } = useDropzone(); const { acceptedFiles, getRootProps, getInputProps } = useDropzone();
const persistedRepresentationType =
currentView?.caseReference?.repDetails?.representationType;
const [typeSelectionConfirmed, setTypeSelectionConfirmed] = useState(
!!persistedRepresentationType
);
useEffect(() => {
if (persistedRepresentationType) {
setTypeSelectionConfirmed(true);
}
}, [persistedRepresentationType]);
if (JSON.stringify(formObj) != "{}") { if (JSON.stringify(formObj) != "{}") {
setRepFileName(formObj.representationForm.values); setRepFileName(formObj.representationForm.values);
@@ -77,43 +63,63 @@ const ConsultationAgent = (props) => {
)); ));
const required = (value) => (value ? undefined : "Required"); const required = (value) => (value ? undefined : "Required");
const selectedRepresentationType =
formObj?.representationForm?.values?.representationType ||
props.representationType;
const isTypeConfirmed =
!!selectedRepresentationType && typeSelectionConfirmed;
const selectedRepresentationTypeDisplay =
router.locale == "cy"
? selectedRepresentationType == "Questionnaire"
? "Holiadur"
: selectedRepresentationType == "Statement"
? "Datganiad"
: selectedRepresentationType == "Final comments"
? "Sylwadau terfynol"
: selectedRepresentationType
: selectedRepresentationType;
return ( return (
<> <>
<RepresentationTypeSelectorBlock <div className="govuk-grid-row">
t={t} <div className="govuk-form-group">
headingText={t( {typeof formObj.representationForm.values
"myrepresentations:consultation-from-an-agent-heading" .representationType == "undefined" &&
)} props.representationType != "Select..." ? (
kindLabelText={t( <>
"myrepresentations:kind-of-consultation-label" <h2 className="govuk-heading-m ">
)} {t(
isTypeSelected={isTypeConfirmed} "myrepresentations:consultation-from-an-agent-heading"
selectedTypeDisplay={selectedRepresentationTypeDisplay} )}
representationType={selectedRepresentationType} </h2>
setTypeSelectionConfirmed={setTypeSelectionConfirmed}
onRepresentationTypeChange={onRepresentationTypeChange} <label
onTypeSelectionConfirmed={onTypeSelectionConfirmed} className="govuk-label govuk-body-m"
optionsArr={appellantApplicantRepresentationArr} htmlFor="representationType"
/> >
{isTypeConfirmed && ( {t(
"myrepresentations:kind-of-consultation-label"
)}
</label>
<Field
name="representationType"
component={RenderPickList}
datafieldname="representationType"
optionsArr={
appellantApplicantRepresentationArr
}
/>
</>
) : (
<label className="govuk-label govuk-body-m">
{t("myrepresentations:representation-type")}:{" "}
{router.locale == "cy"
? formObj.representationForm.values
.representationType == "Questionnaire"
? "Holiadur"
: formObj.representationForm.values
.representationType == "Statement"
? "Datganiad"
: formObj.representationForm.values
.representationType ==
"Final comments"
? "Sylwadau terfynol"
: formObj.representationForm.values
.representationType
: formObj.representationForm.values
.representationType}
</label>
)}
</div>
</div>
{(typeof props.representationType != "undefined" ||
typeof formObj.representationForm.values
.representationType != "undefined") && (
<> <>
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
@@ -140,7 +146,8 @@ const ConsultationAgent = (props) => {
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
<p className="govuk-body"> <p className="govuk-body">
{selectedRepresentationType == {formObj.representationForm.values
.representationType ==
"Consultation Response" "Consultation Response"
? t( ? t(
"myrepresentations:enter-comment-label" "myrepresentations:enter-comment-label"
@@ -153,7 +160,8 @@ const ConsultationAgent = (props) => {
className="govuk-fieldset" className="govuk-fieldset"
aria-describedby="commentBox-hint" aria-describedby="commentBox-hint"
> >
{selectedRepresentationType == {formObj.representationForm.values
.representationType ==
"Consultation Response" && ( "Consultation Response" && (
<div className="govuk-form-group"> <div className="govuk-form-group">
<Field <Field
@@ -215,8 +223,7 @@ const ConsultationAgent = (props) => {
"myrepresentations:add-files-label" "myrepresentations:add-files-label"
)} )}
ticketnumber={ ticketnumber={
props.currentView.caseReference props.props.caseReference
.ticketnumber
} }
hint={"sdsd"} hint={"sdsd"}
fileList={ fileList={
@@ -258,7 +265,8 @@ const ConsultationAgent = (props) => {
</div> </div>
</> </>
)} )}
{isTypeConfirmed && ( {typeof formObj.representationForm.values.representationType !=
"undefined" && (
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-button-group"> <div className="govuk-button-group">
<button <button
@@ -267,7 +275,7 @@ const ConsultationAgent = (props) => {
data-module="govuk-button" data-module="govuk-button"
disabled={shouldDisableButton({ disabled={shouldDisableButton({
props, props,
formObj formObj,
})} })}
> >
{t("common:continue-button")} {t("common:continue-button")}
@@ -341,7 +349,7 @@ const mapDispatchToProps = (dispatch) => ({
setFilesForRepresentations: (fileList) => { setFilesForRepresentations: (fileList) => {
dispatch(setFilesForRepresentations(fileList)); dispatch(setFilesForRepresentations(fileList));
} },
}); });
export default connect( export default connect(
@@ -351,6 +359,6 @@ export default connect(
reduxForm({ reduxForm({
form: "representationForm", form: "representationForm",
enableReinitialize: true, enableReinitialize: true,
destroyOnUnmount: false destroyOnUnmount: false,
})(ConsultationAgent) })(ConsultationAgent)
); );
@@ -2,21 +2,21 @@ import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Field, change, reduxForm } from "redux-form"; import { Field, change, reduxForm } from "redux-form";
import { useEffect, useState } from "react"; import { useState } from "react";
import { bytesToSize, getThumbnailIconByExtension } from "../../utils"; import { bytesToSize, getThumbnailIconByExtension } from "../../utils";
import { import {
FileUploadField, FileUploadField,
RenderPickList,
RenderRichMultiline, RenderRichMultiline,
shouldDisableButton shouldDisableButton,
} from "./representationElements"; } from "./representationElements";
import RepresentationTypeSelectorBlock from "./elements/RepresentationTypeSelectorBlock";
import { useDropzone } from "react-dropzone"; import { useDropzone } from "react-dropzone";
import { import {
setRepresentationCapacity, setRepresentationCapacity,
setRepresentationSubmit, setRepresentationSubmit,
setFilesForRepresentations setFilesForRepresentations,
} from "../../../store/currentView/action"; } from "../../../store/currentView/action";
const ConsultationAppellant = (props) => { const ConsultationAppellant = (props) => {
@@ -35,23 +35,9 @@ const ConsultationAppellant = (props) => {
setSavingStatus, setSavingStatus,
savingStatus, savingStatus,
setFilesForRepresentations, setFilesForRepresentations,
onRepresentationTypeChange,
onTypeSelectionConfirmed
} = props; } = props;
const { acceptedFiles, getRootProps, getInputProps } = useDropzone(); const { acceptedFiles, getRootProps, getInputProps } = useDropzone();
const persistedRepresentationType =
currentView?.caseReference?.repDetails?.representationType;
const [typeSelectionConfirmed, setTypeSelectionConfirmed] = useState(
!!persistedRepresentationType
);
useEffect(() => {
if (persistedRepresentationType) {
setTypeSelectionConfirmed(true);
}
}, [persistedRepresentationType]);
console.log(JSON.stringify(formObj) == "{}" ? "empty" : "value"); console.log(JSON.stringify(formObj) == "{}" ? "empty" : "value");
if (JSON.stringify(formObj) != "{}") { if (JSON.stringify(formObj) != "{}") {
@@ -76,47 +62,66 @@ const ConsultationAppellant = (props) => {
index === self.findIndex((t) => t.name === value.name) index === self.findIndex((t) => t.name === value.name)
); );
const selectedRepresentationType =
formObj?.representationForm?.values?.representationType ||
props.representationType;
const isTypeConfirmed =
!!selectedRepresentationType && typeSelectionConfirmed;
const selectedRepresentationTypeDisplay =
router.locale == "cy"
? selectedRepresentationType == "Questionnaire"
? "Holiadur"
: selectedRepresentationType == "Statement"
? "Datganiad"
: selectedRepresentationType == "Final comments"
? "Sylwadau terfynol"
: selectedRepresentationType
: selectedRepresentationType;
return ( return (
<> <>
<RepresentationTypeSelectorBlock <div className="govuk-grid-row">
t={t} <div className="govuk-form-group">
headingText={t( {typeof formObj.representationForm.values
"myrepresentations:consultation-from-an-appellant-heading" .representationType == "undefined" &&
)} props.representationType != "Select..." ? (
kindLabelText={t( <>
"myrepresentations:kind-of-consultation-label" <h2 className="govuk-heading-m ">
)} {t(
isTypeSelected={isTypeConfirmed} "myrepresentations:consultation-from-an-appellant-heading"
selectedTypeDisplay={selectedRepresentationTypeDisplay} )}
representationType={selectedRepresentationType} </h2>
setTypeSelectionConfirmed={setTypeSelectionConfirmed} <label
onRepresentationTypeChange={onRepresentationTypeChange} className="govuk-label govuk-body-m"
onTypeSelectionConfirmed={onTypeSelectionConfirmed} htmlFor="representationType"
optionsArr={appellantApplicantRepresentationArr} >
/> {t(
{isTypeConfirmed && ( "myrepresentations:kind-of-consultation-label"
)}
</label>
<Field
name="representationType"
component={RenderPickList}
datafieldname="representationType"
optionsArr={
appellantApplicantRepresentationArr
}
/>
</>
) : (
<label className="govuk-label govuk-body-m">
{t("myrepresentations:representation-type")}:{" "}
{router.locale == "cy"
? formObj.representationForm.values
.representationType == "Questionnaire"
? "Holiadur"
: formObj.representationForm.values
.representationType == "Statement"
? "Datganiad"
: formObj.representationForm.values
.representationType ==
"Final comments"
? "Sylwadau terfynol"
: formObj.representationForm.values
.representationType
: formObj.representationForm.values
.representationType}
</label>
)}
</div>
</div>
{(typeof props.representationType != "undefined" ||
typeof formObj.representationForm.values
.representationType != "undefined") && (
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
<p className="govuk-body"> <p className="govuk-body">
{selectedRepresentationType == {formObj.representationForm.values
.representationType ==
"Consultation Response" "Consultation Response"
? t("myrepresentations:enter-comment-label") ? t("myrepresentations:enter-comment-label")
: t( : t(
@@ -127,7 +132,8 @@ const ConsultationAppellant = (props) => {
className="govuk-fieldset" className="govuk-fieldset"
aria-describedby="commentBox-hint" aria-describedby="commentBox-hint"
> >
{selectedRepresentationType == {formObj.representationForm.values
.representationType ==
"Consultation Response" && ( "Consultation Response" && (
<div className="govuk-form-group"> <div className="govuk-form-group">
<Field <Field
@@ -189,10 +195,7 @@ const ConsultationAppellant = (props) => {
label={t( label={t(
"myrepresentations:add-files-label" "myrepresentations:add-files-label"
)} )}
ticketnumber={ ticketnumber={props.props.caseReference}
props.currentView.caseReference
.ticketnumber
}
hint={"sdsd"} hint={"sdsd"}
fileList={ fileList={
props.currentView.fileList props.currentView.fileList
@@ -230,7 +233,8 @@ const ConsultationAppellant = (props) => {
</div> </div>
)} )}
{isTypeConfirmed && ( {typeof formObj.representationForm.values.representationType !=
"undefined" && (
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-button-group"> <div className="govuk-button-group">
<button <button
@@ -239,7 +243,7 @@ const ConsultationAppellant = (props) => {
data-module="govuk-button" data-module="govuk-button"
disabled={shouldDisableButton({ disabled={shouldDisableButton({
props, props,
formObj formObj,
})} })}
> >
{t("common:continue-button")} {t("common:continue-button")}
@@ -249,6 +253,7 @@ const ConsultationAppellant = (props) => {
onClick={() => { onClick={() => {
setRepresentationCapacity(); setRepresentationCapacity();
props.updateField( props.updateField(
"representationForm",
"representationType", "representationType",
"" ""
); );
@@ -316,7 +321,7 @@ const mapDispatchToProps = (dispatch) => {
setFilesForRepresentations: (fileList) => { setFilesForRepresentations: (fileList) => {
dispatch(setFilesForRepresentations(fileList)); dispatch(setFilesForRepresentations(fileList));
} },
}; };
}; };
@@ -327,6 +332,6 @@ export default connect(
reduxForm({ reduxForm({
form: "representationForm", form: "representationForm",
enableReinitialize: true, enableReinitialize: true,
destroyOnUnmount: false destroyOnUnmount: false,
})(ConsultationAppellant) })(ConsultationAppellant)
); );
@@ -2,22 +2,22 @@ import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Field, change, reduxForm } from "redux-form"; import { Field, change, reduxForm } from "redux-form";
import { useEffect, useState } from "react"; import { useState } from "react";
import { bytesToSize, getThumbnailIconByExtension } from "../../utils"; import { bytesToSize, getThumbnailIconByExtension } from "../../utils";
import { import {
FileUploadField, FileUploadField,
RenderCondtionalRadioList, RenderCondtionalRadioList,
RenderPickList,
RenderRichMultiline, RenderRichMultiline,
shouldDisableButton shouldDisableButton,
} from "./representationElements"; } from "./representationElements";
import RepresentationTypeSelectorBlock from "./elements/RepresentationTypeSelectorBlock";
import { useDropzone } from "react-dropzone"; import { useDropzone } from "react-dropzone";
import { import {
setRepresentationCapacity, setRepresentationCapacity,
setRepresentationSubmit, setRepresentationSubmit,
setFilesForRepresentations setFilesForRepresentations,
} from "../../../store/currentView/action"; } from "../../../store/currentView/action";
const ConsultationInterestedPartyPerson = (props) => { const ConsultationInterestedPartyPerson = (props) => {
@@ -35,25 +35,11 @@ const ConsultationInterestedPartyPerson = (props) => {
setSavingStatus, setSavingStatus,
savingStatus, savingStatus,
setFilesForRepresentations, setFilesForRepresentations,
onRepresentationTypeChange,
onTypeSelectionConfirmed
} = props; } = props;
const required = (value) => (value ? undefined : "Required"); const required = (value) => (value ? undefined : "Required");
const { acceptedFiles, getRootProps, getInputProps } = useDropzone(); const { acceptedFiles, getRootProps, getInputProps } = useDropzone();
const persistedRepresentationType =
props.currentView?.caseReference?.repDetails?.representationType;
const [typeSelectionConfirmed, setTypeSelectionConfirmed] = useState(
!!persistedRepresentationType
);
useEffect(() => {
if (persistedRepresentationType) {
setTypeSelectionConfirmed(true);
}
}, [persistedRepresentationType]);
if (JSON.stringify(formObj) != "{}") { if (JSON.stringify(formObj) != "{}") {
setRepFileName(formObj.representationForm.values); setRepFileName(formObj.representationForm.values);
@@ -76,46 +62,67 @@ const ConsultationInterestedPartyPerson = (props) => {
{file.path} - {file.size} bytes {file.path} - {file.size} bytes
</li> </li>
)); ));
const selectedRepresentationType =
formObj?.representationForm?.values?.representationType ||
props.representationType;
const isTypeConfirmed =
!!selectedRepresentationType && typeSelectionConfirmed;
const selectedRepresentationTypeDisplay =
router.locale == "cy"
? selectedRepresentationType == "Questionnaire"
? "Holiadur"
: selectedRepresentationType == "Statement"
? "Datganiad"
: selectedRepresentationType == "Final comments"
? "Sylwadau terfynol"
: selectedRepresentationType
: selectedRepresentationType;
return ( return (
<> <>
<RepresentationTypeSelectorBlock <div className="govuk-grid-row">
t={t} <div className="govuk-form-group">
headingText={t( {typeof formObj.representationForm.values
"myrepresentations:consultation-from-an-interested-person-heading" .representationType == "undefined" &&
)} props.representationType != "Select..." ? (
kindLabelText={t( <>
"myrepresentations:kind-of-consultation-label" <h2 className="govuk-heading-m ">
)} {t(
isTypeSelected={isTypeConfirmed} "myrepresentations:consultation-from-an-interested-person-heading"
selectedTypeDisplay={selectedRepresentationTypeDisplay} )}
representationType={selectedRepresentationType} </h2>
setTypeSelectionConfirmed={setTypeSelectionConfirmed}
onRepresentationTypeChange={onRepresentationTypeChange} <label
onTypeSelectionConfirmed={onTypeSelectionConfirmed} className="govuk-label govuk-body-m"
optionsArr={interestedPersonRepresentationArr} htmlFor="representationType"
validate={[required]} >
errorMsg={t("myrepresentations:select-an-option-label")} {t(
/> "myrepresentations:kind-of-consultation-label"
{isTypeConfirmed && ( )}
</label>
<Field
name="representationType"
component={RenderPickList}
datafieldname="representationType"
validate={[required]}
optionsArr={
interestedPersonRepresentationArr
}
errorMsg={t(
"myrepresentations:select-an-option-label"
)}
/>
</>
) : (
<label className="govuk-label govuk-body-m">
{t("myrepresentations:representation-type")}:{" "}
{router.locale == "cy"
? formObj.representationForm.values
.representationType == "Questionnaire"
? "Holiadur"
: formObj.representationForm.values
.representationType == "Statement"
? "Datganiad"
: formObj.representationForm.values
.representationType ==
"Final comments"
? "Sylwadau terfynol"
: formObj.representationForm.values
.representationType
: formObj.representationForm.values
.representationType}
</label>
)}
</div>
</div>
{(typeof props.representationType != "undefined" ||
typeof formObj.representationForm.values
.representationType != "undefined") && (
<> <>
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
@@ -127,7 +134,7 @@ const ConsultationInterestedPartyPerson = (props) => {
t( t(
"myrepresentations:questionnaire-yes" "myrepresentations:questionnaire-yes"
), ),
t("myrepresentations:questionnaire-no") t("myrepresentations:questionnaire-no"),
]} ]}
id="representationOnBehalfOf" id="representationOnBehalfOf"
className="govuk-radios__input" className="govuk-radios__input"
@@ -147,7 +154,8 @@ const ConsultationInterestedPartyPerson = (props) => {
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
<p className="govuk-body"> <p className="govuk-body">
{selectedRepresentationType == {formObj.representationForm.values
.representationType ==
"Consultation Response" "Consultation Response"
? t( ? t(
"myrepresentations:enter-comment-label" "myrepresentations:enter-comment-label"
@@ -161,7 +169,8 @@ const ConsultationInterestedPartyPerson = (props) => {
aria-describedby="commentBox-hint" aria-describedby="commentBox-hint"
> >
{" "} {" "}
{selectedRepresentationType == {formObj.representationForm.values
.representationType ==
"Consultation Response" && ( "Consultation Response" && (
<div className="govuk-form-group"> <div className="govuk-form-group">
<Field <Field
@@ -223,8 +232,7 @@ const ConsultationInterestedPartyPerson = (props) => {
"myrepresentations:add-files-label" "myrepresentations:add-files-label"
)} )}
ticketnumber={ ticketnumber={
props.currentView.caseReference props.props.caseReference
.ticketnumber
} }
hint={"sdsd"} hint={"sdsd"}
fileList={ fileList={
@@ -266,7 +274,8 @@ const ConsultationInterestedPartyPerson = (props) => {
</div> </div>
</> </>
)} )}
{isTypeConfirmed && ( {typeof formObj.representationForm.values.representationType !=
"undefined" && (
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-button-group"> <div className="govuk-button-group">
<button <button
@@ -275,7 +284,7 @@ const ConsultationInterestedPartyPerson = (props) => {
data-module="govuk-button" data-module="govuk-button"
disabled={shouldDisableButton({ disabled={shouldDisableButton({
props, props,
formObj formObj,
})} })}
> >
{t("common:continue-button")} {t("common:continue-button")}
@@ -354,7 +363,7 @@ const mapDispatchToProps = (dispatch) => ({
dispatch(change(form, field, newValue)), dispatch(change(form, field, newValue)),
setFilesForRepresentations: (fileList) => { setFilesForRepresentations: (fileList) => {
dispatch(setFilesForRepresentations(fileList)); dispatch(setFilesForRepresentations(fileList));
} },
}); });
export default connect( export default connect(
@@ -364,6 +373,6 @@ export default connect(
reduxForm({ reduxForm({
form: "representationForm", form: "representationForm",
enableReinitialize: true, enableReinitialize: true,
destroyOnUnmount: false destroyOnUnmount: false,
})(ConsultationInterestedPartyPerson) })(ConsultationInterestedPartyPerson)
); );
@@ -1,134 +1,17 @@
import { Field } from "redux-form"; import { Field } from "redux-form";
import router from "next/router";
import Link from "next/link";
const getRepresentationTypeHint = (option, t) => { import { RenderPickList } from "../representationElements";
const map = {
"Statement": t("myrepresentations:rep-type-statement-hint"),
"Final comments": t("myrepresentations:rep-type-final-comments-hint"),
"Questionnaire": t("myrepresentations:rep-type-questionnaire-hint"),
"Consultation Response": t(
"myrepresentations:rep-type-consultation-hint"
),
"Local Impact Report": t("myrepresentations:rep-type-lir-hint"),
"Marine Impact Report": t("myrepresentations:rep-type-mir-hint")
};
return map[option] || "";
};
const getRepresentationTypeLabel = (option) => {
if (router.locale !== "cy") {
return option;
}
if (option === "Questionnaire") {
return "Holiadur";
}
if (option === "Statement") {
return "Datganiad";
}
if (option === "Final comments") {
return "Sylwadau terfynol";
}
return option;
};
const RenderRepresentationTypeRadioList = ({
name,
optionsArr,
errorMsg,
onRepresentationTypeChange,
input,
meta: { touched, error }
}) => {
return (
<div
className={
touched && error
? "govuk-form-group govuk-form-group--error"
: "govuk-form-group"
}
>
{touched && error && (
<span id={`${name}-error`} className="govuk-error-message">
<span className="govuk-visually-hidden">Error:</span>{" "}
{errorMsg}
</span>
)}
<div className="govuk-radios govuk-radios--small">
{optionsArr.map((option, index) => {
const optionId = `${name}_${index}`;
const hintId = `${optionId}-hint`;
return (
<div
key={option.value || optionId}
className="govuk-radios__item representation-type-option"
>
<input
className="govuk-radios__input"
id={optionId}
name={input.name}
type="radio"
value={option.value}
checked={input.value === option.value}
onChange={() => input.onChange(option.value)}
aria-describedby={
option.hint ? hintId : undefined
}
/>
<label
className="govuk-label govuk-radios__label govuk-!-font-weight-bold "
htmlFor={optionId}
>
{option.label}
{option.hint && (
<div
id={hintId}
className="govuk-hint govuk-!-margin-top-2"
>
{option.hint}
</div>
)}
</label>
</div>
);
})}
</div>
</div>
);
};
const RepresentationTypeSelectorBlock = ({ const RepresentationTypeSelectorBlock = ({
t, t,
headingText, headingText,
kindLabelText, kindLabelText,
isTypeSelected, isTypeSelected,
selectedTypeDisplay, selectedTypeDisplay,
representationType,
setTypeSelectionConfirmed,
onRepresentationTypeChange,
onTypeSelectionConfirmed,
optionsArr, optionsArr,
validate, validate,
errorMsg errorMsg
}) => { }) => {
const enhancedOptions = (optionsArr || [])
.filter((option) => option && option !== "Select...")
.map((option) => ({
value: option,
label: getRepresentationTypeLabel(option),
hint: getRepresentationTypeHint(option, t)
}));
const hasSelectableOptions = enhancedOptions.length > 0;
return ( return (
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
@@ -137,59 +20,20 @@ const RepresentationTypeSelectorBlock = ({
<h2 className="govuk-heading-m ">{headingText}</h2> <h2 className="govuk-heading-m ">{headingText}</h2>
<label <label
className="govuk-label govuk-body-m govuk-!-margin-bottom-2" className="govuk-label govuk-body-m"
htmlFor="representationType" htmlFor="representationType"
> >
{kindLabelText} {kindLabelText}
</label> </label>
{hasSelectableOptions ? ( <Field
<> name="representationType"
<Field component={RenderPickList}
name="representationType" datafieldname="representationType"
component={ validate={validate}
RenderRepresentationTypeRadioList optionsArr={optionsArr}
} errorMsg={errorMsg}
onRepresentationTypeChange={ />
onRepresentationTypeChange
}
validate={validate}
optionsArr={enhancedOptions}
errorMsg={errorMsg}
/>
<button
type="button"
className="govuk-button"
data-module="govuk-button"
disabled={!representationType}
onClick={() => {
if (representationType) {
setTypeSelectionConfirmed(true);
onTypeSelectionConfirmed &&
onTypeSelectionConfirmed(
representationType
);
}
}}
>
{t("common:continue-button")}
</button>
</>
) : (
<>
<p className="govuk-body">
{t(
"myrepresentations:representation-type-unavailable-label"
)}
</p>
<Link className="govuk-link" href="/">
{t(
"myrepresentations:return-home-link-label"
)}
</Link>
</>
)}
</> </>
) : ( ) : (
<label className="govuk-label govuk-body-m"> <label className="govuk-label govuk-body-m">
+259 -57
View File
@@ -52,18 +52,12 @@ import {
buildSubmitEnrichedValues, buildSubmitEnrichedValues,
runFinalisationSequence runFinalisationSequence
} from "./utils/finalisationBoundary"; } from "./utils/finalisationBoundary";
import { buildRepresentationContext } from "./utils/buildRepsArrRules";
import { getAvailableRepresentationTypes } from "../../../lib/domain/representation-type-policy/getAvailableRepresentationTypes";
let MakeRepresentation = (props) => { let MakeRepresentation = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
const [savingStatus, setSavingStatus] = useState(false); const [savingStatus, setSavingStatus] = useState(false);
const [finaliseAppealProcess, setFinaliseAppealProcess] = useState(false); const [finaliseAppealProcess, setFinaliseAppealProcess] = useState(false);
const [representationTypeConfirmed, setRepresentationTypeConfirmed] =
useState(
!!props?.currentView?.caseReference?.repDetails?.representationType
);
//const [questionnaireCount, setQuestionnaireCount] = useState(0); //const [questionnaireCount, setQuestionnaireCount] = useState(0);
@@ -255,14 +249,9 @@ let MakeRepresentation = (props) => {
var detailsObj = {}; var detailsObj = {};
// const isAppellant =
// props.props.accountDetails.accountDetails.pinswg_typeofinvolvement ===
// 846040001;
const isAppellant = const isAppellant =
props.props.accountDetails.accountDetails.emailaddress1 == props.props.accountDetails.accountDetails.pinswg_typeofinvolvement ===
props.searchResultsObj?.searchResultsObj?.value[0].customerid_contact 846040001;
.emailaddress1;
const capacityOptionsArr = []; const capacityOptionsArr = [];
@@ -314,25 +303,259 @@ let MakeRepresentation = (props) => {
const safeDetailsObj = detailsObj || {}; const safeDetailsObj = detailsObj || {};
const safeResultsObj = resultsObj || {}; const safeResultsObj = resultsObj || {};
// blocked out build reps arr for refactoring
// const buildRepsArr = (detailsObj) => {
// const buildArr = [];
// const todaysDate = new Date();
// const isDNS = appealType === 846040011;
// const isSIPS = appealType === 846040002;
// const isIP = true;
// const isAppellant =
// props.props.accountDetails.accountDetails
// .pinswg_typeofinvolvement === 846040001;
// // Determine key dates based on appeal type
// const startDate = new Date(
// isDNS
// ? detailsObj.pinswg_applicationacceptedasvalid
// : detailsObj.pinswg_startdate || detailsObj.pinswg_startdates
// );
// const questionnaireDate = new Date(
// isDNS
// ? detailsObj.pinswg_endofrepresentationperiod
// : detailsObj.pinswg_questionnaireduedate
// );
// questionnaireDate.setHours(23, 59, 59, 999);
// const finalCommentsDate = new Date(
// isDNS
// ? detailsObj.pinswg_endofrepresentationperiod
// : detailsObj.pinswg_finalcommentsduedate
// );
// finalCommentsDate.setHours(23, 59, 59, 999);
// const statementDueDate = new Date(
// isDNS
// ? detailsObj.pinswg_endofrepresentationperiod
// : detailsObj.pinswg_statementduedate ||
// detailsObj.pinswg_statementsduedate
// );
// statementDueDate.setHours(23, 59, 59, 999);
// // Shared condition
// const isWithin = (start, end) =>
// todaysDate >= start && todaysDate <= end;
// const notAppeal = (...types) => !types.includes(appealType);
// // Questionnaire
// if (
// isLPA &&
// notAppeal(846040019, 846040011, 846040015, 846040016) &&
// isWithin(startDate, finalCommentsDate)
// ) {
// buildArr.push("Questionnaire");
// }
// // DNS LPA Documents
// if (
// isLPA &&
// isDNS &&
// appealType !== 846040019 &&
// isWithin(startDate, finalCommentsDate)
// ) {
// buildArr.push("Local Impact Report", "Statement");
// }
// // Non-DNS Statement
// if (
// !isDNS &&
// appealType !== 846040004 &&
// isWithin(startDate, statementDueDate)
// ) {
// buildArr.push("Statement");
// }
// // DNS Non-LPA Statement
// if (isDNS && !isLPA && isWithin(startDate, statementDueDate)) {
// buildArr.push("Statement");
// }
// // Final Comments
// const isSpecialistNonHearing =
// currentView.caseReference.specialistProcess !== 846040001;
// if (
// (appealType !== 846040004 ||
// (appealType === 846040015 && isSpecialistNonHearing)) &&
// isWithin(statementDueDate, finalCommentsDate)
// ) {
// buildArr.push("Final comments");
// }
// if (
// appealType === 846040004 &&
// isSpecialistNonHearing &&
// isWithin(statementDueDate, finalCommentsDate)
// ) {
// buildArr.push("Final comments");
// }
// // Remove "Statement" for LPA Advert Part 3 (no statement)
// if (
// isLPA &&
// appealType === 846040018 &&
// currentView.caseReference.specialistProcess === 846040000
// ) {
// const index = buildArr.indexOf("Statement");
// if (index !== -1) buildArr.splice(index, 1);
// }
// // SIPS-related documents
// if (isSIPS) {
// const capacity = repCapacityType();
// if (capacity === "appellant") {
// buildArr.push("Consultation Response");
// } else {
// buildArr.push("Consultation Response", "Local Impact Report");
// }
// if (isNRW) {
// buildArr.push("Marine Impact Report");
// }
// }
// return buildArr;
// };
const buildRepsArr = (detailsObj) => { const buildRepsArr = (detailsObj) => {
const isCaseOwner = const buildArr = [];
props.props.accountDetails.accountDetails.emailaddress1 == const todaysDate = new Date();
props.searchResultsObj?.searchResultsObj?.value[0]
.customerid_contact.emailaddress1;
const ctx = buildRepresentationContext({ const isDNS = appealType === 846040011;
detailsObj, const isSIPS = appealType === 846040002;
appealType, const specialistProcess = currentView.caseReference.specialistProcess;
specialistProcess: currentView.caseReference.specialistProcess,
involvementType:
props.props?.accountDetails?.accountDetails
?.pinswg_typeofinvolvement,
selectedCapacity: repCapacityType(),
isCaseOwner,
isNRW
});
return getAvailableRepresentationTypes(ctx); const isSpecialistNonHearing = specialistProcess !== 846040001;
const involvementType =
props.props?.accountDetails?.accountDetails
?.pinswg_typeofinvolvement;
const isAppellant = involvementType === 846040001;
const isAgent = involvementType === 846040000;
const isIP = involvementType === 846040061;
//const isLPA = involvementType === 846040000;
const startDate = new Date(
isDNS
? detailsObj.pinswg_applicationacceptedasvalid
: detailsObj.pinswg_startdate || detailsObj.pinswg_startdates
);
const finalCommentsDate = new Date(
isDNS
? detailsObj.pinswg_endofrepresentationperiod
: detailsObj.pinswg_finalcommentsduedate
);
finalCommentsDate.setHours(23, 59, 59, 999);
const statementDueDate = new Date(
isDNS
? detailsObj.pinswg_endofrepresentationperiod
: detailsObj.pinswg_statementduedate ||
detailsObj.pinswg_statementsduedate
);
statementDueDate.setHours(23, 59, 59, 999);
const isWithin = (start, end) =>
todaysDate >= start && todaysDate <= end;
const addRep = (value) => {
if (!buildArr.includes(value)) {
buildArr.push(value);
}
};
const canAddQuestionnaire =
isLPA &&
![846040019, 846040011, 846040015, 846040016].includes(
appealType
) &&
isWithin(startDate, finalCommentsDate);
if (canAddQuestionnaire) {
addRep("Questionnaire");
}
const isLpaAdvertPart3NoStatement =
isLPA &&
appealType === 846040018 &&
specialistProcess === 846040000;
const canAddDnsLpaDocs =
isLPA &&
isDNS &&
appealType !== 846040019 &&
!isAppellant &&
isWithin(startDate, finalCommentsDate);
if (canAddDnsLpaDocs) {
addRep("Local Impact Report");
addRep("Statement");
}
const canAddStatementForNonDns =
!isDNS &&
appealType !== 846040004 &&
!isLpaAdvertPart3NoStatement &&
!isAppellant &&
isWithin(startDate, statementDueDate);
if (canAddStatementForNonDns) {
addRep("Statement");
}
const canAddStatementForDnsNonLpa =
isDNS &&
!isLPA &&
!isAppellant &&
isWithin(startDate, statementDueDate);
if (canAddStatementForDnsNonLpa) {
addRep("Statement");
}
const canSubmitFinalComments = isAppellant || isAgent || isIP || isLPA;
const canAddFinalComments =
canSubmitFinalComments &&
isWithin(statementDueDate, finalCommentsDate) &&
(appealType !== 846040004 || isSpecialistNonHearing);
// IP and Agents and LPA can do final comments.
if (canAddFinalComments) {
addRep("Final comments");
}
if (isSIPS) {
const capacity = repCapacityType();
addRep("Consultation Response");
if (capacity !== "appellant") {
addRep("Local Impact Report");
}
if (isNRW) {
addRep("Marine Impact Report");
}
}
return buildArr;
}; };
const repCapacityType = () => { const repCapacityType = () => {
@@ -363,10 +586,7 @@ let MakeRepresentation = (props) => {
updateRepresentation, updateRepresentation,
setSavingStatus, setSavingStatus,
savingStatus, savingStatus,
setCurrentReference, setCurrentReference
onRepresentationTypeChange: () =>
setRepresentationTypeConfirmed(false),
onTypeSelectionConfirmed: () => setRepresentationTypeConfirmed(true)
}; };
const { controlKey } = resolveRepresentationControlKey({ const { controlKey } = resolveRepresentationControlKey({
@@ -571,7 +791,7 @@ let MakeRepresentation = (props) => {
loggedinUserEmail loggedinUserEmail
} = props.props; } = props.props;
const incidentID = props.appealType.caseReference.incidentid; const incidentID = props.appealType.caseReference.incidentid;
const currentRef = caseReferenceObj.ticketnumber; const currentRef = caseReferenceObj.currentReference;
const containerID = accountDetails.containerID; const containerID = accountDetails.containerID;
setSavingStatus(useSaveStatus); setSavingStatus(useSaveStatus);
@@ -872,29 +1092,15 @@ let MakeRepresentation = (props) => {
// Prepare data object for upload // Prepare data object for upload
const dataObj = cleanedValues; const dataObj = cleanedValues;
const caseFolderReference =
props.caseReference ||
dataObj.ticketnumber ||
currentView?.caseReference?.ticketnumber ||
currentView?.caseReference?.currentReference ||
dataObj.caseRef ||
"";
// Update links on values // Update links on values
const updatedValues = updateLinks(cleanedValues); const updatedValues = updateLinks(cleanedValues);
const resolvedContainerID =
updatedValues.containerID ||
dataObj.containerID ||
props?.props?.accountDetails?.containerID ||
props?.props?.accountDetails?.accountDetails?.containerID;
// Perform file upload and return the promise // Perform file upload and return the promise
return uploadRepFiles( return uploadRepFiles(
dataObj, dataObj,
[{}], [{}],
resolvedContainerID, updatedValues.containerID,
`${caseFolderReference}/${dataObj.repfile_name}` `${props.caseReference}/${dataObj.repfile_name}`
); );
}; };
@@ -902,7 +1108,7 @@ let MakeRepresentation = (props) => {
const isQuestionnaire = const isQuestionnaire =
formObj?.representationForm?.values?.representationType === formObj?.representationForm?.values?.representationType ===
"Questionnaire" && representationTypeConfirmed; "Questionnaire";
const appealIsConsultation = appealType === 846040002; const appealIsConsultation = appealType === 846040002;
const appealIsLocalImpact = const appealIsLocalImpact =
@@ -1004,12 +1210,8 @@ let MakeRepresentation = (props) => {
<RepresentationFlowFormStage <RepresentationFlowFormStage
t={t} t={t}
appealIsConsultation={appealIsConsultation} appealIsConsultation={appealIsConsultation}
currentReference={ticketnumber} currentReference={
caseTitle={ currentView.caseReference.currentReference
currentView?.caseReference?.repDetails
?.pinswg_name ||
currentView?.currentReference ||
currentView?.caseReference.currentReference
} }
whichControl={whichControl} whichControl={whichControl}
appealIsLocalImpact={appealIsLocalImpact} appealIsLocalImpact={appealIsLocalImpact}
@@ -2,7 +2,7 @@ import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Field, change, reduxForm } from "redux-form"; import { Field, change, reduxForm } from "redux-form";
import { useEffect, useState } from "react"; import { useState } from "react";
import { bytesToSize, getThumbnailIconByExtension } from "../../utils"; import { bytesToSize, getThumbnailIconByExtension } from "../../utils";
import { import {
@@ -36,24 +36,10 @@ const RepAgent = (props) => {
updateRepresentation, updateRepresentation,
setSavingStatus, setSavingStatus,
savingStatus, savingStatus,
setFilesForRepresentations, setFilesForRepresentations
onRepresentationTypeChange,
onTypeSelectionConfirmed
} = props; } = props;
const { acceptedFiles, getRootProps, getInputProps } = useDropzone(); const { acceptedFiles, getRootProps, getInputProps } = useDropzone();
const persistedRepresentationType =
currentView?.caseReference?.repDetails?.representationType;
const [typeSelectionConfirmed, setTypeSelectionConfirmed] = useState(
!!persistedRepresentationType
);
useEffect(() => {
if (persistedRepresentationType) {
setTypeSelectionConfirmed(true);
}
}, [persistedRepresentationType]);
if (JSON.stringify(formObj) != "{}") { if (JSON.stringify(formObj) != "{}") {
setRepFileName(formObj.representationForm.values); setRepFileName(formObj.representationForm.values);
@@ -78,23 +64,23 @@ const RepAgent = (props) => {
)); ));
const required = (value) => (value ? undefined : "Required"); const required = (value) => (value ? undefined : "Required");
const selectedRepresentationType = const hasTypeSelectionInline =
formObj?.representationForm?.values?.representationType || typeof formObj.representationForm.values.representationType ==
props.representationType; "undefined" && props.representationType != "Select...";
const isTypeConfirmed =
!!selectedRepresentationType && typeSelectionConfirmed;
const selectedRepresentationTypeDisplay = const selectedRepresentationTypeDisplay =
router.locale == "cy" router.locale == "cy"
? selectedRepresentationType == "Questionnaire" ? formObj.representationForm.values.representationType ==
"Questionnaire"
? "Holiadur" ? "Holiadur"
: selectedRepresentationType == "Statement" : formObj.representationForm.values.representationType ==
"Statement"
? "Datganiad" ? "Datganiad"
: selectedRepresentationType == "Final comments" : formObj.representationForm.values.representationType ==
"Final comments"
? "Sylwadau terfynol" ? "Sylwadau terfynol"
: selectedRepresentationType : formObj.representationForm.values.representationType
: selectedRepresentationType; : formObj.representationForm.values.representationType;
const handleSaveExit = () => { const handleSaveExit = () => {
let valuesObj = props.props.props.form[props.form].values || {}; let valuesObj = props.props.props.form[props.form].values || {};
@@ -112,15 +98,13 @@ const RepAgent = (props) => {
"myrepresentations:representation-from-an-agent-heading" "myrepresentations:representation-from-an-agent-heading"
)} )}
kindLabelText={t("myrepresentations:kind-of-rep-label")} kindLabelText={t("myrepresentations:kind-of-rep-label")}
isTypeSelected={isTypeConfirmed} isTypeSelected={!hasTypeSelectionInline}
selectedTypeDisplay={selectedRepresentationTypeDisplay} selectedTypeDisplay={selectedRepresentationTypeDisplay}
representationType={selectedRepresentationType}
setTypeSelectionConfirmed={setTypeSelectionConfirmed}
onRepresentationTypeChange={onRepresentationTypeChange}
onTypeSelectionConfirmed={onTypeSelectionConfirmed}
optionsArr={appellantApplicantRepresentationArr} optionsArr={appellantApplicantRepresentationArr}
/> />
{isTypeConfirmed && ( {(typeof props.representationType != "undefined" ||
typeof formObj.representationForm.values
.representationType != "undefined") && (
<> <>
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
@@ -243,7 +227,8 @@ const RepAgent = (props) => {
</div> </div>
</> </>
)} )}
{isTypeConfirmed && ( {typeof formObj.representationForm.values.representationType !=
"undefined" && (
<RepresentationActionButtons <RepresentationActionButtons
t={t} t={t}
locale={router.locale} locale={router.locale}
@@ -2,11 +2,12 @@ import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Field, change, reduxForm } from "redux-form"; import { Field, change, reduxForm } from "redux-form";
import { useEffect, useState } from "react"; import { useState } from "react";
import { bytesToSize, getThumbnailIconByExtension } from "../../utils"; import { bytesToSize, getThumbnailIconByExtension } from "../../utils";
import { import {
FileUploadField, FileUploadField,
RenderPickList,
RenderRichMultiline, RenderRichMultiline,
shouldDisableButton shouldDisableButton
} from "./representationElements"; } from "./representationElements";
@@ -35,24 +36,10 @@ const RepAppellant = (props) => {
updateRepresentation, updateRepresentation,
setSavingStatus, setSavingStatus,
savingStatus, savingStatus,
setFilesForRepresentations, setFilesForRepresentations
onRepresentationTypeChange,
onTypeSelectionConfirmed
} = props; } = props;
const { acceptedFiles, getRootProps, getInputProps } = useDropzone(); const { acceptedFiles, getRootProps, getInputProps } = useDropzone();
const persistedRepresentationType =
currentView?.caseReference?.repDetails?.representationType;
const [typeSelectionConfirmed, setTypeSelectionConfirmed] = useState(
!!persistedRepresentationType
);
useEffect(() => {
if (persistedRepresentationType) {
setTypeSelectionConfirmed(true);
}
}, [persistedRepresentationType]);
console.log(JSON.stringify(formObj) == "{}" ? "empty" : "value"); console.log(JSON.stringify(formObj) == "{}" ? "empty" : "value");
if (JSON.stringify(formObj) != "{}") { if (JSON.stringify(formObj) != "{}") {
@@ -77,23 +64,23 @@ const RepAppellant = (props) => {
index === self.findIndex((t) => t.name === value.name) index === self.findIndex((t) => t.name === value.name)
); );
const selectedRepresentationType = const hasTypeSelectionInline =
formObj?.representationForm?.values?.representationType || typeof formObj.representationForm.values.representationType ==
props.representationType; "undefined" && props.representationType != "Select...";
const isTypeConfirmed =
!!selectedRepresentationType && typeSelectionConfirmed;
const selectedRepresentationTypeDisplay = const selectedRepresentationTypeDisplay =
router.locale == "cy" router.locale == "cy"
? selectedRepresentationType == "Questionnaire" ? formObj.representationForm.values.representationType ==
"Questionnaire"
? "Holiadur" ? "Holiadur"
: selectedRepresentationType == "Statement" : formObj.representationForm.values.representationType ==
"Statement"
? "Datganiad" ? "Datganiad"
: selectedRepresentationType == "Final comments" : formObj.representationForm.values.representationType ==
"Final comments"
? "Sylwadau terfynol" ? "Sylwadau terfynol"
: selectedRepresentationType : formObj.representationForm.values.representationType
: selectedRepresentationType; : formObj.representationForm.values.representationType;
const handleSaveExit = () => { const handleSaveExit = () => {
let valuesObj = props.props.props.form[props.form].values || {}; let valuesObj = props.props.props.form[props.form].values || {};
@@ -111,15 +98,13 @@ const RepAppellant = (props) => {
"myrepresentations:representation-from-an-appellant-heading" "myrepresentations:representation-from-an-appellant-heading"
)} )}
kindLabelText={t("myrepresentations:kind-of-rep-label")} kindLabelText={t("myrepresentations:kind-of-rep-label")}
isTypeSelected={isTypeConfirmed} isTypeSelected={!hasTypeSelectionInline}
selectedTypeDisplay={selectedRepresentationTypeDisplay} selectedTypeDisplay={selectedRepresentationTypeDisplay}
representationType={selectedRepresentationType}
setTypeSelectionConfirmed={setTypeSelectionConfirmed}
onRepresentationTypeChange={onRepresentationTypeChange}
onTypeSelectionConfirmed={onTypeSelectionConfirmed}
optionsArr={appellantApplicantRepresentationArr} optionsArr={appellantApplicantRepresentationArr}
/> />
{isTypeConfirmed && ( {(typeof props.representationType != "undefined" ||
typeof formObj.representationForm.values
.representationType != "undefined") && (
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
<p className="govuk-body"> <p className="govuk-body">
@@ -235,7 +220,8 @@ const RepAppellant = (props) => {
</div> </div>
)} )}
{isTypeConfirmed && ( {typeof formObj.representationForm.values.representationType !=
"undefined" && (
<RepresentationActionButtons <RepresentationActionButtons
t={t} t={t}
locale={router.locale} locale={router.locale}
@@ -66,8 +66,7 @@ const RepComplete = (props) => {
(props.props.currentView.representationMessageSent != true && (props.props.currentView.representationMessageSent != true &&
(setRepInvolvment( (setRepInvolvment(
props.props.currentView.caseReference.incidentid, props.props.currentView.caseReference.incidentid,
props.props.props.props.accountDetails.accountDetails.contactid, props.props.props.props.accountDetails.accountDetails.contactid
props.props.currentView.representationCapacity
), ),
sendRepCompleteMessage( sendRepCompleteMessage(
props.props.props.props.accountDetails.containerID, props.props.props.props.accountDetails.containerID,
@@ -1,3 +1,4 @@
import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { useState } from "react"; import { useState } from "react";
@@ -12,7 +13,6 @@ import {
bytesToSize, bytesToSize,
getThumbnailIconByExtension, getThumbnailIconByExtension,
formatDates, formatDates,
hasOwn,
updateLinks, updateLinks,
getDocLink getDocLink
} from "../../utils"; } from "../../utils";
@@ -233,41 +233,35 @@ const RepCompleteSubmit = (props) => {
let filterFiles = []; let filterFiles = [];
function showRepsEnded(endDate) { function showRepsEnded(endDate) {
if (!endDate) { let date = new Date();
return false; date = new Date(date.toDateString());
} let end = new Date(endDate);
end.setUTCHours(23);
end.setUTCMinutes(59);
end.setUTCSeconds(59);
end.toISOString();
const end = new Date(endDate); return end > date ? false : true;
if (Number.isNaN(end.getTime())) {
return false;
}
const today = new Date();
today.setHours(0, 0, 0, 0);
end.setHours(23, 59, 59, 999);
return end <= today;
} }
const checkRepDatePassed = () => { const checkRepDatePassed = () => {
if (repFormData.representationType === "Questionnaire") { if (repFormData.representationType == "Questionnaire") {
return false; return false;
} else {
if (repFormData.representationType == "Final comments") {
return repFormData.hasOwnProperty(
"pinswg_finalcommentsduedate"
) && showRepsEnded(repFormData.pinswg_finalcommentsduedate)
? true
: false;
}
if (repFormData.representationType == "Statement") {
return repFormData.hasOwnProperty("pinswg_statementduedate") &&
showRepsEnded(repFormData.pinswg_statementduedate)
? true
: false;
}
} }
if (repFormData.representationType === "Final comments") {
return showRepsEnded(repFormData.pinswg_finalcommentsduedate);
}
if (repFormData.representationType === "Statement") {
return (
showRepsEnded(repFormData.pinswg_statementduedate) ||
showRepsEnded(repFormData.pinswg_endofrepresentationperiod)
);
}
return false;
}; };
const triggerQuestionnaireDownload = async () => { const triggerQuestionnaireDownload = async () => {
@@ -405,7 +399,7 @@ const RepCompleteSubmit = (props) => {
</a> */} </a> */}
</dd> </dd>
</div> </div>
{hasOwn( {_.has(
repFormData, repFormData,
"representationOnBehalfOf" "representationOnBehalfOf"
) && ( ) && (
@@ -1,7 +1,6 @@
import { JSONPath as jsonpath } from "jsonpath-plus"; import { JSONPath as jsonpath } from "jsonpath-plus";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { hasOwn } from "../../utils";
const RepDetails = (props) => { const RepDetails = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -18,8 +17,8 @@ const RepDetails = (props) => {
? props.myRepresentations.myRepresentations ? props.myRepresentations.myRepresentations
: props.searchResultsObj.searchDetailsObj : props.searchResultsObj.searchDetailsObj
: props.currentType == "watchedCases" : props.currentType == "watchedCases"
? props.props.props.props.watchedCases.watchedCasesDetails ? props.props.props.props.watchedCases.watchedCasesDetails
: props.props.props.searchResultsObj.searchDetailsObj; : props.props.props.searchResultsObj.searchDetailsObj;
var detailsObj = {}; var detailsObj = {};
@@ -32,7 +31,7 @@ const RepDetails = (props) => {
detailsObj = jsonpath({ detailsObj = jsonpath({
path: '$..[?(@ && @.ticketnumber=="' + ticketnumber + '")]', path: '$..[?(@ && @.ticketnumber=="' + ticketnumber + '")]',
json: setCaseDetailsObj, json: setCaseDetailsObj,
eval: true eval: true,
}); });
detailsObj = detailsObj[0]; detailsObj = detailsObj[0];
@@ -62,43 +61,34 @@ const RepDetails = (props) => {
{t("case:summary-site-address-label")} {t("case:summary-site-address-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(detailsObj, "pinswg_siteaddressline1") {_.has(detailsObj, "pinswg_siteaddressline1")
? detailsObj.pinswg_siteaddressline1 ? detailsObj.pinswg_siteaddressline1
: ""} : ""}
{hasOwn( {_.has(detailsObj, "pinswg_siteaddressline1") &&
detailsObj,
"pinswg_siteaddressline1"
) &&
detailsObj.pinswg_siteaddressline1 != detailsObj.pinswg_siteaddressline1 !=
null && <br />} null && <br />}
{hasOwn(detailsObj, "pinswg_siteaddressline2") {_.has(detailsObj, "pinswg_siteaddressline2")
? detailsObj.pinswg_siteaddressline2 ? detailsObj.pinswg_siteaddressline2
: ""} : ""}
{hasOwn( {_.has(detailsObj, "pinswg_siteaddressline2") &&
detailsObj,
"pinswg_siteaddressline2"
) &&
detailsObj.pinswg_siteaddressline2 != detailsObj.pinswg_siteaddressline2 !=
null && <br />} null && <br />}
{hasOwn(detailsObj, "pinswg_siteaddresstown") {_.has(detailsObj, "pinswg_siteaddresstown")
? detailsObj.pinswg_siteaddresstown ? detailsObj.pinswg_siteaddresstown
: ""} : ""}
{hasOwn(detailsObj, "pinswg_siteaddresstown") && {_.has(detailsObj, "pinswg_siteaddresstown") &&
detailsObj.pinswg_siteaddresstown != detailsObj.pinswg_siteaddresstown !=
null && <br />} null && <br />}
{hasOwn(detailsObj, "pinswg_siteaddresscounty") {_.has(detailsObj, "pinswg_siteaddresscounty")
? detailsObj.pinswg_siteaddresscounty ? detailsObj.pinswg_siteaddresscounty
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresscounty" "pinswg_siteaddresscounty"
) && ) &&
detailsObj.pinswg_siteaddresscounty != detailsObj.pinswg_siteaddresscounty !=
null && <br />} null && <br />}
{hasOwn( {_.has(detailsObj, "pinswg_siteaddresspostcode")
detailsObj,
"pinswg_siteaddresspostcode"
)
? detailsObj.pinswg_siteaddresspostcode ? detailsObj.pinswg_siteaddresspostcode
: ""} : ""}
</dd> </dd>
@@ -2,7 +2,7 @@ import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Field, change, reduxForm } from "redux-form"; import { Field, change, reduxForm } from "redux-form";
import { useEffect, useState } from "react"; import { useState } from "react";
import { bytesToSize, getThumbnailIconByExtension } from "../../utils"; import { bytesToSize, getThumbnailIconByExtension } from "../../utils";
import { import {
@@ -35,26 +35,12 @@ const RepInterestedPartyPerson = (props) => {
updateRepresentation, updateRepresentation,
setSavingStatus, setSavingStatus,
savingStatus, savingStatus,
setFilesForRepresentations, setFilesForRepresentations
onRepresentationTypeChange,
onTypeSelectionConfirmed
} = props; } = props;
const required = (value) => (value ? undefined : "Required"); const required = (value) => (value ? undefined : "Required");
const { acceptedFiles, getRootProps, getInputProps } = useDropzone(); const { acceptedFiles, getRootProps, getInputProps } = useDropzone();
const persistedRepresentationType =
props.currentView?.caseReference?.repDetails?.representationType;
const [typeSelectionConfirmed, setTypeSelectionConfirmed] = useState(
!!persistedRepresentationType
);
useEffect(() => {
if (persistedRepresentationType) {
setTypeSelectionConfirmed(true);
}
}, [persistedRepresentationType]);
if (JSON.stringify(formObj) != "{}") { if (JSON.stringify(formObj) != "{}") {
setRepFileName(formObj.representationForm.values); setRepFileName(formObj.representationForm.values);
@@ -78,23 +64,23 @@ const RepInterestedPartyPerson = (props) => {
</li> </li>
)); ));
const selectedRepresentationType = const hasTypeSelectionInline =
formObj?.representationForm?.values?.representationType || typeof formObj.representationForm.values.representationType ==
props.representationType; "undefined" && props.representationType != "Select...";
const isTypeConfirmed =
!!selectedRepresentationType && typeSelectionConfirmed;
const selectedRepresentationTypeDisplay = const selectedRepresentationTypeDisplay =
router.locale == "cy" router.locale == "cy"
? selectedRepresentationType == "Questionnaire" ? formObj.representationForm.values.representationType ==
"Questionnaire"
? "Holiadur" ? "Holiadur"
: selectedRepresentationType == "Statement" : formObj.representationForm.values.representationType ==
"Statement"
? "Datganiad" ? "Datganiad"
: selectedRepresentationType == "Final comments" : formObj.representationForm.values.representationType ==
"Final comments"
? "Sylwadau terfynol" ? "Sylwadau terfynol"
: selectedRepresentationType : formObj.representationForm.values.representationType
: selectedRepresentationType; : formObj.representationForm.values.representationType;
const handleSaveExit = () => { const handleSaveExit = () => {
let valuesObj = props.props.props.form[props.form].values || {}; let valuesObj = props.props.props.form[props.form].values || {};
@@ -109,20 +95,18 @@ const RepInterestedPartyPerson = (props) => {
<RepresentationTypeSelectorBlock <RepresentationTypeSelectorBlock
t={t} t={t}
headingText={t( headingText={t(
"myrepresentations:representation-from-an-interested-person-heading" "myrepresentations:consultation-from-an-interested-person-heading"
)} )}
kindLabelText={t("myrepresentations:kind-of-rep-label")} kindLabelText={t("myrepresentations:kind-of-rep-label")}
isTypeSelected={isTypeConfirmed} isTypeSelected={!hasTypeSelectionInline}
selectedTypeDisplay={selectedRepresentationTypeDisplay} selectedTypeDisplay={selectedRepresentationTypeDisplay}
representationType={selectedRepresentationType}
setTypeSelectionConfirmed={setTypeSelectionConfirmed}
onRepresentationTypeChange={onRepresentationTypeChange}
onTypeSelectionConfirmed={onTypeSelectionConfirmed}
optionsArr={interestedPersonRepresentationArr} optionsArr={interestedPersonRepresentationArr}
validate={[required]} validate={[required]}
errorMsg={t("myrepresentations:select-an-option-label")} errorMsg={t("myrepresentations:select-an-option-label")}
/> />
{isTypeConfirmed && ( {(typeof props.representationType != "undefined" ||
typeof formObj.representationForm.values
.representationType != "undefined") && (
<> <>
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
@@ -229,7 +213,8 @@ const RepInterestedPartyPerson = (props) => {
</div> </div>
</> </>
)} )}
{isTypeConfirmed && ( {typeof formObj.representationForm.values.representationType !=
"undefined" && (
<RepresentationActionButtons <RepresentationActionButtons
t={t} t={t}
locale={router.locale} locale={router.locale}
@@ -10,9 +10,9 @@ import { useState, useEffect } from "react";
import { import {
FileUploadField, FileUploadField,
RenderMultiline, RenderMultiline,
shouldDisableButton RenderPickList,
shouldDisableButton,
} from "./representationElements"; } from "./representationElements";
import RepresentationTypeSelectorBlock from "./elements/RepresentationTypeSelectorBlock";
import RepresentationProgress_enforcement from "./representationProgress/representationProgress_enforcement"; import RepresentationProgress_enforcement from "./representationProgress/representationProgress_enforcement";
import RepresentationProgress_s78 from "./representationProgress/representationProgress_s78"; import RepresentationProgress_s78 from "./representationProgress/representationProgress_s78";
import Enforcement_Questionnaire from "./representationQuestionnaires/representationLPAQuestionnaire_enforcement"; import Enforcement_Questionnaire from "./representationQuestionnaires/representationLPAQuestionnaire_enforcement";
@@ -23,7 +23,7 @@ import {
setRepresentationSubmit, setRepresentationSubmit,
setFilesForRepresentations, setFilesForRepresentations,
setCurrentPage, setCurrentPage,
setCurrentReference setCurrentReference,
} from "../../../store/currentView/action"; } from "../../../store/currentView/action";
let RepLPA = (props) => { let RepLPA = (props) => {
@@ -49,8 +49,6 @@ let RepLPA = (props) => {
setSavingStatus, setSavingStatus,
savingStatus, savingStatus,
setFilesForRepresentations, setFilesForRepresentations,
onRepresentationTypeChange,
onTypeSelectionConfirmed
} = props; } = props;
const { acceptedFiles, getRootProps, getInputProps } = useDropzone(); const { acceptedFiles, getRootProps, getInputProps } = useDropzone();
@@ -61,36 +59,6 @@ let RepLPA = (props) => {
)); ));
const required = (value) => (value ? undefined : "Required"); const required = (value) => (value ? undefined : "Required");
const persistedRepresentationType =
currentView?.caseReference?.repDetails?.representationType;
const [typeSelectionConfirmed, setTypeSelectionConfirmed] = useState(
!!persistedRepresentationType
);
useEffect(() => {
if (persistedRepresentationType) {
setTypeSelectionConfirmed(true);
}
}, [persistedRepresentationType]);
const selectedRepresentationType =
formObj?.representationForm?.values?.representationType ||
props.representationType;
const isTypeConfirmed =
!!selectedRepresentationType && typeSelectionConfirmed;
const selectedRepresentationTypeDisplay =
router.locale == "cy"
? selectedRepresentationType == "Questionnaire"
? "Holiadur"
: selectedRepresentationType == "Statement"
? "Datganiad"
: selectedRepresentationType == "Final comments"
? "Sylwadau terfynol"
: selectedRepresentationType
: selectedRepresentationType;
const whichQuestionnaire = () => { const whichQuestionnaire = () => {
{ {
switch (currentView.caseReference.appealType) { switch (currentView.caseReference.appealType) {
@@ -215,7 +183,7 @@ let RepLPA = (props) => {
currentView.caseReference.currentReference + currentView.caseReference.currentReference +
'")]', '")]',
json: setCaseDetailsObj, json: setCaseDetailsObj,
eval: true eval: true,
}); });
let setCaseResultssObj = router.query.hasOwnProperty("state") let setCaseResultssObj = router.query.hasOwnProperty("state")
@@ -234,7 +202,7 @@ let RepLPA = (props) => {
currentView.caseReference.currentReference + currentView.caseReference.currentReference +
'")]', '")]',
json: setCaseResultssObj, json: setCaseResultssObj,
eval: true eval: true,
}); });
resultsObj = resultsObj[0]; resultsObj = resultsObj[0];
@@ -257,26 +225,62 @@ let RepLPA = (props) => {
return ( return (
<> <>
<RepresentationTypeSelectorBlock
t={t}
headingText={t(
"myrepresentations:representation-from-an-lpa-heading"
)}
kindLabelText={t("myrepresentations:kind-of-rep-label")}
isTypeSelected={isTypeConfirmed}
selectedTypeDisplay={selectedRepresentationTypeDisplay}
representationType={selectedRepresentationType}
setTypeSelectionConfirmed={setTypeSelectionConfirmed}
onRepresentationTypeChange={onRepresentationTypeChange}
onTypeSelectionConfirmed={onTypeSelectionConfirmed}
optionsArr={appellantApplicantRepresentationArr}
validate={[required]}
errorMsg={t("myrepresentations:select-an-option-label")}
/>
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-form-group"> <div className="govuk-form-group">
{isTypeConfirmed && {!_.has(
(selectedRepresentationType != "Questionnaire" ? ( formObj["representationForm"],
["values", "representationType"] ||
typeof props.currentView.caseReference.repDetails !=
"undefined"
) ? (
<>
<label
className="govuk-label govuk-body-m"
htmlFor="representationType"
>
{t(
"myrepresentations:representation-from-an-lpa-heading"
)}
</label>
<Field
id="representationType"
name="representationType"
component={RenderPickList}
datafieldname="representationType"
optionsArr={appellantApplicantRepresentationArr}
/>
</>
) : (
<label className="govuk-label govuk-body-m">
{t("myrepresentations:representation-type")}:{" "}
{router.locale == "cy"
? formObj.representationForm.values
.representationType == "Questionnaire"
? "Holiadur"
: formObj.representationForm.values
.representationType == "Statement"
? "Datganiad"
: formObj.representationForm.values
.representationType ==
"Final comments"
? "Sylwadau terfynol"
: formObj.representationForm.values
.representationType
: formObj.representationForm.values
.representationType}
</label>
)}
</div>
</div>
<div className="govuk-grid-row">
<div className="govuk-form-group">
{(_.has(formObj["representationForm"], [
"values",
"representationType",
]) ||
typeof props.representationType != "undefined") &&
(props.representationType != "Questionnaire" &&
props.representationType != "Select..." ? (
<> <>
<p className="govuk-body"> <p className="govuk-body">
{t("myrepresentations:enter-comment-label")} {t("myrepresentations:enter-comment-label")}
@@ -350,8 +354,7 @@ let RepLPA = (props) => {
"myrepresentations:add-files-label" "myrepresentations:add-files-label"
)} )}
ticketnumber={ ticketnumber={
props.currentView.caseReference props.currentView.caseReference.ticketnumber
.ticketnumber
} }
hint={"sdsd"} hint={"sdsd"}
fileList={ fileList={
@@ -398,8 +401,9 @@ let RepLPA = (props) => {
</div> </div>
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-button-group"> <div className="govuk-button-group">
{isTypeConfirmed && {(typeof props.representationType != "undefined" ||
selectedRepresentationType == "Questionnaire" && ( _.has(formObj, "values", "representationType")) &&
props.representationType == "Questionnaire" && (
<> <>
{showQuestionnaireSection < {showQuestionnaireSection <
questionnaireCount && ( questionnaireCount && (
@@ -439,14 +443,14 @@ let RepLPA = (props) => {
// top: 0, // top: 0,
// behavior: "smooth", // behavior: "smooth",
// }); // });
(setRepFileName( setRepFileName(
props.formObj[ props.formObj[
"representationForm" "representationForm"
].values ].values
), ),
setShowQuestionnaireSection( setShowQuestionnaireSection(
showQuestionnaireSection - 1 showQuestionnaireSection - 1
)); );
}} }}
className="govuk-link" className="govuk-link"
> >
@@ -499,8 +503,9 @@ let RepLPA = (props) => {
)} )}
</> </>
)}{" "} )}{" "}
{isTypeConfirmed && {(typeof props.representationType != "undefined" ||
selectedRepresentationType != "Questionnaire" && ( _.has(formObj, "values", "representationType")) &&
props.representationType != "Questionnaire" && (
<> <>
<button <button
type="submit" type="submit"
@@ -508,7 +513,7 @@ let RepLPA = (props) => {
data-module="govuk-button" data-module="govuk-button"
disabled={shouldDisableButton({ disabled={shouldDisableButton({
props, props,
formObj formObj,
})} })}
onClick={() => { onClick={() => {
let valuesObj = let valuesObj =
@@ -607,7 +612,7 @@ RepLPA = connect((state) => {
return { return {
procedureType, procedureType,
representationType representationType,
}; };
})(RepLPA); })(RepLPA);
@@ -620,7 +625,7 @@ const mapDispatchToProps = (dispatch) => ({
}, },
setCurrentReference: (currentReference) => { setCurrentReference: (currentReference) => {
dispatch(setCurrentReference(currentReference)); dispatch(setCurrentReference(currentReference));
} },
}); });
const mapStateToProps = (state, props) => { const mapStateToProps = (state, props) => {
@@ -636,7 +641,8 @@ const mapStateToProps = (state, props) => {
], ],
"firstname": "firstname":
props.props.props.accountDetails.accountDetails.firstname, props.props.props.accountDetails.accountDetails.firstname,
"lastname": props.props.props.accountDetails.accountDetails.lastname "lastname":
props.props.props.accountDetails.accountDetails.lastname,
} }
); );
return { return {
@@ -647,7 +653,7 @@ const mapStateToProps = (state, props) => {
currentView: state.currentView, currentView: state.currentView,
myRepresentations: state.myRepresentations, myRepresentations: state.myRepresentations,
watchedCases: state.watchedCases, watchedCases: state.watchedCases,
initialValues: initialValuesTemp initialValues: initialValuesTemp,
}; };
}; };
@@ -658,6 +664,6 @@ export default connect(
reduxForm({ reduxForm({
form: "representationForm", form: "representationForm",
enableReinitialize: true, enableReinitialize: true,
destroyOnUnmount: false destroyOnUnmount: false,
})(RepLPA) })(RepLPA)
); );
@@ -1,7 +1,6 @@
import { JSONPath as jsonpath } from "jsonpath-plus"; import { JSONPath as jsonpath } from "jsonpath-plus";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { hasOwn } from "../../utils";
const RepLPADetails = (props) => { const RepLPADetails = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -16,15 +15,15 @@ const RepLPADetails = (props) => {
? props.props.myRepresentations.myRepresentations ? props.props.myRepresentations.myRepresentations
: props.searchResultsObj.searchDetailsObj : props.searchResultsObj.searchDetailsObj
: props.currentType == "watchedCases" : props.currentType == "watchedCases"
? props.props.props.watchedCases.watchedCasesDetails ? props.props.props.watchedCases.watchedCasesDetails
: props.props.searchResultsObj.searchDetailsObj; : props.props.searchResultsObj.searchDetailsObj;
var detailsObj = {}; var detailsObj = {};
detailsObj = jsonpath({ detailsObj = jsonpath({
path: '$..[?(@ && @.ticketnumber=="' + ticketnumber + '")]', path: '$..[?(@ && @.ticketnumber=="' + ticketnumber + '")]',
json: setCaseDetailsObj, json: setCaseDetailsObj,
eval: true eval: true,
}); });
detailsObj = detailsObj[0]; detailsObj = detailsObj[0];
@@ -52,43 +51,34 @@ const RepLPADetails = (props) => {
{t("case:summary-site-address-label")} {t("case:summary-site-address-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(detailsObj, "pinswg_siteaddressline1") {_.has(detailsObj, "pinswg_siteaddressline1")
? detailsObj.pinswg_siteaddressline1 ? detailsObj.pinswg_siteaddressline1
: ""} : ""}
{hasOwn( {_.has(detailsObj, "pinswg_siteaddressline1") &&
detailsObj,
"pinswg_siteaddressline1"
) &&
detailsObj.pinswg_siteaddressline1 != detailsObj.pinswg_siteaddressline1 !=
null && <br />} null && <br />}
{hasOwn(detailsObj, "pinswg_siteaddressline2") {_.has(detailsObj, "pinswg_siteaddressline2")
? detailsObj.pinswg_siteaddressline2 ? detailsObj.pinswg_siteaddressline2
: ""} : ""}
{hasOwn( {_.has(detailsObj, "pinswg_siteaddressline2") &&
detailsObj,
"pinswg_siteaddressline2"
) &&
detailsObj.pinswg_siteaddressline2 != detailsObj.pinswg_siteaddressline2 !=
null && <br />} null && <br />}
{hasOwn(detailsObj, "pinswg_siteaddresstown") {_.has(detailsObj, "pinswg_siteaddresstown")
? detailsObj.pinswg_siteaddresstown ? detailsObj.pinswg_siteaddresstown
: ""} : ""}
{hasOwn(detailsObj, "pinswg_siteaddresstown") && {_.has(detailsObj, "pinswg_siteaddresstown") &&
detailsObj.pinswg_siteaddresstown != detailsObj.pinswg_siteaddresstown !=
null && <br />} null && <br />}
{hasOwn(detailsObj, "pinswg_siteaddresscounty") {_.has(detailsObj, "pinswg_siteaddresscounty")
? detailsObj.pinswg_siteaddresscounty ? detailsObj.pinswg_siteaddresscounty
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresscounty" "pinswg_siteaddresscounty"
) && ) &&
detailsObj.pinswg_siteaddresscounty != detailsObj.pinswg_siteaddresscounty !=
null && <br />} null && <br />}
{hasOwn( {_.has(detailsObj, "pinswg_siteaddresspostcode")
detailsObj,
"pinswg_siteaddresspostcode"
)
? detailsObj.pinswg_siteaddresspostcode ? detailsObj.pinswg_siteaddresspostcode
: ""} : ""}
</dd> </dd>
@@ -1,5 +1,6 @@
import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { formatDates, hasOwn, updateLinks } from "../../../utils"; import { formatDates, updateLinks } from "../../../utils";
let RepLPAQuestionnaireCheck_s78 = (props) => { let RepLPAQuestionnaireCheck_s78 = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -10,7 +11,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
showQuestionnaireSection, showQuestionnaireSection,
setShowQuestionnaireSection, setShowQuestionnaireSection,
setRepresentationSubmit, setRepresentationSubmit,
questionnaireCount questionnaireCount,
} = props; } = props;
let repFormData = formObj.representationForm.values; let repFormData = formObj.representationForm.values;
@@ -21,7 +22,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<> <>
{showQuestionnaireSection} {showQuestionnaireSection}
{hasOwn(repFormData, "procedureType") && ( {_.has(repFormData, "procedureType") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -83,7 +84,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "enterToView") && ( {_.has(repFormData, "enterToView") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -116,7 +117,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</div> </div>
</> </>
)} )}
{hasOwn(repFormData, "enterNeighbouringLandToViewSite") && ( {_.has(repFormData, "enterNeighbouringLandToViewSite") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -159,7 +160,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.enterNeighbouringLandToViewSiteEvidence __html: repFormData.enterNeighbouringLandToViewSiteEvidence,
}} }}
/> />
</dd> </dd>
@@ -186,7 +187,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "enterNeighbouringLandAccessRequired") && ( {_.has(repFormData, "enterNeighbouringLandAccessRequired") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -230,7 +231,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.enterNeighbouringLandAccessRequiredEvidence __html: repFormData.enterNeighbouringLandAccessRequiredEvidence,
}} }}
/> />
</dd> </dd>
@@ -257,7 +258,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "healthAndSafetyIssues") && ( {_.has(repFormData, "healthAndSafetyIssues") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -300,7 +301,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.healthAndSafetyIssuesEvidence __html: repFormData.healthAndSafetyIssuesEvidence,
}} }}
/> />
</dd> </dd>
@@ -336,11 +337,11 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(repFormData, "LPAcontactDetails") ? ( {_.has(repFormData, "LPAcontactDetails") ? (
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.LPAcontactDetails __html: repFormData.LPAcontactDetails,
}} }}
/> />
) : ( ) : (
@@ -377,11 +378,11 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(repFormData, "LPAcaseFileAndReps") ? ( {_.has(repFormData, "LPAcaseFileAndReps") ? (
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.LPAcaseFileAndReps __html: repFormData.LPAcaseFileAndReps,
}} }}
/> />
) : ( ) : (
@@ -418,11 +419,11 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(repFormData, "LPAldpAndMap") ? ( {_.has(repFormData, "LPAldpAndMap") ? (
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.LPAldpAndMap __html: repFormData.LPAldpAndMap,
}} }}
/> />
) : ( ) : (
@@ -459,11 +460,11 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(repFormData, "LPAlocalGuidance") ? ( {_.has(repFormData, "LPAlocalGuidance") ? (
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.LPAlocalGuidance __html: repFormData.LPAlocalGuidance,
}} }}
/> />
) : ( ) : (
@@ -492,7 +493,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</div> </div>
</> </>
{hasOwn(repFormData, "LPAintentionToSubmitFullStatement") && ( {_.has(repFormData, "LPAintentionToSubmitFullStatement") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -525,7 +526,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</div> </div>
</> </>
)} )}
{hasOwn(repFormData, "AONB") && ( {_.has(repFormData, "AONB") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -557,7 +558,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</div> </div>
</> </>
)} )}
{hasOwn(repFormData, "ROW") && ( {_.has(repFormData, "ROW") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -599,7 +600,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.ROWEvidence __html: repFormData.ROWEvidence,
}} }}
/> />
</dd> </dd>
@@ -626,7 +627,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "conservationArea") && ( {_.has(repFormData, "conservationArea") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -669,7 +670,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.conservationAreaEvidence __html: repFormData.conservationAreaEvidence,
}} }}
/> />
</dd> </dd>
@@ -696,7 +697,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "affectListedBuilding") && ( {_.has(repFormData, "affectListedBuilding") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -739,7 +740,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.affectListedBuildingEvidence __html: repFormData.affectListedBuildingEvidence,
}} }}
/> />
</dd> </dd>
@@ -766,7 +767,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "TPO") && ( {_.has(repFormData, "TPO") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -809,7 +810,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.TPOEvidence __html: repFormData.TPOEvidence,
}} }}
/> />
</dd> </dd>
@@ -836,7 +837,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "natureConservationSite") && ( {_.has(repFormData, "natureConservationSite") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -879,7 +880,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.natureConservationSiteEvidence __html: repFormData.natureConservationSiteEvidence,
}} }}
/> />
</dd> </dd>
@@ -906,7 +907,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "protectedSpecies") && ( {_.has(repFormData, "protectedSpecies") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -949,7 +950,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.protectedSpeciesEvidence __html: repFormData.protectedSpeciesEvidence,
}} }}
/> />
</dd> </dd>
@@ -976,7 +977,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "gypsyTravellerInvolvment") && ( {_.has(repFormData, "gypsyTravellerInvolvment") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1009,7 +1010,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</div> </div>
</> </>
)} )}
{hasOwn(repFormData, "governmentDepartmentComments") && ( {_.has(repFormData, "governmentDepartmentComments") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1052,7 +1053,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.governmentDepartmentCommentsEvidence __html: repFormData.governmentDepartmentCommentsEvidence,
}} }}
/> />
</dd> </dd>
@@ -1079,7 +1080,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "developmentNotBeginLaterThanFiveYears") && ( {_.has(repFormData, "developmentNotBeginLaterThanFiveYears") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1112,7 +1113,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</div> </div>
</> </>
)} )}
{hasOwn(repFormData, "developmentCarriedOutInAccordance") && ( {_.has(repFormData, "developmentCarriedOutInAccordance") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1155,7 +1156,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.developmentCarriedOutInAccordanceEvidence __html: repFormData.developmentCarriedOutInAccordanceEvidence,
}} }}
/> />
</dd> </dd>
@@ -1182,7 +1183,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "developmentNotTakePlaceBiodiversity") && ( {_.has(repFormData, "developmentNotTakePlaceBiodiversity") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1215,7 +1216,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</div> </div>
</> </>
)} )}
{hasOwn(repFormData, "developmentNotTakePlaceBroadband") && ( {_.has(repFormData, "developmentNotTakePlaceBroadband") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1258,7 +1259,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.developmentNotTakePlaceBroadbandEvidence __html: repFormData.developmentNotTakePlaceBroadbandEvidence,
}} }}
/> />
</dd> </dd>
@@ -1285,7 +1286,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "developmentAnyOtherConditions") && ( {_.has(repFormData, "developmentAnyOtherConditions") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1328,7 +1329,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.developmentAnyOtherConditionsEvidence __html: repFormData.developmentAnyOtherConditionsEvidence,
}} }}
/> />
</dd> </dd>
@@ -1355,7 +1356,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "copyOfApplicantsCertificate") && ( {_.has(repFormData, "copyOfApplicantsCertificate") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1398,7 +1399,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.copyOfApplicantsCertificateEvidence __html: repFormData.copyOfApplicantsCertificateEvidence,
}} }}
/> />
</dd> </dd>
@@ -1425,7 +1426,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "advertismentGiven") && ( {_.has(repFormData, "advertismentGiven") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1468,7 +1469,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.advertismentGivenEvidence __html: repFormData.advertismentGivenEvidence,
}} }}
/> />
</dd> </dd>
@@ -1495,7 +1496,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "copyOfLetterOfAppealNotification") && ( {_.has(repFormData, "copyOfLetterOfAppealNotification") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1538,7 +1539,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.copyOfLetterOfAppealNotificationEvidence __html: repFormData.copyOfLetterOfAppealNotificationEvidence,
}} }}
/> />
</dd> </dd>
@@ -1565,7 +1566,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "lpaEIAOS") && ( {_.has(repFormData, "lpaEIAOS") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1608,7 +1609,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.lpaEIAOSEvidence __html: repFormData.lpaEIAOSEvidence,
}} }}
/> />
</dd> </dd>
@@ -1635,7 +1636,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "advertismentConsentDiscontinuanceNotice") && ( {_.has(repFormData, "advertismentConsentDiscontinuanceNotice") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1680,7 +1681,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.advertismentConsentDiscontinuanceNoticeEvidence __html: repFormData.advertismentConsentDiscontinuanceNoticeEvidence,
}} }}
/> />
</dd> </dd>
@@ -1707,7 +1708,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "detailsOfOtherAppeals") && ( {_.has(repFormData, "detailsOfOtherAppeals") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1750,7 +1751,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.detailsOfOtherAppeals __html: repFormData.detailsOfOtherAppeals,
}} }}
/> />
</dd> </dd>
@@ -1777,7 +1778,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "detailsOfPreviousAppeals") && ( {_.has(repFormData, "detailsOfPreviousAppeals") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1820,7 +1821,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.detailsOfPreviousAppealsEvidence __html: repFormData.detailsOfPreviousAppealsEvidence,
}} }}
/> />
</dd> </dd>
@@ -1847,7 +1848,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "otherRelevantInformation") && ( {_.has(repFormData, "otherRelevantInformation") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1890,7 +1891,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
<div <div
className="govuk-summary-list-check-ellipsis" className="govuk-summary-list-check-ellipsis"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: repFormData.otherRelevantInformationEvidence __html: repFormData.otherRelevantInformationEvidence,
}} }}
/> />
</dd> </dd>
@@ -1917,7 +1918,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
)} )}
</> </>
)} )}
{hasOwn(repFormData, "signedDate") && ( {_.has(repFormData, "signedDate") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1949,7 +1950,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</div> </div>
</> </>
)} )}
{hasOwn(repFormData, "caseOfficer") && ( {_.has(repFormData, "caseOfficer") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -1982,7 +1983,7 @@ let RepLPAQuestionnaireCheck_s78 = (props) => {
</div> </div>
</> </>
)} )}
{hasOwn(repFormData, "onBehalfOfLPA") && ( {_.has(repFormData, "onBehalfOfLPA") && (
<> <>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -4,7 +4,6 @@ const RepresentationFlowFormStage = ({
t, t,
appealIsConsultation, appealIsConsultation,
currentReference, currentReference,
caseTitle,
whichControl, whichControl,
appealIsLocalImpact, appealIsLocalImpact,
renderDueDate, renderDueDate,
@@ -23,7 +22,7 @@ const RepresentationFlowFormStage = ({
: t( : t(
"myrepresentations:make-a-representation-on-label" "myrepresentations:make-a-representation-on-label"
)}{" "} )}{" "}
{caseTitle}{" "} {currentReference}{" "}
</h1> </h1>
<div id="rep-form"> <div id="rep-form">
@@ -1,119 +0,0 @@
const {
getAvailableRepresentationTypes
} = require("../../../../lib/domain/representation-type-policy/getAvailableRepresentationTypes");
export const APPEAL_TYPES = {
SIPS: 846040002,
DNS: 846040011,
HOUSEHOLDER: 846040004,
ADVERT: 846040018,
EXCLUDE_QUESTIONNAIRE_1: 846040019,
EXCLUDE_QUESTIONNAIRE_2: 846040015,
EXCLUDE_QUESTIONNAIRE_3: 846040016
};
export const SPECIALIST_PROCESS = {
WRITTEN_REPS: 846040000,
HEARING: 846040001
};
export const INVOLVEMENT_TYPES = {
LPA: 846040012
};
export const REPRESENTATION_OPTIONS = {
QUESTIONNAIRE: "Questionnaire",
STATEMENT: "Statement",
FINAL_COMMENTS: "Final comments",
CONSULTATION_RESPONSE: "Consultation Response",
LOCAL_IMPACT_REPORT: "Local Impact Report",
MARINE_IMPACT_REPORT: "Marine Impact Report"
};
const isValidDate = (date) =>
date instanceof Date && !Number.isNaN(date.getTime());
const toDateOrNull = (value) => {
const date = new Date(value);
return isValidDate(date) ? date : null;
};
const endOfDay = (date) => {
if (!isValidDate(date)) return null;
const next = new Date(date);
next.setHours(23, 59, 59, 999);
return next;
};
const isWithinWindow = (now, start, end) => {
if (!isValidDate(now) || !isValidDate(start) || !isValidDate(end)) {
return false;
}
return now >= start && now <= end;
};
const normalizeCapacity = (value) =>
(value || "")
.toString()
.toLowerCase()
.replace(/(\band|[\s\-\+\(\)\,\&])/g, "");
export const buildRepresentationContext = ({
detailsObj = {},
appealType,
specialistProcess,
involvementType,
selectedCapacity,
isCaseOwner,
isNRW,
now = new Date()
}) => {
const isDNS = appealType === APPEAL_TYPES.DNS;
const startDate = toDateOrNull(
isDNS
? detailsObj.pinswg_applicationacceptedasvalid
: detailsObj.pinswg_startdate || detailsObj.pinswg_startdates
);
const statementDueDate = endOfDay(
toDateOrNull(
isDNS
? detailsObj.pinswg_endofrepresentationperiod
: detailsObj.pinswg_statementduedate ||
detailsObj.pinswg_statementsduedate
)
);
const finalCommentsDueDate = endOfDay(
toDateOrNull(
isDNS
? detailsObj.pinswg_endofrepresentationperiod
: detailsObj.pinswg_finalcommentsduedate
)
);
const capacity = normalizeCapacity(selectedCapacity);
const isLPA = involvementType === INVOLVEMENT_TYPES.LPA;
return {
appealType,
specialistProcess,
isDNS,
isSIPS: appealType === APPEAL_TYPES.SIPS,
isLPA,
isNRW: !!isNRW,
isCaseOwner: !!isCaseOwner,
isSelectedAppellant: capacity === "appellant",
isSelectedAgent: capacity === "agent",
isSelectedInterestedParty: capacity === "interestedparty",
now,
startDate,
statementDueDate,
finalCommentsDueDate
};
};
export const buildRepsArrFromContext = (ctx) => {
return getAvailableRepresentationTypes(ctx);
};
@@ -58,7 +58,7 @@ export const buildSubmitEnrichedValues = ({
incidentID: incidentID:
caseReferenceObj.incidentid || caseReferenceObj.incidentid ||
caseReferenceObj.repDetails.incidentid, caseReferenceObj.repDetails.incidentid,
caseRef: caseReferenceObj.ticketnumber, caseRef: caseReferenceObj.currentReference,
casereference: caseReferenceObj.currentReference, casereference: caseReferenceObj.currentReference,
pinswg_questionnaireduedate: detailsObj.pinswg_questionnaireduedate, pinswg_questionnaireduedate: detailsObj.pinswg_questionnaireduedate,
pinswg_endofrepresentationperiod: pinswg_endofrepresentationperiod:
+17 -7
View File
@@ -88,13 +88,23 @@ const RepresentationList = (props) => {
{t("case:documents-doc-type-label")}: {t("case:documents-doc-type-label")}:
</span> </span>
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup "pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
sanbox: {}
})
: detailsObj[
"pinswg_isharedocumentlocations@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
</dd> </dd>
<dd className="govuk-summary-list__value govuk-!-font-size-16"> <dd className="govuk-summary-list__value govuk-!-font-size-16">
<span className="results-visually-hidden"> <span className="results-visually-hidden">
-130
View File
@@ -1,130 +0,0 @@
import useTranslation from "next-translate/useTranslation";
import { useState } from "react";
import { getLifecycleStagesForCase } from "../../lib/domain/case-lifecycle";
const statusClassMap = {
complete: "govuk-tag govuk-!-margin-top-2",
"in-progress": "govuk-tag govuk-tag--yellow govuk-!-margin-top-2",
"not-started": "govuk-tag govuk-tag--grey govuk-!-margin-top-2",
blocked: "govuk-tag govuk-tag--red govuk-!-margin-top-2"
};
const statusTextMap = {
complete: "status-complete",
"in-progress": "status-in-progress",
"not-started": "status-not-started",
blocked: "status-blocked"
};
const StatusDetails = (props) => {
let { t } = useTranslation();
const caseResult = props.searchResultsObj?.value?.[0];
const caseDetails = props.searchDetailsObj?.[0]?.value?.[0];
const statusCode = Number(caseResult?.statuscode);
const appealType = Number(caseResult?.pinswg_appealcasetype);
const specialistProcess = caseDetails?.pinswg_specialistcaseprocess;
const stages = getLifecycleStagesForCase(
appealType,
statusCode,
specialistProcess
);
function hasOwnPropertyAndNotNull(obj, property) {
return obj.hasOwnProperty(property) && obj[property] !== null;
}
const [expandAll, setExpandAll] = useState(null);
// null = use default (in-progress open)
// true = force open all
// false = force close all
const handleToggleAll = () => {
setExpandAll((prev) => (prev === true ? false : true));
};
return (
<div className="govuk-grid-row">
<div className="govuk-grid-row">
<div className="govuk-grid-column-full">
<h2 className="govuk-heading-m ">
{t("case:status-title")}
</h2>
<button
type="button"
className="govuk-!-margin-bottom-3 govuk-link watchCase govuk-!-font-size-16 "
onClick={handleToggleAll}
>
{expandAll === true
? t("case:status-hide-all-label")
: t("case:status-show-all-label")}
</button>
<ul className="govuk-task-list">
{stages.map((stage) => {
const isDefaultOpen =
stage.status === "in-progress";
const isOpen =
expandAll === null ? isDefaultOpen : expandAll;
return (
<li
className="govuk-task-list__item"
key={stage.id}
>
<div className="govuk-task-list__name-and-hint">
{stage.descriptionKey && (
<details
className="govuk-details govuk-!-margin-top-2 govuk-!-margin-bottom-2"
open={isOpen}
>
<summary className="govuk-details__summary">
<span className="govuk-details__summary-text">
{t(
`case-stages:${stage.titleKey}`
)}
</span>
</summary>
<div className="govuk-details__text">
{t(
`case-stages:${stage.descriptionKey}`
)}
</div>
</details>
)}
</div>
<div
className="govuk-task-list__status "
id={`${stage.id}-status`}
>
<strong
className={
statusClassMap[stage.status] ||
"govuk-tag govuk-tag--grey govuk-!-margin-top-2"
}
>
{t(
`case-stages:${
statusTextMap[
stage.status
] || "status-not-started"
}`
)}
</strong>
</div>
</li>
);
})}
</ul>
</div>
</div>
</div>
);
};
export default StatusDetails;
+92 -271
View File
@@ -9,7 +9,6 @@ import transLookup from "../../data/lookuptranslations.json";
import Documents from "./documents"; import Documents from "./documents";
import EventsDetails from "./events"; import EventsDetails from "./events";
import MediaDetails from "./media"; import MediaDetails from "./media";
import StatusDetails from "./status";
import { import {
createWatchedCases, createWatchedCases,
@@ -24,7 +23,6 @@ import {
setCurrentReference, setCurrentReference,
setCurrentView setCurrentView
} from "../../store/currentView/action"; } from "../../store/currentView/action";
import resolveCrmDisplayValue from "../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import { import {
setWatchedCases, setWatchedCases,
@@ -33,11 +31,7 @@ import {
import { signIn, useSession } from "next-auth/react"; import { signIn, useSession } from "next-auth/react";
import { destroyCookie, parseCookies, setCookie } from "nookies"; import { destroyCookie, parseCookies, setCookie } from "nookies";
import { getFormCollectionByID, getDetailsProxy, hasOwn } from "../utils"; import { getFormCollectionByID, getDetailsProxy } from "../utils";
import {
getLivePublishedEvent,
isEventLiveNow
} from "./summary/utils/liveEvent";
import * as CaseTypes from "./summaryTypes"; // ✅ must match filename exactly import * as CaseTypes from "./summaryTypes"; // ✅ must match filename exactly
import { import {
@@ -67,7 +61,7 @@ import CaseNoticeBanner from "./caseNoticeBanner";
import WatchModal from "./watchmodal"; import WatchModal from "./watchmodal";
import EIADetails from "./eia"; import EIADetails from "./eia";
import MapComponent from "../mapping"; import GoogleMapComponent from "../mapping";
import OSPoint from "ospoint"; import OSPoint from "ospoint";
const CaseSummary = (props) => { const CaseSummary = (props) => {
@@ -96,8 +90,7 @@ const CaseSummary = (props) => {
currentView, currentView,
messagesObj, messagesObj,
docsOffline, docsOffline,
ticketnumber, ticketnumber
mapTarget
} = props; } = props;
const showLoginCheck = const showLoginCheck =
@@ -203,10 +196,6 @@ const CaseSummary = (props) => {
return isEmail; return isEmail;
}; };
const primaryId = getFormCollectionByID(
appealTypeID || setCaseQueryObj.value[0].pinswg_appealcasetype
).PrimaryIdAttribute;
const deleteItem = (caseID, topThreeType) => { const deleteItem = (caseID, topThreeType) => {
let cookies = parseCookies(); let cookies = parseCookies();
topThreeType == "watchedCases" && topThreeType == "watchedCases" &&
@@ -322,20 +311,6 @@ const CaseSummary = (props) => {
let hasEndDate = typeof d != "undefined"; let hasEndDate = typeof d != "undefined";
const hasEventsTabData =
isObjectNotEmpty(props, "eventsObj") &&
Array.isArray(props.eventsObj?.value) &&
props.eventsObj.value.length > 0;
const hasMediaTabData =
isObjectNotEmpty(props, "mediaObj") &&
Array.isArray(props.mediaObj?.value) &&
props.mediaObj.value.length > 0;
const livePublishedEvent = hasEventsTabData
? getLivePublishedEvent(props.eventsObj)
: null;
let point = {}; let point = {};
let siteCoords = {}; let siteCoords = {};
let center = {}; let center = {};
@@ -374,47 +349,6 @@ const CaseSummary = (props) => {
showDetails == true ? ( showDetails == true ? (
<> <>
<div className="govuk-frontend-supported"> <div className="govuk-frontend-supported">
{livePublishedEvent && (
<div
className="govuk-notification-banner govuk-!-margin-bottom-6"
role="region"
aria-labelledby="live-event-title"
data-module="govuk-notification-banner"
>
<div className="govuk-notification-banner__header">
<h2
className="govuk-notification-banner__title"
id="live-event-title"
>
{t("case:live-event-subheading")}
</h2>
</div>
<div className="govuk-notification-banner__content">
<p className="govuk-notification-banner__heading">
{t("case:live-event-copy")}
</p>
{livePublishedEvent.pinswg_eventname && (
<p className="govuk-body">
{livePublishedEvent.pinswg_eventname}
</p>
)}
<a
href={
locale === "en"
? livePublishedEvent.pinswg_linktotheevent
: livePublishedEvent.pinswg_linktotheeventstreamwelsh
}
className="govuk-link govuk-link--no-visited-state"
target="_blank"
rel="noopener noreferrer"
>
{t("case:live-event-link")}
</a>
</div>
</div>
)}
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-grid-column-full"> <div className="govuk-grid-column-full">
<h1 className="govuk-heading-xl govuk-!-margin-bottom-7"> <h1 className="govuk-heading-xl govuk-!-margin-bottom-7">
@@ -429,7 +363,6 @@ const CaseSummary = (props) => {
</h1> </h1>
</div> </div>
</div> </div>
<div className="govuk-tabs" data-module="govuk-tabs"> <div className="govuk-tabs" data-module="govuk-tabs">
<h2 className="govuk-tabs__title">Contents</h2> <h2 className="govuk-tabs__title">Contents</h2>
<ul className="govuk-tabs__list"> <ul className="govuk-tabs__list">
@@ -510,11 +443,12 @@ const CaseSummary = (props) => {
href="#case-eia" href="#case-eia"
onClick={() => setWhichTab("case-eia")} onClick={() => setWhichTab("case-eia")}
> >
{router.locale == "cy" ? "AEA" : "EIA"} {" "}
EIA
</a> </a>
</li> </li>
)} )}
{hasEventsTabData && ( {isObjectNotEmpty(props, "eventsObj") && (
<li <li
className={ className={
whichTab == "case-events" whichTab == "case-events"
@@ -534,7 +468,7 @@ const CaseSummary = (props) => {
</a> </a>
</li> </li>
)} )}
{hasMediaTabData && ( {isObjectNotEmpty(props, "mediaObj") && (
<li <li
className={ className={
whichTab == "case-media" whichTab == "case-media"
@@ -571,21 +505,6 @@ const CaseSummary = (props) => {
{t("case:summary-tab-documents-label")} {t("case:summary-tab-documents-label")}
</a> </a>
</li> </li>
<li
className={
whichTab == "case-status"
? "govuk-tabs__list-item govuk-tabs__list-item--selected"
: "govuk-tabs__list-item "
}
>
<a
className="govuk-tabs__tab"
href="#case-status"
onClick={() => setWhichTab("case-status")}
>
{t("case:status-title")}
</a>
</li>
</ul> </ul>
<div <div
className={ className={
@@ -607,16 +526,28 @@ const CaseSummary = (props) => {
<dl className="govuk-summary-list govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-margin-bottom-9">
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{primaryId === "pinswg_dnsid" || {getFormCollectionByID(
primaryId === appealTypeID ||
"pinswg_nonvalidationid" || setCaseQueryObj.value[0]
primaryId === "pinswg_sipscase" .pinswg_appealcasetype
).PrimaryIdAttribute ==
"pinswg_dnsid"
? t( ? t(
"case:summary-applicantonly-label" "case:summary-applicantonly-label"
) )
: t( : getFormCollectionByID(
"case:summary-appellantonly-label" appealTypeID ||
)} setCaseQueryObj
.value[0]
.pinswg_appealcasetype
).PrimaryIdAttribute ==
"pinswg_nonvalidationid"
? t(
"case:summary-appellantonly-label"
)
: t(
"case:summary-applicant-label"
)}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{casesObj.pinswg_appellantagent == {casesObj.pinswg_appellantagent ==
@@ -631,7 +562,7 @@ const CaseSummary = (props) => {
</div> </div>
{detailsObj.pinswg_agentcontactname != {detailsObj.pinswg_agentcontactname !=
null && null &&
(hasOwn( (_.has(
detailsObj, detailsObj,
"pinswg_agentcontactname" "pinswg_agentcontactname"
) ? ( ) ? (
@@ -642,7 +573,7 @@ const CaseSummary = (props) => {
)} )}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_agentcontactname" "pinswg_agentcontactname"
) )
@@ -686,103 +617,103 @@ const CaseSummary = (props) => {
)[0] )[0]
: "" : ""
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline1" "pinswg_siteaddressline1"
) )
? detailsObj.pinswg_siteaddressline1 ? detailsObj.pinswg_siteaddressline1
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addressline1" "pinswg_addressline1"
) )
? detailsObj.pinswg_addressline1 ? detailsObj.pinswg_addressline1
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline1" "pinswg_siteaddressline1"
) && ) &&
detailsObj.pinswg_siteaddressline1 != detailsObj.pinswg_siteaddressline1 !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addressline1" "pinswg_addressline1"
) && ) &&
detailsObj.pinswg_addressline1 != detailsObj.pinswg_addressline1 !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline2" "pinswg_siteaddressline2"
) )
? detailsObj.pinswg_siteaddressline2 ? detailsObj.pinswg_siteaddressline2
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addressline2" "pinswg_addressline2"
) )
? detailsObj.pinswg_addressline2 ? detailsObj.pinswg_addressline2
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addressline2" "pinswg_addressline2"
) && ) &&
detailsObj.pinswg_addressline2 != detailsObj.pinswg_addressline2 !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresstown" "pinswg_siteaddresstown"
) )
? detailsObj.pinswg_siteaddresstown ? detailsObj.pinswg_siteaddresstown
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addresstown" "pinswg_addresstown"
) )
? detailsObj.pinswg_addresstown ? detailsObj.pinswg_addresstown
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresstown" "pinswg_siteaddresstown"
) && ) &&
detailsObj.pinswg_siteaddresstown != detailsObj.pinswg_siteaddresstown !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addresstown" "pinswg_addresstown"
) && ) &&
detailsObj.pinswg_addresstown != detailsObj.pinswg_addresstown !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresscounty" "pinswg_siteaddresscounty"
) )
? detailsObj.pinswg_siteaddresscounty ? detailsObj.pinswg_siteaddresscounty
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addresscounty" "pinswg_addresscounty"
) )
? detailsObj.pinswg_addresscounty ? detailsObj.pinswg_addresscounty
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresscounty" "pinswg_siteaddresscounty"
) && ) &&
detailsObj.pinswg_siteaddresscounty != detailsObj.pinswg_siteaddresscounty !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addresscounty" "pinswg_addresscounty"
) && ) &&
detailsObj.pinswg_addresscounty != detailsObj.pinswg_addresscounty !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresspostcode" "pinswg_siteaddresspostcode"
) )
? detailsObj.pinswg_siteaddresspostcode ? detailsObj.pinswg_siteaddresspostcode
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_postcode" "pinswg_postcode"
) )
@@ -877,52 +808,6 @@ const CaseSummary = (props) => {
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-grid-column-full"> <div className="govuk-grid-column-full">
<div className=""> <div className="">
{getFormCollectionByID(
appealTypeID
).PrimaryIdAttribute ==
"pinswg_sipscase" &&
isConsultationWindowOpen(
detailsObj
) && (
<p>
{t(
"case:summary-make-consultation-response-para-a"
)}
<Link
target="_blank"
className="govuk-link"
href={t(
"case:summary-make-representation-para-a-link"
)}
>
{t(
"case:summary-make-representation-para-a-label"
)}
</Link>
</p>
)}
{isGeneralRepresentationWindowOpen(
detailsObj
) && (
<div className="govuk-button-group">
<p>
{t(
"case:summary-make-representation-para-a"
)}
<Link
target="_blank"
className="govuk-link"
href={t(
"case:summary-make-representation-para-a-link"
)}
>
{t(
"case:summary-make-representation-para-a-label"
)}
</Link>
</p>
</div>
)}
<div className="govuk-button-group"> <div className="govuk-button-group">
{getFormCollectionByID( {getFormCollectionByID(
appealTypeID appealTypeID
@@ -954,13 +839,13 @@ const CaseSummary = (props) => {
case: case:
currentType == currentType ==
"searchResultsObj" "searchResultsObj"
? detailsObj.ticketnumber ? detailsObj.pinswg_name
: currentType == : currentType ==
"watchedCases" "watchedCases"
? casesObj.pinswg_title ? casesObj.pinswg_title
: currentType == : currentType ==
"directResultsObj" "directResultsObj"
? detailsObj.ticketnumber ? detailsObj.pinswg_name
: casesObj.reference : casesObj.reference
} }
}} }}
@@ -1029,7 +914,6 @@ const CaseSummary = (props) => {
)} )}
</> </>
)} )}
{isGeneralRepresentationWindowOpen( {isGeneralRepresentationWindowOpen(
detailsObj detailsObj
) && ( ) && (
@@ -1483,7 +1367,7 @@ const CaseSummary = (props) => {
</div> </div>
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-grid-column-full"> <div className="govuk-grid-column-full">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_startdate" "pinswg_startdate"
) && ) &&
@@ -1573,11 +1457,9 @@ const CaseSummary = (props) => {
width: "100%" width: "100%"
}} }}
> >
<MapComponent <GoogleMapComponent
center={center} center={center}
zoom={zoom} zoom={zoom}
locale={router.locale}
mapTarget={mapTarget}
/> />
{/* <OSMapComponent center={center} zoom={zoom} /> */} {/* <OSMapComponent center={center} zoom={zoom} /> */}
</div> </div>
@@ -1616,103 +1498,103 @@ const CaseSummary = (props) => {
)[0] )[0]
: "" : ""
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline1" "pinswg_siteaddressline1"
) )
? detailsObj.pinswg_siteaddressline1 ? detailsObj.pinswg_siteaddressline1
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addressline1" "pinswg_addressline1"
) )
? detailsObj.pinswg_addressline1 ? detailsObj.pinswg_addressline1
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline1" "pinswg_siteaddressline1"
) && ) &&
detailsObj.pinswg_siteaddressline1 != detailsObj.pinswg_siteaddressline1 !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addressline1" "pinswg_addressline1"
) && ) &&
detailsObj.pinswg_addressline1 != detailsObj.pinswg_addressline1 !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddressline2" "pinswg_siteaddressline2"
) )
? detailsObj.pinswg_siteaddressline2 ? detailsObj.pinswg_siteaddressline2
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addressline2" "pinswg_addressline2"
) )
? detailsObj.pinswg_addressline2 ? detailsObj.pinswg_addressline2
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addressline2" "pinswg_addressline2"
) && ) &&
detailsObj.pinswg_addressline2 != detailsObj.pinswg_addressline2 !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresstown" "pinswg_siteaddresstown"
) )
? detailsObj.pinswg_siteaddresstown ? detailsObj.pinswg_siteaddresstown
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addresstown" "pinswg_addresstown"
) )
? detailsObj.pinswg_addresstown ? detailsObj.pinswg_addresstown
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresstown" "pinswg_siteaddresstown"
) && ) &&
detailsObj.pinswg_siteaddresstown != detailsObj.pinswg_siteaddresstown !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addresstown" "pinswg_addresstown"
) && ) &&
detailsObj.pinswg_addresstown != detailsObj.pinswg_addresstown !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresscounty" "pinswg_siteaddresscounty"
) )
? detailsObj.pinswg_siteaddresscounty ? detailsObj.pinswg_siteaddresscounty
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addresscounty" "pinswg_addresscounty"
) )
? detailsObj.pinswg_addresscounty ? detailsObj.pinswg_addresscounty
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresscounty" "pinswg_siteaddresscounty"
) && ) &&
detailsObj.pinswg_siteaddresscounty != detailsObj.pinswg_siteaddresscounty !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_addresscounty" "pinswg_addresscounty"
) && ) &&
detailsObj.pinswg_addresscounty != detailsObj.pinswg_addresscounty !=
null && <br />} null && <br />}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_siteaddresspostcode" "pinswg_siteaddresspostcode"
) )
? detailsObj.pinswg_siteaddresspostcode ? detailsObj.pinswg_siteaddresspostcode
: ""} : ""}
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_postcode" "pinswg_postcode"
) )
@@ -1740,20 +1622,16 @@ const CaseSummary = (props) => {
<div className="card-body"> <div className="card-body">
<div> <div>
<h4 className="govuk-heading-s "> <h4 className="govuk-heading-s ">
{t( EIA Screening
"case:summary-eia-screening-heading"
)}
</h4> </h4>
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t( Screening start date
"case:summary-eia-screening-start-date-label"
)}
</dt>{" "} </dt>{" "}
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_screeningstartdate" "pinswg_screeningstartdate"
) )
@@ -1773,12 +1651,10 @@ const CaseSummary = (props) => {
</div> </div>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t( EIA target date
"case:summary-eia-screening-target-date-label"
)}
</dt>{" "} </dt>{" "}
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_eiatargetdate" "pinswg_eiatargetdate"
) )
@@ -1803,12 +1679,10 @@ const CaseSummary = (props) => {
) && ( ) && (
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t( Target Extended
"case:summary-eia-screening-target-extended-label"
)}
</dt>{" "} </dt>{" "}
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_targetextended" "pinswg_targetextended"
) )
@@ -1829,12 +1703,11 @@ const CaseSummary = (props) => {
)} )}
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t( Direction Issued
"case:summary-eia-screening-direction-issued-label" Date
)}
</dt>{" "} </dt>{" "}
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_directionissueddate" "pinswg_directionissueddate"
) )
@@ -1864,7 +1737,7 @@ const CaseSummary = (props) => {
)} )}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_eiarequired" "pinswg_eiarequired"
) )
@@ -1883,35 +1756,6 @@ const CaseSummary = (props) => {
</dd> </dd>
</div> </div>
)} )}
{hasValidKey(
detailsObj,
"pinswg_sipseiarequired"
) && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-eia-required-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue(
{
value: detailsObj[
"pinswg_sipseiarequired@OData.Community.Display.V1.FormattedValue"
],
locale,
translations:
transLookup,
fallbackValue:
t(
"case:summary-awaiting-information-label"
)
}
)}
</dd>
</div>
)}
</dl> </dl>
</div> </div>
</div> </div>
@@ -1920,20 +1764,16 @@ const CaseSummary = (props) => {
<div className="card-body"> <div className="card-body">
<div> <div>
<h4 className="govuk-heading-s "> <h4 className="govuk-heading-s ">
{t( EIA Scoping
"case:summary-eia-scoping-heading"
)}
</h4> </h4>
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t( Scoping Start Date
"case:summary-eia-scoping-start-date-label"
)}
</dt>{" "} </dt>{" "}
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_scopingstartdate" "pinswg_scopingstartdate"
) )
@@ -1953,12 +1793,10 @@ const CaseSummary = (props) => {
</div> </div>
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t( Scoping Target Date
"case:summary-eia-scoping-target-date-label"
)}
</dt>{" "} </dt>{" "}
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_scopingtargetdate" "pinswg_scopingtargetdate"
) )
@@ -1982,12 +1820,11 @@ const CaseSummary = (props) => {
) && ( ) && (
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t( Scoping Target
"case:summary-eia-scoping-target-extended-label" Extended
)}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_scopingtargetextended" "pinswg_scopingtargetextended"
) )
@@ -2008,12 +1845,11 @@ const CaseSummary = (props) => {
)} )}
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t( Scoping Outcome
"case:summary-eia-scoping-direction-issued-date-label" Issued Date
)}
</dt>{" "} </dt>{" "}
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_scopingoutcomeissueddate" "pinswg_scopingoutcomeissueddate"
) )
@@ -2042,7 +1878,7 @@ const CaseSummary = (props) => {
.PrimaryIdAttribute == "pinswg_sipscase" && ( .PrimaryIdAttribute == "pinswg_sipscase" && (
<EIADetails props={props} /> <EIADetails props={props} />
)} )}
{hasEventsTabData && ( {isObjectNotEmpty(props, "eventsObj") && (
<div <div
className={ className={
whichTab == "case-events" whichTab == "case-events"
@@ -2055,7 +1891,7 @@ const CaseSummary = (props) => {
</div> </div>
)} )}
{hasMediaTabData && ( {isObjectNotEmpty(props, "mediaObj") && (
<div <div
className={ className={
whichTab == "case-media" whichTab == "case-media"
@@ -2092,19 +1928,6 @@ const CaseSummary = (props) => {
showFilteredDocs={props.showFilteredDocs} showFilteredDocs={props.showFilteredDocs}
/> />
</div> </div>
<div
className={
whichTab == "case-status"
? "govuk-tabs__panel "
: "govuk-tabs__panel govuk-tabs__panel--hidden"
}
id="case-status"
>
<StatusDetails
searchResultsObj={props.searchResultsObj}
searchDetailsObj={props.searchDetailsObj}
/>
</div>
</div> </div>
</div> </div>
</> </>
@@ -2169,12 +1992,10 @@ const CaseSummary = (props) => {
) : null; ) : null;
} }
const fallbackIncidentId = setCaseQueryObj?.value?.[0]?.incidentid;
useEffect(() => { useEffect(() => {
const linkCaseObj = async () => { const linkCaseObj = async () => {
let docObj = await getLinkedCases( let docObj = await getLinkedCases(
incidentid || fallbackIncidentId incidentid || setCaseQueryObj.value[0].incidentid
).then((data) => { ).then((data) => {
//console.log(data); //console.log(data);
setCurrentLinkedCases(data); setCurrentLinkedCases(data);
@@ -2185,7 +2006,7 @@ const CaseSummary = (props) => {
}; };
const linkedCases = linkCaseObj(); const linkedCases = linkCaseObj();
}, [incidentid, fallbackIncidentId, setCurrentLinkedCases]); }, [incidentid, setCurrentLinkedCases]);
let now = new Date(); let now = new Date();
let expDate = new Date(now); let expDate = new Date(now);
@@ -1,853 +0,0 @@
import { getStageCaseTypeKey } from "../../../../lib/domain/case-lifecycle/getStageCaseTypeKey";
import { getStagesForCaseTypeKey } from "../../../../lib/domain/case-lifecycle/getStagesForCaseTypeKey";
import { getLifecycleStageIndex } from "../../../../lib/domain/case-lifecycle/getLifecycleStageIndex";
import { getLifecycleStageStatus } from "../../../../lib/domain/case-lifecycle/getLifecycleStageStatus";
const slugify = (value) =>
value
.toString()
.toLowerCase()
.replace(/[^a-z0-9]+/g, "-")
.replace(/^-|-$/g, "");
const buildStages = (stages) =>
stages.map((stage) => ({
id: slugify(stage.titleKey),
...stage
}));
export const stagesByCaseType = {
DNS: buildStages([
{
stageId: 846040001,
titleKey: "pre-application",
descriptionKey: "pre-application-desc"
},
{
stageId: 846040002,
titleKey: "environmental-impact-assessment-scoping",
descriptionKey: "environmental-impact-assessment-scoping-desc"
},
{
stageId: 846040003,
titleKey: "notification",
descriptionKey: "notification-desc"
},
{
stageId: 846040004,
titleKey: "acceptance-checking",
descriptionKey: "acceptance-checking-desc"
},
{
stageId: 846040005,
titleKey: "invalid-submission",
descriptionKey: "invalid-submission-desc"
},
{
stageId: 846040006,
titleKey: "consultation",
descriptionKey: "consultation-desc"
},
{
stageId: 846040007,
titleKey: "re-consultation",
descriptionKey: "re-consultation-desc"
},
{
stageId: 846040008,
titleKey: "reporting",
descriptionKey: "reporting-desc"
},
{
stageId: 846040009,
titleKey: "inspectors-decision",
descriptionKey: "inspectors-decision-desc"
},
{
stageId: 846040011,
titleKey: "report-to-ministers",
descriptionKey: "report-to-ministers-desc"
},
{
stageId: 846040012,
titleKey: "minister-s-decision",
descriptionKey: "minister-s-decision-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc-dnssips"
}
]),
SIP: buildStages([
{
stageId: 846040001,
titleKey: "pre-application",
descriptionKey: "pre-application-desc"
},
{
stageId: 846040002,
titleKey: "environmental-impact-assessment-scoping",
descriptionKey: "environmental-impact-assessment-scoping-desc"
},
{
stageId: 846040003,
titleKey: "notification",
descriptionKey: "notification-desc"
},
{
stageId: 846040004,
titleKey: "acceptance-checking",
descriptionKey: "acceptance-checking-desc"
},
{
stageId: 846040005,
titleKey: "invalid-submission",
descriptionKey: "invalid-submission-desc"
},
{
stageId: 846040006,
titleKey: "consultation",
descriptionKey: "consultation-desc"
},
{
stageId: 846040007,
titleKey: "re-consultation",
descriptionKey: "re-consultation-desc"
},
{
stageId: 846040008,
titleKey: "reporting",
descriptionKey: "reporting-desc"
},
{
stageId: 846040011,
titleKey: "report-to-ministers",
descriptionKey: "report-to-ministers-desc"
},
{
stageId: 846040012,
titleKey: "minister-s-decision",
descriptionKey: "minister-s-decision-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc-dnssips"
}
]),
PLANNING_S78: buildStages([
{
stageId: 846040014,
titleKey: "appeal-submitted",
descriptionKey: "appeal-submitted-desc"
},
{
stageId: 846040015,
titleKey: "appeal-registered",
descriptionKey: "appeal-registered-desc"
},
{
stageId: 846040016,
titleKey: "appeal-validated",
descriptionKey: "appeal-validated-desc"
},
{
stageId: 1,
titleKey: "case-in-progress",
descriptionKey: "case-in-progress-desc"
},
{
stageId: 846040017,
titleKey: "questionnaire-lpa-to-notify",
descriptionKey: "questionnaire-lpa-to-notify-desc"
},
{
stageId: 846040018,
titleKey: "representations-period",
descriptionKey: "representations-period-desc"
},
{
stageId: 846040019,
titleKey: "final-comments",
descriptionKey: "final-comments-desc"
},
{
stageId: 846040020,
titleKey: "event",
descriptionKey: "event-desc"
},
{
stageId: 846040021,
titleKey: "site-visit",
descriptionKey: "site-visit-desc"
},
{
stageId: 846040022,
titleKey: "decision-issued",
descriptionKey: "decision-issued-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc"
}
]),
CONDITIONS_73_79: "PLANNING_S78",
LBCAC: "PLANNING_S78",
LDCS: "PLANNING_S78",
PLANNING_OBLIGATIONS_S106: "PLANNING_S78",
PRIOR_NOTIFICATION: "PLANNING_S78",
HAS: buildStages([
{
stageId: 846040014,
titleKey: "appeal-submitted",
descriptionKey: "appeal-submitted-desc"
},
{
stageId: 846040015,
titleKey: "appeal-registered",
descriptionKey: "appeal-registered-desc"
},
{
stageId: 846040016,
titleKey: "appeal-validated",
descriptionKey: "appeal-validated-desc"
},
{
stageId: 1,
titleKey: "case-in-progress",
descriptionKey: "case-in-progress-desc"
},
{
stageId: 846040021,
titleKey: "site-visit",
descriptionKey: "site-visit-desc"
},
{
stageId: 846040022,
titleKey: "decision-issued",
descriptionKey: "decision-issued-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc"
}
]),
CALL_INS: buildStages([
{
stageId: 846040023,
titleKey: "application-called-in",
descriptionKey: "application-called-in-desc"
},
{
stageId: 846040043,
titleKey: "application-registered",
descriptionKey: "application-registered-desc"
},
{
stageId: 846040024,
titleKey: "application-validated",
descriptionKey: "application-validated-desc-callin"
},
{
stageId: 1,
titleKey: "case-in-progress",
descriptionKey: "case-in-progress-desc-callin"
},
{
stageId: 846040025,
titleKey: "lpa-to-notify",
descriptionKey: "lpa-to-notify-desc"
},
{
stageId: 846040018,
titleKey: "representations-period",
descriptionKey: "representations-period-desc"
},
{
stageId: 846040019,
titleKey: "final-comments",
descriptionKey: "final-comments-desc-callin"
},
{
stageId: 846040049,
titleKey: "event",
descriptionKey: "event-desc-callin"
},
{
stageId: 846040021,
titleKey: "site-visit",
descriptionKey: "site-visit-desc"
},
{
stageId: 846040028,
titleKey: "report-issued-to-welsh-ministers",
descriptionKey: "report-issued-to-welsh-ministers-desc"
},
{
stageId: 846040012,
titleKey: "minister-s-decision",
descriptionKey: "minister-s-decision-desc-callin"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc-callin"
}
]),
ENFORCEMENT: buildStages([
{
stageId: 846040014,
titleKey: "appeal-submitted",
descriptionKey: "appeal-submitted-desc"
},
{
stageId: 846040015,
titleKey: "appeal-registered",
descriptionKey: "appeal-registered-desc"
},
{
stageId: 846040029,
titleKey: "fee-due",
descriptionKey: "fee-due-desc"
},
{
stageId: 846040030,
titleKey: "validated",
descriptionKey: "appeal-validated-desc"
},
{
stageId: 1,
titleKey: "case-in-progress",
descriptionKey: "case-in-progress-desc"
},
{
stageId: 846040017,
titleKey: "questionnaire-lpa-to-notify",
descriptionKey: "questionnaire-lpa-to-notify-desc"
},
{
stageId: 846040018,
titleKey: "representations-period",
descriptionKey: "representations-period-desc"
},
{
stageId: 846040019,
titleKey: "final-comments",
descriptionKey: "final-comments-desc"
},
{
stageId: 846040020,
titleKey: "event",
descriptionKey: "event-desc"
},
{
stageId: 846040021,
titleKey: "site-visit",
descriptionKey: "site-visit-desc"
},
{
stageId: 846040022,
titleKey: "decision-issued",
descriptionKey: "decision-issued-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc"
}
]),
ENFORCEMENT_LISTED_BUILDING: "ENFORCEMENT",
MAINTENANCE_OF_LAND: "ENFORCEMENT",
RIGHTS_OF_WAY_SCHEDULE_14: buildStages([
{
stageId: 846040014,
titleKey: "appeal-submitted",
descriptionKey: "appeal-submitted-desc"
},
{
stageId: 846040015,
titleKey: "appeal-registered",
descriptionKey: "appeal-registered-desc"
},
{
stageId: 846040016,
titleKey: "appeal-validated",
descriptionKey: "appeal-validated-desc"
},
{
stageId: 846040031,
titleKey: "appeal-start-case-in-progress",
descriptionKey: "case-in-progress-desc"
},
{
stageId: 846040032,
titleKey: "statements-representations-period",
descriptionKey: "statements-representations-period-desc"
},
{
stageId: 846040019,
titleKey: "final-comments",
descriptionKey: "final-comments-desc"
},
{
stageId: 846040021,
titleKey: "site-visit",
descriptionKey: "site-visit-desc"
},
{
stageId: 846040022,
titleKey: "decision-issued",
descriptionKey: "decision-issued-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc"
}
]),
RIGHTS_OF_WAY_ORDERS: buildStages([
{
stageId: 846040033,
titleKey: "order-submitted",
descriptionKey: "order-submitted-desc"
},
{
stageId: 846040034,
titleKey: "order-submission-registered",
descriptionKey: "order-submission-registered-desc"
},
{
stageId: 846040035,
titleKey: "order-submission-validated",
descriptionKey: "order-submission-validated-desc"
},
{
stageId: 846040036,
titleKey: "case-started-case-in-progress",
descriptionKey: "case-started-case-in-progress-desc"
},
{
stageId: 846040062,
titleKey: "statements",
descriptionKey: "statements-desc-order"
},
{
stageId: 846040055,
titleKey: "final-comments",
descriptionKey: "final-comments-desc-cpo"
},
{
stageId: 846040037,
titleKey: "event-site-visit",
descriptionKey: "event-site-visit-desc-order"
},
{
stageId: 846040022,
titleKey: "decision-issued",
descriptionKey: "decision-issued-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc-order"
}
]),
REQUESTS_FOR_DIRECTION: buildStages([
{
stageId: 846040042,
titleKey: "application-submitted",
descriptionKey: "application-submitted-desc"
},
{
stageId: 846040043,
titleKey: "application-registered",
descriptionKey: "application-registered-desc"
},
{
stageId: 846040054,
titleKey: "application-start-case-in-progress",
descriptionKey: "application-start-case-in-progress-desc"
},
{
stageId: 846040010,
titleKey: "statements",
descriptionKey: "statements-desc-application"
},
{
stageId: 846040063,
titleKey: "final-comments",
descriptionKey: "final-comments-desc-application"
},
{
stageId: 846040022,
titleKey: "decision-issued",
descriptionKey: "decision-issued-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc-application"
}
]),
ADVERTS: buildStages([
{
stageId: 846040014,
titleKey: "appeal-submitted",
descriptionKey: "appeal-submitted-desc"
},
{
stageId: 846040015,
titleKey: "appeal-registered",
descriptionKey: "appeal-registered-desc"
},
{
stageId: 846040016,
titleKey: "appeal-validated",
descriptionKey: "appeal-validated-desc"
},
{
stageId: 846040036,
titleKey: "case-started-case-in-progress",
descriptionKey: "case-in-progress-desc"
},
{
stageId: 846040017,
titleKey: "questionnaire-lpa-to-notify",
descriptionKey: "questionnaire-lpa-to-notify-desc"
},
{
stageId: 846040010,
titleKey: "statements",
descriptionKey: "statements-desc"
},
{
stageId: 846040019,
titleKey: "final-comments",
descriptionKey: "final-comments-desc"
},
{
stageId: 846040021,
titleKey: "site-visit",
descriptionKey: "site-visit-desc"
},
{
stageId: 846040022,
titleKey: "decision-issued",
descriptionKey: "decision-issued-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc"
}
]),
HEDGEROW_TPO: buildStages([
{
stageId: 846040014,
titleKey: "appeal-submitted",
descriptionKey: "appeal-submitted-desc"
},
{
stageId: 846040015,
titleKey: "appeal-registered",
descriptionKey: "appeal-registered-desc"
},
{
stageId: 846040016,
titleKey: "appeal-validated",
descriptionKey: "appeal-validated-desc"
},
{
stageId: 846040031,
titleKey: "appeal-start-case-in-progress",
descriptionKey: "case-in-progress-desc"
},
{
stageId: 846040017,
titleKey: "questionnaire-lpa-to-notify",
descriptionKey: "questionnaire-lpa-to-notify-desc"
},
{
stageId: 846040032,
titleKey: "statements-representations-period",
descriptionKey: "statements-representations-period-desc"
},
{
stageId: 846040019,
titleKey: "final-comments",
descriptionKey: "final-comments-desc"
},
{
stageId: 846040021,
titleKey: "site-visit",
descriptionKey: "site-visit-desc"
},
{
stageId: 846040022,
titleKey: "decision-issued",
descriptionKey: "decision-issued-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc"
}
]),
COMMON_LAND: buildStages([
{
stageId: 846040042,
titleKey: "application-submitted",
descriptionKey: "application-submitted-desc"
},
{
stageId: 846040043,
titleKey: "application-registered",
descriptionKey: "application-registered-desc"
},
{
stageId: 846040024,
titleKey: "application-validated",
descriptionKey: "application-validated-desc"
},
{
stageId: 846040054,
titleKey: "application-start-case-in-progress",
descriptionKey: "application-start-case-in-progress-desc"
},
{
stageId: 846040038,
titleKey: "applicant-statement-on-representations",
descriptionKey: "applicant-statement-on-representations-desc"
},
{
stageId: 846040039,
titleKey: "representatives-comment",
descriptionKey: "representatives-comment-desc"
},
{
stageId: 846040027,
titleKey: "applicants-final-comment",
descriptionKey: "applicants-final-comment-desc"
},
{
stageId: 846040037,
titleKey: "event-site-visit",
descriptionKey: "event-site-visit-desc"
},
{
stageId: 846040022,
titleKey: "decision-issued",
descriptionKey: "decision-issued-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc-application"
}
]),
COMPULSORY_PURCHASE_ORDERS: buildStages([
{
stageId: 846040033,
titleKey: "order-submitted",
descriptionKey: "order-submitted-desc"
},
{
stageId: 846040040,
titleKey: "order-registered",
descriptionKey: "order-submission-registered-desc"
},
{
stageId: 846040041,
titleKey: "order-validated",
descriptionKey: "order-submission-validated-desc"
},
{
stageId: 1,
titleKey: "case-in-progress",
descriptionKey: "case-started-case-in-progress-desc"
},
{
stageId: 846040010,
titleKey: "statements",
descriptionKey: "statements-desc-order"
},
{
stageId: 846040019,
titleKey: "final-comments",
descriptionKey: "final-comments-desc-cpo"
},
{
stageId: 846040037,
titleKey: "event-site-visit",
descriptionKey: "event-site-visit-desc-order"
},
{
stageId: 846040011,
titleKey: "report-to-ministers",
descriptionKey: "report-to-ministers-desc-cpo"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc-order"
}
]),
ELECTRICITY_ACT: "PLANNING_S78",
HARBOUR_REVISION_ORDER: buildStages([
{
stageId: 846040033,
titleKey: "order-submitted",
descriptionKey: "order-submitted-desc"
},
{
stageId: 846040040,
titleKey: "order-registered",
descriptionKey: "order-submission-registered-desc"
},
{
stageId: 846040041,
titleKey: "order-validated",
descriptionKey: "order-submission-validated-desc"
},
{
stageId: 1,
titleKey: "case-in-progress",
descriptionKey: "case-started-case-in-progress-desc"
},
{
stageId: 846040010,
titleKey: "statements",
descriptionKey: "statements-desc-order"
},
{
stageId: 846040055,
titleKey: "final-comments",
descriptionKey: "final-comments-desc-cpo"
},
{
stageId: 846040037,
titleKey: "event-site-visit",
descriptionKey: "event-site-visit-desc-order"
},
{
stageId: 846040056,
titleKey: "report-to-ministers",
descriptionKey: "report-to-ministers-desc-cpo"
},
{
stageId: 846040060,
titleKey: "case-closed",
descriptionKey: "case-closed-desc-order"
}
]),
TRANSPORT_WORKS: "PLANNING_S78",
WAYLEAVE: buildStages([
{
stageId: 846040042,
titleKey: "application-submitted",
descriptionKey: "application-submitted-desc"
},
{
stageId: 846040043,
titleKey: "application-registered",
descriptionKey: "application-registered-desc"
},
{
stageId: 846040024,
titleKey: "application-validated",
descriptionKey: "application-validated-desc"
},
{
stageId: 1,
titleKey: "case-in-progress",
descriptionKey: "application-start-case-in-progress-desc"
},
{
stageId: 846040021,
titleKey: "site-visit",
descriptionKey: "site-visit-desc"
},
{
stageId: 846040044,
titleKey: "report-to-desnz",
descriptionKey: "report-to-desnz-desc"
},
{
stageId: 846040013,
titleKey: "case-closed",
descriptionKey: "case-closed-desc-application"
}
]),
NON_VALIDATION: buildStages([
{
stageId: 846040014,
titleKey: "appeal-submitted",
descriptionKey: "appeal-submitted-desc"
},
{
stageId: 846040015,
titleKey: "appeal-registered",
descriptionKey: "appeal-registered-desc"
},
{
stageId: 846040016,
titleKey: "appeal-validated",
descriptionKey: "appeal-validated-desc"
},
{
stageId: 846040045,
titleKey: "case-in-progress-assessment",
descriptionKey: "case-in-progress-desc"
},
{
stageId: 846040046,
titleKey: "decision-outcome",
descriptionKey: "decision-outcome-desc"
},
{
stageId: 846040060,
titleKey: "case-closed-nonval",
descriptionKey: "case-closed-desc"
}
])
};
const resolveStages = (caseTypeOrAppealTypeId, specialistProcess) => {
const key = getStageCaseTypeKey(caseTypeOrAppealTypeId, specialistProcess);
return getStagesForCaseTypeKey(key);
};
export const getStagesForAppealType = (
caseType,
currentStageId,
specialistProcess
) => {
const stages = resolveStages(caseType, specialistProcess);
const currentIndex = getLifecycleStageIndex(stages, currentStageId);
return stages.map((stage, index) => ({
...stage,
status: getLifecycleStageStatus(index, currentIndex)
}));
};
@@ -1,36 +0,0 @@
export function isEventLiveNow(item) {
if (!item?.pinswg_dateeventrequested) return false;
const now = new Date();
const start = new Date(item.pinswg_dateeventrequested);
if (isNaN(start.getTime())) return false;
const endDateValue =
item.pinswg_enddateofevent || item.pinswg_enddateoftheevent;
if (endDateValue) {
const end = new Date(endDateValue);
if (isNaN(end.getTime())) return false;
end.setHours(23, 59, 59, 999);
return now >= start && now <= end;
}
const endOfStartDay = new Date(start);
endOfStartDay.setHours(23, 59, 59, 999);
return now >= start && now <= endOfStartDay;
}
export function getLivePublishedEvent(eventsObj) {
const eventsArr = eventsObj?.value || [];
return eventsArr.find(
(item) =>
item.pinswg_eventpublishflag &&
item.pinswg_linktotheevent &&
isEventLiveNow(item)
);
}
@@ -1,20 +1,18 @@
import {
resolveRepresentationWindow,
isRepresentationWindowOpen,
isRepresentationWindowClosed,
canShowRepresentationButtonForAppealType,
canStartHouseholderRepresentation,
canStartCpoRepresentation,
canStartRowRepresentation,
canStartAdvertRepresentation
} from "../../../../lib/domain/representation-policy";
export function showRepsLocal(startDate, endDate) { export function showRepsLocal(startDate, endDate) {
return isRepresentationWindowOpen(startDate, endDate); let date = new Date();
date = new Date(date.toDateString());
const start = new Date(startDate);
const end = new Date(endDate);
return date >= start && date <= end ? true : false;
} }
export function showRepsEndedLocal(startDate, endDate) { export function showRepsEndedLocal(startDate, endDate) {
return isRepresentationWindowClosed(startDate, endDate); let date = new Date();
date = new Date(date.toDateString());
const start = new Date(startDate);
const end = new Date(endDate);
return date > start && date > end ? true : false;
} }
export function isConsultationWindowOpen(detailsObj) { export function isConsultationWindowOpen(detailsObj) {
@@ -25,7 +23,24 @@ export function isConsultationWindowOpen(detailsObj) {
} }
export function isGeneralRepresentationWindowOpen(detailsObj) { export function isGeneralRepresentationWindowOpen(detailsObj) {
return resolveRepresentationWindow(detailsObj).isOpen; return (
(Object.prototype.hasOwnProperty.call(detailsObj, "pinswg_startdate") ||
Object.prototype.hasOwnProperty.call(
detailsObj,
"pinswg_applicationacceptedasvalid"
) ||
Object.prototype.hasOwnProperty.call(
detailsObj,
"pinswg_startdates"
)) &&
showRepsLocal(
detailsObj.pinswg_startdate ||
detailsObj.pinswg_startdates ||
detailsObj.pinswg_applicationacceptedasvalid,
detailsObj.pinswg_finalcommentsduedate ||
detailsObj.pinswg_endofrepresentationperiod
)
);
} }
export function canShowRepButtonForAppealType({ export function canShowRepButtonForAppealType({
@@ -33,31 +48,44 @@ export function canShowRepButtonForAppealType({
isLPA, isLPA,
searchDetailsObj searchDetailsObj
}) { }) {
if (!canShowRepresentationButtonForAppealType(appealType)) {
return false;
}
switch (appealType) { switch (appealType) {
case 846040012:
case 846040013:
case 846040014:
//for ROW case 846040015:
case 846040020:
case 846040021:
case 846040023:
case 846040024:
return false;
case 846040004: case 846040004:
return canStartHouseholderRepresentation(appealType, isLPA); return isLPA ? true : false;
case 846040015: case 846040015:
return canStartRowRepresentation( return searchDetailsObj[0].value[0].pinswg_specialistcaseprocess ==
appealType, 846040001
searchDetailsObj[0].value[0] ? showRepsLocal(
); searchDetailsObj[0].value[0].pinswg_startdate,
searchDetailsObj[0].value[0].pinswg_finalcommentsduedate
)
: true;
case 846040018: case 846040018:
return canStartAdvertRepresentation( let shouldShow =
appealType, searchDetailsObj[0].value[0].pinswg_speacialistcaseprocess ==
searchDetailsObj[0].value[0], 846040000 && isLPA
isLPA ? true
); : searchDetailsObj[0].value[0]
.pinswg_speacialistcaseprocess == 846040001
? true
: false;
return shouldShow;
case 846040019: case 846040019:
return canStartCpoRepresentation( return showRepsLocal(
appealType, searchDetailsObj[0].value[0].pinswg_startdate,
searchDetailsObj[0].value[0] searchDetailsObj[0].value[0].pinswg_statementduedate
); );
default: default:
@@ -72,9 +100,6 @@ export function getEntryCtaLabelKey(appealType) {
} }
export function shouldSuppressBlockedMessage({ appealType, isLPA }) { export function shouldSuppressBlockedMessage({ appealType, isLPA }) {
if (!canShowRepresentationButtonForAppealType(appealType)) {
return true;
}
return !isLPA && appealType == 846040004; return !isLPA && appealType == 846040004;
} }
+139 -94
View File
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_advertsid = (props) => { const Pinswg_advertsid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -24,94 +22,139 @@ const Pinswg_advertsid = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")} label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<SummaryRow <SummaryRow
label={t( label={"Specialist Case Process"}
"case:summary-specialist-case-process-label" value={
)} router.locale == "cy"
value={resolveCrmDisplayValue({ ? jsonpath({
value: detailsObj[ path:
"pinswg_speacialistcaseprocess@OData.Community.Display.V1.FormattedValue" '$..[?(@ && @.value=="' +
], detailsObj[
locale, "pinswg_speacialistcaseprocess@OData.Community.Display.V1.FormattedValue"
translations: transLookup, ] +
fallbackValue: "" '")].value_cy',
})} json: transLookup,
eval: true
})
: detailsObj[
"pinswg_speacialistcaseprocess@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")} label={t("case:summary-lpa-label")}
value={ value={
<> router.locale == "cy"
{getCaseLpaDisplayLines({ ? jsonpath({
casesObj, path:
detailsObj, '$..[?(@ && @.value=="' +
locale: router.locale, casesObj[
transLookup "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
}).map((name) => ( ] +
<div key={name}>{name}</div> '")].value_cy',
))} json: transLookup,
</> eval: true
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-eia-required-label")} label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue" ? jsonpath(
], '$..[?(@.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-to-be-confirmed-label" '")].value_cy',
) transLookup
})} )
: detailsObj[
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-to-be-confirmed-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-procedure-label")} label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-type-of-event-label")} label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"statuscode@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "statuscode@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
@@ -119,16 +162,23 @@ const Pinswg_advertsid = (props) => {
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br /> <br />
{/* <Link href="/"> {/* <Link href="/">
@@ -145,9 +195,7 @@ const Pinswg_advertsid = (props) => {
{t("case:summary-case-link-status-label")} {t("case:summary-case-link-status-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, ["numberofchildincidents"])
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0 ? casesObj.numberofchildincidents > 0
? t( ? t(
"case:summary-case-link-status-linked" "case:summary-case-link-status-linked"
@@ -186,7 +234,7 @@ const Pinswg_advertsid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")} label={t("case:summary-start-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdate") _.has(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate) ? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates( ? formatDates(
detailsObj.pinswg_startdate detailsObj.pinswg_startdate
@@ -194,7 +242,7 @@ const Pinswg_advertsid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn(detailsObj, "pinswg_startdates") : _.has(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates) ? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates( ? formatDates(
detailsObj.pinswg_startdates detailsObj.pinswg_startdates
@@ -211,10 +259,7 @@ const Pinswg_advertsid = (props) => {
"case:summary-questionnaire-due-date-label" "case:summary-questionnaire-due-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_questionnaireduedate")
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate detailsObj.pinswg_questionnaireduedate
) )
@@ -233,7 +278,7 @@ const Pinswg_advertsid = (props) => {
"case:summary-interested-party-date-label" "case:summary-interested-party-date-label"
)} )}
value={ value={
hasOwn( _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatement" "pinswg_otherpartiesstatement"
) )
@@ -246,7 +291,7 @@ const Pinswg_advertsid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn( : _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_otherpartiesstatements"
) )
@@ -266,7 +311,7 @@ const Pinswg_advertsid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")} label={t("case:summary-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_dateeventrequested") _.has(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_dateeventrequested detailsObj.pinswg_dateeventrequested
) )
@@ -283,7 +328,7 @@ const Pinswg_advertsid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")} label={t("case:summary-start-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdateoftheevent") _.has(detailsObj, "pinswg_startdateoftheevent")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_startdateoftheevent detailsObj.pinswg_startdateoftheevent
) )
@@ -299,7 +344,7 @@ const Pinswg_advertsid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-decision-date-label")} label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_casedecisiondate") _.has(detailsObj, "pinswg_casedecisiondate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_casedecisiondate detailsObj.pinswg_casedecisiondate
) )
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_callinss77id = (props) => { const Pinswg_callinss77id = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -24,97 +22,149 @@ const Pinswg_callinss77id = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")} label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")} label={t("case:summary-lpa-label")}
value={ value={
<> router.locale == "cy"
{getCaseLpaDisplayLines({ ? jsonpath({
casesObj, path:
detailsObj, '$..[?(@ && @.value=="' +
locale: router.locale, casesObj[
transLookup "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
}).map((name) => ( ] +
<div key={name}>{name}</div> '")].value_cy',
))} json: transLookup,
</> eval: true
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-eia-required-label")} label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue" ? jsonpath(
], '$..[?(@.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-to-be-confirmed-label" '")].value_cy',
) transLookup
})} )
: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-to-be-confirmed-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-procedure-label")} label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-type-of-event-label")} label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"statuscode@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "statuscode@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br /> <br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
@@ -123,9 +173,7 @@ const Pinswg_callinss77id = (props) => {
{t("case:summary-case-link-status-label")} {t("case:summary-case-link-status-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, ["numberofchildincidents"])
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0 ? casesObj.numberofchildincidents > 0
? t( ? t(
"case:summary-case-link-status-linked" "case:summary-case-link-status-linked"
@@ -164,7 +212,7 @@ const Pinswg_callinss77id = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")} label={t("case:summary-start-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdate") _.has(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate) ? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates( ? formatDates(
detailsObj.pinswg_startdate detailsObj.pinswg_startdate
@@ -172,7 +220,7 @@ const Pinswg_callinss77id = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn(detailsObj, "pinswg_startdates") : _.has(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates) ? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates( ? formatDates(
detailsObj.pinswg_startdates detailsObj.pinswg_startdates
@@ -188,10 +236,7 @@ const Pinswg_callinss77id = (props) => {
"case:summary-questionnaire-due-date-label" "case:summary-questionnaire-due-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_questionnaireduedate")
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate detailsObj.pinswg_questionnaireduedate
) )
@@ -204,11 +249,36 @@ const Pinswg_callinss77id = (props) => {
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
{/* <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-date-exported-to-iss-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(
detailsObj,
"pinswg_dateexportedtoiss"
)
? !_.isEmpty(
detailsObj.pinswg_dateexportedtoiss
)
? formatDates(
detailsObj.pinswg_dateexportedtoiss
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
</dd>
</div> */}
<SummaryRow <SummaryRow
label={t("case:summary-statement-due-date-label")} label={t("case:summary-statement-due-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_statementsduedate") _.has(detailsObj, "pinswg_statementsduedate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_statementsduedate detailsObj.pinswg_statementsduedate
) )
@@ -226,7 +296,7 @@ const Pinswg_callinss77id = (props) => {
"case:summary-interested-party-date-label" "case:summary-interested-party-date-label"
)} )}
value={ value={
hasOwn( _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatement" "pinswg_otherpartiesstatement"
) )
@@ -239,7 +309,7 @@ const Pinswg_callinss77id = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn( : _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_otherpartiesstatements"
) )
@@ -260,10 +330,7 @@ const Pinswg_callinss77id = (props) => {
"case:summary-applicant-final-comments-date-label" "case:summary-applicant-final-comments-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_finalcommentsduedate")
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate detailsObj.pinswg_finalcommentsduedate
) )
@@ -276,11 +343,35 @@ const Pinswg_callinss77id = (props) => {
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
{/* <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-inquiry-evidence-date-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
</dd>
</div> */}
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")} label={t("case:summary-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_dateeventrequested") _.has(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_dateeventrequested detailsObj.pinswg_dateeventrequested
) )
@@ -296,7 +387,7 @@ const Pinswg_callinss77id = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")} label={t("case:summary-start-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdateofevent") _.has(detailsObj, "pinswg_startdateofevent")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_startdateofevent detailsObj.pinswg_startdateofevent
) )
@@ -312,7 +403,7 @@ const Pinswg_callinss77id = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-decision-date-label")} label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_casedecisiondate") _.has(detailsObj, "pinswg_casedecisiondate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_casedecisiondate detailsObj.pinswg_casedecisiondate
) )
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_commonlandid = (props) => { const Pinswg_commonlandid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -24,97 +22,149 @@ const Pinswg_commonlandid = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")} label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")} label={t("case:summary-lpa-label")}
value={ value={
<> router.locale == "cy"
{getCaseLpaDisplayLines({ ? jsonpath({
casesObj, path:
detailsObj, '$..[?(@ && @.value=="' +
locale: router.locale, casesObj[
transLookup "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
}).map((name) => ( ] +
<div key={name}>{name}</div> '")].value_cy',
))} json: transLookup,
</> eval: true
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-eia-required-label")} label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue" ? jsonpath(
], '$..[?(@.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-to-be-confirmed-label" '")].value_cy',
) transLookup
})} )
: detailsObj[
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-to-be-confirmed-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-procedure-label")} label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-type-of-event-label")} label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"statuscode@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "statuscode@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br /> <br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
@@ -123,9 +173,7 @@ const Pinswg_commonlandid = (props) => {
{t("case:summary-case-link-status-label")} {t("case:summary-case-link-status-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, ["numberofchildincidents"])
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0 ? casesObj.numberofchildincidents > 0
? t( ? t(
"case:summary-case-link-status-linked" "case:summary-case-link-status-linked"
@@ -157,14 +205,26 @@ const Pinswg_commonlandid = (props) => {
label={t( label={t(
"case:summary-case-relevant-authoritylabel" "case:summary-case-relevant-authoritylabel"
)} )}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_relevantauthorityname" ? jsonpath({
], path:
locale, '$..[?(@ && @.pinswg_lpa=="' +
translations: transLookup, detailsObj.pinswg_relevantauthorityname +
fallbackValue: "" '")].value_cy',
})} json: transLookup,
eval: true
})
: jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value',
json: transLookup,
eval: true
}) ||
t("case:summary-no-date-entered-label")
}
/> />
</dl> </dl>
</SummaryCard> </SummaryCard>
@@ -177,7 +237,7 @@ const Pinswg_commonlandid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")} label={t("case:summary-start-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdate") _.has(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate) ? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates( ? formatDates(
detailsObj.pinswg_startdate detailsObj.pinswg_startdate
@@ -185,7 +245,7 @@ const Pinswg_commonlandid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn(detailsObj, "pinswg_startdates") : _.has(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates) ? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates( ? formatDates(
detailsObj.pinswg_startdates detailsObj.pinswg_startdates
@@ -202,10 +262,7 @@ const Pinswg_commonlandid = (props) => {
"case:summary-questionnaire-due-date-label" "case:summary-questionnaire-due-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_questionnaireduedate")
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate detailsObj.pinswg_questionnaireduedate
) )
@@ -222,7 +279,7 @@ const Pinswg_commonlandid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-statement-due-date-label")} label={t("case:summary-statement-due-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_statementsduedate") _.has(detailsObj, "pinswg_statementsduedate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_statementsduedate detailsObj.pinswg_statementsduedate
) )
@@ -241,7 +298,7 @@ const Pinswg_commonlandid = (props) => {
"case:summary-interested-party-date-label" "case:summary-interested-party-date-label"
)} )}
value={ value={
hasOwn( _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatement" "pinswg_otherpartiesstatement"
) )
@@ -254,7 +311,7 @@ const Pinswg_commonlandid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn( : _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_otherpartiesstatements"
) )
@@ -276,10 +333,7 @@ const Pinswg_commonlandid = (props) => {
"case:summary-applicant-final-comments-date-label" "case:summary-applicant-final-comments-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_finalcommentsduedate")
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate detailsObj.pinswg_finalcommentsduedate
) )
@@ -292,11 +346,35 @@ const Pinswg_commonlandid = (props) => {
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
{/* <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-inquiry-evidence-date-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
</dd>
</div> */}
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")} label={t("case:summary-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_dateeventrequested") _.has(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_dateeventrequested detailsObj.pinswg_dateeventrequested
) )
@@ -313,7 +391,7 @@ const Pinswg_commonlandid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")} label={t("case:summary-start-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_starttimeoftheevent") _.has(detailsObj, "pinswg_starttimeoftheevent")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_starttimeoftheevent detailsObj.pinswg_starttimeoftheevent
) )
@@ -329,7 +407,7 @@ const Pinswg_commonlandid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-decision-date-label")} label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_casedecisiondate") _.has(detailsObj, "pinswg_casedecisiondate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_casedecisiondate detailsObj.pinswg_casedecisiondate
) )
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_communityinfrastructurelevyid = (props) => { const Pinswg_communityinfrastructurelevyid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -24,97 +22,149 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")} label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")} label={t("case:summary-lpa-label")}
value={ value={
<> router.locale == "cy"
{getCaseLpaDisplayLines({ ? jsonpath({
casesObj, path:
detailsObj, '$..[?(@ && @.value=="' +
locale: router.locale, casesObj[
transLookup "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
}).map((name) => ( ] +
<div key={name}>{name}</div> '")].value_cy',
))} json: transLookup,
</> eval: true
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-eia-required-label")} label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue" ? jsonpath(
], '$..[?(@.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-to-be-confirmed-label" '")].value_cy',
) transLookup
})} )
: detailsObj[
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-to-be-confirmed-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-procedure-label")} label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-type-of-event-label")} label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"statuscode@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "statuscode@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br /> <br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
@@ -123,9 +173,7 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
{t("case:summary-case-link-status-label")} {t("case:summary-case-link-status-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, ["numberofchildincidents"])
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0 ? casesObj.numberofchildincidents > 0
? t( ? t(
"case:summary-case-link-status-linked" "case:summary-case-link-status-linked"
@@ -164,7 +212,7 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")} label={t("case:summary-start-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdate") _.has(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate) ? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates( ? formatDates(
detailsObj.pinswg_startdate detailsObj.pinswg_startdate
@@ -172,7 +220,7 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn(detailsObj, "pinswg_startdates") : _.has(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates) ? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates( ? formatDates(
detailsObj.pinswg_startdates detailsObj.pinswg_startdates
@@ -188,7 +236,7 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
"case:summary-interested-party-date-label" "case:summary-interested-party-date-label"
)} )}
value={ value={
hasOwn( _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatement" "pinswg_otherpartiesstatement"
) )
@@ -201,7 +249,7 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn( : _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_otherpartiesstatements"
) )
@@ -223,10 +271,7 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
"case:summary-applicant-final-comments-date-label" "case:summary-applicant-final-comments-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_finalcommentsduedate")
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate detailsObj.pinswg_finalcommentsduedate
) )
@@ -243,7 +288,7 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")} label={t("case:summary-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_dateeventrequested") _.has(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_dateeventrequested detailsObj.pinswg_dateeventrequested
) )
@@ -260,7 +305,7 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")} label={t("case:summary-start-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdateoftheevent") _.has(detailsObj, "pinswg_startdateoftheevent")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_startdateoftheevent detailsObj.pinswg_startdateoftheevent
) )
@@ -276,7 +321,7 @@ const Pinswg_communityinfrastructurelevyid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-decision-date-label")} label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_casedecisiondate") _.has(detailsObj, "pinswg_casedecisiondate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_casedecisiondate detailsObj.pinswg_casedecisiondate
) )
@@ -1,10 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { hasOwn } from "../../utils";
const Pinswg_compulsorypurchaseordersid = (props) => { const Pinswg_compulsorypurchaseordersid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,81 +22,131 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")} label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-eia-required-label")} label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_detailedeiascreening@OData.Community.Display.V1.FormattedValue" ? jsonpath(
], '$..[?(@.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_detailedeiascreening@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-to-be-confirmed-label" '")].value_cy',
) transLookup
})} )
: detailsObj[
"pinswg_detailedeiascreening@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-to-be-confirmed-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-procedure-label")} label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-type-of-event-label")} label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"statuscode@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "statuscode@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
@@ -105,9 +155,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
{t("case:summary-case-link-status-label")} {t("case:summary-case-link-status-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, ["numberofchildincidents"])
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0 ? casesObj.numberofchildincidents > 0
? t( ? t(
"case:summary-case-link-status-linked" "case:summary-case-link-status-linked"
@@ -139,12 +187,26 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
label={t( label={t(
"case:summary-case-relevant-authoritylabel" "case:summary-case-relevant-authoritylabel"
)} )}
value={resolveCrmDisplayValue({ value={
value: detailsObj.pinswg_relevantauthorityname, router.locale == "cy"
locale: router.locale, ? jsonpath({
translations: transLookup, path:
fallbackValue: "" '$..[?(@ && @.pinswg_lpa=="' +
})} detailsObj.pinswg_relevantauthorityname +
'")].value_cy',
json: transLookup,
eval: true
})
: jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value',
json: transLookup,
eval: true
}) ||
t("case:summary-no-date-entered-label")
}
/> />
</dl> </dl>
</SummaryCard> </SummaryCard>
@@ -157,7 +219,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")} label={t("case:summary-start-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdate") _.has(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate) ? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates( ? formatDates(
detailsObj.pinswg_startdate detailsObj.pinswg_startdate
@@ -165,7 +227,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn(detailsObj, "pinswg_startdates") : _.has(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates) ? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates( ? formatDates(
detailsObj.pinswg_startdates detailsObj.pinswg_startdates
@@ -182,10 +244,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
"case:summary-questionnaire-due-date-label" "case:summary-questionnaire-due-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_questionnaireduedate")
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate detailsObj.pinswg_questionnaireduedate
) )
@@ -202,7 +261,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-statement-due-date-label")} label={t("case:summary-statement-due-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_statementduedate") _.has(detailsObj, "pinswg_statementduedate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_statementduedate detailsObj.pinswg_statementduedate
) )
@@ -221,7 +280,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
"case:summary-interested-party-date-label" "case:summary-interested-party-date-label"
)} )}
value={ value={
hasOwn( _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatement" "pinswg_otherpartiesstatement"
) )
@@ -234,7 +293,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn( : _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_otherpartiesstatements"
) )
@@ -256,10 +315,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
"case:summary-applicant-final-comments-date-label" "case:summary-applicant-final-comments-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_finalcommentsduedate")
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate detailsObj.pinswg_finalcommentsduedate
) )
@@ -279,7 +335,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
)} )}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn( {_.has(
detailsObj, detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden" "pinswg_proofsofevidencewrittenstatementsofeviden"
) )
@@ -300,7 +356,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")} label={t("case:summary-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_dateeventrequested") _.has(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_dateeventrequested detailsObj.pinswg_dateeventrequested
) )
@@ -317,7 +373,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")} label={t("case:summary-start-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdateofevent") _.has(detailsObj, "pinswg_startdateofevent")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_startdateofevent detailsObj.pinswg_startdateofevent
) )
@@ -333,7 +389,7 @@ const Pinswg_compulsorypurchaseordersid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-decision-date-label")} label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_casedecisiondate") _.has(detailsObj, "pinswg_casedecisiondate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_casedecisiondate detailsObj.pinswg_casedecisiondate
) )
File diff suppressed because it is too large Load Diff
@@ -3,11 +3,8 @@ import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_electricityactid = (props) => { const Pinswg_electricityactid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -65,49 +62,82 @@ const Pinswg_electricityactid = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t(
"case:summary-case-type-label" label={t("case:summary-case-type-label")}
)}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={ value={
<>
{getCaseLpaDisplayLines({ router.locale == "cy"
casesObj, ? jsonpath({
detailsObj, path:
locale: router.locale, '$..[?(@ && @.value=="' +
transLookup casesObj[
}).map((name) => ( "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
<div key={name}>{name}</div> ] +
))} '")].value_cy',
</> json: transLookup,
eval: true,
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")}
value={
router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
}
/>
<SummaryRow
label={t( label={t(
"case:summary-eia-required-label" "case:summary-eia-required-label"
)} )}
value={resolveCrmDisplayValue({
value: detailsObj[ value={
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale, ? jsonpath(
translations: transLookup, '$..[?(@.value=="' +
fallbackValue: t( detailsObj[
"case:summary-to-be-confirmed-label" "pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
) ] +
})} '")].value_cy',
transLookup
)
: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-to-be-confirmed-label"
)
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -116,7 +146,10 @@ const Pinswg_electricityactid = (props) => {
)} )}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, "_ownerid_value") {" "}
{/* {casesObj.caseDetails.caseOfficer ||
""} */}
{_.has(casesObj, "_ownerid_value")
? casesObj[ ? casesObj[
"_ownerid_value@OData.Community.Display.V1.FormattedValue" "_ownerid_value@OData.Community.Display.V1.FormattedValue"
] ]
@@ -124,59 +157,112 @@ const Pinswg_electricityactid = (props) => {
</dd> </dd>
</div> </div>
<SummaryRow <SummaryRow
label={t(
"case:summary-procedure-label" label={t("case:summary-procedure-label")}
)}
value={resolveCrmDisplayValue({ value={
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" router.locale == "cy"
], ? jsonpath({
locale, path:
translations: transLookup, '$..[?(@ && @.value=="' +
fallbackValue: "" detailsObj[
})} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-type-of-event-label" "case:summary-type-of-event-label"
)} )}
value={resolveCrmDisplayValue({
value: detailsObj[ value={
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale, ? jsonpath({
translations: transLookup, path:
fallbackValue: "" '$..[?(@ && @.value=="' +
})} detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[ value={
"statuscode@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale, ? jsonpath({
translations: transLookup, path:
fallbackValue: t( '$..[?(@ && @.value=="' +
"case:summary-no-date-entered-label" casesObj[
) "statuscode@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-date-entered-label" '")].value_cy',
) json: transLookup,
})} eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
@@ -187,8 +273,8 @@ const Pinswg_electricityactid = (props) => {
)} )}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, [
"numberofchildincidents" "numberofchildincidents",
]) ])
? casesObj.numberofchildincidents > ? casesObj.numberofchildincidents >
0 0
@@ -222,26 +308,39 @@ const Pinswg_electricityactid = (props) => {
"" ""
)} )}
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-case-recommendation-label" "case:summary-case-recommendation-label"
)} )}
value={resolveCrmDisplayValue({
value: detailsObj[ value={
"pinswg_recommendation"
], router.locale == "cy"
locale, ? jsonpath({
translations: transLookup, path:
fallbackValue: t( '$..[?(@ && @.value=="' +
"case:summary-no-date-entered-label" detailsObj.pinswg_recommendation +
) '")].value_cy',
})} json: transLookup,
eval: true,
})
: detailsObj.pinswg_recommendation ||
t(
"case:summary-no-date-entered-label"
)
}
/> />
{detailsObj.pinswg_webaddress != null && ( {detailsObj.pinswg_webaddress != null && (
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-case-website-label" "case:summary-case-website-label"
)} )}
value={ value={
router.locale == "cy" router.locale == "cy"
? jsonpath({ ? jsonpath({
path: path:
@@ -249,13 +348,15 @@ const Pinswg_electricityactid = (props) => {
detailsObj.pinswg_webaddress + detailsObj.pinswg_webaddress +
'")].value_cy', '")].value_cy',
json: transLookup, json: transLookup,
eval: true eval: true,
}) })
: detailsObj.pinswg_webaddress || : detailsObj.pinswg_webaddress ||
t( t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
)} )}
</dl> </dl>
@@ -270,11 +371,12 @@ const Pinswg_electricityactid = (props) => {
</h3> </h3>
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t(
"case:summary-event-date-label" label={t("case:summary-event-date-label")}
)}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateeventrequested" "pinswg_dateeventrequested"
) )
@@ -290,14 +392,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-decision-date-label" "case:summary-decision-date-label"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_casedecisiondate" "pinswg_casedecisiondate"
) )
@@ -313,15 +420,23 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-application-accepted-as-valid" "case:summary-application-accepted-as-valid"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_applicationacceptedasvalid" "pinswg_applicationacceptedasvalid"
) )
@@ -337,14 +452,21 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-application-rejected-as-invalid" "case:summary-application-rejected-as-invalid"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_applicationrejectedasinvalid" "pinswg_applicationrejectedasinvalid"
) )
@@ -360,14 +482,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-confirm-request-to-vary-application" "case:summary-confirm-request-to-vary-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_confirmrequesttovaryapplication" "pinswg_confirmrequesttovaryapplication"
) )
@@ -383,14 +510,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-of-decisions" "case:summary-date-of-decisions"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateofdecision" "pinswg_dateofdecision"
) )
@@ -406,14 +538,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-of-request-to-vary" "case:summary-date-of-request-to-vary"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateofrequesttovarytheapplication" "pinswg_dateofrequesttovarytheapplication"
) )
@@ -429,14 +566,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-of-submission-of-application" "case:summary-date-of-submission-of-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateofsubmissionofapplication" "pinswg_dateofsubmissionofapplication"
) )
@@ -452,14 +594,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-project-published-to-website" "case:summary-date-project-published-to-website"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateprojectpublishedonwebsite" "pinswg_dateprojectpublishedonwebsite"
) )
@@ -475,14 +622,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-deadline-for-submission-of-application" "case:summary-deadline-for-submission-of-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_deadlineforsubmissionofapplication" "pinswg_deadlineforsubmissionofapplication"
) )
@@ -498,14 +650,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-end-of-representation-period" "case:summary-end-of-representation-period"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_endofrepresentationperiod" "pinswg_endofrepresentationperiod"
) )
@@ -521,14 +678,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-inspector-report-submission-to-welsh-government" "case:summary-inspector-report-submission-to-welsh-government"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_inspectorreportsubmittedtowelshgovernment" "pinswg_inspectorreportsubmittedtowelshgovernment"
) )
@@ -544,14 +706,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-procedure-confirmed" "case:summary-procedure-confirmed"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_procedureconfirmed" "pinswg_procedureconfirmed"
) )
@@ -567,14 +734,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-reject-request-to-vary-application" "case:summary-reject-request-to-vary-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_rejectrequesttovaryapplication" "pinswg_rejectrequesttovaryapplication"
) )
@@ -590,12 +762,17 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-report-due-by")} label={t("case:summary-report-due-by")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_reportdueby" "pinswg_reportdueby"
) )
@@ -611,14 +788,17 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t(
"case:summary-suspension-dates" label={t("case:summary-suspension-dates")}
)}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_suspensiondates" "pinswg_suspensiondates"
) )
@@ -634,14 +814,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-suspension-end-dates" "case:summary-suspension-end-dates"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_suspensionenddates" "pinswg_suspensionenddates"
) )
@@ -657,14 +842,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-suspension-start-dates" "case:summary-suspension-start-dates"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_suspensionstartdates" "pinswg_suspensionstartdates"
) )
@@ -680,14 +870,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-valid-notice-of-intention-to-submit-an-application" "case:summary-valid-notice-of-intention-to-submit-an-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_validnoticeofintentiontosubmitanapplicati" "pinswg_validnoticeofintentiontosubmitanapplicati"
) )
@@ -703,12 +898,17 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-withdrawn-date")} label={t("case:summary-withdrawn-date")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_withdrawndate" "pinswg_withdrawndate"
) )
@@ -724,14 +924,19 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-written-acceptance-of-notice" "case:summary-written-acceptance-of-notice"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_writtenacceptanceofnotification" "pinswg_writtenacceptanceofnotification"
) )
@@ -747,7 +952,9 @@ const Pinswg_electricityactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
</dl> </dl>
</div> </div>
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_enforcementlistedbuildingconseid = (props) => { const Pinswg_enforcementlistedbuildingconseid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -24,97 +22,149 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")} label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")} label={t("case:summary-lpa-label")}
value={ value={
<> router.locale == "cy"
{getCaseLpaDisplayLines({ ? jsonpath({
casesObj, path:
detailsObj, '$..[?(@ && @.value=="' +
locale: router.locale, casesObj[
transLookup "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
}).map((name) => ( ] +
<div key={name}>{name}</div> '")].value_cy',
))} json: transLookup,
</> eval: true
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-eia-required-label")} label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue" ? jsonpath(
], '$..[?(@.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-to-be-confirmed-label" '")].value_cy',
) transLookup
})} )
: detailsObj[
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-to-be-confirmed-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-procedure-label")} label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-type-of-event-label")} label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"statuscode@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "statuscode@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br /> <br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
@@ -123,9 +173,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
{t("case:summary-case-link-status-label")} {t("case:summary-case-link-status-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, ["numberofchildincidents"])
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0 ? casesObj.numberofchildincidents > 0
? t( ? t(
"case:summary-case-link-status-linked" "case:summary-case-link-status-linked"
@@ -164,7 +212,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")} label={t("case:summary-start-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdate") _.has(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate) ? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates( ? formatDates(
detailsObj.pinswg_startdate detailsObj.pinswg_startdate
@@ -172,7 +220,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn(detailsObj, "pinswg_startdates") : _.has(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates) ? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates( ? formatDates(
detailsObj.pinswg_startdates detailsObj.pinswg_startdates
@@ -189,10 +237,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
"case:summary-questionnaire-due-date-label" "case:summary-questionnaire-due-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_questionnaireduedate")
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate detailsObj.pinswg_questionnaireduedate
) )
@@ -209,7 +254,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-statement-due-date-label")} label={t("case:summary-statement-due-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_statementduedate") _.has(detailsObj, "pinswg_statementduedate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_statementduedate detailsObj.pinswg_statementduedate
) )
@@ -228,7 +273,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
"case:summary-interested-party-date-label" "case:summary-interested-party-date-label"
)} )}
value={ value={
hasOwn( _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatement" "pinswg_otherpartiesstatement"
) )
@@ -241,7 +286,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn( : _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_otherpartiesstatements"
) )
@@ -263,10 +308,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
"case:summary-applicant-final-comments-date-label" "case:summary-applicant-final-comments-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_finalcommentsduedate")
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate detailsObj.pinswg_finalcommentsduedate
) )
@@ -279,11 +321,35 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
{/* <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-inquiry-evidence-date-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
</dd>
</div> */}
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")} label={t("case:summary-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_dateeventrequested") _.has(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_dateeventrequested detailsObj.pinswg_dateeventrequested
) )
@@ -300,7 +366,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")} label={t("case:summary-start-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdateofevent") _.has(detailsObj, "pinswg_startdateofevent")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_startdateofevent detailsObj.pinswg_startdateofevent
) )
@@ -316,7 +382,7 @@ const Pinswg_enforcementlistedbuildingconseid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-decision-date-label")} label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_casedecisiondate") _.has(detailsObj, "pinswg_casedecisiondate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_casedecisiondate detailsObj.pinswg_casedecisiondate
) )
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_enforcementnoticeappeals174id = (props) => { const Pinswg_enforcementnoticeappeals174id = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,138 +20,208 @@ const Pinswg_enforcementnoticeappeals174id = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
<>
{getCaseLpaDisplayLines({
casesObj,
detailsObj,
locale: router.locale,
transLookup
}).map((name) => (
<div key={name}>{name}</div>
))}
</>
}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-to-be-confirmed-label"
)
})}
/>
<SummaryRow
label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> label={t("case:summary-case-type-label")}
</dd>
</div> value={router.locale == "cy"
{casesObj.numberofchildincidents > 0 && ( ? jsonpath({
<div className="govuk-summary-list__row"> path:
<dt className="govuk-summary-list__key"> '$..[?(@ && @.value=="' +
{t("case:summary-case-link-status-label")} casesObj[
</dt> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
<dd className="govuk-summary-list__value"> ] +
{hasOwn(casesObj, [ '")].value_cy',
"numberofchildincidents" json: transLookup,
]) eval: true,
? casesObj.numberofchildincidents > 0 })
? t( : casesObj[
"case:summary-case-link-status-linked" "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={router.locale == "cy"
? jsonpath(
'$..[?(@.value=="' +
detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
transLookup
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
</dl> : detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -161,175 +229,257 @@ const Pinswg_enforcementnoticeappeals174id = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-statement-due-date-label"
)}
value={_.has(
detailsObj,
"pinswg_statementduedate"
) )
? formatDates( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_statementduedate
) )
: t( ? formatDates(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow />
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdateoftheevent") label={t(
? !_.isEmpty( "case:summary-interested-party-date-label"
detailsObj.pinswg_startdateoftheevent )}
)
? formatDates(
detailsObj.pinswg_startdateoftheevent value={_.has(
) detailsObj,
: t( "pinswg_otherpartiesstatement"
"case:summary-no-date-entered-label" )
) ? !_.isEmpty(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatement
} )
/> ? formatDates(
<SummaryRow detailsObj.pinswg_otherpartiesstatement
label={t("case:summary-decision-date-label")} )
value={ : t(
hasOwn(detailsObj, "pinswg_casedecisiondate") "case:summary-no-date-entered-label"
? !_.isEmpty( )
detailsObj.pinswg_casedecisiondate : _.has(
) detailsObj,
? formatDates( "pinswg_otherpartiesstatements"
detailsObj.pinswg_casedecisiondate )
) ? !_.isEmpty(
: t( detailsObj.pinswg_otherpartiesstatements
"case:summary-no-date-entered-label" )
) ? formatDates(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatements
} )
/> : t(
</dl> "case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t(
"case:summary-inquiry-evidence-date-label"
)}
value={_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/> */}
<SummaryRow
label={t("case:summary-event-date-label")}
value={_.has(
detailsObj,
"pinswg_dateeventrequested"
)
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-start-event-date-label"
)}
value={_.has(
detailsObj,
"pinswg_startdateoftheevent"
)
? !_.isEmpty(
detailsObj.pinswg_startdateoftheevent
)
? formatDates(
detailsObj.pinswg_startdateoftheevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_environmentalpermittingid = (props) => { const Pinswg_environmentalpermittingid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,149 +20,236 @@ const Pinswg_environmentalpermittingid = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
<>
{getCaseLpaDisplayLines({
casesObj,
detailsObj,
locale: router.locale,
transLookup
}).map((name) => (
<div key={name}>{name}</div>
))}
</>
}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-to-be-confirmed-label"
)
})}
/>
<SummaryRow
label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> label={t("case:summary-case-type-label")}
</dd>
</div> value={router.locale == "cy"
{casesObj.numberofchildincidents > 0 && ( ? jsonpath({
<div className="govuk-summary-list__row"> path:
<dt className="govuk-summary-list__key"> '$..[?(@ && @.value=="' +
{t("case:summary-case-link-status-label")} casesObj[
</dt> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
<dd className="govuk-summary-list__value"> ] +
{hasOwn(casesObj, [ '")].value_cy',
"numberofchildincidents" json: transLookup,
]) eval: true,
? casesObj.numberofchildincidents > 0 })
? t( : casesObj[
"case:summary-case-link-status-linked" "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={router.locale == "cy"
? jsonpath(
'$..[?(@.value=="' +
detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
transLookup
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
<SummaryRow : detailsObj[
label={t( "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
"case:summary-case-relevant-authoritylabel" ] || ""}
)}
value={resolveCrmDisplayValue({ />
value: detailsObj.pinswg_relevantauthorityname, <SummaryRow
locale: router.locale,
translations: transLookup, label={t("case:summary-type-of-event-label")}
fallbackValue: ""
})} value={router.locale == "cy"
/> ? jsonpath({
</dl> path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
<SummaryRow
label={t(
"case:summary-case-relevant-authoritylabel"
)}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value_cy',
json: transLookup,
eval: true,
})
: jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value',
json: transLookup,
eval: true,
}) ||
t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -172,129 +257,168 @@ const Pinswg_environmentalpermittingid = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
) )
? formatDates( ? formatDates(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
) )
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )}
<SummaryRow
label={t( />
"case:summary-applicant-final-comments-date-label"
)} <SummaryRow
value={
hasOwn(
detailsObj, label={t(
"pinswg_finalcommentsduedate" "case:summary-statement-due-date-label"
) )}
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
) value={_.has(
? formatDates( detailsObj,
detailsObj.pinswg_finalcommentsduedate "pinswg_statementduedate"
) )
: t( ? !_.isEmpty(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") ? formatDates(
} detailsObj.pinswg_statementduedate
/> )
{/* <SummaryRow : t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-interested-party-date-label"
)}
value={_.has(
detailsObj,
"pinswg_otherpartiesstatement"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: _.has(
detailsObj,
"pinswg_otherpartiesstatements"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements
)
? formatDates(
detailsObj.pinswg_otherpartiesstatements
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t( label={t(
"case:summary-inquiry-evidence-date-label" "case:summary-inquiry-evidence-date-label"
)} )}
value={hasOwn( value={_.has(
detailsObj, detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden" "pinswg_proofsofevidencewrittenstatementsofeviden"
) )
@@ -311,56 +435,79 @@ const Pinswg_environmentalpermittingid = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
)} )}
/> */} /> */}
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-event-date-label")}
label={t("case:summary-start-event-date-label")}
value={ value={_.has(
hasOwn(detailsObj, "pinswg_startdateofevent") detailsObj,
? !_.isEmpty( "pinswg_dateeventrequested"
detailsObj.pinswg_startdateofevent )
) ? !_.isEmpty(
? formatDates( detailsObj.pinswg_dateeventrequested
detailsObj.pinswg_startdateofevent )
) ? formatDates(
: t( detailsObj.pinswg_dateeventrequested
"case:summary-no-date-entered-label" )
) : t(
: t("case:summary-no-date-entered-label") "case:summary-no-date-entered-label"
} )
/> : t(
<SummaryRow "case:summary-no-date-entered-label"
label={t("case:summary-decision-date-label")} )}
value={
hasOwn(detailsObj, "pinswg_casedecisiondate") />
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate <SummaryRow
)
? formatDates(
detailsObj.pinswg_casedecisiondate label={t(
) "case:summary-start-event-date-label"
: t( )}
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label") value={_.has(
} detailsObj,
/> "pinswg_startdateofevent"
</dl> )
? !_.isEmpty(
detailsObj.pinswg_startdateofevent
)
? formatDates(
detailsObj.pinswg_startdateofevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
@@ -5,9 +5,6 @@ import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
const Pinswg_harbourrevisionorderid = (props) => { const Pinswg_harbourrevisionorderid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -65,49 +62,82 @@ const Pinswg_harbourrevisionorderid = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t(
"case:summary-case-type-label" label={t("case:summary-case-type-label")}
)}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={ value={
<>
{getCaseLpaDisplayLines({ router.locale == "cy"
casesObj, ? jsonpath({
detailsObj, path:
locale: router.locale, '$..[?(@ && @.value=="' +
transLookup casesObj[
}).map((name) => ( "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
<div key={name}>{name}</div> ] +
))} '")].value_cy',
</> json: transLookup,
eval: true,
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")}
value={
router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
}
/>
<SummaryRow
label={t( label={t(
"case:summary-eia-required-label" "case:summary-eia-required-label"
)} )}
value={resolveCrmDisplayValue({
value: detailsObj[ value={
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale, ? jsonpath(
translations: transLookup, '$..[?(@.value=="' +
fallbackValue: t( detailsObj[
"case:summary-to-be-confirmed-label" "pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
) ] +
})} '")].value_cy',
transLookup
)
: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-to-be-confirmed-label"
)
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
@@ -116,7 +146,10 @@ const Pinswg_harbourrevisionorderid = (props) => {
)} )}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, "_ownerid_value") {" "}
{/* {casesObj.caseDetails.caseOfficer ||
""} */}
{_.has(casesObj, "_ownerid_value")
? casesObj[ ? casesObj[
"_ownerid_value@OData.Community.Display.V1.FormattedValue" "_ownerid_value@OData.Community.Display.V1.FormattedValue"
] ]
@@ -124,46 +157,86 @@ const Pinswg_harbourrevisionorderid = (props) => {
</dd> </dd>
</div> </div>
<SummaryRow <SummaryRow
label={t(
"case:summary-procedure-label" label={t("case:summary-procedure-label")}
)}
value={resolveCrmDisplayValue({ value={
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" router.locale == "cy"
], ? jsonpath({
locale, path:
translations: transLookup, '$..[?(@ && @.value=="' +
fallbackValue: "" detailsObj[
})} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[ value={
"statuscode@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale, ? jsonpath({
translations: transLookup, path:
fallbackValue: t( '$..[?(@ && @.value=="' +
"case:summary-no-date-entered-label" casesObj[
) "statuscode@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
@@ -174,8 +247,8 @@ const Pinswg_harbourrevisionorderid = (props) => {
)} )}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, [
"numberofchildincidents" "numberofchildincidents",
]) ])
? casesObj.numberofchildincidents > ? casesObj.numberofchildincidents >
0 0
@@ -209,24 +282,39 @@ const Pinswg_harbourrevisionorderid = (props) => {
"" ""
)} )}
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-case-recommendation-label" "case:summary-case-recommendation-label"
)} )}
value={resolveCrmDisplayValue({
value: detailsObj.pinswg_recommendation, value={
locale,
translations: transLookup, router.locale == "cy"
fallbackValue: t( ? jsonpath({
"case:summary-no-date-entered-label" path:
) '$..[?(@ && @.value=="' +
})} detailsObj.pinswg_recommendation +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj.pinswg_recommendation ||
t(
"case:summary-no-date-entered-label"
)
}
/> />
{detailsObj.pinswg_webaddress != null && ( {detailsObj.pinswg_webaddress != null && (
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-case-website-label" "case:summary-case-website-label"
)} )}
value={ value={
router.locale == "cy" router.locale == "cy"
? jsonpath({ ? jsonpath({
path: path:
@@ -234,13 +322,15 @@ const Pinswg_harbourrevisionorderid = (props) => {
detailsObj.pinswg_webaddress + detailsObj.pinswg_webaddress +
'")].value_cy', '")].value_cy',
json: transLookup, json: transLookup,
eval: true eval: true,
}) })
: detailsObj.pinswg_webaddress || : detailsObj.pinswg_webaddress ||
t( t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
)} )}
</dl> </dl>
@@ -255,11 +345,12 @@ const Pinswg_harbourrevisionorderid = (props) => {
</h3> </h3>
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t(
"case:summary-event-date-label" label={t("case:summary-event-date-label")}
)}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateeventrequested" "pinswg_dateeventrequested"
) )
@@ -275,14 +366,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-decision-date-label" "case:summary-decision-date-label"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_casedecisiondate" "pinswg_casedecisiondate"
) )
@@ -298,15 +394,23 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-application-accepted-as-valid" "case:summary-application-accepted-as-valid"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_applicationacceptedasvalid" "pinswg_applicationacceptedasvalid"
) )
@@ -322,14 +426,21 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-application-rejected-as-invalid" "case:summary-application-rejected-as-invalid"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_applicationrejectedasinvalid" "pinswg_applicationrejectedasinvalid"
) )
@@ -345,14 +456,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-confirm-request-to-vary-application" "case:summary-confirm-request-to-vary-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_confirmrequesttovaryapplication" "pinswg_confirmrequesttovaryapplication"
) )
@@ -368,14 +484,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-of-decisions" "case:summary-date-of-decisions"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateofdecision" "pinswg_dateofdecision"
) )
@@ -391,14 +512,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-of-request-to-vary" "case:summary-date-of-request-to-vary"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateofrequesttovarytheapplication" "pinswg_dateofrequesttovarytheapplication"
) )
@@ -414,14 +540,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-of-submission-of-application" "case:summary-date-of-submission-of-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateofsubmissionofapplication" "pinswg_dateofsubmissionofapplication"
) )
@@ -437,14 +568,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-project-published-to-website" "case:summary-date-project-published-to-website"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateprojectpublishedonwebsite" "pinswg_dateprojectpublishedonwebsite"
) )
@@ -460,14 +596,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-deadline-for-submission-of-application" "case:summary-deadline-for-submission-of-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_deadlineforsubmissionofapplication" "pinswg_deadlineforsubmissionofapplication"
) )
@@ -483,14 +624,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-end-of-representation-period" "case:summary-end-of-representation-period"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_endofrepresentationperiod" "pinswg_endofrepresentationperiod"
) )
@@ -506,14 +652,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-inspector-report-submission-to-welsh-government" "case:summary-inspector-report-submission-to-welsh-government"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_inspectorreportsubmittedtowelshgovernment" "pinswg_inspectorreportsubmittedtowelshgovernment"
) )
@@ -529,14 +680,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-procedure-confirmed" "case:summary-procedure-confirmed"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_procedureconfirmed" "pinswg_procedureconfirmed"
) )
@@ -552,14 +708,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-reject-request-to-vary-application" "case:summary-reject-request-to-vary-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_rejectrequesttovaryapplication" "pinswg_rejectrequesttovaryapplication"
) )
@@ -575,12 +736,17 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-report-due-by")} label={t("case:summary-report-due-by")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_reportdueby" "pinswg_reportdueby"
) )
@@ -596,14 +762,17 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t(
"case:summary-suspension-dates" label={t("case:summary-suspension-dates")}
)}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_suspensiondates" "pinswg_suspensiondates"
) )
@@ -619,14 +788,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-suspension-end-dates" "case:summary-suspension-end-dates"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_suspensionenddates" "pinswg_suspensionenddates"
) )
@@ -642,14 +816,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-suspension-start-dates" "case:summary-suspension-start-dates"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_suspensionstartdates" "pinswg_suspensionstartdates"
) )
@@ -665,14 +844,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-valid-notice-of-intention-to-submit-an-application" "case:summary-valid-notice-of-intention-to-submit-an-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_validnoticeofintentiontosubmitanapplicati" "pinswg_validnoticeofintentiontosubmitanapplicati"
) )
@@ -688,12 +872,17 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-withdrawn-date")} label={t("case:summary-withdrawn-date")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_withdrawndate" "pinswg_withdrawndate"
) )
@@ -709,14 +898,19 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-written-acceptance-of-notice" "case:summary-written-acceptance-of-notice"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_writtenacceptanceofnotification" "pinswg_writtenacceptanceofnotification"
) )
@@ -732,7 +926,9 @@ const Pinswg_harbourrevisionorderid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
</dl> </dl>
</div> </div>
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_hedgeshedgerowstreepreservatioid = (props) => { const Pinswg_hedgeshedgerowstreepreservatioid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,164 +20,264 @@ const Pinswg_hedgeshedgerowstreepreservatioid = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow label={t("case:summary-case-type-label")}
label={t(
"case:summary-specialist-case-process-label"
)}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_specialistcaseprocess@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow value={router.locale == "cy"
label={t("case:summary-lpa-label")} ? jsonpath({
value={ path:
<> '$..[?(@ && @.value=="' +
{getCaseLpaDisplayLines({ casesObj[
casesObj, "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
detailsObj, ] +
locale: router.locale, '")].value_cy',
transLookup json: transLookup,
}).map((name) => ( eval: true,
<div key={name}>{name}</div> })
))} : casesObj[
</> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
} ] ||
/> t(
<SummaryRow "case:summary-no-date-entered-label"
label={t("case:summary-eia-required-label")} )}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_detailedeiascreening@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-to-be-confirmed-label"
)
})}
/>
<SummaryRow
label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> />
</dd>
</div> <SummaryRow
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> label={"Specialist Case Process"}
{t("case:summary-case-link-status-label")}
</dt>
<dd className="govuk-summary-list__value"> value={router.locale == "cy"
{hasOwn(casesObj, [ ? jsonpath({
"numberofchildincidents" path:
]) '$..[?(@ && @.value=="' +
? casesObj.numberofchildincidents > 0 detailsObj[
? t( "pinswg_specialistcaseprocess@OData.Community.Display.V1.FormattedValue"
"case:summary-case-link-status-linked" ] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_specialistcaseprocess@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={router.locale == "cy"
? jsonpath(
'$..[?(@.value=="' +
detailsObj[
"pinswg_detailedeiascreening@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
transLookup
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_detailedeiascreening@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
<SummaryRow : detailsObj[
label={t( "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
"case:summary-case-relevant-authoritylabel" ] || ""}
)}
value={resolveCrmDisplayValue({ />
value: detailsObj.pinswg_relevantauthorityname, <SummaryRow
locale: router.locale,
translations: transLookup, label={t("case:summary-type-of-event-label")}
fallbackValue: ""
})} value={router.locale == "cy"
/> ? jsonpath({
</dl> path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
<SummaryRow
label={t(
"case:summary-case-relevant-authoritylabel"
)}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value_cy',
json: transLookup,
eval: true,
})
: jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value',
json: transLookup,
eval: true,
}) ||
t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -187,175 +285,257 @@ const Pinswg_hedgeshedgerowstreepreservatioid = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-statement-due-date-label"
)}
value={_.has(
detailsObj,
"pinswg_statementduedate"
) )
? formatDates( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_statementduedate
) )
: t( ? formatDates(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow />
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdateoftheevent") label={t(
? !_.isEmpty( "case:summary-interested-party-date-label"
detailsObj.pinswg_startdateoftheevent )}
)
? formatDates(
detailsObj.pinswg_startdateoftheevent value={_.has(
) detailsObj,
: t( "pinswg_otherpartiesstatement"
"case:summary-no-date-entered-label" )
) ? !_.isEmpty(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatement
} )
/> ? formatDates(
<SummaryRow detailsObj.pinswg_otherpartiesstatement
label={t("case:summary-decision-date-label")} )
value={ : t(
hasOwn(detailsObj, "pinswg_casedecisiondate") "case:summary-no-date-entered-label"
? !_.isEmpty( )
detailsObj.pinswg_casedecisiondate : _.has(
) detailsObj,
? formatDates( "pinswg_otherpartiesstatements"
detailsObj.pinswg_casedecisiondate )
) ? !_.isEmpty(
: t( detailsObj.pinswg_otherpartiesstatements
"case:summary-no-date-entered-label" )
) ? formatDates(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatements
} )
/> : t(
</dl> "case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t(
"case:summary-inquiry-evidence-date-label"
)}
value={_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/> */}
<SummaryRow
label={t("case:summary-event-date-label")}
value={_.has(
detailsObj,
"pinswg_dateeventrequested"
)
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-start-event-date-label"
)}
value={_.has(
detailsObj,
"pinswg_startdateoftheevent"
)
? !_.isEmpty(
detailsObj.pinswg_startdateoftheevent
)
? formatDates(
detailsObj.pinswg_startdateoftheevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_householderappealhasid = (props) => { const Pinswg_householderappealhasid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -24,86 +22,130 @@ const Pinswg_householderappealhasid = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")} label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")} label={t("case:summary-lpa-label")}
value={ value={
<> router.locale == "cy"
{getCaseLpaDisplayLines({ ? jsonpath({
casesObj, path:
detailsObj, '$..[?(@ && @.value=="' +
locale: router.locale, casesObj[
transLookup "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
}).map((name) => ( ] +
<div key={name}>{name}</div> '")].value_cy',
))} json: transLookup,
</> eval: true
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-eia-required-label")} label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue" ? jsonpath(
], '$..[?(@.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-to-be-confirmed-label" '")].value_cy',
) transLookup
})} )
: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-to-be-confirmed-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-procedure-label")} label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({ value={
value: detailsObj[ router.locale == "cy"
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, detailsObj[
fallbackValue: "" "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({ value={
value: casesObj[ router.locale == "cy"
"statuscode@OData.Community.Display.V1.FormattedValue" ? jsonpath({
], path:
locale, '$..[?(@ && @.value=="' +
translations: transLookup, casesObj[
fallbackValue: t( "statuscode@OData.Community.Display.V1.FormattedValue"
"case:summary-no-date-entered-label" ] +
) '")].value_cy',
})} json: transLookup,
eval: true
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br /> <br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
@@ -112,9 +154,7 @@ const Pinswg_householderappealhasid = (props) => {
{t("case:summary-case-link-status-label")} {t("case:summary-case-link-status-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, ["numberofchildincidents"])
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0 ? casesObj.numberofchildincidents > 0
? t( ? t(
"case:summary-case-link-status-linked" "case:summary-case-link-status-linked"
@@ -153,7 +193,7 @@ const Pinswg_householderappealhasid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")} label={t("case:summary-start-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdate") _.has(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate) ? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates( ? formatDates(
detailsObj.pinswg_startdate detailsObj.pinswg_startdate
@@ -161,7 +201,7 @@ const Pinswg_householderappealhasid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn(detailsObj, "pinswg_startdates") : _.has(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates) ? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates( ? formatDates(
detailsObj.pinswg_startdates detailsObj.pinswg_startdates
@@ -178,10 +218,7 @@ const Pinswg_householderappealhasid = (props) => {
"case:summary-questionnaire-due-date-label" "case:summary-questionnaire-due-date-label"
)} )}
value={ value={
hasOwn( _.has(detailsObj, "pinswg_questionnaireduedate")
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate detailsObj.pinswg_questionnaireduedate
) )
@@ -198,7 +235,7 @@ const Pinswg_householderappealhasid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-statement-due-date-label")} label={t("case:summary-statement-due-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_statementduedate") _.has(detailsObj, "pinswg_statementduedate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_statementduedate detailsObj.pinswg_statementduedate
) )
@@ -217,7 +254,7 @@ const Pinswg_householderappealhasid = (props) => {
"case:summary-interested-party-date-label" "case:summary-interested-party-date-label"
)} )}
value={ value={
hasOwn(detailsObj, "pinswg_otherpartiesstmt") _.has(detailsObj, "pinswg_otherpartiesstmt")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstmt detailsObj.pinswg_otherpartiesstmt
) )
@@ -227,7 +264,7 @@ const Pinswg_householderappealhasid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn( : _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstmt" "pinswg_otherpartiesstmt"
) )
@@ -246,7 +283,7 @@ const Pinswg_householderappealhasid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")} label={t("case:summary-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_dateeventrequested") _.has(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_dateeventrequested detailsObj.pinswg_dateeventrequested
) )
@@ -263,7 +300,7 @@ const Pinswg_householderappealhasid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")} label={t("case:summary-start-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdateofevent") _.has(detailsObj, "pinswg_startdateofevent")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_startdateofevent detailsObj.pinswg_startdateofevent
) )
@@ -279,7 +316,7 @@ const Pinswg_householderappealhasid = (props) => {
<SummaryRow <SummaryRow
label={t("case:summary-decision-date-label")} label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_casedecisiondate") _.has(detailsObj, "pinswg_casedecisiondate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_casedecisiondate detailsObj.pinswg_casedecisiondate
) )
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_lawfuldevelopmentcertificatappid = (props) => { const Pinswg_lawfuldevelopmentcertificatappid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,136 +20,208 @@ const Pinswg_lawfuldevelopmentcertificatappid = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({ label={t("case:summary-case-type-label")}
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" value={router.locale == "cy"
], ? jsonpath({
locale, path:
translations: transLookup, '$..[?(@ && @.value=="' +
fallbackValue: t( casesObj[
"case:summary-no-date-entered-label" "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
) ] +
})} '")].value_cy',
/> json: transLookup,
<SummaryRow eval: true,
label={t("case:summary-lpa-label")} })
value={ : casesObj[
<> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
{getCaseLpaDisplayLines({ ] ||
casesObj, t(
detailsObj, "case:summary-no-date-entered-label"
locale: router.locale, )}
transLookup
}).map((name) => ( />
<div key={name}>{name}</div> <SummaryRow
))}
</> label={t("case:summary-lpa-label")}
}
/> value={router.locale == "cy"
<SummaryRow ? jsonpath({
label={t("case:summary-eia-required-label")} path:
value={resolveCrmDisplayValue({ '$..[?(@ && @.value=="' +
value: detailsObj[ casesObj[
"pinswg_detailedeiascreeningrequiered@OData.Community.Display.V1.FormattedValue" "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
], ] +
locale, '")].value_cy',
translations: transLookup, json: transLookup,
fallbackValue: t( eval: true,
"case:summary-to-be-confirmed-label" })
) : casesObj[
})} "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
/> ] || ""}
<SummaryRow
label={t("case:summary-procedure-label")} />
value={resolveCrmDisplayValue({ <SummaryRow
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" label={t("case:summary-eia-required-label")}
],
locale, value={router.locale == "cy"
translations: transLookup, ? jsonpath(
fallbackValue: "" '$..[?(@.value=="' +
})} detailsObj[
/> "pinswg_detailedeiascreeningrequiered@OData.Community.Display.V1.FormattedValue"
<SummaryRow ] +
label={t("case:summary-type-of-event-label")} '")].value_cy',
value={resolveCrmDisplayValue({ transLookup
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-case-link-status-label")}
</dt>
<dd className="govuk-summary-list__value">
{hasOwn(casesObj, [
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0
? t(
"case:summary-case-link-status-linked"
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_detailedeiascreeningrequiered@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
</dl> : detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -159,175 +229,257 @@ const Pinswg_lawfuldevelopmentcertificatappid = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-statement-due-date-label"
)}
value={_.has(
detailsObj,
"pinswg_statementduedate"
) )
? formatDates( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_statementduedate
) )
: t( ? formatDates(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow />
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdateoftheevent") label={t(
? !_.isEmpty( "case:summary-interested-party-date-label"
detailsObj.pinswg_startdateoftheevent )}
)
? formatDates(
detailsObj.pinswg_startdateoftheevent value={_.has(
) detailsObj,
: t( "pinswg_otherpartiesstatement"
"case:summary-no-date-entered-label" )
) ? !_.isEmpty(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatement
} )
/> ? formatDates(
<SummaryRow detailsObj.pinswg_otherpartiesstatement
label={t("case:summary-decision-date-label")} )
value={ : t(
hasOwn(detailsObj, "pinswg_casedecisiondate") "case:summary-no-date-entered-label"
? !_.isEmpty( )
detailsObj.pinswg_casedecisiondate : _.has(
) detailsObj,
? formatDates( "pinswg_otherpartiesstatements"
detailsObj.pinswg_casedecisiondate )
) ? !_.isEmpty(
: t( detailsObj.pinswg_otherpartiesstatements
"case:summary-no-date-entered-label" )
) ? formatDates(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatements
} )
/> : t(
</dl> "case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t(
"case:summary-inquiry-evidence-date-label"
)}
value={_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/> */}
<SummaryRow
label={t("case:summary-event-date-label")}
value={_.has(
detailsObj,
"pinswg_dateeventrequested"
)
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-start-event-date-label"
)}
value={_.has(
detailsObj,
"pinswg_startdateoftheevent"
)
? !_.isEmpty(
detailsObj.pinswg_startdateoftheevent
)
? formatDates(
detailsObj.pinswg_startdateoftheevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
+426 -281
View File
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_ldpid = (props) => { const Pinswg_ldpid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,126 +20,191 @@ const Pinswg_ldpid = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
<>
{getCaseLpaDisplayLines({
casesObj,
detailsObj,
locale: router.locale,
transLookup
}).map((name) => (
<div key={name}>{name}</div>
))}
</>
}
/>
<SummaryRow label={t("case:summary-case-type-label")}
label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> value={router.locale == "cy"
</dd> ? jsonpath({
</div> path:
{casesObj.numberofchildincidents > 0 && ( '$..[?(@ && @.value=="' +
<div className="govuk-summary-list__row"> casesObj[
<dt className="govuk-summary-list__key"> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
{t("case:summary-case-link-status-label")} ] +
</dt> '")].value_cy',
<dd className="govuk-summary-list__value"> json: transLookup,
{hasOwn(casesObj, [ eval: true,
"numberofchildincidents" })
]) : casesObj[
? casesObj.numberofchildincidents > 0 "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
? t( ] ||
"case:summary-case-link-status-linked" t(
) "case:summary-no-date-entered-label"
: t( )}
"case:summary-case-link-status-not-linked"
) />
: t( <SummaryRow
"case:summary-case-link-status-not-linked"
)} label={t("case:summary-lpa-label")}
</dd>
</div> value={router.locale == "cy"
)} ? jsonpath({
{casesObj.numberofchildincidents > 0 ? ( path:
<div className="govuk-summary-list__row"> '$..[?(@ && @.value=="' +
<dt className="govuk-summary-list__key"> casesObj[
{t("case:summary-linked-cases-label")} "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
</dt> ] +
<dd className="govuk-summary-list__value"> '")].value_cy',
{linkedCasesList( json: transLookup,
props.currentView.linkedCaseReferences eval: true,
)} })
</dd> : casesObj[
</div> "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
) : ( ] || ""}
""
)} />
</dl>
<SummaryRow
label={t("case:summary-procedure-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -149,175 +212,257 @@ const Pinswg_ldpid = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-statement-due-date-label"
)}
value={_.has(
detailsObj,
"pinswg_statementduedate"
) )
? formatDates( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_statementduedate
) )
: t( ? formatDates(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow />
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdateofevent") label={t(
? !_.isEmpty( "case:summary-interested-party-date-label"
detailsObj.pinswg_startdateofevent )}
)
? formatDates(
detailsObj.pinswg_startdateofevent value={_.has(
) detailsObj,
: t( "pinswg_otherpartiesstatement"
"case:summary-no-date-entered-label" )
) ? !_.isEmpty(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatement
} )
/> ? formatDates(
<SummaryRow detailsObj.pinswg_otherpartiesstatement
label={t("case:summary-decision-date-label")} )
value={ : t(
hasOwn(detailsObj, "pinswg_casedecisiondate") "case:summary-no-date-entered-label"
? !_.isEmpty( )
detailsObj.pinswg_casedecisiondate : _.has(
) detailsObj,
? formatDates( "pinswg_otherpartiesstatements"
detailsObj.pinswg_casedecisiondate )
) ? !_.isEmpty(
: t( detailsObj.pinswg_otherpartiesstatements
"case:summary-no-date-entered-label" )
) ? formatDates(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatements
} )
/> : t(
</dl> "case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t(
"case:summary-inquiry-evidence-date-label"
)}
value={_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/> */}
<SummaryRow
label={t("case:summary-event-date-label")}
value={_.has(
detailsObj,
"pinswg_dateeventrequested"
)
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-start-event-date-label"
)}
value={_.has(
detailsObj,
"pinswg_startdateofevent"
)
? !_.isEmpty(
detailsObj.pinswg_startdateofevent
)
? formatDates(
detailsObj.pinswg_startdateofevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_listedbuildingandconservationrid = (props) => { const Pinswg_listedbuildingandconservationrid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,138 +20,208 @@ const Pinswg_listedbuildingandconservationrid = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
<>
{getCaseLpaDisplayLines({
casesObj,
detailsObj,
locale: router.locale,
transLookup
}).map((name) => (
<div key={name}>{name}</div>
))}
</>
}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_detailedeiascreeningrequiered@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-to-be-confirmed-label"
)
})}
/>
<SummaryRow
label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> label={t("case:summary-case-type-label")}
</dd>
</div> value={router.locale == "cy"
{casesObj.numberofchildincidents > 0 && ( ? jsonpath({
<div className="govuk-summary-list__row"> path:
<dt className="govuk-summary-list__key"> '$..[?(@ && @.value=="' +
{t("case:summary-case-link-status-label")} casesObj[
</dt> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
<dd className="govuk-summary-list__value"> ] +
{hasOwn(casesObj, [ '")].value_cy',
"numberofchildincidents" json: transLookup,
]) eval: true,
? casesObj.numberofchildincidents > 0 })
? t( : casesObj[
"case:summary-case-link-status-linked" "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={router.locale == "cy"
? jsonpath(
'$..[?(@.value=="' +
detailsObj[
"pinswg_detailedeiascreeningrequiered@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
transLookup
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_detailedeiascreeningrequiered@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
</dl> : detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -161,175 +229,257 @@ const Pinswg_listedbuildingandconservationrid = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-statement-due-date-label"
)}
value={_.has(
detailsObj,
"pinswg_statementduedate"
) )
? formatDates( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_statementduedate
) )
: t( ? formatDates(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow />
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_starttimeofevent") label={t(
? !_.isEmpty( "case:summary-interested-party-date-label"
detailsObj.pinswg_starttimeofevent )}
)
? formatDates(
detailsObj.pinswg_starttimeofevent value={_.has(
) detailsObj,
: t( "pinswg_otherpartiesstatement"
"case:summary-no-date-entered-label" )
) ? !_.isEmpty(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatement
} )
/> ? formatDates(
<SummaryRow detailsObj.pinswg_otherpartiesstatement
label={t("case:summary-decision-date-label")} )
value={ : t(
hasOwn(detailsObj, "pinswg_casedecisiondate") "case:summary-no-date-entered-label"
? !_.isEmpty( )
detailsObj.pinswg_casedecisiondate : _.has(
) detailsObj,
? formatDates( "pinswg_otherpartiesstatements"
detailsObj.pinswg_casedecisiondate )
) ? !_.isEmpty(
: t( detailsObj.pinswg_otherpartiesstatements
"case:summary-no-date-entered-label" )
) ? formatDates(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatements
} )
/> : t(
</dl> "case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t(
"case:summary-inquiry-evidence-date-label"
)}
value={_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/> */}
<SummaryRow
label={t("case:summary-event-date-label")}
value={_.has(
detailsObj,
"pinswg_dateeventrequested"
)
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-start-event-date-label"
)}
value={_.has(
detailsObj,
"pinswg_starttimeofevent"
)
? !_.isEmpty(
detailsObj.pinswg_starttimeofevent
)
? formatDates(
detailsObj.pinswg_starttimeofevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_maintenanceoflands217id = (props) => { const Pinswg_maintenanceoflands217id = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,138 +20,208 @@ const Pinswg_maintenanceoflands217id = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
<>
{getCaseLpaDisplayLines({
casesObj,
detailsObj,
locale: router.locale,
transLookup
}).map((name) => (
<div key={name}>{name}</div>
))}
</>
}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-to-be-confirmed-label"
)
})}
/>
<SummaryRow
label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> label={t("case:summary-case-type-label")}
</dd>
</div> value={router.locale == "cy"
{casesObj.numberofchildincidents > 0 && ( ? jsonpath({
<div className="govuk-summary-list__row"> path:
<dt className="govuk-summary-list__key"> '$..[?(@ && @.value=="' +
{t("case:summary-case-link-status-label")} casesObj[
</dt> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
<dd className="govuk-summary-list__value"> ] +
{hasOwn(casesObj, [ '")].value_cy',
"numberofchildincidents" json: transLookup,
]) eval: true,
? casesObj.numberofchildincidents > 0 })
? t( : casesObj[
"case:summary-case-link-status-linked" "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={router.locale == "cy"
? jsonpath(
'$..[?(@.value=="' +
detailsObj[
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
transLookup
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
</dl> : detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -161,129 +229,168 @@ const Pinswg_maintenanceoflands217id = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
) )
? formatDates( ? formatDates(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
) )
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )}
<SummaryRow
label={t( />
"case:summary-applicant-final-comments-date-label"
)} <SummaryRow
value={
hasOwn(
detailsObj, label={t(
"pinswg_finalcommentsduedate" "case:summary-statement-due-date-label"
) )}
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
) value={_.has(
? formatDates( detailsObj,
detailsObj.pinswg_finalcommentsduedate "pinswg_statementduedate"
) )
: t( ? !_.isEmpty(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") ? formatDates(
} detailsObj.pinswg_statementduedate
/> )
{/* <SummaryRow : t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-interested-party-date-label"
)}
value={_.has(
detailsObj,
"pinswg_otherpartiesstatement"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: _.has(
detailsObj,
"pinswg_otherpartiesstatements"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements
)
? formatDates(
detailsObj.pinswg_otherpartiesstatements
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t( label={t(
"case:summary-inquiry-evidence-date-label" "case:summary-inquiry-evidence-date-label"
)} )}
value={hasOwn( value={_.has(
detailsObj, detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden" "pinswg_proofsofevidencewrittenstatementsofeviden"
) )
@@ -300,56 +407,79 @@ const Pinswg_maintenanceoflands217id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
)} )}
/> */} /> */}
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-event-date-label")}
label={t("case:summary-start-event-date-label")}
value={ value={_.has(
hasOwn(detailsObj, "pinswg_startdateofevent") detailsObj,
? !_.isEmpty( "pinswg_dateeventrequested"
detailsObj.pinswg_startdateofevent )
) ? !_.isEmpty(
? formatDates( detailsObj.pinswg_dateeventrequested
detailsObj.pinswg_startdateofevent )
) ? formatDates(
: t( detailsObj.pinswg_dateeventrequested
"case:summary-no-date-entered-label" )
) : t(
: t("case:summary-no-date-entered-label") "case:summary-no-date-entered-label"
} )
/> : t(
<SummaryRow "case:summary-no-date-entered-label"
label={t("case:summary-decision-date-label")} )}
value={
hasOwn(detailsObj, "pinswg_casedecisiondate") />
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate <SummaryRow
)
? formatDates(
detailsObj.pinswg_casedecisiondate label={t(
) "case:summary-start-event-date-label"
: t( )}
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label") value={_.has(
} detailsObj,
/> "pinswg_startdateofevent"
</dl> )
? !_.isEmpty(
detailsObj.pinswg_startdateofevent
)
? formatDates(
detailsObj.pinswg_startdateofevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_miscellaneouscasewordid = (props) => { const Pinswg_miscellaneouscasewordid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,149 +20,236 @@ const Pinswg_miscellaneouscasewordid = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
<>
{getCaseLpaDisplayLines({
casesObj,
detailsObj,
locale: router.locale,
transLookup
}).map((name) => (
<div key={name}>{name}</div>
))}
</>
}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-to-be-confirmed-label"
)
})}
/>
<SummaryRow
label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> label={t("case:summary-case-type-label")}
</dd>
</div> value={router.locale == "cy"
{casesObj.numberofchildincidents > 0 && ( ? jsonpath({
<div className="govuk-summary-list__row"> path:
<dt className="govuk-summary-list__key"> '$..[?(@ && @.value=="' +
{t("case:summary-case-link-status-label")} casesObj[
</dt> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
<dd className="govuk-summary-list__value"> ] +
{hasOwn(casesObj, [ '")].value_cy',
"numberofchildincidents" json: transLookup,
]) eval: true,
? casesObj.numberofchildincidents > 0 })
? t( : casesObj[
"case:summary-case-link-status-linked" "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={router.locale == "cy"
? jsonpath(
'$..[?(@.value=="' +
detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
transLookup
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
<SummaryRow : detailsObj[
label={t( "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
"case:summary-case-relevant-authoritylabel" ] || ""}
)}
value={resolveCrmDisplayValue({ />
value: detailsObj.pinswg_relevantauthorityname, <SummaryRow
locale: router.locale,
translations: transLookup, label={t("case:summary-type-of-event-label")}
fallbackValue: ""
})} value={router.locale == "cy"
/> ? jsonpath({
</dl> path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
<SummaryRow
label={t(
"case:summary-case-relevant-authoritylabel"
)}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value_cy',
json: transLookup,
eval: true,
})
: jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value',
json: transLookup,
eval: true,
}) ||
t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -172,129 +257,168 @@ const Pinswg_miscellaneouscasewordid = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
) )
? formatDates( ? formatDates(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
) )
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )}
<SummaryRow
label={t( />
"case:summary-applicant-final-comments-date-label"
)} <SummaryRow
value={
hasOwn(
detailsObj, label={t(
"pinswg_finalcommentsduedate" "case:summary-statement-due-date-label"
) )}
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
) value={_.has(
? formatDates( detailsObj,
detailsObj.pinswg_finalcommentsduedate "pinswg_statementduedate"
) )
: t( ? !_.isEmpty(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") ? formatDates(
} detailsObj.pinswg_statementduedate
/> )
{/* <SummaryRow : t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-interested-party-date-label"
)}
value={_.has(
detailsObj,
"pinswg_otherpartiesstatement"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: _.has(
detailsObj,
"pinswg_otherpartiesstatements"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements
)
? formatDates(
detailsObj.pinswg_otherpartiesstatements
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t( label={t(
"case:summary-inquiry-evidence-date-label" "case:summary-inquiry-evidence-date-label"
)} )}
value={hasOwn( value={_.has(
detailsObj, detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden" "pinswg_proofsofevidencewrittenstatementsofeviden"
) )
@@ -311,56 +435,79 @@ const Pinswg_miscellaneouscasewordid = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
)} )}
/> */} /> */}
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-event-date-label")}
label={t("case:summary-start-event-date-label")}
value={ value={_.has(
hasOwn(detailsObj, "pinswg_startdateofevent") detailsObj,
? !_.isEmpty( "pinswg_dateeventrequested"
detailsObj.pinswg_startdateofevent )
) ? !_.isEmpty(
? formatDates( detailsObj.pinswg_dateeventrequested
detailsObj.pinswg_startdateofevent )
) ? formatDates(
: t( detailsObj.pinswg_dateeventrequested
"case:summary-no-date-entered-label" )
) : t(
: t("case:summary-no-date-entered-label") "case:summary-no-date-entered-label"
} )
/> : t(
<SummaryRow "case:summary-no-date-entered-label"
label={t("case:summary-decision-date-label")} )}
value={
hasOwn(detailsObj, "pinswg_casedecisiondate") />
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate <SummaryRow
)
? formatDates(
detailsObj.pinswg_casedecisiondate label={t(
) "case:summary-start-event-date-label"
: t( )}
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label") value={_.has(
} detailsObj,
/> "pinswg_startdateofevent"
</dl> )
? !_.isEmpty(
detailsObj.pinswg_startdateofevent
)
? formatDates(
detailsObj.pinswg_startdateofevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_nonvalidationid = (props) => { const Pinswg_nonvalidationid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,68 +20,136 @@ const Pinswg_nonvalidationid = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
<>
{getCaseLpaDisplayLines({
casesObj,
detailsObj,
locale: router.locale,
transLookup
}).map((name) => (
<div key={name}>{name}</div>
))}
</>
}
/>
<SummaryRow label={t("case:summary-case-type-label")}
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decisionissued@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> value={
</dd>
</div> router.locale == "cy"
</dl> ? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)
}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
}
/>
{/* <SummaryRow
label={t("case:summary-procedure-label")}
value={
router.locale == "cy"
? jsonpath({path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> */}
<SummaryRow
label={t("case:summary-status-label")}
value={
router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)
}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decisionissued@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decisionissued@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -91,46 +157,75 @@ const Pinswg_nonvalidationid = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_validdate")
? !_.isEmpty(detailsObj.pinswg_validdate)
? formatDates(
detailsObj.pinswg_validdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_decisionissueddate")
? !_.isEmpty( _.has(detailsObj, "pinswg_validdate")
detailsObj.pinswg_decisionissueddate ? !_.isEmpty(
) detailsObj.pinswg_validdate
? formatDates( )
detailsObj.pinswg_decisionissueddate ? formatDates(
) detailsObj.pinswg_validdate
: t( )
"case:summary-no-date-entered-label" : t(
) "case:summary-no-date-entered-label"
: t("case:summary-no-date-entered-label") )
} : _.has(
/> detailsObj,
</dl> "pinswg_startdates"
)
? !_.isEmpty(
detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)
}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={
_.has(
detailsObj,
"pinswg_decisionissueddate"
)
? !_.isEmpty(
detailsObj.pinswg_decisionissueddate
)
? formatDates(
detailsObj.pinswg_decisionissueddate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)
}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
@@ -1,16 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import pickListLookup from "../../../data/picklistLookups.json";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import {
getCaseLpaDisplayValue,
getCaseLpaDisplayLines
} from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
const Pinswg_planningappeals78id = (props) => { const Pinswg_planningappeals78id = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -28,105 +22,186 @@ const Pinswg_planningappeals78id = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")} label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale: router.locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={ value={
<> router.locale == "cy"
{getCaseLpaDisplayLines({ ? jsonpath({
casesObj, path:
detailsObj, '$..[?(@ && @.value=="' +
locale: router.locale, casesObj[
transLookup "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
}).map((name) => ( ] +
<div key={name}>{name}</div> '")].value_cy',
))} json: transLookup,
</> eval: true
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")}
value={
router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
}
/>
<SummaryRow
label={t("case:summary-eia-required-label")} label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
],
locale: router.locale,
translations: transLookup,
fallbackValue: t(
"case:summary-to-be-confirmed-label"
)
})}
/>
value={
router.locale == "cy"
? jsonpath(
'$..[?(@.value=="' +
detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
transLookup
)
: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-to-be-confirmed-label")
}
/>
<SummaryRow <SummaryRow
label={t("case:summary-procedure-label")} label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale: router.locale,
translations: pickListLookup
})}
/>
<SummaryRow value={
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({ router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale: router.locale, detailsObj[
translations: transLookup, "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-type-of-event-label")}
value={
router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)
}
/>
<SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[ value={
"statuscode@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale: router.locale, ? jsonpath({
translations: transLookup, path:
fallbackValue: t( '$..[?(@ && @.value=="' +
"case:summary-no-date-entered-label" casesObj[
) "statuscode@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_dicision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale: router.locale, detailsObj[
translations: transLookup, "pinswg_dicision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_dicision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
<SummaryRow <SummaryRow
label={t("case:summary-decision-date-label")} label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_casedecisiondate")
_.has(detailsObj, "pinswg_casedecisiondate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_casedecisiondate detailsObj.pinswg_casedecisiondate
) )
@@ -137,7 +212,9 @@ const Pinswg_planningappeals78id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
@@ -145,9 +222,7 @@ const Pinswg_planningappeals78id = (props) => {
{t("case:summary-case-link-status-label")} {t("case:summary-case-link-status-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, ["numberofchildincidents"])
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0 ? casesObj.numberofchildincidents > 0
? t( ? t(
"case:summary-case-link-status-linked" "case:summary-case-link-status-linked"
@@ -184,9 +259,12 @@ const Pinswg_planningappeals78id = (props) => {
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")} label={t("case:summary-start-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdate")
_.has(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate) ? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates( ? formatDates(
detailsObj.pinswg_startdate detailsObj.pinswg_startdate
@@ -194,7 +272,7 @@ const Pinswg_planningappeals78id = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn(detailsObj, "pinswg_startdates") : _.has(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates) ? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates( ? formatDates(
detailsObj.pinswg_startdates detailsObj.pinswg_startdates
@@ -203,15 +281,21 @@ const Pinswg_planningappeals78id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t(
"case:summary-questionnaire-due-date-label"
)} label={t("case:summary-questionnaire-due-date-label")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_questionnaireduedate" "pinswg_questionnaireduedate"
) )
@@ -225,15 +309,25 @@ const Pinswg_planningappeals78id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-statement-interested-party-due-date-label" "case:summary-statement-interested-party-due-date-label"
)} )}
value={ value={
hasOwn(detailsObj, "pinswg_statementduedate")
_.has(detailsObj, "pinswg_statementduedate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_statementduedate detailsObj.pinswg_statementduedate
) )
@@ -244,13 +338,60 @@ const Pinswg_planningappeals78id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
{/* <SummaryRow
label={t(
"case:summary-interested-party-date-label"
)}
value={
_.has(
detailsObj,
"pinswg_otherpartiesstatement"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: _.has(
detailsObj,
"pinswg_otherpartiesstatements"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements
)
? formatDates(
detailsObj.pinswg_otherpartiesstatements
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)
}
/> */}
<SummaryRow <SummaryRow
label={t("case:summary-final-comments-date-label")} label={t("case:summary-final-comments-date-label")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_finalcommentsduedate" "pinswg_finalcommentsduedate"
) )
@@ -264,13 +405,67 @@ const Pinswg_planningappeals78id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
{/* <SummaryRow
label={t(
"case:summary-inquiry-evidence-date-label"
)}
value={
_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)
}
/> */}
{/* <SummaryRow
label={t("case:summary-event-date-label")}
value={
_.has(
detailsObj,
"pinswg_dateeventrequested"
)
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)
}
/> */}
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")} label={t("case:summary-event-date-label")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_startdatetimeiftheevent" "pinswg_startdatetimeiftheevent"
) )
@@ -284,16 +479,23 @@ const Pinswg_planningappeals78id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
{detailsObj.pinswg_typeofevent == 846040002 || {detailsObj.pinswg_typeofevent == 846040002 ||
detailsObj.pinswg_typeofevent == 846040007 || detailsObj.pinswg_typeofevent == 846040007 ||
detailsObj.pinswg_typeofevent == 846040012 || detailsObj.pinswg_typeofevent == 846040012 ||
detailsObj.pinswg_typeofevent == 846040009 ? ( detailsObj.pinswg_typeofevent == 846040009 ? (
<SummaryRow <SummaryRow
label={t("case:summary-start-event-time-label")} label={t("case:summary-start-event-time-label")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_startdatetimeiftheevent" "pinswg_startdatetimeiftheevent"
) )
@@ -310,7 +512,9 @@ const Pinswg_planningappeals78id = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
) : ( ) : (
"" ""
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_planningconditionss73s79id = (props) => { const Pinswg_planningconditionss73s79id = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -24,97 +22,174 @@ const Pinswg_planningconditionss73s79id = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")} label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={ value={
<> router.locale == "cy"
{getCaseLpaDisplayLines({ ? jsonpath({
casesObj, path:
detailsObj, '$..[?(@ && @.value=="' +
locale: router.locale, casesObj[
transLookup "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
}).map((name) => ( ] +
<div key={name}>{name}</div> '")].value_cy',
))} json: transLookup,
</> eval: true
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-lpa-label")}
value={
router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""
}
/>
<SummaryRow
label={t("case:summary-eia-required-label")} label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({
value: detailsObj[ value={
"pinswg_detailedeiascreeningrequiered@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale, ? jsonpath(
translations: transLookup, '$..[?(@.value=="' +
fallbackValue: t( detailsObj[
"case:summary-to-be-confirmed-label" "pinswg_detailedeiascreeningrequiered@OData.Community.Display.V1.FormattedValue"
) ] +
})} '")].value_cy',
transLookup
)
: detailsObj[
"pinswg_detailedeiascreeningrequiered@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-to-be-confirmed-label")
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-procedure-label")} label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[ value={
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale, ? jsonpath({
translations: transLookup, path:
fallbackValue: "" '$..[?(@ && @.value=="' +
})} detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-type-of-event-label")} label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[ value={
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale, ? jsonpath({
translations: transLookup, path:
fallbackValue: "" '$..[?(@ && @.value=="' +
})} detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""
}
/> />
<SummaryRow <SummaryRow
label={t("case:summary-status-label")} label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[ value={
"statuscode@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale, ? jsonpath({
translations: transLookup, path:
fallbackValue: t( '$..[?(@ && @.value=="' +
"case:summary-no-date-entered-label" casesObj[
) "statuscode@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t("case:summary-no-date-entered-label")
}
/> />
<div className="govuk-summary-list__row"> <div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key"> <dt className="govuk-summary-list__key">
{t("case:summary-decision-label")} {t("case:summary-decision-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: detailsObj[ ? jsonpath({
"pinswg_decision@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, detailsObj[
translations: transLookup, "pinswg_decision@OData.Community.Display.V1.FormattedValue"
fallbackValue: t( ] +
"case:summary-no-information-to-date-label" '")].value_cy',
) json: transLookup,
})} eval: true
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br /> <br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd> </dd>
</div> </div>
{casesObj.numberofchildincidents > 0 && ( {casesObj.numberofchildincidents > 0 && (
@@ -123,9 +198,7 @@ const Pinswg_planningconditionss73s79id = (props) => {
{t("case:summary-case-link-status-label")} {t("case:summary-case-link-status-label")}
</dt> </dt>
<dd className="govuk-summary-list__value"> <dd className="govuk-summary-list__value">
{hasOwn(casesObj, [ {_.has(casesObj, ["numberofchildincidents"])
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0 ? casesObj.numberofchildincidents > 0
? t( ? t(
"case:summary-case-link-status-linked" "case:summary-case-link-status-linked"
@@ -162,9 +235,12 @@ const Pinswg_planningconditionss73s79id = (props) => {
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")} label={t("case:summary-start-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdate")
_.has(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate) ? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates( ? formatDates(
detailsObj.pinswg_startdate detailsObj.pinswg_startdate
@@ -172,7 +248,7 @@ const Pinswg_planningconditionss73s79id = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn(detailsObj, "pinswg_startdates") : _.has(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates) ? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates( ? formatDates(
detailsObj.pinswg_startdates detailsObj.pinswg_startdates
@@ -181,15 +257,21 @@ const Pinswg_planningconditionss73s79id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t(
"case:summary-questionnaire-due-date-label"
)} label={t("case:summary-questionnaire-due-date-label")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_questionnaireduedate" "pinswg_questionnaireduedate"
) )
@@ -203,13 +285,23 @@ const Pinswg_planningconditionss73s79id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-statement-due-date-label")} label={t("case:summary-statement-due-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_statementduedate")
_.has(detailsObj, "pinswg_statementduedate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_statementduedate detailsObj.pinswg_statementduedate
) )
@@ -220,15 +312,23 @@ const Pinswg_planningconditionss73s79id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t(
"case:summary-interested-party-date-label"
)} label={t("case:summary-interested-party-date-label")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatement" "pinswg_otherpartiesstatement"
) )
@@ -241,7 +341,7 @@ const Pinswg_planningconditionss73s79id = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: hasOwn( : _.has(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_otherpartiesstatements"
) )
@@ -255,15 +355,25 @@ const Pinswg_planningconditionss73s79id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-applicant-final-comments-date-label" "case:summary-applicant-final-comments-date-label"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_finalcommentsduedate" "pinswg_finalcommentsduedate"
) )
@@ -277,13 +387,42 @@ const Pinswg_planningconditionss73s79id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
}
/>
}
/>
{/* <SummaryRow
label={t(
"case:summary-inquiry-evidence-date-label"
)}
value={
_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)
}
/> */}
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")} label={t("case:summary-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
_.has(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_dateeventrequested detailsObj.pinswg_dateeventrequested
) )
@@ -294,13 +433,21 @@ const Pinswg_planningconditionss73s79id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")} label={t("case:summary-start-event-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_startdateofevent")
_.has(detailsObj, "pinswg_startdateofevent")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_startdateofevent detailsObj.pinswg_startdateofevent
) )
@@ -311,12 +458,19 @@ const Pinswg_planningconditionss73s79id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-decision-date-label")} label={t("case:summary-decision-date-label")}
value={ value={
hasOwn(detailsObj, "pinswg_casedecisiondate")
_.has(detailsObj, "pinswg_casedecisiondate")
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_casedecisiondate detailsObj.pinswg_casedecisiondate
) )
@@ -327,7 +481,9 @@ const Pinswg_planningconditionss73s79id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t("case:summary-no-date-entered-label")
} }
/> />
</dl> </dl>
</SummaryCard> </SummaryCard>
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_planningobligationappeals106id = (props) => { const Pinswg_planningobligationappeals106id = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,138 +20,208 @@ const Pinswg_planningobligationappeals106id = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
<>
{getCaseLpaDisplayLines({
casesObj,
detailsObj,
locale: router.locale,
transLookup
}).map((name) => (
<div key={name}>{name}</div>
))}
</>
}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-to-be-confirmed-label"
)
})}
/>
<SummaryRow
label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> label={t("case:summary-case-type-label")}
</dd>
</div> value={router.locale == "cy"
{casesObj.numberofchildincidents > 0 && ( ? jsonpath({
<div className="govuk-summary-list__row"> path:
<dt className="govuk-summary-list__key"> '$..[?(@ && @.value=="' +
{t("case:summary-case-link-status-label")} casesObj[
</dt> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
<dd className="govuk-summary-list__value"> ] +
{hasOwn(casesObj, [ '")].value_cy',
"numberofchildincidents" json: transLookup,
]) eval: true,
? casesObj.numberofchildincidents > 0 })
? t( : casesObj[
"case:summary-case-link-status-linked" "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={router.locale == "cy"
? jsonpath(
'$..[?(@.value=="' +
detailsObj[
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
transLookup
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
</dl> : detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -161,129 +229,168 @@ const Pinswg_planningobligationappeals106id = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
) )
? formatDates( ? formatDates(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
) )
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )}
<SummaryRow
label={t( />
"case:summary-applicant-final-comments-date-label"
)} <SummaryRow
value={
hasOwn(
detailsObj, label={t(
"pinswg_finalcommentsduedate" "case:summary-statement-due-date-label"
) )}
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
) value={_.has(
? formatDates( detailsObj,
detailsObj.pinswg_finalcommentsduedate "pinswg_statementduedate"
) )
: t( ? !_.isEmpty(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") ? formatDates(
} detailsObj.pinswg_statementduedate
/> )
{/* <SummaryRow : t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-interested-party-date-label"
)}
value={_.has(
detailsObj,
"pinswg_otherpartiesstatement"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: _.has(
detailsObj,
"pinswg_otherpartiesstatements"
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements
)
? formatDates(
detailsObj.pinswg_otherpartiesstatements
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t( label={t(
"case:summary-inquiry-evidence-date-label" "case:summary-inquiry-evidence-date-label"
)} )}
value={hasOwn( value={_.has(
detailsObj, detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden" "pinswg_proofsofevidencewrittenstatementsofeviden"
) )
@@ -300,56 +407,79 @@ const Pinswg_planningobligationappeals106id = (props) => {
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
)} )}
/> */} /> */}
<SummaryRow <SummaryRow
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-event-date-label")}
label={t("case:summary-start-event-date-label")}
value={ value={_.has(
hasOwn(detailsObj, "pinswg_startdateoftheevent") detailsObj,
? !_.isEmpty( "pinswg_dateeventrequested"
detailsObj.pinswg_startdateoftheevent )
) ? !_.isEmpty(
? formatDates( detailsObj.pinswg_dateeventrequested
detailsObj.pinswg_startdateoftheevent )
) ? formatDates(
: t( detailsObj.pinswg_dateeventrequested
"case:summary-no-date-entered-label" )
) : t(
: t("case:summary-no-date-entered-label") "case:summary-no-date-entered-label"
} )
/> : t(
<SummaryRow "case:summary-no-date-entered-label"
label={t("case:summary-decision-date-label")} )}
value={
hasOwn(detailsObj, "pinswg_casedecisiondate") />
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate <SummaryRow
)
? formatDates(
detailsObj.pinswg_casedecisiondate label={t(
) "case:summary-start-event-date-label"
: t( )}
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label") value={_.has(
} detailsObj,
/> "pinswg_startdateoftheevent"
</dl> )
? !_.isEmpty(
detailsObj.pinswg_startdateoftheevent
)
? formatDates(
detailsObj.pinswg_startdateoftheevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
+498 -316
View File
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
const Pinswg_rowid = (props) => { const Pinswg_rowid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,162 +20,264 @@ const Pinswg_rowid = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow label={t("case:summary-case-type-label")}
label={t(
"case:summary-specialist-case-process-label"
)}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_specialistcaseprocess@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow value={router.locale == "cy"
label={t("case:summary-lpa-label")} ? jsonpath({
value={ path:
<> '$..[?(@ && @.value=="' +
{getCaseLpaDisplayLines({ casesObj[
casesObj, "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
detailsObj, ] +
locale: router.locale, '")].value_cy',
transLookup json: transLookup,
}).map((name) => ( eval: true,
<div key={name}>{name}</div> })
))} : casesObj[
</> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
} ] ||
/> t(
<SummaryRow "case:summary-no-date-entered-label"
label={t("case:summary-eia-required-label")} )}
value={resolveCrmDisplayValue({
value: detailsObj[ />
"pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
], <SummaryRow
locale,
translations: transLookup,
fallbackValue: t( label={"Specialist Case Process"}
t("case:summary-to-be-confirmed-label")
)
})} value={router.locale == "cy"
/> ? jsonpath({
<SummaryRow path:
label={t("case:summary-procedure-label")} '$..[?(@ && @.value=="' +
value={resolveCrmDisplayValue({ detailsObj[
value: detailsObj[ "pinswg_specialistcaseprocess@OData.Community.Display.V1.FormattedValue"
"pinswg_procedure@OData.Community.Display.V1.FormattedValue" ] +
], '")].value_cy',
locale, json: transLookup,
translations: transLookup, eval: true,
fallbackValue: "" })
})} : detailsObj[
/> "pinswg_specialistcaseprocess@OData.Community.Display.V1.FormattedValue"
<SummaryRow ] || ""}
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[ />
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
], <SummaryRow
locale,
translations: transLookup,
fallbackValue: "" label={t("case:summary-lpa-label")}
})}
/>
<SummaryRow value={router.locale == "cy"
label={t("case:summary-status-label")} ? jsonpath({
value={resolveCrmDisplayValue({ path:
value: casesObj[ '$..[?(@ && @.value=="' +
"statuscode@OData.Community.Display.V1.FormattedValue" casesObj[
], "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
locale: router.locale, ] +
translations: transLookup, '")].value_cy',
fallbackValue: t( json: transLookup,
t("case:summary-no-date-entered-label") eval: true,
) })
})} : casesObj[
/> "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
<div className="govuk-summary-list__row"> ] || ""}
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt> />
<dd className="govuk-summary-list__value"> <SummaryRow
{resolveCrmDisplayValue({
value: detailsObj[ label={t("case:summary-eia-required-label")}
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
], value={router.locale == "cy"
locale: router.locale, ? jsonpath(
translations: transLookup, '$..[?(@.value=="' +
fallbackValue: t( detailsObj[
"case:summary-no-information-to-date-label" "pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
) ] +
})} '")].value_cy',
</dd> transLookup
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-case-link-status-label")}
</dt>
<dd className="govuk-summary-list__value">
{hasOwn(casesObj, [
"numberofchildincidents"
])
? casesObj.numberofchildincidents > 0
? t(
"case:summary-case-link-status-linked"
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_detailedeiascreeningrequired@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
<SummaryRow : detailsObj[
label={t( "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
"case:summary-case-relevant-authoritylabel" ] || ""}
)}
value={resolveCrmDisplayValue({ />
value: detailsObj.pinswg_relevantauthorityname, <SummaryRow
locale: router.locale,
translations: transLookup, label={t("case:summary-type-of-event-label")}
fallbackValue: ""
})} value={router.locale == "cy"
/> ? jsonpath({
</dl> path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
<SummaryRow
label={t(
"case:summary-case-relevant-authoritylabel"
)}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value_cy',
json: transLookup,
eval: true,
})
: jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value',
json: transLookup,
eval: true,
}) ||
t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -185,175 +285,257 @@ const Pinswg_rowid = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-statement-due-date-label"
)}
value={_.has(
detailsObj,
"pinswg_statementduedate"
) )
? formatDates( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_statementduedate
) )
: t( ? formatDates(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow />
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdateoftheevent") label={t(
? !_.isEmpty( "case:summary-interested-party-date-label"
detailsObj.pinswg_startdateoftheevent )}
)
? formatDates(
detailsObj.pinswg_startdateoftheevent value={_.has(
) detailsObj,
: t( "pinswg_otherpartiesstatement"
"case:summary-no-date-entered-label" )
) ? !_.isEmpty(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatement
} )
/> ? formatDates(
<SummaryRow detailsObj.pinswg_otherpartiesstatement
label={t("case:summary-decision-date-label")} )
value={ : t(
hasOwn(detailsObj, "pinswg_casedecisiondate") "case:summary-no-date-entered-label"
? !_.isEmpty( )
detailsObj.pinswg_casedecisiondate : _.has(
) detailsObj,
? formatDates( "pinswg_otherpartiesstatements"
detailsObj.pinswg_casedecisiondate )
) ? !_.isEmpty(
: t( detailsObj.pinswg_otherpartiesstatements
"case:summary-no-date-entered-label" )
) ? formatDates(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatements
} )
/> : t(
</dl> "case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t(
"case:summary-inquiry-evidence-date-label"
)}
value={_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/> */}
<SummaryRow
label={t("case:summary-event-date-label")}
value={_.has(
detailsObj,
"pinswg_dateeventrequested"
)
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-start-event-date-label"
)}
value={_.has(
detailsObj,
"pinswg_startdateoftheevent"
)
? !_.isEmpty(
detailsObj.pinswg_startdateoftheevent
)
? formatDates(
detailsObj.pinswg_startdateoftheevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
File diff suppressed because it is too large Load Diff
@@ -5,7 +5,6 @@ import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { hasOwn } from "../../utils";
const Pinswg_transportandworkactid = (props) => { const Pinswg_transportandworkactid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -63,53 +62,99 @@ const Pinswg_transportandworkactid = (props) => {
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t(
"case:summary-case-type-label" label={t("case:summary-case-type-label")}
)}
value={resolveCrmDisplayValue({ value={
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" router.locale == "cy"
], ? jsonpath({
locale: router.locale, path:
translations: transLookup, '$..[?(@ && @.value=="' +
fallbackValue: t( casesObj[
"case:summary-no-date-entered-label" "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
) ] +
})} '")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)
}
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-eia-required-label" "case:summary-eia-required-label"
)} )}
value={resolveCrmDisplayValue({
value: detailsObj[ value={
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
], router.locale == "cy"
locale: router.locale, ? jsonpath(
translations: transLookup, '$..[?(@.value=="' +
fallbackValue: t( detailsObj[
"case:summary-to-be-confirmed-label" "pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
) ] +
})} '")].value_cy',
transLookup
)
: detailsObj[
"pinswg_eiarequired@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-to-be-confirmed-label"
)
}
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-case-recommendation-label" "case:summary-case-recommendation-label"
)} )}
value={resolveCrmDisplayValue({
value: detailsObj.pinswg_recommendation,
locale: router.locale, value={
translations: transLookup,
fallbackValue: ""
})} router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj.pinswg_recommendation +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj.pinswg_recommendation ||
t(
"case:summary-no-date-entered-label"
)
}
/> />
{detailsObj.pinswg_webaddress != null && ( {detailsObj.pinswg_webaddress != null && (
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-case-website-label" "case:summary-case-website-label"
)} )}
value={ value={
router.locale == "cy" router.locale == "cy"
? jsonpath({ ? jsonpath({
path: path:
@@ -117,13 +162,15 @@ const Pinswg_transportandworkactid = (props) => {
detailsObj.pinswg_webaddress + detailsObj.pinswg_webaddress +
'")].value_cy', '")].value_cy',
json: transLookup, json: transLookup,
eval: true eval: true,
}) })
: detailsObj.pinswg_webaddress || : detailsObj.pinswg_webaddress ||
t( t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
)} )}
</dl> </dl>
@@ -138,11 +185,12 @@ const Pinswg_transportandworkactid = (props) => {
</h3> </h3>
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t(
"case:summary-event-date-label" label={t("case:summary-event-date-label")}
)}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateeventrequested" "pinswg_dateeventrequested"
) )
@@ -158,14 +206,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-decision-date-label" "case:summary-decision-date-label"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_casedecisiondate" "pinswg_casedecisiondate"
) )
@@ -181,15 +234,23 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-application-accepted-as-valid" "case:summary-application-accepted-as-valid"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_applicationacceptedasvalid" "pinswg_applicationacceptedasvalid"
) )
@@ -205,14 +266,21 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-application-rejected-as-invalid" "case:summary-application-rejected-as-invalid"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_applicationrejectedasinvalid" "pinswg_applicationrejectedasinvalid"
) )
@@ -228,14 +296,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-confirm-request-to-vary-application" "case:summary-confirm-request-to-vary-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_confirmrequesttovaryapplication" "pinswg_confirmrequesttovaryapplication"
) )
@@ -251,14 +324,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-of-decisions" "case:summary-date-of-decisions"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateofdecision" "pinswg_dateofdecision"
) )
@@ -274,14 +352,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-of-request-to-vary" "case:summary-date-of-request-to-vary"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateofrequesttovarytheapplication" "pinswg_dateofrequesttovarytheapplication"
) )
@@ -297,14 +380,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-of-submission-of-application" "case:summary-date-of-submission-of-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateofsubmissionofapplication" "pinswg_dateofsubmissionofapplication"
) )
@@ -320,14 +408,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-date-project-published-to-website" "case:summary-date-project-published-to-website"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_dateprojectpublishedonwebsite" "pinswg_dateprojectpublishedonwebsite"
) )
@@ -343,14 +436,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-deadline-for-submission-of-application" "case:summary-deadline-for-submission-of-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_deadlineforsubmissionofapplication" "pinswg_deadlineforsubmissionofapplication"
) )
@@ -366,14 +464,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-end-of-representation-period" "case:summary-end-of-representation-period"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_endofrepresentationperiod" "pinswg_endofrepresentationperiod"
) )
@@ -389,14 +492,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-inspector-report-submission-to-welsh-government" "case:summary-inspector-report-submission-to-welsh-government"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_inspectorreportsubmittedtowelshgovernment" "pinswg_inspectorreportsubmittedtowelshgovernment"
) )
@@ -412,14 +520,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-procedure-confirmed" "case:summary-procedure-confirmed"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_procedureconfirmed" "pinswg_procedureconfirmed"
) )
@@ -435,14 +548,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-reject-request-to-vary-application" "case:summary-reject-request-to-vary-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_rejectrequesttovaryapplication" "pinswg_rejectrequesttovaryapplication"
) )
@@ -458,12 +576,17 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-report-due-by")} label={t("case:summary-report-due-by")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_reportdueby" "pinswg_reportdueby"
) )
@@ -479,14 +602,17 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t(
"case:summary-suspension-dates" label={t("case:summary-suspension-dates")}
)}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_suspensiondates" "pinswg_suspensiondates"
) )
@@ -502,14 +628,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-suspension-end-dates" "case:summary-suspension-end-dates"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_suspensionenddates" "pinswg_suspensionenddates"
) )
@@ -525,14 +656,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-suspension-start-dates" "case:summary-suspension-start-dates"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_suspensionstartdates" "pinswg_suspensionstartdates"
) )
@@ -548,14 +684,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-valid-notice-of-intention-to-submit-an-application" "case:summary-valid-notice-of-intention-to-submit-an-application"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_validnoticeofintentiontosubmitanapplicati" "pinswg_validnoticeofintentiontosubmitanapplicati"
) )
@@ -571,12 +712,17 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t("case:summary-withdrawn-date")} label={t("case:summary-withdrawn-date")}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_withdrawndate" "pinswg_withdrawndate"
) )
@@ -592,14 +738,19 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
<SummaryRow <SummaryRow
label={t( label={t(
"case:summary-written-acceptance-of-notice" "case:summary-written-acceptance-of-notice"
)} )}
value={ value={
hasOwn(
_.has(
detailsObj, detailsObj,
"pinswg_writtenacceptanceofnotification" "pinswg_writtenacceptanceofnotification"
) )
@@ -615,7 +766,9 @@ const Pinswg_transportandworkactid = (props) => {
: t( : t(
"case:summary-no-date-entered-label" "case:summary-no-date-entered-label"
) )
} }
/> />
</dl> </dl>
</div> </div>
+471 -304
View File
@@ -1,12 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import transLookup from "../../../data/lookuptranslations.json"; import transLookup from "../../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import SummaryCard from "../summary/components/SummaryCard"; import SummaryCard from "../summary/components/SummaryCard";
import SummaryRow from "../summary/components/SummaryRow"; import SummaryRow from "../summary/components/SummaryRow";
import { getCaseLpaDisplayLines } from "../../utils/getCaseLpaDisplayValue";
import { hasOwn } from "../../utils";
const Pinswg_wayleaveid = (props) => { const Pinswg_wayleaveid = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -22,149 +20,236 @@ const Pinswg_wayleaveid = (props) => {
title={t("case:summary-case-details-label")} title={t("case:summary-case-details-label")}
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-case-type-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={
<>
{getCaseLpaDisplayLines({
casesObj,
detailsObj,
locale: router.locale,
transLookup
}).map((name) => (
<div key={name}>{name}</div>
))}
</>
}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_detailedeiascreening@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-to-be-confirmed-label"
)
})}
/>
<SummaryRow
label={t("case:summary-procedure-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_procedure@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-type-of-event-label")}
value={resolveCrmDisplayValue({
value: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: ""
})}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={resolveCrmDisplayValue({
value: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-date-entered-label"
)
})}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{resolveCrmDisplayValue({
value: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
],
locale,
translations: transLookup,
fallbackValue: t(
"case:summary-no-information-to-date-label"
)
})}
<br /> label={t("case:summary-case-type-label")}
</dd>
</div> value={router.locale == "cy"
{casesObj.numberofchildincidents > 0 && ( ? jsonpath({
<div className="govuk-summary-list__row"> path:
<dt className="govuk-summary-list__key"> '$..[?(@ && @.value=="' +
{t("case:summary-case-link-status-label")} casesObj[
</dt> "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
<dd className="govuk-summary-list__value"> ] +
{hasOwn(casesObj, [ '")].value_cy',
"numberofchildincidents" json: transLookup,
]) eval: true,
? casesObj.numberofchildincidents > 0 })
? t( : casesObj[
"case:summary-case-link-status-linked" "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-lpa-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-eia-required-label")}
value={router.locale == "cy"
? jsonpath(
'$..[?(@.value=="' +
detailsObj[
"pinswg_detailedeiascreening@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
transLookup
) )
: t( : detailsObj[
"case:summary-case-link-status-not-linked" "pinswg_detailedeiascreening@OData.Community.Display.V1.FormattedValue"
) ] ||
: t( t(
"case:summary-case-link-status-not-linked" "case:summary-to-be-confirmed-label"
)} )}
</dd>
</div> />
)} <SummaryRow
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row"> label={t("case:summary-procedure-label")}
<dt className="govuk-summary-list__key">
{t("case:summary-linked-cases-label")} value={router.locale == "cy"
</dt> ? jsonpath({
<dd className="govuk-summary-list__value"> path:
{linkedCasesList( '$..[?(@ && @.value=="' +
props.currentView.linkedCaseReferences detailsObj[
)} "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
</dd> ] +
</div> '")].value_cy',
) : ( json: transLookup,
"" eval: true,
)} })
<SummaryRow : detailsObj[
label={t( "pinswg_procedure@OData.Community.Display.V1.FormattedValue"
"case:summary-case-relevant-authoritylabel" ] || ""}
)}
value={resolveCrmDisplayValue({ />
value: detailsObj.pinswg_relevantauthorityname, <SummaryRow
locale: router.locale,
translations: transLookup, label={t("case:summary-type-of-event-label")}
fallbackValue: ""
})} value={router.locale == "cy"
/> ? jsonpath({
</dl> path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_typeofevent@OData.Community.Display.V1.FormattedValue"
] || ""}
/>
<SummaryRow
label={t("case:summary-status-label")}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: casesObj[
"statuscode@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-date-entered-label"
)}
/>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t("case:summary-decision-label")}
</dt>
<dd className="govuk-summary-list__value">
{router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true,
})
: detailsObj[
"pinswg_decision@OData.Community.Display.V1.FormattedValue"
] ||
t(
"case:summary-no-information-to-date-label"
)}
<br />
{/* <Link href="/">
<a>
{casesObj.caseDetails
.outcome_document || ""}
</a>
</Link> */}
</dd>
</div>
{casesObj.numberofchildincidents > 0 && (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-case-link-status-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{_.has(casesObj, [
"numberofchildincidents",
])
? casesObj.numberofchildincidents >
0
? t(
"case:summary-case-link-status-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)
: t(
"case:summary-case-link-status-not-linked"
)}
</dd>
</div>
)}
{casesObj.numberofchildincidents > 0 ? (
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">
{t(
"case:summary-linked-cases-label"
)}
</dt>
<dd className="govuk-summary-list__value">
{linkedCasesList(
props.currentView
.linkedCaseReferences
)}
</dd>
</div>
) : (
""
)}
<SummaryRow
label={t(
"case:summary-case-relevant-authoritylabel"
)}
value={router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value_cy',
json: transLookup,
eval: true,
})
: jsonpath({
path:
'$..[?(@ && @.pinswg_lpa=="' +
detailsObj.pinswg_relevantauthorityname +
'")].value',
json: transLookup,
eval: true,
}) ||
t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
<SummaryCard <SummaryCard
id="key-dates-card" id="key-dates-card"
@@ -172,175 +257,257 @@ const Pinswg_wayleaveid = (props) => {
headingTag="h3" headingTag="h3"
> >
<dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9"> <dl className="govuk-summary-list govuk-!-font-size-16 govuk-!-margin-bottom-9">
<SummaryRow <SummaryRow
label={t("case:summary-start-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdate")
? !_.isEmpty(detailsObj.pinswg_startdate)
? formatDates(
detailsObj.pinswg_startdate
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(detailsObj, "pinswg_startdates")
? !_.isEmpty(detailsObj.pinswg_startdates)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow label={t("case:summary-start-date-label")}
label={t(
"case:summary-questionnaire-due-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_questionnaireduedate"
)
? !_.isEmpty(
detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow value={_.has(detailsObj, "pinswg_startdate")
label={t("case:summary-statement-due-date-label")} ? !_.isEmpty(
value={ detailsObj.pinswg_startdate
hasOwn(detailsObj, "pinswg_statementduedate") )
? !_.isEmpty( ? formatDates(
detailsObj.pinswg_statementduedate detailsObj.pinswg_startdate
) )
? formatDates( : t(
detailsObj.pinswg_statementduedate "case:summary-no-date-entered-label"
) )
: t( : _.has(
"case:summary-no-date-entered-label" detailsObj,
) "pinswg_startdates"
: t("case:summary-no-date-entered-label") )
} ? !_.isEmpty(
/> detailsObj.pinswg_startdates
)
? formatDates(
detailsObj.pinswg_startdates
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow />
label={t(
"case:summary-interested-party-date-label" <SummaryRow
)}
value={
hasOwn( label={t(
detailsObj, "case:summary-questionnaire-due-date-label"
"pinswg_otherpartiesstatement" )}
)
? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatement value={_.has(
)
? formatDates(
detailsObj.pinswg_otherpartiesstatement
)
: t(
"case:summary-no-date-entered-label"
)
: hasOwn(
detailsObj, detailsObj,
"pinswg_otherpartiesstatements" "pinswg_questionnaireduedate"
) )
? !_.isEmpty( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_questionnaireduedate
)
? formatDates(
detailsObj.pinswg_questionnaireduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-statement-due-date-label"
)}
value={_.has(
detailsObj,
"pinswg_statementduedate"
) )
? formatDates( ? !_.isEmpty(
detailsObj.pinswg_otherpartiesstatements detailsObj.pinswg_statementduedate
) )
: t( ? formatDates(
"case:summary-no-date-entered-label" detailsObj.pinswg_statementduedate
) )
: t("case:summary-no-date-entered-label") : t(
} "case:summary-no-date-entered-label"
/> )
: t(
"case:summary-no-date-entered-label"
)}
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={
hasOwn(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow />
label={t("case:summary-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_dateeventrequested")
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t("case:summary-no-date-entered-label")
}
/>
<SummaryRow <SummaryRow
label={t("case:summary-start-event-date-label")}
value={
hasOwn(detailsObj, "pinswg_startdateofevent") label={t(
? !_.isEmpty( "case:summary-interested-party-date-label"
detailsObj.pinswg_startdateofevent )}
)
? formatDates(
detailsObj.pinswg_startdateofevent value={_.has(
) detailsObj,
: t( "pinswg_otherpartiesstatement"
"case:summary-no-date-entered-label" )
) ? !_.isEmpty(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatement
} )
/> ? formatDates(
<SummaryRow detailsObj.pinswg_otherpartiesstatement
label={t("case:summary-decision-date-label")} )
value={ : t(
hasOwn(detailsObj, "pinswg_casedecisiondate") "case:summary-no-date-entered-label"
? !_.isEmpty( )
detailsObj.pinswg_casedecisiondate : _.has(
) detailsObj,
? formatDates( "pinswg_otherpartiesstatements"
detailsObj.pinswg_casedecisiondate )
) ? !_.isEmpty(
: t( detailsObj.pinswg_otherpartiesstatements
"case:summary-no-date-entered-label" )
) ? formatDates(
: t("case:summary-no-date-entered-label") detailsObj.pinswg_otherpartiesstatements
} )
/> : t(
</dl> "case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-applicant-final-comments-date-label"
)}
value={_.has(
detailsObj,
"pinswg_finalcommentsduedate"
)
? !_.isEmpty(
detailsObj.pinswg_finalcommentsduedate
)
? formatDates(
detailsObj.pinswg_finalcommentsduedate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
{/* <SummaryRow
label={t(
"case:summary-inquiry-evidence-date-label"
)}
value={_.has(
detailsObj,
"pinswg_proofsofevidencewrittenstatementsofeviden"
)
? !_.isEmpty(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
? formatDates(
detailsObj.pinswg_proofsofevidencewrittenstatementsofeviden
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/> */}
<SummaryRow
label={t("case:summary-event-date-label")}
value={_.has(
detailsObj,
"pinswg_dateeventrequested"
)
? !_.isEmpty(
detailsObj.pinswg_dateeventrequested
)
? formatDates(
detailsObj.pinswg_dateeventrequested
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t(
"case:summary-start-event-date-label"
)}
value={_.has(
detailsObj,
"pinswg_startdateofevent"
)
? !_.isEmpty(
detailsObj.pinswg_startdateofevent
)
? formatDates(
detailsObj.pinswg_startdateofevent
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
<SummaryRow
label={t("case:summary-decision-date-label")}
value={_.has(
detailsObj,
"pinswg_casedecisiondate"
)
? !_.isEmpty(
detailsObj.pinswg_casedecisiondate
)
? formatDates(
detailsObj.pinswg_casedecisiondate
)
: t(
"case:summary-no-date-entered-label"
)
: t(
"case:summary-no-date-entered-label"
)}
/>
</dl>
</SummaryCard> </SummaryCard>
</div> </div>
</div> </div>
+1 -2
View File
@@ -1,6 +1,5 @@
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { hasOwn } from "./utils";
const CRMError = (props) => { const CRMError = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -10,7 +9,7 @@ const CRMError = (props) => {
const router = useRouter(); const router = useRouter();
const { locale } = router; const { locale } = router;
const errorSwitch = hasOwn(props, "whichError") const errorSwitch = _.has(props, "whichError")
? "LPAData" ? "LPAData"
: "searchResultsObj"; : "searchResultsObj";
+1 -4
View File
@@ -2,7 +2,6 @@ import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import CRMError from "./crmError"; import CRMError from "./crmError";
import DNSSearchResults from "./search/dnssearchresults"; import DNSSearchResults from "./search/dnssearchresults";
import { hasOwn } from "./utils";
export default function Search(props) { export default function Search(props) {
const { const {
@@ -12,14 +11,13 @@ export default function Search(props) {
watchedCases, watchedCases,
showMap, showMap,
showLoginCheck, showLoginCheck,
mapTarget
} = props; } = props;
let { t } = useTranslation(); let { t } = useTranslation();
const router = useRouter(); const router = useRouter();
const { locale } = router; const { locale } = router;
var hasError = hasOwn(searchResultsObj.searchResultsObj, "errorCode") var hasError = _.has(searchResultsObj.searchResultsObj, "errorCode")
? true ? true
: false; : false;
@@ -50,7 +48,6 @@ export default function Search(props) {
watchedCases={watchedCases} watchedCases={watchedCases}
showMap={showMap} showMap={showMap}
showLoginCheck={showLoginCheck} showLoginCheck={showLoginCheck}
mapTarget={mapTarget}
/> />
</div> </div>
</div> </div>
@@ -4,7 +4,6 @@ import useTranslation from "next-translate/useTranslation";
import { Field } from "redux-form"; import { Field } from "redux-form";
import { RenderDatePicker } from "./renderDatePicker"; import { RenderDatePicker } from "./renderDatePicker";
import { validateField } from "../validationUtils"; import { validateField } from "../validationUtils";
import { hasOwn } from "../../utils";
const dateDiffInDays = (a, b) => { const dateDiffInDays = (a, b) => {
const _MS_PER_DAY = 1000 * 60 * 60 * 24; const _MS_PER_DAY = 1000 * 60 * 60 * 24;
@@ -32,7 +31,7 @@ export function DateFieldPicker(props) {
const showIfHasParentShowValue = const showIfHasParentShowValue =
parentField != false && parentField != false &&
!_.isEmpty(formProps[form]) && !_.isEmpty(formProps[form]) &&
hasOwn(formProps[form].values, parentField) && _.has(formProps[form].values, parentField) &&
formProps[form].values[parentField] == parentFieldShowOnValue; formProps[form].values[parentField] == parentFieldShowOnValue;
const requiredMessage = t("newappeal:is-required-label"); const requiredMessage = t("newappeal:is-required-label");
+2 -2
View File
@@ -5,7 +5,7 @@ import { Field } from "redux-form";
import { RenderTextfield } from "./renderTextfield"; import { RenderTextfield } from "./renderTextfield";
import { RenderDecimalField } from "./renderDecimalField"; import { RenderDecimalField } from "./renderDecimalField";
import { validateField } from "../validationUtils"; import { validateField } from "../validationUtils";
import { hasOwn } from "../../utils";
const isVisibleByInclusion = ({ const isVisibleByInclusion = ({
parentField, parentField,
form, form,
@@ -14,7 +14,7 @@ const isVisibleByInclusion = ({
}) => }) =>
parentField != false && parentField != false &&
!_.isEmpty(formProps[form]) && !_.isEmpty(formProps[form]) &&
hasOwn(formProps[form].values, parentField) && _.has(formProps[form].values, parentField) &&
parentFieldShowOnValue.indexOf( parentFieldShowOnValue.indexOf(
formProps[form].values[parentField].toString() formProps[form].values[parentField].toString()
) > -1; ) > -1;
+2 -2
View File
@@ -3,7 +3,7 @@ import _ from "lodash";
import { FieldArray, change } from "redux-form"; import { FieldArray, change } from "redux-form";
import { useDispatch } from "react-redux"; import { useDispatch } from "react-redux";
import { RenderSubFields } from "./renderSubFields"; import { RenderSubFields } from "./renderSubFields";
import { hasOwn } from "../../utils";
export const FieldArrayForm = (props) => { export const FieldArrayForm = (props) => {
const { const {
name, name,
@@ -19,7 +19,7 @@ export const FieldArrayForm = (props) => {
var showIfHasParentShowValue = var showIfHasParentShowValue =
parentField != false && parentField != false &&
!_.isEmpty(formProps[form]) && !_.isEmpty(formProps[form]) &&
hasOwn(formProps[form].values, parentField) && _.has(formProps[form].values, parentField) &&
parentFieldShowOnValue.indexOf( parentFieldShowOnValue.indexOf(
formProps[form].values[parentField].toString() formProps[form].values[parentField].toString()
) > -1; ) > -1;
+2 -2
View File
@@ -4,7 +4,7 @@ import useTranslation from "next-translate/useTranslation";
import { Field } from "redux-form"; import { Field } from "redux-form";
import { RenderTextfield } from "./renderTextfield"; import { RenderTextfield } from "./renderTextfield";
import { validateField } from "../validationUtils"; import { validateField } from "../validationUtils";
import { hasOwn } from "../../utils";
const isVisibleByInclusion = ({ const isVisibleByInclusion = ({
parentField, parentField,
form, form,
@@ -13,7 +13,7 @@ const isVisibleByInclusion = ({
}) => }) =>
parentField != false && parentField != false &&
!_.isEmpty(formProps[form]) && !_.isEmpty(formProps[form]) &&
hasOwn(formProps[form].values, parentField) && _.has(formProps[form].values, parentField) &&
parentFieldShowOnValue.indexOf( parentFieldShowOnValue.indexOf(
formProps[form].values[parentField].toString() formProps[form].values[parentField].toString()
) > -1; ) > -1;
+1 -2
View File
@@ -4,7 +4,6 @@ import useTranslation from "next-translate/useTranslation";
import { Field } from "redux-form"; import { Field } from "redux-form";
import { RenderRadio } from "./renderRadio"; import { RenderRadio } from "./renderRadio";
import { validateField } from "../validationUtils"; import { validateField } from "../validationUtils";
import { hasOwn } from "../../utils";
const isVisibleByInclusion = ({ const isVisibleByInclusion = ({
parentField, parentField,
@@ -14,7 +13,7 @@ const isVisibleByInclusion = ({
}) => }) =>
parentField != false && parentField != false &&
!_.isEmpty(formProps[form]) && !_.isEmpty(formProps[form]) &&
hasOwn(formProps[form].values, parentField) && _.has(formProps[form].values, parentField) &&
parentFieldShowOnValue.indexOf( parentFieldShowOnValue.indexOf(
formProps[form].values[parentField].toString() formProps[form].values[parentField].toString()
) > -1; ) > -1;
+3 -4
View File
@@ -4,7 +4,6 @@ import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { Field } from "redux-form"; import { Field } from "redux-form";
import { RenderYesNo } from "./renderYesNo"; import { RenderYesNo } from "./renderYesNo";
import { hasOwn } from "../../utils";
export function YesNofield(props) { export function YesNofield(props) {
const router = useRouter(); const router = useRouter();
@@ -18,7 +17,7 @@ export function YesNofield(props) {
const showIfHasParentShowValue = const showIfHasParentShowValue =
parentField != false && parentField != false &&
!_.isEmpty(formProps[form]) && !_.isEmpty(formProps[form]) &&
hasOwn(formProps[form].values, parentField) && _.has(formProps[form].values, parentField) &&
parentFieldShowOnValue.indexOf( parentFieldShowOnValue.indexOf(
formProps[form].values[parentField].toString() formProps[form].values[parentField].toString()
) > -1; ) > -1;
@@ -37,7 +36,7 @@ export function YesNofield(props) {
validate={[required]} validate={[required]}
errorMsg={t("newappeal:select-an-option-label")} errorMsg={t("newappeal:select-an-option-label")}
component={RenderYesNo} component={RenderYesNo}
inline={hasOwn(props, "inline") ? props.inline : "true"} inline={_.has(props, "inline") ? props.inline : "true"}
requiredDocumentLabel={props.requiredDocumentLabel} requiredDocumentLabel={props.requiredDocumentLabel}
requiredDocumentValue={props.requiredDocumentValue} requiredDocumentValue={props.requiredDocumentValue}
setDocumentsList={props.setDocumentsList} setDocumentsList={props.setDocumentsList}
@@ -55,7 +54,7 @@ export function YesNofield(props) {
validate={[required]} validate={[required]}
errorMsg={t("newappeal:select-an-option-label")} errorMsg={t("newappeal:select-an-option-label")}
component={RenderYesNo} component={RenderYesNo}
inline={hasOwn(props, "inline") ? props.inline : "true"} inline={_.has(props, "inline") ? props.inline : "true"}
requiredDocumentLabel={props.requiredDocumentLabel} requiredDocumentLabel={props.requiredDocumentLabel}
requiredDocumentValue={props.requiredDocumentValue} requiredDocumentValue={props.requiredDocumentValue}
setDocumentsList={props.setDocumentsList} setDocumentsList={props.setDocumentsList}
+1 -2
View File
@@ -1,5 +1,4 @@
import _ from "lodash"; import _ from "lodash";
import { hasOwn } from "../utils";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import React, { useEffect } from "react"; import React, { useEffect } from "react";
@@ -41,7 +40,7 @@ const getValidationMessages = (t) => ({
const hasParentFieldValue = ({ parentField, form, formProps }) => const hasParentFieldValue = ({ parentField, form, formProps }) =>
parentField != false && parentField != false &&
!_.isEmpty(formProps[form]) && !_.isEmpty(formProps[form]) &&
hasOwn(formProps[form].values, parentField); _.has(formProps[form].values, parentField);
const isVisibleByEquality = ({ const isVisibleByEquality = ({
parentField, parentField,
+14 -27
View File
@@ -108,7 +108,7 @@ export default function Footer(props) {
> >
<span className="vo_hidden"> <span className="vo_hidden">
{t( {t(
"common:social-bar-share-via-link" "common:social-bar-share-via-link",
)}{" "} )}{" "}
</span> </span>
Twitter Twitter
@@ -186,37 +186,37 @@ export default function Footer(props) {
<li className="govuk-footer__inline-list-item govuk-!-font-weight-bold govuk-!-margin-right-7"> <li className="govuk-footer__inline-list-item govuk-!-font-weight-bold govuk-!-margin-right-7">
<a <a
href={t( href={t(
"common:footer-guidance-link" "common:footer-guidance-link",
)} )}
className="nav-link" className="nav-link"
> >
{t( {t(
"common:footer-guidance-link-label" "common:footer-guidance-link-label",
)} )}
</a> </a>
</li> </li>
<li className="govuk-footer__inline-list-item govuk-!-font-weight-bold govuk-!-margin-right-7"> <li className="govuk-footer__inline-list-item govuk-!-font-weight-bold govuk-!-margin-right-7">
<a <a
href={t( href={t(
"common:footer-announcements-link" "common:footer-announcements-link",
)} )}
className="nav-link" className="nav-link"
> >
{t( {t(
"common:footer-announcements-link-label" "common:footer-announcements-link-label",
)} )}
</a> </a>
</li> </li>
<li className="govuk-footer__inline-list-item govuk-!-font-weight-bold"> <li className="govuk-footer__inline-list-item govuk-!-font-weight-bold">
<a <a
href={t( href={t(
"common:footer-contact-us-link" "common:footer-contact-us-link",
)} )}
className="govuk-footer__link" className="govuk-footer__link"
id="aContactUs" id="aContactUs"
> >
{t( {t(
"common:footer-contact-us-link-label" "common:footer-contact-us-link-label",
)} )}
</a> </a>
</li> </li>
@@ -236,7 +236,7 @@ export default function Footer(props) {
id="aAccessibility" id="aAccessibility"
> >
{t( {t(
"common:footer-accessibility-link-label" "common:footer-accessibility-link-label",
)} )}
</Link> </Link>
</li> </li>
@@ -257,13 +257,13 @@ export default function Footer(props) {
<li className="govuk-footer__inline-list-item"> <li className="govuk-footer__inline-list-item">
<a <a
href={t( href={t(
"common:footer-copyright-link" "common:footer-copyright-link",
)} )}
className="govuk-footer__link" className="govuk-footer__link"
id="Access" id="Access"
> >
{t( {t(
"common:footer-copyright-link-label" "common:footer-copyright-link-label",
)} )}
</a> </a>
</li> </li>
@@ -271,13 +271,13 @@ export default function Footer(props) {
<li className="govuk-footer__inline-list-item"> <li className="govuk-footer__inline-list-item">
<Link <Link
href={t( href={t(
"common:footer-privacy-link" "common:footer-privacy-link",
)} )}
id="aPrivacy" id="aPrivacy"
className="govuk-footer__link" className="govuk-footer__link"
> >
{t( {t(
"common:footer-privacy-link-label" "common:footer-privacy-link-label",
)} )}
</Link> </Link>
</li> </li>
@@ -285,26 +285,13 @@ export default function Footer(props) {
<li className="govuk-footer__inline-list-item"> <li className="govuk-footer__inline-list-item">
<Link <Link
href={t( href={t(
"common:footer-terms-conditions-link" "common:footer-terms-conditions-link",
)} )}
id="aTermsConds" id="aTermsConds"
className="govuk-footer__link" className="govuk-footer__link"
> >
{t( {t(
"common:footer-terms-conditions-link-label" "common:footer-terms-conditions-link-label",
)}
</Link>
</li>
<li className="govuk-footer__inline-list-item">
<Link
href={t(
"common:footer-pedw-use-ai-link"
)}
id="aHowToAI"
className="govuk-footer__link"
>
{t(
"common:footer-pedw-use-ai-label"
)} )}
</Link> </Link>
</li> </li>
+10 -2
View File
@@ -7,7 +7,7 @@ import { connect } from "react-redux";
import Banner from "../components/banner"; import Banner from "../components/banner";
import { setLogout } from "../store/accountDetails/action"; import { setLogout } from "../store/accountDetails/action";
import { performPortalSignOut } from "../lib/auth/sessionClient"; import { signOut } from "next-auth/react";
const Header = (props) => { const Header = (props) => {
let { t, lang } = useTranslation(); let { t, lang } = useTranslation();
@@ -84,7 +84,15 @@ const Header = (props) => {
} }
const handleLogout = () => { const handleLogout = () => {
performPortalSignOut(locale); console.info("////////////\n" + "logout" + "\n////////////");
(window.localStorage.clear(),
destroyCookie(null, "next-auth.csrf-token", { path: "/" }),
destroyCookie(null, "next-auth.callback-url", { path: "/" }),
destroyCookie(null, "pedw_locale", { path: "/" }),
destroyCookie(null, "pinsUser", { path: "/" }),
signOut({
callbackUrl: locale == "cy" ? "/cy/allgofnodi" : "/logout"
}));
}; };
//const switchLocale = locale === "en" ? "cy" : "en"; //const switchLocale = locale === "en" ? "cy" : "en";
+5 -5
View File
@@ -41,12 +41,12 @@ export default function Dns() {
</Link> </Link>
</div> </div>
<div className="govuk-form-group"> <div className="govuk-form-group">
<h3 className="heading-small card-heading"> <h3 className="heading-small card-heading">Contact us</h3>
{t("home:contact-us-heading")}
</h3>
<div className="govuk-form-group"> <div className="govuk-form-group">
<p className="govuk-body-s"> <p className="govuk-body-s">
{t("home:contact-us-paragraph")} If you have any queries on an appeal, application or
anything else regarding Planning Caserwork you can
contact us.
</p> </p>
</div> </div>
<div className="govuk-form-group"> <div className="govuk-form-group">
@@ -58,7 +58,7 @@ export default function Dns() {
} }
className="govuk-button govuk-button--secondary-cta" className="govuk-button govuk-button--secondary-cta"
> >
{t("home:contact-us-button")} Contact us
</Link> </Link>
</div> </div>
</div> </div>
+42 -8
View File
@@ -1,7 +1,7 @@
import { he } from "date-fns/locale"; import { he } from "date-fns/locale";
import GoogleMapReact from "google-map-react"; import GoogleMapReact from "google-map-react";
const MapComponent = (props) => { const GoogleMapComponent = (props) => {
const { center, zoom, locale, mapTarget } = props; const { center, zoom } = props;
let data = [center]; let data = [center];
@@ -23,26 +23,60 @@ const MapComponent = (props) => {
} }
}; };
// console.log(
// "https://datamap.gov.wales/maps/pedw-dev/embed?center=" +
// props.center.lng +
// "," +
// props.center.lat +
// "&zoom=12#/"
// );
return ( return (
// <GoogleMapReact
// options={function (maps) {
// return {
// overviewMapControl: true,
// mapTypeControl: true,
// };
// }}
// bootstrapURLKeys={{
// key: "AIzaSyCzeVrHt544bp_72YCFkw21eDsmI2JEsQo",
// }}
// defaultCenter={center}
// defaultZoom={zoom}
// yesIWantToUseGoogleMapApiInternals
// onGoogleApiLoaded={({ map, maps }) => ModelsMap(map, maps)}
// ></GoogleMapReact>
<> <>
{" "}
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-grid-column-full"> <div className="govuk-grid-column-full">
<a <a
href={`https://${locale === "cy" ? "mapdata.llyw.cymru" : "datamap.gov.wales"}/maps/${mapTarget}/embed?center=${center.lng},${center.lat}&zoom=7#/`} href={
"https://datamap.gov.wales/maps/pedw-dev/embed?center=" +
props.center.lng +
"," +
props.center.lat +
"&zoom=7#/"
}
rel="noreferrer noopener" rel="noreferrer noopener"
className="govuk-link govuk-link--no-underline govuk-!-font-size-14 " className="govuk-link govuk-link--no-underline govuk-!-font-size-14 "
target="_blank" target="_blank"
> >
{locale === "cy" See this map on Datamap Wales
? "Gweler y map hwn ar Datamap Cymru"
: "See this map on Datamap Wales "}
</a> </a>
</div> </div>
</div> </div>
<div className="govuk-grid-row"> <div className="govuk-grid-row">
<div className="govuk-grid-column-full"> <div className="govuk-grid-column-full">
<iframe <iframe
src={`https://${locale === "cy" ? "mapdata.llyw.cymru" : "datamap.gov.wales"}/maps/${mapTarget}/embed?center=${center.lng},${center.lat}&zoom=7#/`} src={
"https://datamap.gov.wales/maps/pedw-dev/embed?center=" +
props.center.lng +
"," +
props.center.lat +
"&zoom=7#/"
}
//src={"https://datamap.gov.wales/maps/pedw-dev/embed#/"}
width={"100%"} width={"100%"}
style={{ maxHeight: "400px" }} style={{ maxHeight: "400px" }}
height={"500px"} height={"500px"}
@@ -54,4 +88,4 @@ const MapComponent = (props) => {
); );
}; };
export default MapComponent; export default GoogleMapComponent;
+90 -12
View File
@@ -2,9 +2,11 @@ import { signOut } from "next-auth/react";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import Link from "next/link"; import Link from "next/link";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { destroyCookie } from "nookies";
import TimeOut from "../components/timeout"; import TimeOut from "../components/timeout";
import AwaitingSubmissionFromBlob from "./myportal/awaitingsubmissionfromblob"; import AwaitingSubmissionFromBlob from "./myportal/awaitingsubmissionfromblob";
import { hasOwn } from "./utils";
import _ from "lodash";
import Dns from "./myportal/dns"; import Dns from "./myportal/dns";
import MakeNewAppeal from "./myportal/makenewappeal"; import MakeNewAppeal from "./myportal/makenewappeal";
import MyCases from "./myportal/mycases"; import MyCases from "./myportal/mycases";
@@ -13,10 +15,8 @@ import SearchCases from "./myportal/searchcases";
import WatchedCases from "./myportal/watchedcases"; import WatchedCases from "./myportal/watchedcases";
import MySubmittedReps from "./myportal/mysubmittedrepresentations"; import MySubmittedReps from "./myportal/mysubmittedrepresentations";
import ServiceBanner from "./myportal/servicebanner"; import ServiceBanner from "./myportal/servicebanner";
import { JSONPath as jsonpath } from "jsonpath-plus";
import transLookup from "../data/lookuptranslations.json"; import transLookup from "../data/lookuptranslations.json";
import { performPortalSignOut } from "../lib/auth/sessionClient";
import resolveCrmDisplayValue from "../lib/i18n/crmDisplay/resolveCrmDisplayValue";
import _ from "lodash";
const MyPortal = (props) => { const MyPortal = (props) => {
const { showFileUpload, showLoginCheck, docsOffline } = props; const { showFileUpload, showLoginCheck, docsOffline } = props;
@@ -26,7 +26,15 @@ const MyPortal = (props) => {
const { locale } = router; const { locale } = router;
const handleLogout = () => { const handleLogout = () => {
performPortalSignOut({ locale, signOutFn: signOut }); console.info("////////////\n" + "logout" + "\n////////////");
(window.localStorage.clear(),
destroyCookie(null, "next-auth.csrf-token", { path: "/" }),
destroyCookie(null, "next-auth.callback-url", { path: "/" }),
destroyCookie(null, "pedw_locale", { path: "/" }),
destroyCookie(null, "pinsUser", { path: "/" }),
signOut({
callbackUrl: locale == "cy" ? "/cy/allgofnodi" : "/logout"
}));
}; };
const isLPA = const isLPA =
@@ -39,17 +47,78 @@ const MyPortal = (props) => {
return ( return (
<> <>
<main className="" id="main-content" role="main"> <main className="" id="main-content" role="main">
{/* <div className="servicebanner myportal govuk-!-margin-bottom-4">
<h1>
<img
src={
router.locale == "cy"
? "/assets/images/planning-casework-cy.svg"
: "/assets/images/planning-casework-en.svg"
}
alt={
router.locale == "cy"
? "Fy mhorth"
: "My Portal"
}
/>
</h1>
<div className="serviceBanner_userDetails">
<img
className="user_logo"
src="/assets/images/user.svg"
alt={router.locale == "cy" ? "Defnyddiwr" : "User"}
/>{" "}
<div className="serviceBanner_userDetails_name">
<Link
href="/account/personaldetails"
className="govuk-button-secondary"
>
{props.accountDetails.accountDetails.firstname}{" "}
{props.accountDetails.accountDetails.lastname}
{" - "}
{
props.accountDetails.accountDetails[
"pinswg_typeofinvolvement@OData.Community.Display.V1.FormattedValue"
]
}
</Link>
</div>
<div>
<Link
href={
router.locale == "cy"
? "/allgofnodi"
: "/logout"
}
onClick={() => {
handleLogout();
}}
className="govuk-header__link "
>
{t("common:signout-label")}
</Link>
</div>
</div>
</div> */}
<ServiceBanner props={props} /> <ServiceBanner props={props} />
{isLPA && ( {isLPA && (
<div> <div>
<h2 className="heading-small card-heading"> <h2 className="heading-small card-heading">
{resolveCrmDisplayValue({ {router.locale == "cy"
value: props.accountDetails.accountDetails[ ? jsonpath({
"pinswg_contact_associatedlpa@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, props.accountDetails.accountDetails[
translations: transLookup "pinswg_contact_associatedlpa@OData.Community.Display.V1.FormattedValue"
})}{" "} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: props.accountDetails.accountDetails[
"pinswg_contact_associatedlpa@OData.Community.Display.V1.FormattedValue"
]}{" "}
{t("myportal:lpa-portal-heading")} {t("myportal:lpa-portal-heading")}
</h2> </h2>
</div> </div>
@@ -61,6 +130,15 @@ const MyPortal = (props) => {
{!isLPA && ( {!isLPA && (
<MakeNewAppeal docsOffline={docsOffline} /> <MakeNewAppeal docsOffline={docsOffline} />
)} )}
{/* {props.awaitingSubmission.awaitingSubmission[
"@odata.count"
] > 0 && (
<AwaitingSubmission
awaitingSubmission={
props.awaitingSubmission
}
/>
)} */}
{!isLPA && {!isLPA &&
_.has(props.awaitingSubmission, [ _.has(props.awaitingSubmission, [
+42 -11
View File
@@ -1,10 +1,10 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { connect } from "react-redux"; import { connect } from "react-redux";
import { Field, formValueSelector, reduxForm } from "redux-form"; import { Field, formValueSelector, reduxForm } from "redux-form";
import transLookup from "../../data/lookuptranslations.json"; import transLookup from "../../data/lookuptranslations.json";
import resolveCrmDisplayValue from "../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
const required = (errorMsg) => (value) => const required = (errorMsg) => (value) =>
value || typeof value === "number" ? undefined : errorMsg; value || typeof value === "number" ? undefined : errorMsg;
@@ -133,11 +133,22 @@ let AdvancedSearch = (props) => {
key={key} key={key}
value={optionsObj[key].accountid} value={optionsObj[key].accountid}
> >
{resolveCrmDisplayValue({ {/* {optionsObj[key].name} */}
value: optionsObj[key].name,
locale, {router.locale == "cy"
translations: transLookup ? jsonpath({
})} path:
'$..[?(@ && @.value=="' +
optionsObj[key]
.name +
'")].value_cy',
json: transLookup,
eval: true
})
: optionsObj[key].name ||
t(
"case:summary-no-date-entered-label"
)}
</option> </option>
); );
})} })}
@@ -223,11 +234,31 @@ let AdvancedSearch = (props) => {
.toLowerCase() .toLowerCase()
} }
> >
{resolveCrmDisplayValue({ {_.isEmpty(optionsObj[key])
value: optionsObj[key].value, ? ""
locale, : _.isEmpty(optionsObj[key])
translations: transLookup ? ""
})} : _.isEmpty(
optionsObj[key]
.value
)
? ""
: router.locale == "cy"
? jsonpath({
path:
'$..[?(@ && @.value=="' +
optionsObj[
key
].value +
'")].value_cy',
json: transLookup,
eval: true
})
: optionsObj[key]
.value ||
t(
"case:summary-no-date-entered-label"
)}
</option> </option>
); );
})} })}
@@ -1,3 +1,4 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import Link from "next/link"; import Link from "next/link";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
@@ -17,7 +18,6 @@ import {
setCurrentReference, setCurrentReference,
setCurrentView setCurrentView
} from "../../store/currentView/action"; } from "../../store/currentView/action";
import { resolveCrmDisplayValue } from "../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
const AwaitingSubmissionFromBlob = (props) => { const AwaitingSubmissionFromBlob = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -201,14 +201,22 @@ const AwaitingSubmissionFromBlob = (props) => {
</div> </div>
<div className="cardModuleReference"> <div className="cardModuleReference">
<b>{t("myportal:appeal-type-label")}:</b>{" "} <b>{t("myportal:appeal-type-label")}:</b>{" "}
{resolveCrmDisplayValue({ {router.locale == "cy"
value: getFormCollectionByID( ? jsonpath({
showTopThreeArr[key] path:
.pinswg_appealcasetype '$..[?(@ && @.value=="' +
).value, getFormCollectionByID(
locale, showTopThreeArr[key]
translations: transLookup .pinswg_appealcasetype
})} ).value +
'")].value_cy',
json: transLookup,
eval: true
})
: getFormCollectionByID(
showTopThreeArr[key]
.pinswg_appealcasetype
).value || ""}
</div> </div>
<div className="cardModuleReference"> <div className="cardModuleReference">
<b>{t("myportal:case-address")}:</b>{" "} <b>{t("myportal:case-address")}:</b>{" "}
@@ -294,14 +302,20 @@ const AwaitingSubmissionFromBlob = (props) => {
{router.locale == "cy" ? "ACLl" : "LPA"} {router.locale == "cy" ? "ACLl" : "LPA"}
: :
</b> </b>
{router.locale == "cy"
{resolveCrmDisplayValue({ ? jsonpath({
value: showTopThreeArr[key][ path:
"pinswg_lpaname" '$..[?(@ && @.value=="' +
], showTopThreeArr[key][
locale, "pinswg_lpaname"
translations: transLookup ] +
})} '")].value_cy',
json: transLookup,
eval: true
})
: showTopThreeArr[key][
"pinswg_lpaname"
] || ""}
</div> </div>
<div className="cardModuleReference"> <div className="cardModuleReference">
<b>{t("myportal:date-raised")}:</b> <b>{t("myportal:date-raised")}:</b>
@@ -339,8 +353,8 @@ const AwaitingSubmissionFromBlob = (props) => {
<h3 className="heading-small card-heading"> <h3 className="heading-small card-heading">
{t("myportal:awatitingsubmission-card-title")} {t("myportal:awatitingsubmission-card-title")}
</h3> </h3>
<TopThreeRow />
<TopThreeRow />
{props.awaitingSubmissionFromBlob["@odata.count"] > 1 && ( {props.awaitingSubmissionFromBlob["@odata.count"] > 1 && (
<div className="cardVieAll"> <div className="cardVieAll">
<Link <Link
+2 -2
View File
@@ -44,7 +44,7 @@ const MyRepresentations = (props) => {
onClick={() => { onClick={() => {
setCurrentView({ setCurrentView({
"viewName": "My Representations", "viewName": "My Representations",
"viewKey": "myRepresentations" "viewKey": "myRepresentations",
}); });
}} }}
> >
@@ -65,7 +65,7 @@ const mapDispatchToProps = (dispatch) => {
return { return {
setCurrentView: (currentView) => { setCurrentView: (currentView) => {
dispatch(setCurrentView(currentView)); dispatch(setCurrentView(currentView));
} },
}; };
}; };
@@ -43,7 +43,7 @@ const MyRepresentations = (props) => {
onClick={() => { onClick={() => {
setCurrentView({ setCurrentView({
"viewName": "My Representations", "viewName": "My Representations",
"viewKey": "myRepresentations" "viewKey": "myRepresentations",
}); });
}} }}
> >
@@ -64,7 +64,7 @@ const mapDispatchToProps = (dispatch) => {
return { return {
setCurrentView: (currentView) => { setCurrentView: (currentView) => {
dispatch(setCurrentView(currentView)); dispatch(setCurrentView(currentView));
} },
}; };
}; };
+13 -3
View File
@@ -1,7 +1,8 @@
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import router from "next/router"; import router from "next/router";
import Link from "next/link"; import Link from "next/link";
import { performPortalSignOut } from "../../lib/auth/sessionClient"; import { destroyCookie } from "nookies";
import { signOut } from "next-auth/react";
const ServiceBanner = (props) => { const ServiceBanner = (props) => {
props = props.props; props = props.props;
@@ -18,14 +19,23 @@ const ServiceBanner = (props) => {
}; };
const handleLogout = (locale) => { const handleLogout = (locale) => {
performPortalSignOut(locale); console.info("////////////\n" + "logout" + "\n////////////");
window.localStorage.clear(),
destroyCookie(null, "next-auth.csrf-token"),
{ path: "/" },
destroyCookie(null, "next-auth.callback-url", { path: "/" }),
destroyCookie(null, "pedw_locale", { path: "/" }),
destroyCookie(null, "pinsUser", { path: "/" }),
signOut({
callbackUrl: locale == "cy" ? "/cy/allgofnodi" : "/logout",
});
}; };
const portalLogoLink = [ const portalLogoLink = [
"/myportal/[appealtypes]", "/myportal/[appealtypes]",
"/newappeal", "/newappeal",
"/newappeal/[appealtypes]", "/newappeal/[appealtypes]",
"/myportal/representation" "/myportal/representation",
]; ];
return ( return (
<div className="servicebanner myportal govuk-!-margin-bottom-4"> <div className="servicebanner myportal govuk-!-margin-bottom-4">
+44 -22
View File
@@ -1,3 +1,4 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import _ from "lodash"; import _ from "lodash";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import Link from "next/link"; import Link from "next/link";
@@ -11,7 +12,6 @@ import {
getPortalModuleDetailsProxy, getPortalModuleDetailsProxy,
getWatchedCasesProxy getWatchedCasesProxy
} from "../../actions/services/portalService"; } from "../../actions/services/portalService";
import { splitWatchedCasesBySubmissionState } from "../../lib/domain/dashboard-policy";
import { getFormCollectionByID, getDetailsProxy } from "../../components/utils"; import { getFormCollectionByID, getDetailsProxy } from "../../components/utils";
import transLookup from "../../data/lookuptranslations.json"; import transLookup from "../../data/lookuptranslations.json";
import { import {
@@ -32,7 +32,6 @@ import { planningappeals78_pdf } from "../../components/pdftemplates/planningapp
import { other_pdf } from "../../components/pdftemplates/other_pdf"; import { other_pdf } from "../../components/pdftemplates/other_pdf";
import { PDFDownloadLink, pdf } from "@react-pdf/renderer"; import { PDFDownloadLink, pdf } from "@react-pdf/renderer";
import resolveCrmDisplayValue from "../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
const TopThree = (props) => { const TopThree = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -123,10 +122,21 @@ const TopThree = (props) => {
getWatchedCasesProxy( getWatchedCasesProxy(
props.accountDetails.loggedinUserId props.accountDetails.loggedinUserId
).then((data) => { ).then((data) => {
let filteredWatchedCases = let showWatchedCases = (submittedArr) => {
splitWatchedCasesBySubmissionState( const required = submittedArr.value.filter((el) => {
data.value return (
).watchedCases; el.pinswg_representationsubmitted == null
);
});
let newObj = {};
return Object.assign(newObj, {
"@odata.count": required.length,
"value": required
});
};
let filteredWatchedCases = showWatchedCases(data);
(setWatchedCases(filteredWatchedCases), (setWatchedCases(filteredWatchedCases),
getDetailsProxy( getDetailsProxy(
@@ -304,8 +314,6 @@ const TopThree = (props) => {
] ]
), ),
setCurrentReference({ setCurrentReference({
"statuscode":
showTopThreeArr[key].statuscode,
"ticketnumber": "ticketnumber":
showTopThreeArr[key] showTopThreeArr[key]
.ticketnumber, .ticketnumber,
@@ -406,13 +414,20 @@ const TopThree = (props) => {
</div> </div>
<div className="cardModuleReference"> <div className="cardModuleReference">
<b>{t("myportal:appeal-type-label")}:</b>{" "} <b>{t("myportal:appeal-type-label")}:</b>{" "}
{resolveCrmDisplayValue({ {router.locale == "cy"
value: showTopThreeArr[key][ ? jsonpath({
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, showTopThreeArr[key][
translations: transLookup "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: showTopThreeArr[key][
"pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue"
] || ""}
</div> </div>
{/* )} */} {/* )} */}
{/* {topThreeType != "awaitingSubmission" ? ( */} {/* {topThreeType != "awaitingSubmission" ? ( */}
@@ -477,13 +492,20 @@ const TopThree = (props) => {
)} )}
<div className="cardModuleReference"> <div className="cardModuleReference">
<b>{router.locale == "cy" ? "ACLl" : "LPA"}:</b> <b>{router.locale == "cy" ? "ACLl" : "LPA"}:</b>
{resolveCrmDisplayValue({ {router.locale == "cy"
value: showTopThreeArr[key][ ? jsonpath({
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue" path:
], '$..[?(@ && @.value=="' +
locale, showTopThreeArr[key][
translations: transLookup "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
})} ] +
'")].value_cy',
json: transLookup,
eval: true
})
: showTopThreeArr[key][
"_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue"
] || ""}
</div> </div>
{topThreeType == "awaitingSubmission" ? ( {topThreeType == "awaitingSubmission" ? (
<div className="carModuleAddress"> <div className="carModuleAddress">
+77 -26
View File
@@ -1,3 +1,4 @@
import { JSONPath as jsonpath } from "jsonpath-plus";
import useTranslation from "next-translate/useTranslation"; import useTranslation from "next-translate/useTranslation";
import Link from "next/link"; import Link from "next/link";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
@@ -33,7 +34,6 @@ import {
setWatchedCasesDetails setWatchedCasesDetails
} from "../../store/watchedCases/action"; } from "../../store/watchedCases/action";
import { getFormCollectionByID, getDetailsProxy } from "../utils"; import { getFormCollectionByID, getDetailsProxy } from "../utils";
import resolveCrmDisplayValue from "../../lib/i18n/crmDisplay/resolveCrmDisplayValue";
const TopThree = (props) => { const TopThree = (props) => {
let { t } = useTranslation(); let { t } = useTranslation();
@@ -196,6 +196,19 @@ const TopThree = (props) => {
<b>{showTopThreeArr[key].pinswg_name}</b> <b>{showTopThreeArr[key].pinswg_name}</b>
) : ( ) : (
<span <span
// href="#"
// href={{
// pathname:
// router.locale == "cy"
// ? "/fymhorth/representation"
// : "/myportal/representation",
// query: {
// case: showTopThreeArr[key].ticketnumber,
// state: "edit",
// created:
// showTopThreeArr[key].repfile_name,
// },
// }}
className="govuk-link--no-underline" className="govuk-link--no-underline"
style={{ style={{
color: "#0360a6", color: "#0360a6",
@@ -205,8 +218,6 @@ const TopThree = (props) => {
data-id={index} data-id={index}
onClick={() => { onClick={() => {
setCurrentReference({ setCurrentReference({
"statuscode":
showTopThreeArr[key].statuscode,
"ticketnumber": "ticketnumber":
showTopThreeArr[key].ticketnumber, showTopThreeArr[key].ticketnumber,
"currentReference": "currentReference":
@@ -225,12 +236,8 @@ const TopThree = (props) => {
? "/fymhorth/representation" ? "/fymhorth/representation"
: "/myportal/representation", : "/myportal/representation",
query: { query: {
case: case: showTopThreeArr[key]
showTopThreeArr[key] .ticketnumber,
.ticketnumber ||
showTopThreeArr[key].caseRef ||
showTopThreeArr[key]
.pinswg_name,
state: "edit", state: "edit",
created: created:
showTopThreeArr[key] showTopThreeArr[key]
@@ -279,19 +286,54 @@ const TopThree = (props) => {
</div> </div>
<div className="cardModuleReference"> <div className="cardModuleReference">
<b>{t("myportal:representation-type")}:</b> <b>{t("myportal:representation-type")}:</b>
{resolveCrmDisplayValue({ {" "}
value: showTopThreeArr[key].representationType,
locale, {router.locale == "cy"
translations: transLookup ? jsonpath({
})} path:
'$..[?(@ && @.value=="' +
showTopThreeArr[key].representationType +
'")].value_cy',
json: transLookup,
eval: true
})
: showTopThreeArr[key].representationType || ""}
</div> </div>
<div className="cardModuleReference"> <div className="cardModuleReference">
<b>{t("myportal:capacity")}:</b> <b>{t("myportal:capacity")}:</b>
{resolveCrmDisplayValue({ {" "}
value: showTopThreeArr[key].representationCapacity, {router.locale == "cy"
locale, ? jsonpath({
translations: transLookup path:
})} '$..[?(@ && @.value=="' +
showTopThreeArr[key]
.representationCapacity +
'" ||@.value_cy=="' +
showTopThreeArr[key]
.representationCapacity +
'" )].value_cy',
json: transLookup,
eval: true
})
: jsonpath({
path:
'$..[?(@ && @.value_cy=="' +
showTopThreeArr[key]
.representationCapacity +
'")].value',
json: transLookup,
eval: true
}).length > 0
? jsonpath({
path:
'$..[?(@ && @.value_cy=="' +
showTopThreeArr[key]
.representationCapacity +
'")].value',
json: transLookup,
eval: true
})
: showTopThreeArr[key].representationCapacity}
</div> </div>
<div className="cardModuleReference"> <div className="cardModuleReference">
<b>{t("myportal:date-raised")}:</b> <b>{t("myportal:date-raised")}:</b>
@@ -300,13 +342,22 @@ const TopThree = (props) => {
</div>{" "} </div>{" "}
<div className="cardModuleReference"> <div className="cardModuleReference">
<b>{router.locale == "cy" ? "ACLl" : "LPA"}:</b> <b>{router.locale == "cy" ? "ACLl" : "LPA"}:</b>
{resolveCrmDisplayValue({ {" "}
value: showTopThreeArr[key][
"_pinswg_localplanningauthority_value@OData.Community.Display.V1.FormattedValue" {router.locale == "cy"
], ? jsonpath({
locale, path:
translations: transLookup '$..[?(@ && @.value=="' +
})} showTopThreeArr[key][
"_pinswg_localplanningauthority_value@OData.Community.Display.V1.FormattedValue"
] +
'")].value_cy',
json: transLookup,
eval: true
})
: showTopThreeArr[key][
"_pinswg_localplanningauthority_value@OData.Community.Display.V1.FormattedValue"
] || ""}
</div> </div>
{showTopThreeArr[key].hasOwnProperty("repComplete") && ( {showTopThreeArr[key].hasOwnProperty("repComplete") && (
<div className="cardModuleReference"> <div className="cardModuleReference">

Some files were not shown because too many files have changed in this diff Show More