@defra/wls-eps-web-service
Version:
The web service for wildlife licencing of European Protected Species
61 lines (53 loc) • 2.77 kB
JavaScript
import { APIRequests } from '../../../services/api-requests.js'
import { SECTION_TASKS } from '../../tasklist/general-sections.js'
import { ecologistExperienceURIs } from '../../../uris.js'
import { yesNoPage } from '../../common/yes-no.js'
import { boolFromYesNo, yesNoFromBool } from '../../common/common.js'
import { checkApplication } from '../../common/check-application.js'
import { tagStatus } from '../../../services/status-tags.js'
export const completion = async request => {
if (boolFromYesNo(request.payload['yes-no'])) {
return ecologistExperienceURIs.ENTER_CLASS_MITIGATION.uri
} else {
const { applicationId } = await request.cache().getData()
await APIRequests.APPLICATION.tags(applicationId).set({ tag: SECTION_TASKS.ECOLOGIST_EXPERIENCE, tagState: tagStatus.COMPLETE_NOT_CONFIRMED })
return ecologistExperienceURIs.CHECK_YOUR_ANSWERS.uri
}
}
export const getData = async request => {
const { applicationId } = await request.cache().getData()
const ecologistExperience = await APIRequests.ECOLOGIST_EXPERIENCE.getExperienceById(applicationId)
if (Object.keys(ecologistExperience).length === 0) {
return null
}
return { yesNo: yesNoFromBool(ecologistExperience.classMitigation) }
}
export const setData = async request => {
const { applicationId } = await request.cache().getData()
const ecologistExperience = await APIRequests.ECOLOGIST_EXPERIENCE.getExperienceById(applicationId)
const hasAClassMitigationLicence = boolFromYesNo(request.payload['yes-no'])
// If the user answers 'Yes' on this page
if (hasAClassMitigationLicence) {
// Just need to ensure here, the user hasn't clicked 'Yes' on the primary AND return journey
// In that case, we should them back to CYA (and not reset the status to IN_PROGRESS)
if (ecologistExperience.classMitigation === false) {
await APIRequests.APPLICATION.tags(applicationId).set({ tag: SECTION_TASKS.ECOLOGIST_EXPERIENCE, tagState: tagStatus.IN_PROGRESS })
}
} else if (!hasAClassMitigationLicence) {
if (ecologistExperience.classMitigation) {
// If the user goes from 'Yes' to 'No' - we need to delete the classMitigationDetails
delete ecologistExperience.classMitigationDetails
}
await APIRequests.APPLICATION.tags(applicationId).set({ tag: SECTION_TASKS.ECOLOGIST_EXPERIENCE, tagState: tagStatus.COMPLETE_NOT_CONFIRMED })
}
Object.assign(ecologistExperience, { classMitigation: hasAClassMitigationLicence })
await APIRequests.ECOLOGIST_EXPERIENCE.putExperienceById(applicationId, ecologistExperience)
}
export default yesNoPage({
checkData: checkApplication,
page: ecologistExperienceURIs.CLASS_MITIGATION.page,
uri: ecologistExperienceURIs.CLASS_MITIGATION.uri,
getData,
completion,
setData
})