@gov-cy/govcy-express-services 1.3.0-alpha.3 → 1.3.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gov-cy/govcy-express-services",
|
|
3
|
-
"version": "1.3.0-alpha.
|
|
3
|
+
"version": "1.3.0-alpha.4",
|
|
4
4
|
"description": "An Express-based system that dynamically renders services using @gov-cy/govcy-frontend-renderer and posts data to a submission API.",
|
|
5
5
|
"author": "DMRID - DSF Team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -23,11 +23,19 @@ export function govcyReviewPostHandler() {
|
|
|
23
23
|
// ✅ Load service and check if it exists
|
|
24
24
|
const service = req.serviceData;
|
|
25
25
|
let validationErrors = {};
|
|
26
|
-
|
|
26
|
+
// to be used for sending email
|
|
27
|
+
let updateMyDetailsData = null;
|
|
28
|
+
|
|
27
29
|
// Loop through all pages in the service
|
|
28
30
|
for (const page of service.pages) {
|
|
29
31
|
//get page url
|
|
30
32
|
const pageUrl = page.pageData.url;
|
|
33
|
+
|
|
34
|
+
// to be used for sending email
|
|
35
|
+
// get updateMyDetails data if not found before
|
|
36
|
+
if (!updateMyDetailsData) {
|
|
37
|
+
updateMyDetailsData = dataLayer.getPageUpdateMyDetails(req.session, siteId, pageUrl);
|
|
38
|
+
}
|
|
31
39
|
|
|
32
40
|
// ----- Conditional logic comes here
|
|
33
41
|
// ✅ Skip validation if page is conditionally excluded
|
|
@@ -165,9 +173,22 @@ export function govcyReviewPostHandler() {
|
|
|
165
173
|
// Generate the email body
|
|
166
174
|
let emailBody = generateSubmitEmail(service, submissionData.printFriendlyData, referenceNo, req);
|
|
167
175
|
logger.debug("Email generated:", emailBody);
|
|
176
|
+
|
|
177
|
+
let emailAddress = "";
|
|
178
|
+
// if Update my details not provided the use user email
|
|
179
|
+
if (!updateMyDetailsData || !updateMyDetailsData.email) {
|
|
180
|
+
emailAddress = dataLayer.getUser(req.session).email;
|
|
181
|
+
} else {
|
|
182
|
+
emailAddress = updateMyDetailsData.email;
|
|
183
|
+
}
|
|
184
|
+
|
|
168
185
|
// Send the email
|
|
169
|
-
sendEmail(
|
|
170
|
-
|
|
186
|
+
sendEmail(
|
|
187
|
+
service.site.title[service.site.lang],
|
|
188
|
+
emailBody,
|
|
189
|
+
[emailAddress],
|
|
190
|
+
"eMail").catch(err => {
|
|
191
|
+
logger.error("Email sending failed (async):", err);
|
|
171
192
|
});
|
|
172
193
|
// --- End of email sending
|
|
173
194
|
|
|
@@ -442,12 +442,14 @@ export function govcyUpdateMyDetailsPostHandler() {
|
|
|
442
442
|
// --------------- Page variant 1:Manual form for non-eligible users
|
|
443
443
|
//⤴️ Store validated form data in session
|
|
444
444
|
dataLayer.storePageData(req.session, siteId, pageUrl, formData);
|
|
445
|
+
dataLayer.storePageUpdateMyDetails(req.session, siteId, pageUrl, formData);
|
|
445
446
|
} else if (pageVariant === 2) {
|
|
446
447
|
// --------------- Page variant 2: Confirmation radio for eligible users with data
|
|
447
448
|
const userChoice = req.body?.useTheseDetails?.trim().toLowerCase();
|
|
448
449
|
if (userChoice === "yes") {
|
|
449
450
|
//⤴️ Store validated form data in session
|
|
450
451
|
dataLayer.storePageData(req.session, siteId, pageUrl, userDetails);
|
|
452
|
+
dataLayer.storePageUpdateMyDetails(req.session, siteId, pageUrl, userDetails);
|
|
451
453
|
} else if (userChoice === "no") {
|
|
452
454
|
// construct the return url to go to `:siteId/:pageUrl` + `?route=` + `review`
|
|
453
455
|
const returnUrl = `${req.protocol}://${req.get("host")}${govcyResources.constructPageUrl(siteId, page.pageData.url, (req.query.route === "review" ? "review" : ""))}`;
|
|
@@ -248,6 +248,34 @@ export function getSiteEligibilityResult(store, siteId, endpointKey, maxAgeMs =
|
|
|
248
248
|
return entry.result;
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
+
/**
|
|
252
|
+
* Stores the update my details data for contact purposes, outside the scope of formData
|
|
253
|
+
*
|
|
254
|
+
* For example `store.siteData[siteId].inputData[pageUrl]["updateMyDetails"] = value`
|
|
255
|
+
*
|
|
256
|
+
* @param {object} store The session store
|
|
257
|
+
* @param {string} siteId The site id
|
|
258
|
+
* @param {string} pageUrl The page url
|
|
259
|
+
* @param {object} userData The user's update my details data
|
|
260
|
+
*/
|
|
261
|
+
export function storePageUpdateMyDetails(store, siteId, pageUrl, userData) {
|
|
262
|
+
// Ensure session structure is initialized
|
|
263
|
+
initializeSiteData(store, siteId, pageUrl);
|
|
264
|
+
|
|
265
|
+
store.siteData[siteId].inputData[pageUrl]["updateMyDetails"] = userData;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Get the update my details data for contact purposes, outside the scope of formData
|
|
270
|
+
* @param {object} store The session store
|
|
271
|
+
* @param {string} siteId The site id
|
|
272
|
+
* @param {string} pageUrl The page url
|
|
273
|
+
* @returns The user's update my details data
|
|
274
|
+
*/
|
|
275
|
+
export function getPageUpdateMyDetails(store, siteId, pageUrl) {
|
|
276
|
+
return store?.siteData?.[siteId]?.inputData?.[pageUrl]?.["updateMyDetails"] || null;
|
|
277
|
+
}
|
|
278
|
+
|
|
251
279
|
/**
|
|
252
280
|
* Get the page validation errors from the store and clear them
|
|
253
281
|
*
|