UNPKG

@defra-fish/gafl-webapp-service

Version:

The websales frontend for the GAFL service

65 lines (57 loc) 2.17 kB
import { CANCEL_RP_AUTHENTICATE, CANCEL_RP_IDENTIFY } from '../../../../uri.js' import pageRoute from '../../../../routes/page-route.js' import Joi from 'joi' import { validation } from '@defra-fish/business-rules-lib' import { addLanguageCodeToUri } from '../../../../processors/uri-helper.js' import GetDataRedirect from '../../../../handlers/get-data-redirect.js' import { dateOfBirthValidator, getDateErrorFlags } from '../../../../schema/validators/validators.js' import { runValidators } from '../../../../utils/validators.js' export const getData = async request => { const permission = await request.cache().helpers.transaction.getCurrentPermission() const page = await request.cache().helpers.page.getCurrentPermission(CANCEL_RP_IDENTIFY.page) if (permission.referenceNumber) { const validatePermissionNumber = validation.permission .permissionNumberUniqueComponentValidator(Joi) .validate(permission.referenceNumber) if (validatePermissionNumber.error) { await request.cache().helpers.transaction.setCurrentPermission({ referenceNumber: null }) throw new GetDataRedirect(addLanguageCodeToUri(request, CANCEL_RP_IDENTIFY.uri)) } } const pageData = { referenceNumber: permission.referenceNumber, ...getDateErrorFlags(page?.error) } if (page?.error) { const [errorKey] = Object.keys(page.error) const errorValue = page.error[errorKey] pageData.error = { errorKey, errorValue } } return pageData } export const validator = payload => { runValidators( [ p => Joi.assert( { postcode: p.postcode, referenceNumber: p.referenceNumber }, Joi.object({ referenceNumber: validation.permission.permissionNumberUniqueComponentValidator(Joi), postcode: validation.contact.createOverseasPostcodeValidator(Joi) }).options({ abortEarly: false }) ), dateOfBirthValidator ], payload ) } export default pageRoute( CANCEL_RP_IDENTIFY.page, CANCEL_RP_IDENTIFY.uri, validator, request => addLanguageCodeToUri(request, CANCEL_RP_AUTHENTICATE.uri), getData )