Skip to content

Commit

Permalink
Gjenbruk inngangsvilkår v2 (#2958)
Browse files Browse the repository at this point in the history
Det skal være mulig å kun gjenbruke ett bestemt inngangsvilkår i stedet for alle sammen.

Når en vilkårsvurdering er tom skal gjenbruk automatisk lagre.
Hvis en vilkårsvurdering har innhold skal en modal vises hvor man må bekrefte gjenbruk.
Skal ikke å vise hvilken behandling som blir gjenbrukt.
Skal kun vises kanpp for gjenbruk hvis det finnes noe å gjenbruke.
---------

Co-authored-by: throndi <[email protected]>
  • Loading branch information
gunnsteingarmo and throndi authored Dec 13, 2024
1 parent 1efe893 commit 99929b5
Show file tree
Hide file tree
Showing 13 changed files with 243 additions and 287 deletions.
37 changes: 37 additions & 0 deletions src/frontend/App/hooks/useHentGjenbrukbareVilkårsvurderinger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { useCallback, useState } from 'react';
import { RessursStatus } from '../typer/ressurs';
import { useApp } from '../context/AppContext';

interface Props {
gjenbrukbareVilkårsvurderinger: string[];
hentAlleGjenbrukbareVilkårsvurderinger: (behandlingId: string) => void;
}

export const useHentGjenbrukbareVilkårsvurderinger = (): Props => {
const [gjenbrukbareVilkårsvurderinger, settGjenbrukbareVilkårsvurderinger] = useState<string[]>(
[]
);

const { axiosRequest } = useApp();

const hentAlleGjenbrukbareVilkårsvurderinger = useCallback(
(behandlingId: string): void => {
axiosRequest<string[], void>({
method: 'GET',
url: `/familie-ef-sak/api/vurdering/${behandlingId}/gjenbrukbare-vilkar`,
}).then((respons) => {
if (respons.status === RessursStatus.SUKSESS) {
settGjenbrukbareVilkårsvurderinger(respons.data);
} else {
settGjenbrukbareVilkårsvurderinger([]);
}
});
},
[axiosRequest]
);

return {
gjenbrukbareVilkårsvurderinger,
hentAlleGjenbrukbareVilkårsvurderinger,
};
};
50 changes: 30 additions & 20 deletions src/frontend/App/hooks/useVilkår.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {
byggHenterRessurs,
byggTomRessurs,
Ressurs,
RessursFeilet,
Expand All @@ -15,7 +14,7 @@ import {
SvarPåVilkårsvurdering,
Vurderingsfeilmelding,
} from '../../Komponenter/Behandling/Inngangsvilkår/vilkår';
import { EToast } from '../typer/toast';
import { useHentGjenbrukbareVilkårsvurderinger } from './useHentGjenbrukbareVilkårsvurderinger';

const oppdaterInngangsvilkårMedVurdering = (
vilkår: RessursSuksess<IVilkår>,
Expand Down Expand Up @@ -44,11 +43,14 @@ export interface UseVilkår {
ikkeVurderVilkår: (
nullstillVilkårsvurdering: OppdaterVilkårsvurdering
) => Promise<RessursSuksess<IVurdering> | RessursFeilet>;
gjenbrukInngangsvilkår: (behandlingId: string, kopierBehandlingId: string) => void;
gjenbrukEnkelVilkårsvurdering: (behandlingId: string, vilkårId: string) => void;
gjenbrukbareVilkårsvurderinger: string[];
}

export const useVilkår = (): UseVilkår => {
const { axiosRequest, settToast } = useApp();
const { axiosRequest } = useApp();
const { hentAlleGjenbrukbareVilkårsvurderinger, gjenbrukbareVilkårsvurderinger } =
useHentGjenbrukbareVilkårsvurderinger();

const [feilmeldinger, settFeilmeldinger] = useState<Vurderingsfeilmelding>({});

Expand Down Expand Up @@ -133,16 +135,17 @@ export const useVilkår = (): UseVilkår => {
});
};
const hentVilkår = useCallback(
(behandlingId: string) => {
axiosRequest<IVilkår, void>({
async (behandlingId: string) => {
const hentetInngangsvilkår = await axiosRequest<IVilkår, void>({
method: 'GET',
url: `/familie-ef-sak/api/vurdering/${behandlingId}/vilkar`,
}).then((hentetInngangsvilkår: RessursSuksess<IVilkår> | RessursFeilet) => {
settVilkår(hentetInngangsvilkår);
});
hentAlleGjenbrukbareVilkårsvurderinger(behandlingId);
settVilkår(hentetInngangsvilkår);
},
[axiosRequest]
[axiosRequest, hentAlleGjenbrukbareVilkårsvurderinger]
);

const oppdaterGrunnlagsdataOgHentVilkår = useCallback(
(behandlingId: string) =>
axiosRequest<IVilkår, void>({
Expand All @@ -153,21 +156,27 @@ export const useVilkår = (): UseVilkår => {
}),
[axiosRequest]
);
const gjenbrukInngangsvilkår = useCallback(
(behandlingId: string, kopierBehandlingId: string) => {
settVilkår(byggHenterRessurs());
axiosRequest<IVilkår, { behandlingId: string; kopierBehandlingId: string }>({

const gjenbrukEnkelVilkårsvurdering = useCallback(
(behandlingId: string, vilkårId: string) => {
axiosRequest<IVurdering, { behandlingId: string; vilkårId: string }>({
method: 'POST',
url: `/familie-ef-sak/api/vurdering/gjenbruk`,
data: { behandlingId: behandlingId, kopierBehandlingId: kopierBehandlingId },
}).then((respons: RessursSuksess<IVilkår> | RessursFeilet) => {
settVilkår(respons);
url: `/familie-ef-sak/api/vurdering/gjenbruk-enkelt-vilkar`,
data: { behandlingId: behandlingId, vilkårId: vilkårId },
}).then((respons: RessursSuksess<IVurdering> | RessursFeilet) => {
if (respons.status === RessursStatus.SUKSESS) {
settToast(EToast.INNGANGSVILKÅR_GJENBRUKT);
settVilkår((prevInngangsvilkår) =>
oppdaterInngangsvilkårMedVurdering(
prevInngangsvilkår as RessursSuksess<IVilkår>,
respons.data
)
);
} else {
leggTilFeilmelding(vilkårId, respons.frontendFeilmelding);
}
});
},
[axiosRequest, settToast]
[axiosRequest]
);

return {
Expand All @@ -178,6 +187,7 @@ export const useVilkår = (): UseVilkår => {
nullstillVurdering,
ikkeVurderVilkår,
oppdaterGrunnlagsdataOgHentVilkår,
gjenbrukInngangsvilkår,
gjenbrukEnkelVilkårsvurdering,
gjenbrukbareVilkårsvurderinger,
};
};
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
EVilkårstyper,
useEkspanderbareVilkårpanelContext,
} from '../../../App/context/EkspanderbareVilkårpanelContext';
import { ÅpneOgLukkePanelKnapper } from '../Inngangsvilkår/InngangsvilkårHeader/ÅpneOgLukkePanelKnapper';
import { ÅpneOgLukkePanelKnapper } from '../Inngangsvilkår/ÅpneOgLukkePanelKnapper';

const Container = styled.div`
margin: 2rem;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ import { Samliv } from './Samliv/Samliv';
import { Sivilstand } from './Sivilstand/Sivilstand';
import { useBehandling } from '../../../App/context/BehandlingContext';
import { Behandlingsårsak } from '../../../App/typer/behandlingsårsak';
import { formaterIsoDatoTidMedSekunder } from '../../../App/utils/formatter';
import { InngangsvilkårHeader } from './InngangsvilkårHeader/InngangsvilkårHeader';
import { useApp } from '../../../App/context/AppContext';
import { FyllUtVilkårKnapp } from './FyllUtVilkårKnapp';
import VilkårIkkeOpprettetAlert from '../Vurdering/VilkårIkkeOpprettet';
import { Behandling } from '../../../App/typer/fagsak';
import { useApp } from '../../../App/context/AppContext';
import { InngangsvilkårHeader } from './InngangsvilkårHeader';
import { formaterIsoDatoTidMedSekunder } from '../../../App/utils/formatter';

interface Props {
behandling: Behandling;
Expand All @@ -31,7 +31,6 @@ export const InngangsvilkårFane: FC<Props> = ({ behandling }) => {
nullstillVurdering,
ikkeVurderVilkår,
oppdaterGrunnlagsdataOgHentVilkår,
gjenbrukInngangsvilkår,
} = vilkårState;

React.useEffect(() => {
Expand Down Expand Up @@ -63,7 +62,6 @@ export const InngangsvilkårFane: FC<Props> = ({ behandling }) => {
behandlingErRedigerbar={behandlingErRedigerbar}
oppdaterGrunnlagsdata={oppdaterGrunnlagsdataOgHentVilkår}
behandlingId={behandling.id}
gjenbrukInngangsvilkår={gjenbrukInngangsvilkår}
/>
)}
<Medlemskap
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import React from 'react';
import styled from 'styled-components';
import { OppdaterOpplysninger } from './OppdaterOpplysninger';
import { ÅpneOgLukkePanelKnapper } from './ÅpneOgLukkePanelKnapper';
import {
EVilkårstyper,
useEkspanderbareVilkårpanelContext,
} from '../../../App/context/EkspanderbareVilkårpanelContext';

const FlexRow = styled.div`
margin: 2rem;
display: flex;
justify-content: space-between;
`;

const FlexColumn = styled.div`
display: flex;
flex-direction: column;
gap: 1rem;
`;

const AlignBottom = styled.div`
align-self: end;
`;

interface Props {
oppdatertDato: string;
behandlingErRedigerbar: boolean;
oppdaterGrunnlagsdata: (behandlingId: string) => Promise<void>;
behandlingId: string;
}

export const InngangsvilkårHeader: React.FC<Props> = ({
oppdatertDato,
behandlingErRedigerbar,
oppdaterGrunnlagsdata,
behandlingId,
}) => {
const { lukkAlle, åpneAlle } = useEkspanderbareVilkårpanelContext();

return (
<FlexRow>
<FlexColumn>
<OppdaterOpplysninger
oppdatertDato={oppdatertDato}
behandlingErRedigerbar={behandlingErRedigerbar}
oppdaterGrunnlagsdata={oppdaterGrunnlagsdata}
behandlingId={behandlingId}
/>
</FlexColumn>
<AlignBottom>
<ÅpneOgLukkePanelKnapper
lukkAlle={() => lukkAlle(EVilkårstyper.INNGANGSVILKÅR)}
åpneAlle={() => åpneAlle(EVilkårstyper.INNGANGSVILKÅR)}
/>
</AlignBottom>
</FlexRow>
);
};

This file was deleted.

Loading

0 comments on commit 99929b5

Please sign in to comment.