@defra-fish/gafl-webapp-service
Version:
The websales frontend for the GAFL service
65 lines (57 loc) • 2.17 kB
JavaScript
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
)