UNPKG

@defra/wls-eps-web-service

Version:

The web service for wildlife licencing of European Protected Species

50 lines (45 loc) 1.89 kB
import db from 'debug' import { APIRequests } from '../../../../services/api-requests.js' import { ADDRESS } from '@defra/wls-connectors-lib' const debug = db('web-service:address-lookup') export const getPostcodeData = (contactRole, accountRole, uriBase) => async request => { const journeyData = await request.cache().getData() const { applicationId } = journeyData const contact = await APIRequests.CONTACT.role(contactRole).getByApplicationId(applicationId) const account = await APIRequests.ACCOUNT.role(accountRole).getByApplicationId(applicationId) return { contactName: contact?.fullName, accountName: account?.name, postcode: account?.address?.postcode || contact?.address?.postcode, uri: { addressForm: `${uriBase.ADDRESS_FORM.uri}?no-postcode=true` } } } export const addressLookupForPostcode = async (postcode, journeyData, request) => { try { debug(`Address lookup for postcode: ${postcode}`) const { results } = await ADDRESS.lookup(postcode) if (results.length) { Object.assign(journeyData, { addressLookup: results }) } else { // Remove previous delete journeyData.addressLookup } } catch (err) { // May not be real error so log on a debug debug(`Address lookup error: ${err}`) // Remove previous delete journeyData.addressLookup } finally { await request.cache().setData(journeyData) } } export const setPostcodeData = _contactRole => async request => { const journeyData = await request.cache().getData() const pageData = await request.cache().getPageData() const postcode = pageData.payload.postcode await addressLookupForPostcode(postcode, journeyData, request) } export const postcodeCompletion = uriBase => async request => { const journeyData = await request.cache().getData() return journeyData.addressLookup ? uriBase.ADDRESS.uri : uriBase.ADDRESS_FORM.uri }