From aa5827d5c5041d11f74eb629b066004387ad8412 Mon Sep 17 00:00:00 2001 From: Zak Faithfull Date: Tue, 11 Feb 2025 20:54:31 +0000 Subject: [PATCH] create view application route --- server/routes/applications/index.ts | 2 + .../applications/viewApplicationsRoutes.ts | 46 +++++++++++++++++++ server/services/auditService.ts | 3 +- .../swap-visiting-orders-for-pin-credit.njk | 20 ++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 server/routes/applications/viewApplicationsRoutes.ts create mode 100644 server/views/pages/view-application/swap-visiting-orders-for-pin-credit.njk diff --git a/server/routes/applications/index.ts b/server/routes/applications/index.ts index 4b9041f..70a8d39 100644 --- a/server/routes/applications/index.ts +++ b/server/routes/applications/index.ts @@ -4,6 +4,7 @@ import AuditService, { Page } from '../../services/auditService' import applicationTypeRoutes from './applicationTypeRoutes' import prisonerDetailsRoutes from './prisonerDetailsRoutes' import swapVosPinCreditDetailsRoutes from './swapVosPinCreditDetailsRoutes' +import viewApplicationRoutes from './viewApplicationsRoutes' export default function applicationsRoutes({ auditService }: { auditService: AuditService }): Router { const router = Router() @@ -52,6 +53,7 @@ export default function applicationsRoutes({ auditService }: { auditService: Aud router.use(applicationTypeRoutes({ auditService })) router.use(prisonerDetailsRoutes({ auditService })) router.use(swapVosPinCreditDetailsRoutes({ auditService })) + router.use(viewApplicationRoutes({ auditService })) return router } diff --git a/server/routes/applications/viewApplicationsRoutes.ts b/server/routes/applications/viewApplicationsRoutes.ts new file mode 100644 index 0000000..ded68e8 --- /dev/null +++ b/server/routes/applications/viewApplicationsRoutes.ts @@ -0,0 +1,46 @@ +import { Request, Response, Router } from 'express' + +import { APPLICATION_TYPES } from '../../constants/applicationTypes' +import asyncMiddleware from '../../middleware/asyncMiddleware' +import AuditService, { Page } from '../../services/auditService' + +export default function viewApplicationRoutes({ auditService }: { auditService: AuditService }): Router { + const router = Router() + + router.get( + '/view/:applicationId', + asyncMiddleware(async (req: Request, res: Response) => { + const { applicationId } = req.params + + const application = { + id: applicationId, + type: 'swap-visiting-orders-for-pin-credit', + dept: 'Business Hub', + } + + if (!application) { + res.status(404).send('Application not found') + return + } + + await auditService.logPageView(Page.VIEW_APPLICATION_PAGE, { + who: res.locals.user.username, + correlationId: req.id, + }) + + const applicationType = APPLICATION_TYPES.find(type => type.value === application.type) + + if (!applicationType) { + res.status(400).send('Invalid application type') + return + } + + res.render(`pages/view-application/${application.type}`, { + title: applicationType.name, + application, + }) + }), + ) + + return router +} diff --git a/server/services/auditService.ts b/server/services/auditService.ts index 1c9a1d1..fd91f7b 100644 --- a/server/services/auditService.ts +++ b/server/services/auditService.ts @@ -3,10 +3,11 @@ import HmppsAuditClient, { AuditEvent } from '../data/hmppsAuditClient' export enum Page { EXAMPLE_PAGE = 'EXAMPLE_PAGE', APPLICATIONS_PAGE = 'APPLICATIONS_PAGE', + CONFIRM_SWAP_VOS_PIN_CREDIT_DETAILS_PAGE = 'CONFIRM_SWAP_VOS_PIN_CREDIT_DETAILS_PAGE', LOG_APPLICATION_TYPE_PAGE = 'LOG_APPLICATION_TYPE_PAGE', LOG_PRISONER_DETAILS_PAGE = 'LOG_PRISONER_DETAILS_PAGE', LOG_SWAP_VOS_PIN_CREDIT_DETAILS_PAGE = 'LOG_SWAP_VOS_PIN_CREDIT_DETAILS_PAGE', - CONFIRM_SWAP_VOS_PIN_CREDIT_DETAILS_PAGE = 'CONFIRM_SWAP_VOS_PIN_CREDIT_DETAILS_PAGE', + VIEW_APPLICATION_PAGE = 'VIEW_APPLICATION_PAGE', } export interface PageViewEventDetails { diff --git a/server/views/pages/view-application/swap-visiting-orders-for-pin-credit.njk b/server/views/pages/view-application/swap-visiting-orders-for-pin-credit.njk new file mode 100644 index 0000000..425beed --- /dev/null +++ b/server/views/pages/view-application/swap-visiting-orders-for-pin-credit.njk @@ -0,0 +1,20 @@ +{% from "govuk/components/back-link/macro.njk" import govukBackLink %} +{% from "govuk/components/button/macro.njk" import govukButton %} +{% from "govuk/components/summary-list/macro.njk" import govukSummaryList %} + +{% extends "../../partials/layout.njk" %} + +{% set pageTitle = applicationName + " - " + title %} +{% set mainClasses = "app-container govuk-body applications-landing-page" %} + +{% block content %} +
+ {{ govukBackLink({ + text: "Back", + href: "/" + }) }} + + {{ application.dept }} +

{{ title }}

+
+{% endblock %}