Skip to content

Commit

Permalink
Merge pull request #1635 from companieshouse/feat/roe-2639/app-data-f…
Browse files Browse the repository at this point in the history
…rom-api-for-due-diligence-page

Feat/ROE-2639: Retrieve application data from DB for the `due-diligence` page
  • Loading branch information
mwejuli-ch authored Oct 15, 2024
2 parents 3e762ec + 4127618 commit 4dfdd7a
Show file tree
Hide file tree
Showing 5 changed files with 146 additions and 89 deletions.
7 changes: 3 additions & 4 deletions src/controllers/due.diligence.controller.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { NextFunction, Request, Response } from "express";
import { getDueDiligencePage, postDueDiligencePage } from "../utils/due.diligence";
import { isActiveFeature } from "../utils/feature.flag";
import { getUrlWithParamsToPath } from "../utils/url";

import {
DUE_DILIGENCE_PAGE,
Expand All @@ -9,10 +12,6 @@ import {
WHO_IS_MAKING_FILING_WITH_PARAMS_URL
} from "../config";

import { getDueDiligencePage, postDueDiligencePage } from "../utils/due.diligence";
import { isActiveFeature } from "../utils/feature.flag";
import { getUrlWithParamsToPath } from "../utils/url";

export const get = async (req: Request, res: Response, next: NextFunction) => {
let backLinkUrl: string = WHO_IS_MAKING_FILING_URL;
if (isActiveFeature(FEATURE_FLAG_ENABLE_REDIS_REMOVAL)) {
Expand Down
52 changes: 36 additions & 16 deletions src/utils/due.diligence.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,40 @@
import { NextFunction, Request, Response } from "express";
import { Session } from "@companieshouse/node-session-handler";

import { ApplicationData } from "../model";
import { logger } from "../utils/logger";
import { isRegistrationJourney } from "./url";
import { saveAndContinue } from "../utils/save.and.continue";
import { isActiveFeature } from "./feature.flag";
import * as config from "../config";

import { DueDiligenceKey, DueDiligenceKeys } from "../model/due.diligence.model";
import { IdentityDateKey, IdentityDateKeys } from "../model/date.model";
import { IdentityAddressKey, IdentityAddressKeys } from "../model/address.model";
import { AddressKeys, InputDateKeys } from "../model/data.types.model";
import { OverseasEntityDueDiligenceKey } from "../model/overseas.entity.due.diligence.model";

import {
getApplicationData,
fetchApplicationData,
setApplicationData,
prepareData,
mapDataObjectToFields,
mapFieldsToDataObject,
} from "../utils/application.data";
import { DueDiligenceKey, DueDiligenceKeys } from "../model/due.diligence.model";
import { OverseasEntityDueDiligenceKey } from "../model/overseas.entity.due.diligence.model";
import { IdentityDateKey, IdentityDateKeys } from "../model/date.model";
import { IdentityAddressKey, IdentityAddressKeys } from "../model/address.model";
import { AddressKeys, InputDateKeys } from "../model/data.types.model";
import { saveAndContinue } from "../utils/save.and.continue";

export const getDueDiligencePage = async (req: Request, res: Response, next: NextFunction, templateName: string, backLinkUrl: string): Promise<void> => {
export const getDueDiligencePage = async (
req: Request,
res: Response,
next: NextFunction,
templateName: string,
backLinkUrl: string
): Promise<void> => {

try {

logger.debugRequest(req, `${req.method} ${req.route.path}`);

const appData: ApplicationData = await getApplicationData(req.session);
const isRegistration = isRegistrationJourney(req);
const appData: ApplicationData = await fetchApplicationData(req, isRegistration);
const agentData = appData[DueDiligenceKey];

const identityAddress = (agentData?.[IdentityAddressKey]) ? mapDataObjectToFields(agentData[IdentityAddressKey], IdentityAddressKeys, AddressKeys) : {};
Expand All @@ -34,28 +47,35 @@ export const getDueDiligencePage = async (req: Request, res: Response, next: Nex
...identityAddress,
[IdentityDateKey]: identityDate
});

} catch (error) {
next(error);
}
};

export const postDueDiligencePage = async (req: Request, res: Response, next: NextFunction, redirectUrl: string): Promise<void> => {

try {

logger.debugRequest(req, `${req.method} ${req.route.path}`);

const isRegistration: boolean = isRegistrationJourney(req);
const session = req.session as Session;
const agentData = prepareData(req.body, DueDiligenceKeys);
agentData[IdentityAddressKey] = mapFieldsToDataObject(req.body, IdentityAddressKeys, AddressKeys);
agentData[IdentityDateKey] = mapFieldsToDataObject(req.body, IdentityDateKeys, InputDateKeys);

await setApplicationData(session, agentData, DueDiligenceKey);

// Empty OverseasEntityDueDiligence object
await setApplicationData(session, {}, OverseasEntityDueDiligenceKey);

await saveAndContinue(req, session);
if (isActiveFeature(config.FEATURE_FLAG_ENABLE_REDIS_REMOVAL) && isRegistration) {
await setApplicationData(req, agentData, DueDiligenceKey);
await setApplicationData(req, {}, OverseasEntityDueDiligenceKey); // set OverseasEntityDueDiligence object to empty
} else {
await setApplicationData(session, agentData, DueDiligenceKey);
await setApplicationData(session, {}, OverseasEntityDueDiligenceKey); // set OverseasEntityDueDiligence object to empty
await saveAndContinue(req, session);
}

return res.redirect(redirectUrl);

} catch (error) {
next(error);
}
Expand Down
Loading

0 comments on commit 4dfdd7a

Please sign in to comment.