From 437adb71122eabfa8304dd4e76daa552f5fa6d5b Mon Sep 17 00:00:00 2001 From: Sampo Tawast Date: Mon, 7 Oct 2024 15:18:03 +0300 Subject: [PATCH] fix: prevent submit of paperApplicationDate to application of applicant origin --- .../applicationForm/useApplicationForm.ts | 20 +++++++++++++----- .../applicationForm/utils/applicationForm.ts | 7 ++++--- .../applicationForm/utils/validation.ts | 21 ++++++++++++------- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/frontend/benefit/handler/src/components/applicationForm/useApplicationForm.ts b/frontend/benefit/handler/src/components/applicationForm/useApplicationForm.ts index 26bb1f39e2..523093eb49 100644 --- a/frontend/benefit/handler/src/components/applicationForm/useApplicationForm.ts +++ b/frontend/benefit/handler/src/components/applicationForm/useApplicationForm.ts @@ -17,6 +17,7 @@ import { ApplicationFields, } from 'benefit/handler/types/application'; import { + APPLICATION_ORIGINS, ORGANIZATION_TYPES, VALIDATION_MESSAGE_KEYS, } from 'benefit-shared/constants'; @@ -124,6 +125,14 @@ export const useApplicationForm = (): ExtendedComponentProps => { error: applicationDataError, } = useApplicationQueryWithState(id, setApplication); + const getPaperApplicationDate = (): string | null => { + if (application?.applicationOrigin === APPLICATION_ORIGINS.APPLICANT) + return null; + return application?.paperApplicationDate + ? formatDate(parseDate(application.paperApplicationDate)) + : formatDate(new Date()); + }; + const formik = useFormik({ initialValues: { ...application, @@ -133,12 +142,13 @@ export const useApplicationForm = (): ExtendedComponentProps => { [APPLICATION_FIELDS.END_DATE]: application.endDate ? formatDate(parseDate(application.endDate)) : undefined, - [APPLICATION_FIELDS.PAPER_APPLICATION_DATE]: - application.paperApplicationDate - ? formatDate(parseDate(application.paperApplicationDate)) - : formatDate(new Date()), + [APPLICATION_FIELDS.PAPER_APPLICATION_DATE]: getPaperApplicationDate(), }, - validationSchema: getValidationSchema(organizationType, t), + validationSchema: getValidationSchema( + t, + organizationType, + application?.applicationOrigin || APPLICATION_ORIGINS.HANDLER + ), validateOnChange: true, validateOnBlur: true, enableReinitialize: true, diff --git a/frontend/benefit/handler/src/components/applicationForm/utils/applicationForm.ts b/frontend/benefit/handler/src/components/applicationForm/utils/applicationForm.ts index 453eb9fb0a..9715a6be7e 100644 --- a/frontend/benefit/handler/src/components/applicationForm/utils/applicationForm.ts +++ b/frontend/benefit/handler/src/components/applicationForm/utils/applicationForm.ts @@ -54,9 +54,10 @@ const getApplication = ( ...applicationData, start_date: convertToUIDateFormat(applicationData.start_date), end_date: convertToUIDateFormat(applicationData.end_date), - paper_application_date: convertToUIDateFormat( - applicationData.paper_application_date - ), + paper_application_date: + applicationData.application_origin === APPLICATION_ORIGINS.HANDLER + ? convertToUIDateFormat(applicationData.paper_application_date) + : null, calculation: applicationData.calculation ? { ...applicationData.calculation, diff --git a/frontend/benefit/handler/src/components/applicationForm/utils/validation.ts b/frontend/benefit/handler/src/components/applicationForm/utils/validation.ts index 547486f127..819cd01153 100644 --- a/frontend/benefit/handler/src/components/applicationForm/utils/validation.ts +++ b/frontend/benefit/handler/src/components/applicationForm/utils/validation.ts @@ -11,6 +11,7 @@ import { SUPPORTED_LANGUAGES, } from 'benefit/handler/constants'; import { + APPLICATION_ORIGINS, EMPLOYEE_KEYS, MAX_MONTHLY_PAY, ORGANIZATION_TYPES, @@ -39,8 +40,9 @@ import * as Yup from 'yup'; import { getValidationSchema as getDeminimisValidationSchema } from '../formContent/companySection/deMinimisAid/utils/validation'; export const getValidationSchema = ( + t: TFunction, organizationType: string | undefined, - t: TFunction + applicationOrigin: APPLICATION_ORIGINS ): unknown => Yup.object().shape({ [APPLICATION_FIELD_KEYS.USE_ALTERNATIVE_ADDRESS]: Yup.boolean(), @@ -288,10 +290,15 @@ export const getValidationSchema = ( [APPLICATION_FIELD_KEYS.END_DATE]: Yup.string().required( t(VALIDATION_MESSAGE_KEYS.REQUIRED) ), - [APPLICATION_FIELD_KEYS.PAPER_APPLICATION_DATE]: Yup.string().test({ - message: t(VALIDATION_MESSAGE_KEYS.DATE_MAX, { - max: convertToUIDateFormat(new Date()), - }), - test: (value = '') => value === '' || validateIsTodayOrPastDate(value), - }), + [APPLICATION_FIELD_KEYS.PAPER_APPLICATION_DATE]: Yup.string() + .test({ + message: t(VALIDATION_MESSAGE_KEYS.DATE_MAX, { + max: convertToUIDateFormat(new Date()), + }), + test: (value = '') => + applicationOrigin === APPLICATION_ORIGINS.APPLICANT || + value === '' || + validateIsTodayOrPastDate(value), + }) + .nullable(), });