From 73c6ef7e3ad24396fe438ccb347e8a9838c3e4a8 Mon Sep 17 00:00:00 2001 From: Ed Horsford Date: Mon, 22 Dec 2025 12:47:01 +0000 Subject: [PATCH 1/2] Add static error pages --- app/routes/events.js | 15 +++++++-------- .../events/attended-not-screened-reason.html | 3 +++ .../reschedule.html | 3 +++ app/views/events/exit-appointment.html | 3 +++ app/views/example-pages/404.html | 19 +++++++++++++++++++ app/views/example-pages/500.html | 17 +++++++++++++++++ app/views/index.html | 11 +++++++++++ 7 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 app/views/example-pages/404.html create mode 100644 app/views/example-pages/500.html diff --git a/app/routes/events.js b/app/routes/events.js index e73100b6..09e75320 100644 --- a/app/routes/events.js +++ b/app/routes/events.js @@ -2545,25 +2545,24 @@ module.exports = (router) => { return } - // Capture session end time only if appointment was started - const event = getEvent(data, eventId) - if (event?.sessionDetails?.startedAt) { - captureSessionEndTime(data, eventId, data.currentUser.id) - } - // If yes, redirect to reschedule page if (needsReschedule === 'yes') { // Save the appointmentStopped data before redirecting + // Don't update status yet - keep workflow active until reschedule is complete saveTempEventToEvent(data) saveTempParticipantToParticipant(data) - updateEventStatus(data, eventId, 'event_attended_not_screened') res.redirect( `/clinics/${clinicId}/events/${eventId}/cancel-or-reschedule-appointment/reschedule` ) } else { - // Get participant info BEFORE saving (which clears temp data) + // Capture session end time only if appointment was started + const event = getEvent(data, eventId) + if (event?.sessionDetails?.startedAt) { + captureSessionEndTime(data, eventId, data.currentUser.id) + } + // Get participant info BEFORE saving (which clears temp data) saveTempEventToEvent(data) saveTempParticipantToParticipant(data) updateEventStatus(data, eventId, 'event_attended_not_screened') diff --git a/app/views/events/attended-not-screened-reason.html b/app/views/events/attended-not-screened-reason.html index 1b7c5b73..2c39b61b 100644 --- a/app/views/events/attended-not-screened-reason.html +++ b/app/views/events/attended-not-screened-reason.html @@ -6,6 +6,9 @@ {% set formAction = './attended-not-screened-answer' %} +{# Suppress nav as we don't want the user to leave without making a decision #} +{% set useMinimalNav = true %} + {% block pageContent %} {% set unit = data.breastScreeningUnits | findById(clinic.breastScreeningUnitId) %} diff --git a/app/views/events/cancel-or-reschedule-appointment/reschedule.html b/app/views/events/cancel-or-reschedule-appointment/reschedule.html index e97fa98e..05efd188 100644 --- a/app/views/events/cancel-or-reschedule-appointment/reschedule.html +++ b/app/views/events/cancel-or-reschedule-appointment/reschedule.html @@ -8,6 +8,9 @@ {% set formAction = "./reschedule-answer" %} +{# Suppress nav as we don't want the user to leave without making a decision #} +{% set useMinimalNav = true %} + {% block pageContent %}

diff --git a/app/views/events/exit-appointment.html b/app/views/events/exit-appointment.html index 723a7cb5..115e0f3b 100644 --- a/app/views/events/exit-appointment.html +++ b/app/views/events/exit-appointment.html @@ -5,6 +5,9 @@ {% set pageHeading = "Exit appointment" %} {% set formAction = eventUrl + "/exit-appointment-answer" %} +{# Suppress nav as it's a link to the page we're on #} +{% set useMinimalNav = true %} + {% block pageContent %}

{{ pageHeading }}

diff --git a/app/views/example-pages/404.html b/app/views/example-pages/404.html new file mode 100644 index 00000000..05993fc5 --- /dev/null +++ b/app/views/example-pages/404.html @@ -0,0 +1,19 @@ +{# app/views/example-pages/404.html #} + +{% extends "layout-app.html" %} + +{% set pageHeading = "Page not found" %} +{# {% set useMinimalNav = true %} #} +{% set hideBackLink = true %} + +{% block pageContent %} + +

{{ pageHeading }}

+ +

If you typed the web address, check it is correct.

+ +

If you pasted the web address, check you copied the entire address.

+ +

If the web address is correct or you selected a link or button, contact us if you need to speak to someone about managing breast screening.

+ +{% endblock %} diff --git a/app/views/example-pages/500.html b/app/views/example-pages/500.html new file mode 100644 index 00000000..54f3227d --- /dev/null +++ b/app/views/example-pages/500.html @@ -0,0 +1,17 @@ +{# app/views/example-pages/500.html #} + +{% extends "layout-app.html" %} + +{% set pageHeading = "Sorry, there is a problem with the service" %} +{% set useMinimalNav = true %} +{% set hideBackLink = true %} + +{% block pageContent %} + +

{{ pageHeading }}

+ +

Try again later.

+ +

If you need to speak to someone about managing breast screening, you can contact us.

+ +{% endblock %} diff --git a/app/views/index.html b/app/views/index.html index 07e3c733..beadc881 100755 --- a/app/views/index.html +++ b/app/views/index.html @@ -200,6 +200,17 @@

Other sections

+

Example pages

+ + +

Prototype stuff

Prototype stuff