UNPKG

@defra/wls-eps-web-service

Version:

The web service for wildlife licencing of European Protected Species

73 lines (64 loc) 2.38 kB
import { ReturnsURIs } from '../../uris.js' import pageRoute from '../../routes/page-route.js' import Joi from 'joi' import { APIRequests } from '../../services/api-requests.js' import { checkLicence, allCompletion } from './common-return-functions.js' const { OUTCOME } = ReturnsURIs const noOutcomeInput = 'no-outcome' const outcomeRadio = 'outcome-check' export const validator = async payload => { if (!payload[outcomeRadio]) { Joi.assert(payload, Joi.object({ 'outcome-check': Joi.any().required() }).options({ abortEarly: false, allowUnknown: true })) } if (payload[outcomeRadio] === 'no') { Joi.assert(payload, Joi.object({ 'no-outcome': Joi.string().trim().required().replace('\r\n', '\n').max(4000) }).options({ abortEarly: false, allowUnknown: true })) } } export const getData = async request => { const journeyData = await request.cache().getData() const returnId = journeyData?.returns?.id const licenceId = journeyData?.licenceId if (returnId) { const { outcome, outcomeReason } = await APIRequests.RETURNS.getLicenceReturn(licenceId, returnId) return { outcome, outcomeReason } } else { return { outcome: undefined, outcomeReason: undefined } } } export const setData = async request => { const journeyData = await request.cache().getData() const outcomeSelected = request.payload[outcomeRadio] const returnId = journeyData?.returns?.id const licenceId = journeyData?.licenceId const licenceReturn = await APIRequests.RETURNS.getLicenceReturn(licenceId, returnId) let payload = { ...licenceReturn } let outcome, outcomeReason if (outcomeSelected === 'yes') { outcome = true // Clear the outcome reason when the outcome is yes if (payload.outcomeReason) { delete payload.outcomeReason } payload = { ...payload, outcome } } else if (outcomeSelected === 'no') { outcome = false outcomeReason = request.payload[noOutcomeInput] payload = { ...payload, outcome, outcomeReason } } await APIRequests.RETURNS.updateLicenceReturn(licenceId, returnId, payload) journeyData.returns = { ...journeyData.returns, outcome, outcomeReason } await request.cache().setData(journeyData) } export default pageRoute({ page: OUTCOME.page, uri: OUTCOME.uri, checkData: checkLicence, completion: allCompletion, validator, getData, setData })