Skip to content

Commit

Permalink
Viser avslagsårsaker
Browse files Browse the repository at this point in the history
  • Loading branch information
hallvardastark committed Dec 27, 2024
1 parent 643f55d commit dcca326
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 9 deletions.
55 changes: 55 additions & 0 deletions packages/v2/gui/src/prosess/ung-vedtak/AvslagsårsakListe.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { vilkårStatus } from '@k9-sak-web/backend/k9sak/kodeverk/behandling/VilkårStatus.js';
import type { VilkårMedPerioderDto, VilkårPeriodeDto } from '@k9-sak-web/backend/ungsak/generated';
import { useKodeverkContext } from '@k9-sak-web/gui/kodeverk/index.js';
import { KodeverkType } from '@k9-sak-web/lib/kodeverk/types.js';
import { BodyShort } from '@navikt/ds-react';

const finnUnikeAvslagskoder = (avslåttePerioder: VilkårPeriodeDto[] = []) => {
const funnedeAvslagskoder = new Set();
const unikeAvslagskoder = avslåttePerioder.filter(el => {
const erDuplikat = funnedeAvslagskoder.has(el.avslagKode);
funnedeAvslagskoder.add(el.avslagKode);
return !erDuplikat;
});
return unikeAvslagskoder;
};

interface AvslagsårsakListeProps {
vilkår: VilkårMedPerioderDto[];
}

const AvslagsårsakListe = ({ vilkår }: AvslagsårsakListeProps) => {
const { kodeverkNavnFraKode, kodeverkNavnFraUndertypeKode } = useKodeverkContext();

const visAvslåtteVilkårsperioder = (avslåttVilkår: VilkårMedPerioderDto) => {
const avslåttePerioder = avslåttVilkår?.perioder?.filter(
periode => periode.vilkarStatus === vilkårStatus.IKKE_OPPFYLT,
);
const avslåttePerioderMedUnikeAvslagskoder = finnUnikeAvslagskoder(avslåttePerioder);

return avslåttePerioderMedUnikeAvslagskoder.map(avslåttPeriode => (
<BodyShort size="small" key={avslåttPeriode.avslagKode}>
{[
kodeverkNavnFraKode(avslåttVilkår.vilkarType, KodeverkType.VILKAR_TYPE),
': ',
kodeverkNavnFraUndertypeKode(
avslåttVilkår.vilkarType,
avslåttPeriode.avslagKode || '',
KodeverkType.AVSLAGSARSAK,
),
].join('')}
</BodyShort>
));
};

const avslatteVilkar = vilkår.filter(
v => Array.isArray(v.perioder) && v.perioder.some(periode => periode.vilkarStatus === vilkårStatus.IKKE_OPPFYLT),
);
if (avslatteVilkar.length === 0) {
return <BodyShort>Søker har ikke noen gyldig uttaksperiode</BodyShort>;
}

return <>{avslatteVilkar.map(avslåttVilkår => visAvslåtteVilkårsperioder(avslåttVilkår))}</>;
};

export default AvslagsårsakListe;
28 changes: 21 additions & 7 deletions packages/v2/gui/src/prosess/ung-vedtak/UngVedtak.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@ import {
type AksjonspunktDto,
type BehandlingDto,
type ForhåndsvisVedtaksbrevResponse,
type VilkårMedPerioderDto,
} from '@k9-sak-web/backend/ungsak/generated';
import { FileSearchIcon } from '@navikt/aksel-icons';
import { BodyShort, Box, Button, Fieldset, HStack, Label, VStack } from '@navikt/ds-react';
import { CheckboxField, Form } from '@navikt/ft-form-hooks';
import { useQuery } from '@tanstack/react-query';
import { useForm, useWatch } from 'react-hook-form';
import AvslagsårsakListe from './AvslagsårsakListe';
import type { UngVedtakBackendApiType } from './UngVedtakBackendApiType';
import styles from './ungVedtak.module.css';

Expand All @@ -20,6 +22,7 @@ interface UngVedtakProps {
id: number;
};
submitCallback: (data: any) => Promise<any>;
vilkår: VilkårMedPerioderDto[];
}

const buildInitialValues = () => ({
Expand All @@ -32,12 +35,13 @@ interface FormData {
hindreUtsendingAvBrev: boolean;
}

export const UngVedtak = ({ api, behandling, aksjonspunkter, submitCallback }: UngVedtakProps) => {
export const UngVedtak = ({ api, behandling, aksjonspunkter, submitCallback, vilkår }: UngVedtakProps) => {
const formMethods = useForm<FormData>({
defaultValues: buildInitialValues(),
});
const behandlingErInnvilget = behandling.behandlingsresultat?.type === behandlingResultatType.INNVILGET;

const behandlingErAvslått = behandling.behandlingsresultat?.type === behandlingResultatType.AVSLÅTT;
const harAksjonspunkt = aksjonspunkter.filter(ap => ap.kanLoses).length > 0;
const redigerAutomatiskBrev = useWatch({ control: formMethods.control, name: 'redigerAutomatiskBrev' });
const hindreUtsendingAvBrev = useWatch({ control: formMethods.control, name: 'hindreUtsendingAvBrev' });

Expand Down Expand Up @@ -72,6 +76,14 @@ export const UngVedtak = ({ api, behandling, aksjonspunkter, submitCallback }: U
{behandlingErInnvilget ? 'Ungdomsytelse er innvilget' : 'Ungdomsytelse er avslått'}
</BodyShort>
</div>
{behandlingErAvslått && (
<div>
<Label size="small" as="p">
Årsak til avslag
</Label>
<AvslagsårsakListe vilkår={vilkår} />
</div>
)}
<div>
<Button
variant="tertiary"
Expand All @@ -83,11 +95,13 @@ export const UngVedtak = ({ api, behandling, aksjonspunkter, submitCallback }: U
Forhåndsvis brev
</Button>
</div>
<div>
<Button type="submit" variant="primary" size="small">
Fatt vedtak
</Button>
</div>
{harAksjonspunkt && (
<div>
<Button type="submit" variant="primary" size="small">
Fatt vedtak
</Button>
</div>
)}
</VStack>
<div className={styles.brevCheckboxContainer}>
<Fieldset legend="Valg for brev" size="small">
Expand Down
6 changes: 4 additions & 2 deletions packages/v2/gui/src/prosess/ung-vedtak/UngVedtakIndex.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { AksjonspunktDto, BehandlingDto } from '@k9-sak-web/backend/ungsak/generated';
import type { AksjonspunktDto, BehandlingDto, VilkårMedPerioderDto } from '@k9-sak-web/backend/ungsak/generated';
import { Heading } from '@navikt/ds-react';
import { useContext } from 'react';
import { UngSakClientContext } from '../../app/UngSakClientContext';
Expand All @@ -12,9 +12,10 @@ interface UngVedtakIndexProps {
id: number;
};
submitCallback: (data: any) => Promise<any>;
vilkar: VilkårMedPerioderDto[];
}

export const UngVedtakIndex = ({ aksjonspunkter, behandling, submitCallback }: UngVedtakIndexProps) => {
export const UngVedtakIndex = ({ aksjonspunkter, behandling, submitCallback, vilkar }: UngVedtakIndexProps) => {
const ungSakClient = useContext(UngSakClientContext);
const ungVedtakBackendClient = new UngVedtakBackendClient(ungSakClient);
return (
Expand All @@ -27,6 +28,7 @@ export const UngVedtakIndex = ({ aksjonspunkter, behandling, submitCallback }: U
api={ungVedtakBackendClient}
behandling={behandling}
submitCallback={submitCallback}
vilkår={vilkar}
/>
</>
);
Expand Down

0 comments on commit dcca326

Please sign in to comment.