@defra/wls-eps-web-service
Version:
The web service for wildlife licencing of European Protected Species
60 lines (52 loc) • 2.23 kB
JavaScript
import { ReturnsURIs } from '../../../uris.js'
import pageRoute from '../../../routes/page-route.js'
import { APIRequests } from '../../../services/api-requests.js'
import { yesNoFromBool } from '../../common/common.js'
import Joi from 'joi'
import { allCompletion, checkLicence } from '../common-return-functions.js'
const { ARTIFICIAL_SETT } = ReturnsURIs.A24
const createArtificialSettRadio = 'create-artificial-sett-check'
export const getData = async request => {
const journeyData = await request.cache().getData()
const returnId = journeyData?.returns?.id
const licenceId = journeyData?.licenceId
if (returnId) {
const { artificialSett } = await APIRequests.RETURNS.getLicenceReturn(licenceId, returnId)
return { yesNo: yesNoFromBool(artificialSett) }
} else {
return { yesNo: undefined }
}
}
export const setData = async request => {
const journeyData = await request.cache().getData()
const artificialSett = request?.payload[createArtificialSettRadio] === 'yes'
const returnId = journeyData?.returns?.id
const licenceId = journeyData?.licenceId
const licenceReturn = await APIRequests.RETURNS.getLicenceReturn(licenceId, returnId)
const payload = { ...licenceReturn, artificialSett }
// If we're switching from no to yes, then we do not want the noArtificialSettReason
if (artificialSett === true && payload.noArtificialSettReason) {
delete payload.noArtificialSettReason
delete payload.noArtificialSettReasonDetails
}
// If we're switching from yes to no, then we do not want the artificialSettDetails
if (artificialSett === false && payload.artificialSettDetails) {
delete payload.artificialSettDetails
}
await APIRequests.RETURNS.updateLicenceReturn(licenceId, returnId, payload)
journeyData.returns = { ...journeyData.returns, artificialSett }
await request.cache().setData(journeyData)
}
export default pageRoute({
page: ARTIFICIAL_SETT.page,
uri: ARTIFICIAL_SETT.uri,
validator: Joi.object({
'create-artificial-sett-check': Joi.any()
.valid('yes', 'no')
.required()
}).options({ abortEarly: false, allowUnknown: true }),
checkData: checkLicence,
getData: getData,
completion: allCompletion,
setData: setData
})