Skip to content

Commit

Permalink
TEN-891: Add validation for BarnetFritekst fields and InntektForeldre…
Browse files Browse the repository at this point in the history
…loeseBarnet
  • Loading branch information
rittikdey committed Nov 27, 2024
1 parent 9702b21 commit 6f2b698
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ import {useAppDispatch, useAppSelector} from "../../../store";
import {useTranslation} from "react-i18next";
import _ from "lodash";
import {State} from "../../../declarations/reducers";
import useUnmount from "../../../hooks/useUnmount";
import performValidation from "../../../utils/performValidation";
import {
validateBarnetFritekst,
ValidationBarnetFritekstProps,
} from "./validation";
import {setValidation} from "../../../actions/validation";

const mapState = (state: State): MainFormSelector => ({
validation: state.validation.status
Expand All @@ -26,6 +33,14 @@ const BarnetFritekst: React.FC<MainFormProps> = ({
const target = `anmodningOmMerInformasjon.svar.ytelseTilForeldreloese.barnet.${options.fieldname}`
const fritekst: string = _.get(replySed, target)

useUnmount(() => {
const clonedValidation = _.cloneDeep(validation)
performValidation<ValidationBarnetFritekstProps>(clonedValidation, namespace, validateBarnetFritekst, {
fritekst
}, true)
dispatch(setValidation(clonedValidation))
})

const setFritekst = (value: string) => {
dispatch(updateReplySed(target, value.trim()))
}
Expand All @@ -39,9 +54,9 @@ const BarnetFritekst: React.FC<MainFormProps> = ({
<Box padding="4" background="surface-subtle" borderWidth="1" borderColor="border-subtle">
<TextAreaDiv>
<TextArea
error={validation[namespace]?.feilmelding}
error={validation[namespace + '-fritekst']?.feilmelding}
namespace={namespace}
id={'barnet-' + options.fieldname}
id={'fritekst'}
label={t('label:FRITEKST')}
hideLabel={true}
onChanged={(v) => setFritekst(v)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,13 @@ import {SvarYtelseTilForeldreloese_V42, SvarYtelseTilForeldreloese_V43} from "..
import Input from "../../../components/Forms/Input";
import CountrySelect from "@navikt/landvelger";
import {Currency} from "@navikt/land-verktoy";
import useUnmount from "../../../hooks/useUnmount";
import performValidation from "../../../utils/performValidation";
import {
validateInntektForeldreloesesBarnet,
ValidationYtelseTilForeldreloeseProps
} from "./validation";
import {setValidation} from "../../../actions/validation";

const mapState = (state: State): MainFormSelector => ({
validation: state.validation.status
Expand All @@ -26,12 +33,21 @@ const InntektForeldreloeseBarnet: React.FC<MainFormProps> = ({
const { validation } = useAppSelector(mapState)
const { t } = useTranslation()
const dispatch = useAppDispatch()
const namespace = `${parentNamespace}-ytelsetilforeldreloese-barnet-inntekt`
const namespace = `${parentNamespace}-ytelsetilforeldreloese-inntekt-til-den-foreldreloese-barnet`
const target = `anmodningOmMerInformasjon.svar.ytelseTilForeldreloese.barnet`
const svarYtelseTilForeldreloeseTarget = `anmodningOmMerInformasjon.svar.ytelseTilForeldreloese`
const svarYtelseTilForeldreloese: SvarYtelseTilForeldreloese_V43 | SvarYtelseTilForeldreloese_V42 | undefined = _.get(replySed, svarYtelseTilForeldreloeseTarget)
const CDM_VERSJON = options.cdmVersjon

useUnmount(() => {
const clonedValidation = _.cloneDeep(validation)
performValidation<ValidationYtelseTilForeldreloeseProps>(clonedValidation, namespace, validateInntektForeldreloesesBarnet, {
svarYtelseTilForeldreloese,
CDM_VERSJON
}, true)
dispatch(setValidation(clonedValidation))
})

const setYtelseTilForeldreloeseProperty = (property: string, value: string) => {
dispatch(updateReplySed(`${target}.${property}`, value.trim()))
}
Expand Down Expand Up @@ -61,8 +77,8 @@ const InntektForeldreloeseBarnet: React.FC<MainFormProps> = ({
<Box padding="4" background="surface-subtle" borderWidth="1" borderColor="border-subtle">
<HGrid gap="4" columns={2}>
<Input
error={validation[namespace + '-barnet-inntekt-beloep']?.feilmelding}
id='barnet-inntekt-beloep'
error={validation[namespace + '-beloep']?.feilmelding}
id='beloep'
label={t('label:beløp')}
namespace={namespace}
onChanged={(v) => setYtelseTilForeldreloeseProperty('inntekt.beloep', v)}
Expand All @@ -71,9 +87,9 @@ const InntektForeldreloeseBarnet: React.FC<MainFormProps> = ({
<CountrySelect
closeMenuOnSelect
ariaLabel={t('label:valuta')}
data-testid={namespace + '-barnet-inntekt-valuta'}
error={validation[namespace + '-barnet-inntekt-valuta']?.feilmelding}
id={namespace + '-barnet-inntekt-valuta'}
data-testid={namespace + '-valuta'}
error={validation[namespace + '-valuta']?.feilmelding}
id={namespace + '-valuta'}
label={t('label:valuta')}
locale='nb'
menuPortalTarget={document.body}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
import { Validation } from 'declarations/types'
import {SvarYtelseTilForeldreloese_V42, SvarYtelseTilForeldreloese_V43} from "../../../declarations/sed";
import {checkIfFilledOut, checkLength} from "../../../utils/validation";
import {checkIfFilledOut, checkIfNotEmpty, checkLength} from "../../../utils/validation";
import performValidation from "../../../utils/performValidation";
import {validatePersonopplysninger, ValidationPersonopplysningerProps} from "../PersonOpplysninger/validation";
import {validatePersonBasic} from "../PersonBasic/validation";
import {validateAdresse, ValidationAdresseProps} from "../Adresser/validation";
import {validateRelasjoner} from "./RelasjonForeldreloeseBarnetOgAvdoede/validation";

export interface ValidationYtelseTilForeldreloeseProps {
svarYtelseTilForeldreloese: SvarYtelseTilForeldreloese_V42 | SvarYtelseTilForeldreloese_V43 | undefined,
svarYtelseTilForeldreloese?: SvarYtelseTilForeldreloese_V42 | SvarYtelseTilForeldreloese_V43 | undefined,
label?: string | undefined,
CDM_VERSJON: string | undefined
fieldName?: string
CDM_VERSJON?: string | undefined
}

export interface ValidationBarnetFritekstProps {
fritekst?: string | undefined
}

export const validateYtelseTilForeldreloese = (
Expand Down Expand Up @@ -64,6 +69,35 @@ export const validateYtelseTilForeldreloese = (
CDM_VERSJON: CDM_VERSJON
}, true))

hasErrors.push(performValidation<ValidationYtelseTilForeldreloeseProps>(v, namespace + '-inntekt-til-den-foreldreloese-barnet', validateInntektForeldreloesesBarnet, {
svarYtelseTilForeldreloese: svarYtelseTilForeldreloese,
CDM_VERSJON: CDM_VERSJON
}, true))

hasErrors.push(performValidation<ValidationBarnetFritekstProps>(v, namespace + '-barnet-aktivitet', validateBarnetFritekst, {
fritekst: svarYtelseTilForeldreloese?.barnet?.aktivitet,
}, true))

hasErrors.push(performValidation<ValidationBarnetFritekstProps>(v, namespace + '-barnet-skole', validateBarnetFritekst, {
fritekst: svarYtelseTilForeldreloese?.barnet?.skole,
}, true))

hasErrors.push(performValidation<ValidationBarnetFritekstProps>(v, namespace + '-barnet-opplaering', validateBarnetFritekst, {
fritekst: svarYtelseTilForeldreloese?.barnet?.opplaering,
}, true))

hasErrors.push(performValidation<ValidationBarnetFritekstProps>(v, namespace + '-barnet-ufoerhet', validateBarnetFritekst, {
fritekst: svarYtelseTilForeldreloese?.barnet?.ufoerhet,
}, true))

hasErrors.push(performValidation<ValidationBarnetFritekstProps>(v, namespace + '-barnet-arbeidsledighet ', validateBarnetFritekst, {
fritekst: svarYtelseTilForeldreloese?.barnet?.arbeidsledighet,
}, true))

hasErrors.push(performValidation<ValidationBarnetFritekstProps>(v, namespace + '-barnet-ytelser ', validateBarnetFritekst, {
fritekst: svarYtelseTilForeldreloese?.barnet?.ytelser,
}, true))

return hasErrors.find(value => value) !== undefined
}

Expand Down Expand Up @@ -196,3 +230,57 @@ export const validateForeldreloesesBarnetsBosted = (

return hasErrors.find(value => value) !== undefined
}

export const validateInntektForeldreloesesBarnet = (
v: Validation,
namespace: string,
{
svarYtelseTilForeldreloese,
CDM_VERSJON
}: ValidationYtelseTilForeldreloeseProps
): boolean => {

const hasErrors: Array<boolean> = []

if(CDM_VERSJON === "4.3"){
const inntekt = (svarYtelseTilForeldreloese as SvarYtelseTilForeldreloese_V43)?.barnet?.inntekt
if(inntekt && Object.values(inntekt).every(el => (el !== undefined))){
hasErrors.push(checkIfNotEmpty(v, {
needle: inntekt.beloep,
id: namespace + '-beloep',
message: 'validation:noBeløp'
}))

hasErrors.push(checkIfNotEmpty(v, {
needle: inntekt.valuta,
id: namespace + '-valuta',
message: 'validation:noValuta'
}))
}

} else {

}

return hasErrors.find(value => value) !== undefined
}

export const validateBarnetFritekst = (
v: Validation,
namespace: string,
{
fritekst
}: ValidationBarnetFritekstProps
): boolean => {

const hasErrors: Array<boolean> = []

hasErrors.push(checkLength(v, {
needle: fritekst,
max: 500,
id: namespace + '-fritekst',
message: 'validation:textOverX'
}))

return hasErrors.find(value => value) !== undefined
}
12 changes: 6 additions & 6 deletions src/pages/SvarSed/SEDEdit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -572,13 +572,13 @@ const SEDEdit = (): JSX.Element => {
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-den-foreldreloeses-barnets-bosted'), value: 'den-foreldreloeses-barnets-bosted', component: DenForeldreloesesBarnetsBosted, type:['ytelsetilforeldreloese'], options: {cdmVersjon: (replySed as F027Sed).sak?.cdmVersjon}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-relasjonen-mellom-den-foreldreloese-barnet-og-avdoede'), value: 'relasjonen-mellom-den-foreldreloese-barnet-og-avdoede', component: RelasjonForeldreloeseBarnetOgAvdoede, type:['ytelsetilforeldreloese'], options: {cdmVersjon: (replySed as F027Sed).sak?.cdmVersjon}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-relasjon-mellom-annen-person-og-avdoede'), value: 'relasjon-mellom-annen-person-og-avdoede', component: RelasjonAnnenPersonOgAvdoede, type:['ytelsetilforeldreloese'], options: {cdmVersjon: (replySed as F027Sed).sak?.cdmVersjon}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-den-foreldreloeses-barnets-aktivitet'), value: 'den-foreldreloeses-barnets-aktivitet', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'aktivitet'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-skole'), value: 'skole', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'skole'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-opplaering'), value: 'opplaering', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'opplaering'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-ufoerhet'), value: 'ufoerhet', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'ufoerhet'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-arbeidsledighet'), value: 'arbeidsledighet', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'arbeidsledighet'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-den-foreldreloeses-barnets-aktivitet'), value: 'barnet-aktivitet', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'aktivitet'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-skole'), value: 'barnet-skole', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'skole'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-opplaering'), value: 'barnet-opplaering', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'opplaering'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-ufoerhet'), value: 'barnet-ufoerhet', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'ufoerhet'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-arbeidsledighet'), value: 'barnet-arbeidsledighet', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'arbeidsledighet'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-inntekt-til-den-foreldreloese-barnet'), value: 'inntekt-til-den-foreldreloese-barnet', component: InntektForeldreloeseBarnet, type:['ytelsetilforeldreloese'], options: {cdmVersjon: (replySed as F027Sed).sak?.cdmVersjon}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-svar-paa-anmodning-om-ytelser-til-foreldreloese'), value: 'svarpaaanmodningomytelsertilforeldreloese', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'ytelser'}},
{label: t('el:option-mainform-svarpaaanmodningombarnepensjon-svar-paa-anmodning-om-ytelser-til-foreldreloese'), value: 'barnet-ytelser', component: BarnetFritekst, type:['ytelsetilforeldreloese'], options: {fieldname: 'ytelser'}},

{label: t('el:option-mainform-svarpaaanmodningomanneninformasjonombarnet-daglig-omsorg'), value: 'daglig-omsorg', component: AnnenInformasjonOmBarnetFritekst, type:['annenInformasjonBarnet'], options: {fieldname: 'dagligOmsorg'}},
{label: t('el:option-mainform-svarpaaanmodningomanneninformasjonombarnet-foreldreansvar'), value: 'foreldreansvar', component: AnnenInformasjonOmBarnetFritekst, type:['annenInformasjonBarnet'], options: {fieldname: 'foreldreansvar'}},
Expand Down

0 comments on commit 6f2b698

Please sign in to comment.