@defra/wls-eps-web-service
Version:
The web service for wildlife licencing of European Protected Species
57 lines (51 loc) • 2.46 kB
JavaScript
import pageRoute from '../../../routes/page-route.js'
import { APIRequests } from '../../../services/api-requests.js'
import Joi from 'joi'
import { permissionsURIs } from '../../../uris.js'
import { PowerPlatformKeys } from '@defra/wls-powerapps-keys'
export const getData = async request => {
const authorities = await APIRequests.OTHER.authorities()
const filteredAuthorities = authorities.sort((a, b) => (a.name).localeCompare(b.name))
const journeyData = await request.cache().getData()
const permissionId = journeyData?.permissionData?.sddsPermissionsId
const permission = await APIRequests.PERMISSION.getPermission(journeyData?.applicationId, permissionId)
if (permission?.authority) {
return {
authorities: filteredAuthorities.map(authority => ({ ...authority, selected: authority.id === permission.authority }))
}
} else {
return { authorities: filteredAuthorities }
}
}
export const setData = async request => {
const journeyData = await request.cache().getData()
const { applicationId, permissionData } = journeyData
const permissionId = permissionData?.sddsPermissionsId
const authorities = await APIRequests.OTHER.authorities()
const authority = authorities.find(a => a.id === request.payload['authority-name'])?.id
const permission = await APIRequests.PERMISSION.getPermission(applicationId, permissionId)
const payloadUpdate = { ...permission, authority }
await APIRequests.PERMISSION.updatePermission(applicationId, permissionId, payloadUpdate)
journeyData.permissionData = { ...journeyData.permissionData, authority }
await request.cache().setData(journeyData)
}
export const completion = async request => {
const journeyData = await request.cache().getData()
const { applicationId, permissionData } = journeyData
const permissionId = permissionData?.sddsPermissionsId
const permission = await APIRequests.PERMISSION.getPermission(applicationId, permissionId)
if (parseInt(permission?.type) === PowerPlatformKeys.PERMISSION_TYPE.PLANNING_PERMISSION) {
return permissionsURIs.PLANNING_TYPE.uri
}
return permissionsURIs.CONSENT_REFERENCE.uri
}
export default pageRoute({
page: permissionsURIs.PLANNING_AUTHORITY.page,
uri: permissionsURIs.PLANNING_AUTHORITY.uri,
getData: getData,
validator: Joi.object({
'authority-name': Joi.string().required()
}).options({ abortEarly: false, allowUnknown: true }),
setData: setData,
completion: completion
})