1
- import { Heading } from '@navikt/ds-react' ;
2
- import React from 'react' ;
3
- import { dateFormatter } from '@navikt/sif-common-utils' ;
4
1
import { Aksjonspunkt } from '../../server/api-models/AksjonspunktSchema' ;
5
- import { Behandling } from '../../server/api-models/BehandlingSchema' ;
6
- import { Behandlingsstatus } from '../../server/api-models/Behandlingsstatus' ;
7
- import { InnsendtSøknadstype } from '../../types/Søknad' ;
8
2
import { Venteårsak } from '../../types/Venteårsak' ;
9
- import { formatInnsendtSøknadOpprettetDato } from '../../utils/innsendtSøknadUtils' ;
10
- import CompleteIcon from '../process/checks/Complete' ;
11
- import ProcessStep from '../process/ProcessStep' ;
12
- import { Kildesystem } from '../../server/api-models/K9FormatSøknadSchema' ;
3
+ import { ProcessStepData } from '../process/ProcessStep' ;
4
+ import { Søknadstype } from '../../server/api-models/Søknadstype' ;
5
+ import { Søknadshendelse , SøknadshendelseType } from '../../types/Søknadshendelse' ;
6
+ import { Søknad } from '../../server/api-models/SøknadSchema' ;
7
+ import { formatSøknadshendelseTidspunkt } from '../../utils/sakUtils' ;
13
8
14
- export const getSøknadstypeStatusmelding = ( søknadstype ?: InnsendtSøknadstype , kildesystem ?: Kildesystem ) : string => {
15
- if ( kildesystem === Kildesystem . søknadsdialog || søknadstype === InnsendtSøknadstype . PP_SYKT_BARN ) {
16
- return 'Vi mottok søknad om pleiepenger for sykt barn' ;
9
+ export const getSøknadstypeStatusmelding = ( søknadstype : Søknadstype ) : string => {
10
+ switch ( søknadstype ) {
11
+ case Søknadstype . SØKNAD :
12
+ return 'Vi mottok søknad om pleiepenger for sykt barn' ;
13
+ case Søknadstype . ENDRINGSMELDING :
14
+ return 'Vi mottok søknad om endring av pleiepenger for sykt barn' ;
17
15
}
18
- if (
19
- kildesystem === Kildesystem . endringsdialog ||
20
- søknadstype === InnsendtSøknadstype . PP_SYKT_BARN_ENDRINGSMELDING
21
- ) {
22
- return 'Vi mottok søknad om endring av pleiepenger for sykt barn' ;
23
- }
24
- if ( søknadstype === InnsendtSøknadstype . PP_ETTERSENDELSE ) {
25
- return 'Vi mottok ettersendelse av dokument' ;
26
- }
27
- return 'Vi mottok søknad/endringsmelding' ;
28
- } ;
29
- export const getStepsInBehandling = ( behandling : Behandling , saksbehandlingsFrist ?: Date ) : React . ReactNode [ ] => {
30
- const { søknader, aksjonspunkter, avsluttetDato, status } = behandling ;
31
- const steps : React . ReactNode [ ] = [ ] ;
32
-
33
- let key = 0 ;
34
- søknader . forEach ( ( { søknadstype, k9FormatSøknad : { kildesystem, mottattDato } } ) => {
35
- steps . push (
36
- < ProcessStep key = { key ++ } completed = { true } icon = { < CompleteIcon /> } >
37
- < Heading size = "small" level = "3" >
38
- { getSøknadstypeStatusmelding ( søknadstype , kildesystem ) }
39
- </ Heading >
40
- < p > { formatInnsendtSøknadOpprettetDato ( mottattDato ) } </ p >
41
- </ ProcessStep > ,
42
- ) ;
43
- } ) ;
44
-
45
- if ( aksjonspunkter . length > 0 ) {
46
- steps . push (
47
- < ProcessStep key = { key ++ } completed = { false } variant = "CURRENT" >
48
- < Heading size = "small" level = "3" spacing = { true } >
49
- { getAksjonspunkterTekst ( aksjonspunkter ) }
50
- </ Heading >
51
- </ ProcessStep > ,
52
- ) ;
53
- }
54
- if ( status === Behandlingsstatus . AVSLUTTET ) {
55
- steps . push (
56
- < ProcessStep key = { key ++ } completed = { true } icon = { < CompleteIcon /> } >
57
- < Heading size = "small" level = "3" >
58
- Søknad er ferdig behandlet
59
- </ Heading >
60
- { avsluttetDato ? < p > { dateFormatter . dayDateMonthYear ( avsluttetDato ) } </ p > : null }
61
- </ ProcessStep > ,
62
- ) ;
63
- } else {
64
- steps . push (
65
- < ProcessStep key = { key ++ } completed = { false } >
66
- < Heading size = "small" level = "3" >
67
- Søknaden er ferdig behandlet
68
- </ Heading >
69
- { saksbehandlingsFrist ? (
70
- < p >
71
- Du kan forvente svar innen { ` ` }
72
- < span className = "font-bold first-letter:uppercase" >
73
- { dateFormatter . dayDateMonthYear ( saksbehandlingsFrist ) }
74
- </ span >
75
- </ p >
76
- ) : (
77
- < p > Du kan forvente svar innen:</ p >
78
- ) }
79
- </ ProcessStep > ,
80
- ) ;
81
- }
82
-
83
- return steps ;
84
16
} ;
85
17
86
18
export const getAksjonspunkterTekst = ( aksjonspunkter : Aksjonspunkt [ ] ) : string => {
@@ -93,3 +25,70 @@ export const getAksjonspunkterTekst = (aksjonspunkter: Aksjonspunkt[]): string =
93
25
}
94
26
return `Saken er satt på vent fordi vi mangler informajson` ;
95
27
} ;
28
+
29
+ export const getProcessStepFromMottattSøknad = ( søknad : Søknad , current : boolean ) : ProcessStepData => {
30
+ switch ( søknad . søknadstype ) {
31
+ case Søknadstype . SØKNAD :
32
+ return {
33
+ title : 'Vi mottok søknad om pleiepenger for sykt barn' ,
34
+ content : < p > { formatSøknadshendelseTidspunkt ( søknad . k9FormatSøknad . mottattDato ) } </ p > ,
35
+ completed : true ,
36
+ current,
37
+ } ;
38
+ case Søknadstype . ENDRINGSMELDING :
39
+ return {
40
+ title : 'Vi mottok søknad om endring av pleiepenger for sykt barn' ,
41
+ content : < p > { formatSøknadshendelseTidspunkt ( søknad . k9FormatSøknad . mottattDato ) } </ p > ,
42
+ completed : true ,
43
+ current,
44
+ } ;
45
+ }
46
+ } ;
47
+
48
+ export const getProcessStepsFraSøknadshendelser = ( hendelser : Søknadshendelse [ ] ) : ProcessStepData [ ] => {
49
+ /** Aksjonspunkt skal ikke vises enda */
50
+ const hendelserSomSkalVises = hendelser . filter ( ( h ) => h . type !== SøknadshendelseType . AKSJONSPUNKT ) ;
51
+
52
+ const antall = hendelserSomSkalVises . length ;
53
+ const erFerdigBehandlet = hendelserSomSkalVises [ antall - 1 ] . type === SøknadshendelseType . FERDIG_BEHANDLET ;
54
+
55
+ return hendelserSomSkalVises . map ( ( hendelse , index ) : ProcessStepData => {
56
+ /** Gjeldende hendelse er per må alltid siste hendelse før ferdig behandlet, eller ferdig behandlet */
57
+ const erSisteHendelseFørFerdigBehandlet = erFerdigBehandlet ? index === antall - 1 : index === antall - 2 ;
58
+
59
+ switch ( hendelse . type ) {
60
+ case SøknadshendelseType . MOTTATT_SØKNAD :
61
+ return getProcessStepFromMottattSøknad ( hendelse . søknad , erSisteHendelseFørFerdigBehandlet ) ;
62
+
63
+ case SøknadshendelseType . AKSJONSPUNKT :
64
+ return {
65
+ title : hendelse . venteårsak ,
66
+ completed : false ,
67
+ current : true ,
68
+ content : '' ,
69
+ timestamp : hendelse . dato ,
70
+ } ;
71
+
72
+ case SøknadshendelseType . FERDIG_BEHANDLET :
73
+ return {
74
+ title : 'Søknad er ferdig behandlet' ,
75
+ content : < p > { formatSøknadshendelseTidspunkt ( hendelse . dato ) } </ p > ,
76
+ completed : true ,
77
+ timestamp : hendelse . dato ,
78
+ } ;
79
+
80
+ case SøknadshendelseType . FORVENTET_SVAR :
81
+ return {
82
+ title : 'Søknaden er ferdig behandlet' ,
83
+ content : (
84
+ < >
85
+ Inntektsmelding fra arbeidsgiver og legeerklæring må være sendt inn for at vi kan behandle
86
+ saken.
87
+ </ >
88
+ ) ,
89
+ completed : false ,
90
+ timestamp : hendelse . dato ,
91
+ } ;
92
+ }
93
+ } ) ;
94
+ } ;
0 commit comments