Skip to content
This repository has been archived by the owner on Oct 28, 2024. It is now read-only.

Commit

Permalink
fs-3530 eligibility page controller
Browse files Browse the repository at this point in the history
  • Loading branch information
srh-sloan committed May 2, 2024
1 parent b96d2c3 commit 5992944
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 26 deletions.
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);
// };
// }
}
Original file line number Diff line number Diff line change
Expand Up @@ -758,10 +758,7 @@ export class PageControllerBase {
webhookData: saveViewModel.validatedWebhookData,
});

const response = await statusService.savePerPageRequest(request);
if ("elig" in response.metadata) {
console.log("got eligibility in metadata");
}
await statusService.savePerPageRequest(request);
}
return this.proceed(request, h, relevantState);
};
Expand Down

0 comments on commit 5992944

Please sign in to comment.