UNPKG

@defra-fish/gafl-webapp-service

Version:

The websales frontend for the GAFL service

37 lines (29 loc) 1.53 kB
import { salesApi } from '@defra-fish/connectors-lib' export const getPermitsJoinPermitConcessions = async () => { const permits = await salesApi.permits.getAll() const permitConcessions = await salesApi.permitConcessions.getAll() const concessions = await salesApi.concessions.getAll() return permits.map(p => ({ ...p, concessions: permitConcessions.filter(pc => pc.permitId === p.id).map(pc => concessions.find(c => c.id === pc.concessionId)) })) } export default async permission => { const licenseeConcessions = permission.concessions || [] const permitsJoinPermitConcessions = await getPermitsJoinPermitConcessions() // Filter the joined list to include every and only those concessions in licenseeConcessions const filteredPermitsJoinPermitConcessions = permitsJoinPermitConcessions.filter( pjpc => licenseeConcessions.map(lc => lc.type).every(t => pjpc.concessions.map(c => c.name).includes(t)) && pjpc.concessions.length === licenseeConcessions.length ) // Filter by the licence length const byLicenceLength = filteredPermitsJoinPermitConcessions.filter( p => String(p.durationMagnitude + p.durationDesignator.description) === permission.licenceLength ) // Filter by the licence (sub) type const byLicenceType = byLicenceLength.filter(p => p.permitSubtype.label === permission.licenceType) // Filter by the number of rods const byNumberOfRods = byLicenceType.filter(r => String(r.numberOfRods) === permission.numberOfRods) return byNumberOfRods[0] }