This repository has been archived by the owner on Oct 28, 2024. It is now read-only.
forked from XGovFormBuilder/digital-form-builder
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
53 additions
and
26 deletions.
There are no files selected for viewing
74 changes: 52 additions & 22 deletions
74
runner/src/server/plugins/engine/pageControllers/EligibilityPageController.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,59 @@ | ||
import { PageController } from "./PageController"; | ||
import { HapiRequest, HapiResponseToolkit } from "server/types"; | ||
import config from "server/config"; | ||
import { SaveViewModel } from "../models"; | ||
|
||
export class EligibilityPageController extends PageController { | ||
getViewModel(formData, errors) { | ||
return { | ||
...super.getViewModel(formData, errors), | ||
isStartPage: false, | ||
skipTimeoutWarning: true, | ||
makePostRouteHandler() { | ||
return async (request: HapiRequest, h: HapiResponseToolkit) => { | ||
const response = await this.handlePostRequest(request, h); | ||
if (response?.source?.context?.errors) { | ||
return response; | ||
} | ||
const { cacheService, statusService } = request.services([]); | ||
const savedState = await cacheService.getState(request); | ||
//This is required to ensure we don't navigate to an incorrect page based on stale state values | ||
let relevantState = this.getConditionEvaluationContext( | ||
this.model, | ||
savedState | ||
); | ||
|
||
// Start page check so forms do not save when hitting the "Contine" button on the first page | ||
const startPage = this.model.def.startPage; | ||
const isStartPage = this.path === startPage; | ||
|
||
if (config.savePerPage && !isStartPage) { | ||
// Set flag for continous saves on each question? | ||
const saveViewModel = new SaveViewModel( | ||
this.title, | ||
this.model, | ||
relevantState, | ||
request | ||
); | ||
|
||
await cacheService.mergeState(request, { | ||
outputs: saveViewModel.outputs, | ||
userCompletedSummary: true, | ||
}); | ||
await cacheService.mergeState(request, { | ||
webhookData: saveViewModel.validatedWebhookData, | ||
}); | ||
|
||
const response = await statusService.savePerPageRequest(request); | ||
const isEligible = response.metadata.is_eligible; | ||
if (isEligible) { | ||
return this.proceed(request, h, relevantState); | ||
} | ||
|
||
let redirectUrl = response.metadata.not_eligible_redirect_url; | ||
|
||
if (request.query.form_session_identifier) { | ||
redirectUrl += `?form_session_identifier=${request.query.form_session_identifier}`; | ||
} | ||
|
||
return h.redirect(redirectUrl); | ||
} | ||
return this.proceed(request, h, relevantState); | ||
}; | ||
} | ||
|
||
// makePostRouteHandler() { | ||
// return async (request: HapiRequest, h: HapiResponseToolkit) => { | ||
// const { payService, cacheService, uploadService } = request.services([]); | ||
// const model = this.model; | ||
// const state = await cacheService.getState(request); | ||
// state.metadata.isEligible = true; | ||
// await cacheService.mergeState(request, { ...state }); | ||
// // return super.makePostRouteHandler(); | ||
// const savedState = await cacheService.getState(request); | ||
// let relevantState = this.getConditionEvaluationContext( | ||
// this.model, | ||
// savedState | ||
// ); | ||
// return this.proceed(request, h, relevantState); | ||
// }; | ||
// } | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters