UNPKG

@defra/wls-eps-web-service

Version:

The web service for wildlife licencing of European Protected Species

61 lines (48 loc) 2.39 kB
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 } }