UNPKG

@defra/wls-eps-web-service

Version:

The web service for wildlife licencing of European Protected Species

52 lines (44 loc) 2.04 kB
import { addressPage } from '../common/address/address-page.js' import { contactURIs } from '../../../uris.js' import { mapLookedUpAddress } from '../common/address/address.js' import { checkAuthorisedPeopleData, getAuthorisedPeopleCompletion, getAuthorisedPeopleData } from './common.js' import { ContactRoles } from '../common/contact-roles.js' import { contactAccountOperationsForContactAccount } from '../common/operations.js' import { checkApplication } from '../../common/check-application.js' const { ADDRESS, ADDRESS_FORM, POSTCODE } = contactURIs.AUTHORISED_PEOPLE export const setData = async request => { const journeyData = await request.cache().getData() const { userId, applicationId, addressLookup } = journeyData const dataAddress = mapLookedUpAddress(addressLookup) const apiAddress = dataAddress.find(a => Number.parseInt(a.uprn) === request.payload.uprn) const contactAcctOps = contactAccountOperationsForContactAccount(ContactRoles.AUTHORISED_PERSON, null, applicationId, userId, journeyData.authorisedPeople.contactId, null) await contactAcctOps.setAddress(apiAddress) delete journeyData.addressLookup await request.cache().setData(journeyData) } // Ensure there is an address export const checkData = async (request, h) => { const journeyData = await request.cache().getData() if (!journeyData.addressLookup) { return h.redirect(POSTCODE.uri) } return null } export const ofContact = async (contact, request) => { const journeyData = await request.cache().getData() return { contactName: contact?.fullName, postcode: contact?.address?.postcode, uri: { addressForm: ADDRESS_FORM.uri, postcode: POSTCODE.uri }, addressLookup: mapLookedUpAddress(journeyData?.addressLookup) } } export const authorisedPersonAddress = addressPage({ page: ADDRESS.page, uri: ADDRESS.uri, checkData: [checkApplication, checkAuthorisedPeopleData, checkData], getData: getAuthorisedPeopleData(ofContact), setData: setData, completion: getAuthorisedPeopleCompletion })