From 856ba73d8658e2022f0b643c6440f763264931aa Mon Sep 17 00:00:00 2001 From: jonathangoulding Date: Thu, 30 Jan 2025 10:05:16 +0000 Subject: [PATCH] feature: working fetch and view --- app/models/licence-document-header.model.js | 2 +- .../view-licence-contact-details.presenter.js | 35 ++++++++++++++++++- .../fetch-licence-contact-details.service.js | 2 +- .../licences/licence-contact-details.njk | 11 +++++- 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/app/models/licence-document-header.model.js b/app/models/licence-document-header.model.js index 3dd32f08ee..1eabaa3376 100644 --- a/app/models/licence-document-header.model.js +++ b/app/models/licence-document-header.model.js @@ -52,7 +52,7 @@ class LicenceDocumentHeaderModel extends BaseModel { } }, licenceEntityRole: { - relation: Model.HasOneRelation, + relation: Model.HasManyRelation, modelClass: 'licence-entity-role.model', join: { from: 'licenceDocumentHeaders.companyEntityId', diff --git a/app/presenters/licences/view-licence-contact-details.presenter.js b/app/presenters/licences/view-licence-contact-details.presenter.js index 84d4bcc505..8985c37815 100644 --- a/app/presenters/licences/view-licence-contact-details.presenter.js +++ b/app/presenters/licences/view-licence-contact-details.presenter.js @@ -7,6 +7,11 @@ const { filteredContactDetailsByRole } = require('../crm.presenter.js') * @module ViewLicenceContactDetailsPresenter */ +const ROLES = { + primary_user: 'Primary user', + user_returns: 'Returns agent' +} + /** * Formats data for the `/licences/{id}/licence-contact` view licence contact details link page * @@ -20,11 +25,39 @@ function go(licence) { return { licenceId, licenceRef, - licenceContactDetails: filteredContactDetailsByRole(licenceDocumentHeader.metadata.contacts), + licenceContactDetails: _licenceContactDetails(licenceDocumentHeader), pageTitle: 'Licence contact details' } } +function _licenceContactDetails(licenceDocumentHeader) { + return [ + ...filteredContactDetailsByRole(licenceDocumentHeader.metadata.contacts), + ..._licenceEntityRole(licenceDocumentHeader.licenceEntityRole) + ] +} + +function _licenceEntityRole(licenceEntityRole) { + return licenceEntityRole.map(_licenceEntity).sort(_sortLicenceEntity) +} + +function _licenceEntity(entity) { + return { + role: ROLES[entity.role], + email: entity.licenceEntity.name + } +} + +function _sortLicenceEntity(a, b) { + if (a.role < b.role) { + return -1 + } + if (a.role > b.role) { + return 1 + } + return 0 +} + module.exports = { go } diff --git a/app/services/licences/fetch-licence-contact-details.service.js b/app/services/licences/fetch-licence-contact-details.service.js index 340b3b31c4..d21f8ec35c 100644 --- a/app/services/licences/fetch-licence-contact-details.service.js +++ b/app/services/licences/fetch-licence-contact-details.service.js @@ -31,7 +31,7 @@ async function _fetch(licenceId) { }) .withGraphFetched('licenceDocumentHeader.licenceEntityRole') .modifyGraph('licenceDocumentHeader.licenceEntityRole', (builder) => { - builder.whereIn('role', ['primary_user', 'user_returns']) + builder.select(['role']).whereIn('role', ['primary_user', 'user_returns']) }) .withGraphFetched('licenceDocumentHeader.licenceEntityRole.licenceEntity') .modifyGraph('licenceDocumentHeader.licenceEntityRole.licenceEntity', (builder) => { diff --git a/app/views/licences/licence-contact-details.njk b/app/views/licences/licence-contact-details.njk index 8ba8803eda..65b734496c 100644 --- a/app/views/licences/licence-contact-details.njk +++ b/app/views/licences/licence-contact-details.njk @@ -37,7 +37,7 @@ value: { text: licenceContactDetail.name } - }, + } if licenceContactDetail.name, { key: { text: "Address", @@ -46,7 +46,16 @@ value: { html: displayAddress(licenceContactDetail.address) } + } if licenceContactDetail.address, + { + key: { + text: "Email", + classes:"govuk-!-font-weight-regular" + }, + value: { + html: licenceContactDetail.email } + } if licenceContactDetail.email ] }) }}