diff --git a/frontend/public/locales/en/common.json b/frontend/public/locales/en/common.json index 795e38948ada4b7c180db25a267d72d19dc00310..de5d2ad5759ba3e606973caa474cadfd305725b6 100644 --- a/frontend/public/locales/en/common.json +++ b/frontend/public/locales/en/common.json @@ -86,7 +86,9 @@ "invalidMobilePhoneNumber": "Invalid phone number", "invalidEmail": "Invalid e-mail address", "passportNumberRequired": "Passport number required", - "mobilePhoneRequired": "Mobile phone is required" + "mobilePhoneRequired": "Mobile phone is required", + "startDateMustBeSet": "Start date must be set", + "startDateMustBeBeforeEndDate": "Start date has to be before end date" }, "button": { "back": "Back", diff --git a/frontend/public/locales/nb/common.json b/frontend/public/locales/nb/common.json index 2a1a32b4b867ecc9356deac7db1376812f4fed99..2a04b0f408bb64de2a0059af12c6d9741b91d0da 100644 --- a/frontend/public/locales/nb/common.json +++ b/frontend/public/locales/nb/common.json @@ -86,7 +86,9 @@ "invalidMobilePhoneNumber": "Ugyldig telefonnummer", "invalidEmail": "Ugyldig e-postadresse", "passportNumberRequired": "Passnummer er obligatorisk", - "mobilePhoneRequired": "Mobilnummer er obligatorisk" + "mobilePhoneRequired": "Mobilnummer er obligatorisk", + "startDateMustBeSet": "Startdato må være satt", + "startDateMustBeBeforeEndDate": "Startdato må være før sluttdato" }, "button": { "back": "Tilbake", diff --git a/frontend/public/locales/nn/common.json b/frontend/public/locales/nn/common.json index 30dde00a616e4214513de8a3ce1d62e3049e09dd..33649f6024dfb7d3b4e797b8dc9398ac97ab320f 100644 --- a/frontend/public/locales/nn/common.json +++ b/frontend/public/locales/nn/common.json @@ -87,7 +87,9 @@ "invalidMobilePhoneNumber": "Ugyldig telefonnummer", "invalidEmail": "Ugyldig e-postadresse", "passportNumberRequired": "Passnummer er obligatorisk", - "mobilePhoneRequired": "Mobilnummer er obligatorisk" + "mobilePhoneRequired": "Mobilnummer er obligatorisk", + "startDateMustBeSet": "Startdato må vere satt", + "startDateMustBeBeforeEndDate": "Startdato må vere før sluttdato" }, "button": { "back": "Tilbake", diff --git a/frontend/src/routes/sponsor/register/stepPersonForm.tsx b/frontend/src/routes/sponsor/register/stepPersonForm.tsx index bbfd2431a8f3b5a200e865dd451bd7f203a08fa4..6c57988e11e2eb2b71be602fd7be4a1df4a78aa8 100644 --- a/frontend/src/routes/sponsor/register/stepPersonForm.tsx +++ b/frontend/src/routes/sponsor/register/stepPersonForm.tsx @@ -62,6 +62,7 @@ const StepPersonForm = forwardRef( formState: { errors }, reset, setValue, + getValues, } = useForm<RegisterFormData>() const onSubmit = handleSubmit(submit) @@ -93,6 +94,19 @@ const StepPersonForm = forwardRef( useImperativeHandle(ref, () => ({ doSubmit })) + const validateStartDateBeforeEndDate = (startDate: Date | undefined) => { + if (!startDate) { + return t('validation.startDateMustBeSet') + } + + const roleEnd = getValues('role_end') + if (roleEnd && startDate > roleEnd) { + // The role end date is set, but is is before the start date + return t('validation.startDateMustBeBeforeEndDate') + } + return true + } + return ( <> <Typography @@ -185,9 +199,11 @@ const StepPersonForm = forwardRef( ))} </TextField> + {/* There are no particular constraints on the date pickers. It should be allowed to add a role with a start date that is in the past for instance */} <Controller name="role_start" control={control} + rules={{ validate: validateStartDateBeforeEndDate }} render={({ field }) => ( <DatePicker mask="____-__-__" @@ -201,7 +217,11 @@ const StepPersonForm = forwardRef( /> )} /> - + {!!errors.role_start && ( + <Box sx={{ typography: 'caption', color: 'red' }}> + {errors.role_start.message} + </Box> + )} <Controller name="role_end" control={control}