@defra/wls-eps-web-service
Version:
The web service for wildlife licencing of European Protected Species
42 lines (37 loc) • 1.98 kB
JavaScript
import { APIRequests } from '../../../../services/api-requests.js'
import { getAccountCandidates, hasAccountCandidates } from '../common.js'
import { accountOperations, contactAccountOperations } from '../operations.js'
export const accountNamesCheckData = (accountRole, otherAccountRoles, urlBase) => async (request, h) => {
// if no accounts available then redirect the is-organisation
const { userId, applicationId } = await request.cache().getData()
if (!await hasAccountCandidates(userId, applicationId, accountRole, otherAccountRoles)) {
return h.redirect(urlBase.IS_ORGANISATION.uri)
}
return null
}
export const getAccountNamesData = (contactRole, accountRole, additionalAccountRoles) => async request => {
const { userId, applicationId } = await request.cache().getData()
const contact = await APIRequests.CONTACT.role(contactRole).getByApplicationId(applicationId)
const account = await APIRequests.ACCOUNT.role(accountRole).getByApplicationId(applicationId)
return { contact, account, accounts: await getAccountCandidates(userId, applicationId, accountRole, additionalAccountRoles) }
}
export const setAccountNamesData = (contactRole, accountRole) => async request => {
const { payload: { account: accountId } } = request
const { userId, applicationId } = await request.cache().getData()
const accountOps = accountOperations(accountRole, applicationId)
if (accountId !== 'new') {
// Assign an existing organisation
await accountOps.assign(accountId)
const contactAccountOps = contactAccountOperations(contactRole, accountRole, applicationId, userId)
await contactAccountOps.setOrganisation(true)
}
}
export const accountNamesCompletion = (_accountRole, baseUri) => async request => {
const { payload: { account: accountId } } = await request.cache().getPageData()
if (accountId === 'new') {
return baseUri.IS_ORGANISATION.uri
} else {
// Always go to the email page.
return baseUri.EMAIL.uri
}
}