@defra/wls-eps-web-service
Version:
The web service for wildlife licencing of European Protected Species
54 lines (46 loc) • 2.02 kB
JavaScript
import Joi from 'joi'
import pageRoute from '../../../../routes/page-route.js'
import { APIRequests } from '../../../../services/api-requests.js'
import { habitatURIs } from '../../../../uris.js'
import { getHabitatById } from '../common/get-habitat-by-id.js'
import { putHabitatById } from '../common/put-habitat-by-id.js'
import { checkApplication } from '../../../common/check-application.js'
import { isCompleteOrConfirmed } from '../../../common/tag-functions.js'
import { A24_SETT } from '../../../tasklist/a24-badger-licence.js'
export const setData = async request => {
const pageData = await request.cache().getPageData()
const journeyData = await request.cache().getData()
const tagState = await APIRequests.APPLICATION.tags(journeyData.applicationId).get(A24_SETT)
const willReopen = pageData.payload['habitat-reopen']
if (isCompleteOrConfirmed(tagState)) {
Object.assign(journeyData, { redirectId: request.query.id })
const newSett = await getHabitatById(journeyData, journeyData.redirectId)
Object.assign(journeyData.habitatData, { willReopen })
await putHabitatById(newSett)
}
journeyData.habitatData = Object.assign(journeyData.habitatData, { willReopen })
await request.cache().setData(journeyData)
}
export const getData = async request => {
const willReopen = (await request.cache().getData())?.habitatData?.willReopen
return { willReopen }
}
export const completion = async request => {
const journeyData = await request.cache().getData()
const tagState = await APIRequests.APPLICATION.tags(journeyData.applicationId).get(A24_SETT)
if (isCompleteOrConfirmed(tagState)) {
return habitatURIs.CHECK_YOUR_ANSWERS.uri
}
return habitatURIs.ENTRANCES.uri
}
export default pageRoute({
page: habitatURIs.REOPEN.page,
uri: habitatURIs.REOPEN.uri,
validator: Joi.object({
'habitat-reopen': Joi.boolean().required()
}).options({ abortEarly: false, allowUnknown: true }),
checkData: checkApplication,
completion,
getData,
setData
})