Skip to content

Commit 8c67ee7

Browse files
authored
IS-2435: Refactor to using useHistorikk hook (#1513)
* IS-2435: Refactor to using useHistorikk hook * IS-2435: Add tests * IS-2435: Split useHistorikk into several hooks
1 parent 138eb5f commit 8c67ee7

12 files changed

+604
-333
lines changed

src/data/dialogmotekandidat/dialogmotekandidatQueryHooks.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export const useDialogmotekandidat = () => {
6060
};
6161
};
6262

63-
export const useDialogmotekandidatHistorikk = () => {
63+
export const useDialogmotekandidatHistorikkQuery = () => {
6464
const personident = useValgtPersonident();
6565
const path = `${ISDIALOGMOTEKANDIDAT_ROOT}/kandidat/historikk`;
6666
const fetchHistorikk = () =>

src/data/historikk/historikk_hooks.ts

-29
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { HistorikkEvent } from "@/data/historikk/types/historikkTypes";
2+
import { useAktivitetskravHistorikkQuery } from "@/data/aktivitetskrav/aktivitetskravQueryHooks";
3+
import {
4+
AktivitetskravHistorikkDTO,
5+
AktivitetskravStatus,
6+
} from "@/data/aktivitetskrav/aktivitetskravTypes";
7+
import { BrukerinfoDTO } from "@/data/navbruker/types/BrukerinfoDTO";
8+
import { useBrukerinfoQuery } from "@/data/navbruker/navbrukerQueryHooks";
9+
10+
function getTextForHistorikk(
11+
historikk: AktivitetskravHistorikkDTO,
12+
person: BrukerinfoDTO
13+
): string {
14+
switch (historikk.status) {
15+
case AktivitetskravStatus.NY:
16+
return `${person.navn} ble kandidat til aktivitetskravet`;
17+
case AktivitetskravStatus.NY_VURDERING:
18+
return `Det ble startet ny vurdering av aktivitetskravet`;
19+
case AktivitetskravStatus.UNNTAK:
20+
case AktivitetskravStatus.OPPFYLT:
21+
case AktivitetskravStatus.STANS:
22+
case AktivitetskravStatus.IKKE_AKTUELL:
23+
case AktivitetskravStatus.IKKE_OPPFYLT:
24+
return `${historikk.vurdertAv} vurderte ${historikk.status} for aktivitetskravet`;
25+
case AktivitetskravStatus.FORHANDSVARSEL:
26+
return `Det ble sendt et forhåndsvarsel for aktivitetskravet av ${historikk.vurdertAv}`;
27+
case AktivitetskravStatus.LUKKET:
28+
return `Vurderingen av aktivitetskravet ble lukket av systemet`;
29+
case AktivitetskravStatus.AVVENT:
30+
case AktivitetskravStatus.AUTOMATISK_OPPFYLT:
31+
throw new Error("Not supported");
32+
}
33+
}
34+
35+
function createHistorikkEventsFromAktivitetskrav(
36+
aktivitietskravHistorikkDTO: AktivitetskravHistorikkDTO[],
37+
person: BrukerinfoDTO
38+
): HistorikkEvent[] {
39+
return aktivitietskravHistorikkDTO
40+
.filter(
41+
(entry) =>
42+
entry.status !== AktivitetskravStatus.AUTOMATISK_OPPFYLT &&
43+
entry.status !== AktivitetskravStatus.AVVENT
44+
)
45+
.map((entry: AktivitetskravHistorikkDTO) => {
46+
return {
47+
opprettetAv: entry.vurdertAv ?? undefined,
48+
tekst: getTextForHistorikk(entry, person),
49+
tidspunkt: entry.tidspunkt,
50+
kilde: "AKTIVITETSKRAV",
51+
};
52+
});
53+
}
54+
55+
interface AktivitetskravHistorikk {
56+
isAktivitetskravHistorikkLoading: boolean;
57+
isAktivitetskravHistorikkError: boolean;
58+
aktivitetskravHistorikk: HistorikkEvent[];
59+
}
60+
61+
export function useAktivitetskravHistorikk(): AktivitetskravHistorikk {
62+
const { brukerinfo: person } = useBrukerinfoQuery();
63+
const {
64+
data: aktivitetskravHistorikk,
65+
isLoading: isAktivitetskravHistorikkLoading,
66+
isError: isAktivitetskravHistorikkError,
67+
} = useAktivitetskravHistorikkQuery();
68+
69+
const aktivitetskravHistorikkEvents = createHistorikkEventsFromAktivitetskrav(
70+
aktivitetskravHistorikk || [],
71+
person
72+
);
73+
74+
return {
75+
isAktivitetskravHistorikkLoading,
76+
isAktivitetskravHistorikkError,
77+
aktivitetskravHistorikk: aktivitetskravHistorikkEvents,
78+
};
79+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import { HistorikkEvent } from "@/data/historikk/types/historikkTypes";
2+
import { useGetArbeidsuforhetVurderingerQuery } from "@/data/arbeidsuforhet/arbeidsuforhetQueryHooks";
3+
import {
4+
VurderingResponseDTO as ArbeidsuforhetVurderinger,
5+
VurderingType as ArbeidsuforhetVurderingType,
6+
} from "@/data/arbeidsuforhet/arbeidsuforhetTypes";
7+
8+
function arbeidsuforhetText(
9+
veilederident: string,
10+
vurderingType: ArbeidsuforhetVurderingType
11+
): string {
12+
switch (vurderingType) {
13+
case ArbeidsuforhetVurderingType.FORHANDSVARSEL:
14+
return veilederident + " sendte forhåndsvarsel";
15+
case ArbeidsuforhetVurderingType.OPPFYLT:
16+
return veilederident + " vurderte oppfylt";
17+
case ArbeidsuforhetVurderingType.AVSLAG:
18+
return veilederident + " vurderte avslag";
19+
case ArbeidsuforhetVurderingType.IKKE_AKTUELL:
20+
return veilederident + " vurderte ikke aktuell";
21+
}
22+
}
23+
24+
function createHistorikkEventsFromArbeidsuforhet(
25+
arbeidsuforhetVurderinger: ArbeidsuforhetVurderinger[]
26+
): HistorikkEvent[] {
27+
return arbeidsuforhetVurderinger.map(
28+
(vurdering: ArbeidsuforhetVurderinger) => {
29+
return {
30+
opprettetAv: vurdering.veilederident,
31+
tekst: arbeidsuforhetText(vurdering.veilederident, vurdering.type),
32+
tidspunkt: vurdering.createdAt,
33+
kilde: "ARBEIDSUFORHET",
34+
};
35+
}
36+
);
37+
}
38+
39+
interface ArbeidsuforhetHistorikk {
40+
isArbeidsuforhetHistorikkLoading: boolean;
41+
isArbeidsuforhetHistorikkError: boolean;
42+
arbeidsuforhetHistorikk: HistorikkEvent[];
43+
}
44+
45+
export function useArbeidsuforhetHistorikk(): ArbeidsuforhetHistorikk {
46+
const {
47+
data: arbeidsuforhetVurderinger,
48+
isLoading: isArbeidsuforhetLoading,
49+
isError: isArbeidsuforhetError,
50+
} = useGetArbeidsuforhetVurderingerQuery();
51+
52+
const arbeidsuforhetHistorikk = createHistorikkEventsFromArbeidsuforhet(
53+
arbeidsuforhetVurderinger
54+
);
55+
56+
return {
57+
isArbeidsuforhetHistorikkLoading: isArbeidsuforhetLoading,
58+
isArbeidsuforhetHistorikkError: isArbeidsuforhetError,
59+
arbeidsuforhetHistorikk,
60+
};
61+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { HistorikkEvent } from "@/data/historikk/types/historikkTypes";
2+
import { useDialogmotekandidatHistorikkQuery } from "@/data/dialogmotekandidat/dialogmotekandidatQueryHooks";
3+
import {
4+
DialogmotekandidatHistorikkDTO,
5+
HistorikkType,
6+
} from "@/data/dialogmotekandidat/dialogmotekandidatTypes";
7+
import { BrukerinfoDTO } from "@/data/navbruker/types/BrukerinfoDTO";
8+
import { useBrukerinfoQuery } from "@/data/navbruker/navbrukerQueryHooks";
9+
10+
function getDialogmotekandidatHistorikkText(
11+
{ type, vurdertAv }: DialogmotekandidatHistorikkDTO,
12+
person: BrukerinfoDTO
13+
) {
14+
switch (type) {
15+
case HistorikkType.KANDIDAT:
16+
return `${person.navn} ble kandidat til dialogmøte`;
17+
case HistorikkType.UNNTAK:
18+
return `${vurdertAv} vurderte unntak fra dialogmøte`;
19+
case HistorikkType.IKKE_AKTUELL:
20+
return `${vurdertAv} vurderte dialogmøte ikke aktuelt`;
21+
case HistorikkType.LUKKET:
22+
return `Kandidat til dialogmøte ble maskinelt lukket`;
23+
}
24+
}
25+
26+
function createHistorikkEventsFromDialogmotekandidatHistorikk(
27+
dialogmotekandidatHistorikk: DialogmotekandidatHistorikkDTO[],
28+
person: BrukerinfoDTO
29+
): HistorikkEvent[] {
30+
return dialogmotekandidatHistorikk.map((value) => ({
31+
opprettetAv: value.vurdertAv ?? undefined,
32+
tekst: getDialogmotekandidatHistorikkText(value, person),
33+
tidspunkt: value.tidspunkt,
34+
kilde: "DIALOGMOTEKANDIDAT",
35+
}));
36+
}
37+
38+
interface DialogmotekandidatHistorikk {
39+
isDialogmotekandidatHistorikkLoading: boolean;
40+
isDialogmotekandidatHistorikkError: boolean;
41+
dialogmotekandidatHistorikk: HistorikkEvent[];
42+
}
43+
44+
export function useDialogmotekandidatHistorikk(): DialogmotekandidatHistorikk {
45+
const { brukerinfo: person } = useBrukerinfoQuery();
46+
const {
47+
data: dialogmotekandidatHistorikk,
48+
isLoading: isDialogmotekandidatHistorikkLoading,
49+
isError: isDialogmotekandidatHistorikkError,
50+
} = useDialogmotekandidatHistorikkQuery();
51+
52+
const dialogmotekandidatHistorikkEvents =
53+
createHistorikkEventsFromDialogmotekandidatHistorikk(
54+
dialogmotekandidatHistorikk || [],
55+
person
56+
);
57+
58+
return {
59+
isDialogmotekandidatHistorikkLoading,
60+
isDialogmotekandidatHistorikkError,
61+
dialogmotekandidatHistorikk: dialogmotekandidatHistorikkEvents,
62+
};
63+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { HistorikkEvent } from "@/data/historikk/types/historikkTypes";
2+
import { useVedtakQuery } from "@/data/frisktilarbeid/vedtakQuery";
3+
import { VedtakResponseDTO } from "@/data/frisktilarbeid/frisktilarbeidTypes";
4+
import { tilLesbarDatoMedArUtenManedNavn } from "@/utils/datoUtils";
5+
6+
function friskTilArbeidText(vedtak: VedtakResponseDTO): string {
7+
const fom = tilLesbarDatoMedArUtenManedNavn(vedtak.fom);
8+
const tom = tilLesbarDatoMedArUtenManedNavn(vedtak.tom);
9+
return `${vedtak.veilederident} fattet vedtak. Periode: ${fom} - ${tom}`;
10+
}
11+
12+
function createHistorikkEventsFromFriskTilArbeid(
13+
vedtakList: VedtakResponseDTO[]
14+
): HistorikkEvent[] {
15+
return vedtakList.map((vedtak: VedtakResponseDTO) => {
16+
return {
17+
opprettetAv: vedtak.veilederident,
18+
tekst: friskTilArbeidText(vedtak),
19+
tidspunkt: vedtak.createdAt,
20+
kilde: "FRISKMELDING_TIL_ARBEIDSFORMIDLING",
21+
};
22+
});
23+
}
24+
25+
interface VedtakHistorikk {
26+
isVedtakHistorikkLoading: boolean;
27+
isVedtakHistorikkError: boolean;
28+
vedtakHistorikk: HistorikkEvent[];
29+
}
30+
31+
export function useVedtakHistorikk(): VedtakHistorikk {
32+
const {
33+
data: vedtak,
34+
isLoading: isVedtakLoading,
35+
isError: isVedtakError,
36+
} = useVedtakQuery();
37+
38+
const frisktilarbeidHistorikk =
39+
createHistorikkEventsFromFriskTilArbeid(vedtak);
40+
41+
return {
42+
isVedtakHistorikkLoading: isVedtakLoading,
43+
isVedtakHistorikkError: isVedtakError,
44+
vedtakHistorikk: frisktilarbeidHistorikk,
45+
};
46+
}

src/hooks/historikk/useHistorikk.ts

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import { HistorikkEvent } from "../../data/historikk/types/historikkTypes";
2+
import {
3+
useHistorikkMotebehovQuery,
4+
useHistorikkOppfolgingsplan,
5+
} from "@/data/historikk/historikkQueryHooks";
6+
import { useLedereHistorikk } from "@/hooks/historikk/useLedereHistorikk";
7+
import { useAktivitetskravHistorikk } from "@/hooks/historikk/useAktivitetskravHistorikk";
8+
import { useArbeidsuforhetHistorikk } from "@/hooks/historikk/useArbeidsuforhetHistorikk";
9+
import { useManglendeMedvirkningHistorikk } from "@/hooks/historikk/useManglendeMedvirkningHistorikk";
10+
import { useVedtakHistorikk } from "@/hooks/historikk/useFriskmeldingTilArbeidsformidligVedtakHistorikk";
11+
import { useDialogmotekandidatHistorikk } from "@/hooks/historikk/useDialogmotekandidatHistorikk";
12+
13+
interface HistorikkHook {
14+
isHistorikkLoading: boolean;
15+
isHistorikkError: boolean;
16+
historikkEvents: HistorikkEvent[];
17+
}
18+
19+
export function useHistorikk(): HistorikkHook {
20+
const {
21+
data: motebehovHistorikk,
22+
isLoading: isMotebehovLoading,
23+
isError: isMotebehovError,
24+
} = useHistorikkMotebehovQuery();
25+
26+
const {
27+
data: oppfolgingsplanHistorikk,
28+
isLoading: isOppfolgingsplanLoading,
29+
isError: isOppfolgingsplanError,
30+
} = useHistorikkOppfolgingsplan();
31+
32+
const { lederHistorikk, isLedereHistorikkLoading, isLedereHistorikkError } =
33+
useLedereHistorikk();
34+
35+
const {
36+
aktivitetskravHistorikk,
37+
isAktivitetskravHistorikkLoading,
38+
isAktivitetskravHistorikkError,
39+
} = useAktivitetskravHistorikk();
40+
41+
const {
42+
arbeidsuforhetHistorikk,
43+
isArbeidsuforhetHistorikkLoading,
44+
isArbeidsuforhetHistorikkError,
45+
} = useArbeidsuforhetHistorikk();
46+
47+
const {
48+
manglendeMedvirkningHistorikk,
49+
isManglendeMedvirkningHistorikkLoading,
50+
isManglendeMedvirkningHistorikkError,
51+
} = useManglendeMedvirkningHistorikk();
52+
53+
const { vedtakHistorikk, isVedtakHistorikkLoading, isVedtakHistorikkError } =
54+
useVedtakHistorikk();
55+
56+
const {
57+
dialogmotekandidatHistorikk,
58+
isDialogmotekandidatHistorikkLoading,
59+
isDialogmotekandidatHistorikkError,
60+
} = useDialogmotekandidatHistorikk();
61+
62+
const historikkEvents = motebehovHistorikk
63+
.concat(oppfolgingsplanHistorikk)
64+
.concat(lederHistorikk)
65+
.concat(aktivitetskravHistorikk)
66+
.concat(arbeidsuforhetHistorikk)
67+
.concat(manglendeMedvirkningHistorikk)
68+
.concat(vedtakHistorikk)
69+
.concat(dialogmotekandidatHistorikk);
70+
71+
const isHistorikkLoading =
72+
isOppfolgingsplanLoading ||
73+
isMotebehovLoading ||
74+
isLedereHistorikkLoading ||
75+
isAktivitetskravHistorikkLoading ||
76+
isArbeidsuforhetHistorikkLoading ||
77+
isManglendeMedvirkningHistorikkLoading ||
78+
isVedtakHistorikkLoading ||
79+
isDialogmotekandidatHistorikkLoading;
80+
81+
const isHistorikkError =
82+
isMotebehovError ||
83+
isOppfolgingsplanError ||
84+
isLedereHistorikkError ||
85+
isAktivitetskravHistorikkError ||
86+
isArbeidsuforhetHistorikkError ||
87+
isManglendeMedvirkningHistorikkError ||
88+
isVedtakHistorikkError ||
89+
isDialogmotekandidatHistorikkError;
90+
91+
return {
92+
historikkEvents,
93+
isHistorikkLoading,
94+
isHistorikkError,
95+
};
96+
}

0 commit comments

Comments
 (0)