-
Notifications
You must be signed in to change notification settings - Fork 0
/
FagsakContainer.tsx
128 lines (111 loc) · 4.51 KB
/
FagsakContainer.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import * as React from 'react';
import { useLocation, useParams } from 'react-router-dom';
import styled from 'styled-components';
import { Alert } from '@navikt/ds-react';
import { RessursStatus } from '@navikt/familie-typer';
import BehandlingContainer from './BehandlingContainer';
import Personlinje from './Personlinje/Personlinje';
import { useBehandling } from '../../context/BehandlingContext';
import { useFagsak } from '../../context/FagsakContext';
import { Fagsystem } from '../../kodeverk';
import { IBehandlingsstegstilstand, Venteårsak, venteårsaker } from '../../typer/behandling';
import { formatterDatostring } from '../../utils';
import { FTAlertStripe } from '../Felleskomponenter/Flytelementer';
import HenterBehandling from '../Felleskomponenter/Modal/HenterBehandling';
import PåVentModal from '../Felleskomponenter/Modal/PåVent/PåVentModal';
const FagsakContainerContent = styled.div`
display: flex;
height: calc(100vh - 7rem);
&.venter {
height: calc(100vh - 10.9rem);
}
`;
const venteBeskjed = (ventegrunn: IBehandlingsstegstilstand) => {
return `Behandlingen er satt på vent: ${
venteårsaker[ventegrunn.venteårsak as Venteårsak]
}. Tidsfrist: ${formatterDatostring(ventegrunn.tidsfrist as string)}`;
};
const FagsakContainer: React.FC = () => {
const { fagsystem: fagsystemParam, fagsakId } = useParams();
const fagsystem = Fagsystem[fagsystemParam as keyof typeof Fagsystem];
const location = useLocation();
const behandlingId = location.pathname.split('/')[6];
const { fagsak, hentFagsak } = useFagsak();
const {
behandling,
hentBehandlingMedEksternBrukId,
ventegrunn,
visVenteModal,
settVisVenteModal,
} = useBehandling();
React.useEffect(() => {
if (!!fagsystem && !!fagsakId) {
hentFagsak(fagsystem, fagsakId);
}
}, [fagsystem, fagsakId]);
React.useEffect(() => {
if (fagsak?.status === RessursStatus.SUKSESS && behandlingId) {
hentBehandlingMedEksternBrukId(fagsak.data, behandlingId);
}
}, [fagsak, behandlingId]);
const lukkVenteModal = () => {
settVisVenteModal(false);
};
if (fagsak?.status === RessursStatus.HENTER || behandling?.status === RessursStatus.HENTER) {
return <HenterBehandling />;
}
if (visVenteModal && ventegrunn && behandling?.status === RessursStatus.SUKSESS) {
return (
<PåVentModal
behandling={behandling.data}
ventegrunn={ventegrunn}
onClose={lukkVenteModal}
/>
);
}
switch (fagsak?.status) {
case RessursStatus.SUKSESS: {
switch (behandling?.status) {
case RessursStatus.SUKSESS:
return !visVenteModal ? (
<>
<Personlinje bruker={fagsak.data.bruker} fagsak={fagsak.data} />
{ventegrunn && (
<FTAlertStripe children={venteBeskjed(ventegrunn)} variant="info" />
)}
<FagsakContainerContent className={ventegrunn ? 'venter' : ''}>
<BehandlingContainer
fagsak={fagsak.data}
behandling={behandling.data}
/>
</FagsakContainerContent>
</>
) : (
<div />
);
case RessursStatus.IKKE_TILGANG:
return (
<Alert
children={`Du har ikke tilgang til å se denne behandlingen.`}
variant="warning"
/>
);
case RessursStatus.FEILET:
case RessursStatus.FUNKSJONELL_FEIL:
return <Alert children={behandling.frontendFeilmelding} variant="error" />;
default:
return <div />;
}
}
case RessursStatus.IKKE_TILGANG:
return (
<Alert children={`Du har ikke tilgang til å se denne saken.`} variant="warning" />
);
case RessursStatus.FEILET:
case RessursStatus.FUNKSJONELL_FEIL:
return <Alert children={fagsak.frontendFeilmelding} variant="error" />;
default:
return <div />;
}
};
export default FagsakContainer;