From d03eab22c47495a320c8c1fae8c9fe1ce39463fb Mon Sep 17 00:00:00 2001 From: Andy Marke Date: Tue, 14 Dec 2021 10:06:34 +0000 Subject: [PATCH] DT-2903 Added offender managers --- server/@types/express/index.d.ts | 2 +- .../routes/graphql/graphQLDemoController.ts | 4 +- server/services/graphQLDemoService.ts | 11 +++++ .../views/pages/graphql/prisoner-details.njk | 45 ++++++++++++++++++- 4 files changed, 58 insertions(+), 4 deletions(-) diff --git a/server/@types/express/index.d.ts b/server/@types/express/index.d.ts index d1effe1..d9b9588 100644 --- a/server/@types/express/index.d.ts +++ b/server/@types/express/index.d.ts @@ -1,6 +1,6 @@ export default {} -export type RequestData = 'basicDetails' | 'sentences' | 'offences' | 'offendermanagers' +export type RequestData = 'basicDetails' | 'sentences' | 'offences' | 'offenderManagers' export interface PrisonerSearchForm { lastName?: string prisonerNumber?: string diff --git a/server/routes/graphql/graphQLDemoController.ts b/server/routes/graphql/graphQLDemoController.ts index 8597180..6d3d288 100644 --- a/server/routes/graphql/graphQLDemoController.ts +++ b/server/routes/graphql/graphQLDemoController.ts @@ -24,9 +24,9 @@ export default class GraphqlDemoController { const prisoners = await this.graphQLDemoService.search({}, req.session.prisonerSearchForm) if (prisoners.length > 1) { - res.render('pages/graphql/search-results', { data: JSON.stringify(prisoners), prisoners }) + res.render('pages/graphql/search-results', { prisoners }) } else if (prisoners.length === 1) { - res.render('pages/graphql/prisoner-details', { data: JSON.stringify(prisoners), prisoner: prisoners[0] }) + res.render('pages/graphql/prisoner-details', { prisoner: prisoners[0] }) } else { req.flash('errors', [{ text: 'No prisoners found' }]) res.redirect('/graphql/demo') diff --git a/server/services/graphQLDemoService.ts b/server/services/graphQLDemoService.ts index 97a6ca2..fc854fa 100644 --- a/server/services/graphQLDemoService.ts +++ b/server/services/graphQLDemoService.ts @@ -67,6 +67,16 @@ export default class GraphQLDemoService { } function buildQueryDataRequest(request: PrisonerSearchForm): string { + const offenderManagers = request.data?.includes('offenderManagers') + ? `offenderManagers { + firstName, + lastName, + responsibleOfficer, + type + } + ` + : '' + const offences = request.data?.includes('offences') ? `offences { id, @@ -94,6 +104,7 @@ function buildQueryDataRequest(request: PrisonerSearchForm): string { : '' return `{ id, + ${offenderManagers} ${offenderDetails} ${sentence} } diff --git a/server/views/pages/graphql/prisoner-details.njk b/server/views/pages/graphql/prisoner-details.njk index 7be340b..2b657d3 100644 --- a/server/views/pages/graphql/prisoner-details.njk +++ b/server/views/pages/graphql/prisoner-details.njk @@ -31,6 +31,43 @@ {% endif %} {% endmacro %} +{% macro offenderManagers(offenderManagers) %} + {% if offenderManagers.length > 0 %} + {% set offenderManagerItems = [] %} + + {% for offenderManager in offenderManagers %} + {% set offenderManagerItems = (offenderManagerItems.push( + [ + { + text: offenderManager.lastName + ", " + offenderManager.firstName + }, + { + text: "Prison Offender Manager" if offenderManager.type == "PRISON" else "Community Offender Manager" + }, + { + text: "Yes" if offenderManager.responsibleOfficer else "No" + } + ] + ), offenderManagerItems) %} + {% endfor %} + {{ govukTable({ + captionClasses: "govuk-table__caption--m", + head: [ + { + text: "Name" + }, + { + text: "Type" + }, + { + text: "RO" + } + ], + rows: offenderManagerItems + }) }} + {% endif %} +{% endmacro %} + {% block content %}
@@ -48,7 +85,7 @@ text: "First name" }, value: { - text: prisoner.lastName + text: prisoner.firstName }, actions: { items: [ @@ -96,6 +133,12 @@ } ] }) }} + + {{ + offenderManagers(prisoner.offenderManagers) + }} + + {% if prisoner.sentences.length %}

Sentences

{% set sentenceItems = [] %}