@defra/wls-eps-web-service
Version:
The web service for wildlife licencing of European Protected Species
61 lines (48 loc) • 2.39 kB
JavaScript
import { PowerPlatformKeys } from '@defra/wls-powerapps-keys'
import { DEFAULT_ROLE } from '../../constants.js'
import { APIRequests } from '../../services/api-requests.js'
import { APPLICATIONS } from '../../uris.js'
const { BACKEND_STATUS, APPLICATION_TYPES, LICENCE_STATUS } = PowerPlatformKeys
export const findLatestLicenseAnnotation = licence => (licence.annotations &&
licence.annotations.filter(a => a.objectTypeCode === 'sdds_license' && a.mimetype === 'application/pdf' && a.filename.includes('pdf'))
.sort((a, b) => new Date(b.modifiedOn) - new Date(a.modifiedOn))[0]) || null
export const checkData = async (request, h) => {
const params = new URLSearchParams(request.query)
if (!params.get('applicationId')) {
return h.redirect(APPLICATIONS.uri)
}
if (!params.get('licenceId') && !params.get('applicationId')) {
return h.redirect(APPLICATIONS.uri)
}
const applicationId = params.get('applicationId')
const { userId } = await request.cache().getData()
const roles = await APIRequests.APPLICATION.findRoles(userId, applicationId)
if (!roles?.includes(DEFAULT_ROLE)) {
return h.redirect(APPLICATIONS.uri)
}
return null
}
// values to keys and keys to values
export const applicationStatuses = Object.entries(BACKEND_STATUS)
.map(([k, v]) => ({ [v]: k }))
.reduce((p, c) => ({ ...p, ...c }))
export const licenceStatuses = Object.entries(LICENCE_STATUS)
.map(([k, v]) => ({ [v]: k }))
.reduce((p, c) => ({ ...p, ...c }))
export const findApplicationType = application => Object.entries(APPLICATION_TYPES)
.find(([_k, v]) => v === application.applicationTypeId)[0]
export const getApplicationData = async (request, noCache) => {
const params = new URLSearchParams(request.query)
const applicationId = params.get('applicationId')
const journeyData = await request.cache().getData()
await request.cache().setData(Object.assign(journeyData, { applicationId }))
const application = await APIRequests.APPLICATION.getById(applicationId, noCache)
const applicationType = findApplicationType(application)
const licenceId = params.get('licenceId')
let licences
if (licenceId) {
const applicationLicences = await APIRequests.LICENCES.findByApplicationId(applicationId)
licences = applicationLicences.filter(l => l.id === licenceId)
}
return { application, applicationType, applicationId, licences }
}