@defra/wls-eps-web-service
Version:
The web service for wildlife licencing of European Protected Species
176 lines (157 loc) • 7.57 kB
JavaScript
/**
* This is the location for sections and tasks which appear on many licence types
*/
import { tagStatus } from '../../services/status-tags.js'
import {
contactURIs, convictionsURIs,
DECLARATION,
ecologistExperienceURIs,
eligibilityURIs,
FILE_UPLOADS,
siteURIs,
permissionsURIs,
conservationConsiderationURIs,
workActivityURIs
} from '../../uris.js'
import {
getTaskStatus,
hasTaskCompleted,
hasTaskCompletedOrCompletedNotConfirmed, haveTasksCompleted
} from './licence-type.js'
const { LANDOWNER, ELIGIBILITY_CHECK } = eligibilityURIs
export const SECTIONS = {
CHECK_BEFORE_YOU_START: { name: 'check-before-you-start' },
CONTACT_DETAILS: { name: 'contact-details' },
PLANNED_WORK_ACTIVITY: { name: 'planned-work-activity' },
APPLY: { name: 'apply' }
}
export const SECTION_TASKS = {
ELIGIBILITY_CHECK: 'eligibility-check',
LICENCE_HOLDER: 'licence-holder',
ECOLOGIST: 'ecologist',
AUTHORISED_PEOPLE: 'authorised-people',
ADDITIONAL_CONTACTS: 'additional-contacts',
INVOICE_PAYER: 'invoice-payer',
WORK_ACTIVITY: 'work-activity',
PERMISSIONS: 'permissions',
CONSERVATION: 'conservation',
SITES: 'sites',
ECOLOGIST_EXPERIENCE: 'ecologist-experience',
SUPPORTING_INFORMATION: 'supporting-information',
DECLARE_CONVICTIONS: 'declare-convictions',
SUBMIT: 'send-application'
}
export const eligibilityCheckHelper = tags => hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
? tagStatus.NOT_STARTED
: tagStatus.CANNOT_START
export const TASKS = {
[SECTION_TASKS.ELIGIBILITY_CHECK]: {
name: SECTION_TASKS.ELIGIBILITY_CHECK,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
? ELIGIBILITY_CHECK.uri
: LANDOWNER.uri,
status: tags => getTaskStatus(SECTION_TASKS.ELIGIBILITY_CHECK, tags) || tagStatus.NOT_STARTED,
enabled: tags => !hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
},
[SECTION_TASKS.LICENCE_HOLDER]: {
name: SECTION_TASKS.LICENCE_HOLDER,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.LICENCE_HOLDER, tags)
? contactURIs.APPLICANT.CHECK_ANSWERS.uri
: contactURIs.APPLICANT.USER.uri,
status: tags => getTaskStatus(SECTION_TASKS.LICENCE_HOLDER, tags) || eligibilityCheckHelper(tags),
enabled: tags => hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
},
[SECTION_TASKS.ECOLOGIST]: {
name: SECTION_TASKS.ECOLOGIST,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.ECOLOGIST, tags)
? contactURIs.ECOLOGIST.CHECK_ANSWERS.uri
: contactURIs.ECOLOGIST.USER.uri,
status: tags => getTaskStatus(SECTION_TASKS.ECOLOGIST, tags) || eligibilityCheckHelper(tags),
enabled: tags => hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
},
[SECTION_TASKS.AUTHORISED_PEOPLE]: {
name: SECTION_TASKS.AUTHORISED_PEOPLE,
uri: () => contactURIs.AUTHORISED_PEOPLE.ADD.uri,
status: tags => getTaskStatus(SECTION_TASKS.AUTHORISED_PEOPLE, tags) || eligibilityCheckHelper(tags),
enabled: tags => hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
},
[SECTION_TASKS.ADDITIONAL_CONTACTS]: {
name: SECTION_TASKS.ADDITIONAL_CONTACTS,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.ADDITIONAL_CONTACTS, tags)
? contactURIs.ADDITIONAL_APPLICANT.CHECK_ANSWERS.uri
: contactURIs.ADDITIONAL_APPLICANT.ADD.uri,
status: tags => getTaskStatus(SECTION_TASKS.ADDITIONAL_CONTACTS, tags) || eligibilityCheckHelper(tags),
enabled: tags => haveTasksCompleted([SECTION_TASKS.LICENCE_HOLDER, SECTION_TASKS.ECOLOGIST], tags)
},
[SECTION_TASKS.INVOICE_PAYER]: {
name: SECTION_TASKS.INVOICE_PAYER,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.INVOICE_PAYER, tags)
? contactURIs.INVOICE_PAYER.CHECK_ANSWERS.uri
: contactURIs.INVOICE_PAYER.RESPONSIBLE.uri,
status: tags => getTaskStatus(SECTION_TASKS.INVOICE_PAYER, tags) || eligibilityCheckHelper(tags),
enabled: tags => haveTasksCompleted([SECTION_TASKS.LICENCE_HOLDER, SECTION_TASKS.ECOLOGIST], tags)
},
[SECTION_TASKS.WORK_ACTIVITY]: {
name: SECTION_TASKS.WORK_ACTIVITY,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.WORK_ACTIVITY, tags)
? workActivityURIs.CHECK_YOUR_ANSWERS.uri
: workActivityURIs.WORK_PROPOSAL.uri,
status: tags => getTaskStatus(SECTION_TASKS.WORK_ACTIVITY, tags) || eligibilityCheckHelper(tags),
enabled: tags => hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
},
[SECTION_TASKS.PERMISSIONS]: {
name: SECTION_TASKS.PERMISSIONS,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.PERMISSIONS, tags)
? permissionsURIs.CHECK_YOUR_ANSWERS.uri
: permissionsURIs.PERMISSIONS.uri,
status: tags => getTaskStatus(SECTION_TASKS.PERMISSIONS, tags) || eligibilityCheckHelper(tags),
enabled: tags => haveTasksCompleted([SECTION_TASKS.ELIGIBILITY_CHECK], tags)
},
[SECTION_TASKS.CONSERVATION]: {
name: SECTION_TASKS.CONSERVATION,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.CONSERVATION, tags)
? conservationConsiderationURIs.DESIGNATED_SITE_CHECK_ANSWERS.uri
: conservationConsiderationURIs.DESIGNATED_SITE.uri,
status: tags => getTaskStatus(SECTION_TASKS.CONSERVATION, tags) || eligibilityCheckHelper(tags),
enabled: tags => haveTasksCompleted([SECTION_TASKS.ELIGIBILITY_CHECK], tags)
},
[SECTION_TASKS.SITES]: {
name: SECTION_TASKS.SITES,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.SITES, tags)
? siteURIs.CHECK_SITE_ANSWERS.uri
: siteURIs.NAME.uri,
status: tags => getTaskStatus(SECTION_TASKS.SITES, tags) || eligibilityCheckHelper(tags),
enabled: tags => hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
},
[SECTION_TASKS.ECOLOGIST_EXPERIENCE]: {
name: SECTION_TASKS.ECOLOGIST_EXPERIENCE,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.ECOLOGIST_EXPERIENCE, tags)
? ecologistExperienceURIs.CHECK_YOUR_ANSWERS.uri
: ecologistExperienceURIs.PREVIOUS_LICENCE.uri,
status: tags => getTaskStatus(SECTION_TASKS.ECOLOGIST_EXPERIENCE, tags) || eligibilityCheckHelper(tags),
enabled: tags => hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
},
[SECTION_TASKS.SUPPORTING_INFORMATION]: {
name: SECTION_TASKS.SUPPORTING_INFORMATION,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.SUPPORTING_INFORMATION, tags)
? FILE_UPLOADS.SUPPORTING_INFORMATION.CHECK_YOUR_ANSWERS.uri
: FILE_UPLOADS.SUPPORTING_INFORMATION.FILE_UPLOAD.uri,
status: tags => getTaskStatus(SECTION_TASKS.SUPPORTING_INFORMATION, tags) || eligibilityCheckHelper(tags),
enabled: tags => hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
},
[SECTION_TASKS.DECLARE_CONVICTIONS]: {
name: SECTION_TASKS.DECLARE_CONVICTIONS,
uri: tags => hasTaskCompletedOrCompletedNotConfirmed(SECTION_TASKS.DECLARE_CONVICTIONS, tags)
? convictionsURIs.CHECK_CONVICTIONS_ANSWERS.uri
: convictionsURIs.ANY_CONVICTIONS.uri,
status: tags => getTaskStatus(SECTION_TASKS.DECLARE_CONVICTIONS, tags) || eligibilityCheckHelper(tags),
enabled: tags => hasTaskCompleted(SECTION_TASKS.ELIGIBILITY_CHECK, tags)
},
// Status and enabled functions are provided from the specific licence type
[SECTION_TASKS.SUBMIT]: ({ status, enabled }) => ({
name: SECTION_TASKS.SUBMIT,
uri: () => DECLARATION.uri,
status,
enabled
})
}