1
1
package no.nav.paw.bekreftelsetjeneste.tilstand
2
2
3
- import com.fasterxml.jackson.annotation.JsonSubTypes
4
- import com.fasterxml.jackson.annotation.JsonTypeInfo
5
3
import no.nav.paw.arbeidssokerregisteret.api.v1.Periode
6
- import java.time.Duration
7
- import java.time.Instant
8
- import java.util.*
9
4
10
5
@JvmRecord
11
6
data class InternTilstand (
12
7
val periode : PeriodeInfo ,
13
8
val bekreftelser : List <Bekreftelse >
14
9
)
15
10
16
- @JvmRecord
17
- data class Bekreftelse (
18
- val tilstand : Tilstand ,
19
- val tilgjengeliggjort : Instant ? ,
20
- val fristUtloept : Instant ? ,
21
- val sisteVarselOmGjenstaaendeGraceTid : Instant ? ,
22
- val bekreftelseId : UUID ,
23
- val gjelderFra : Instant ,
24
- val gjelderTil : Instant
25
- )
26
-
27
- @JsonTypeInfo(
28
- use = JsonTypeInfo .Id .NAME ,
29
- include = JsonTypeInfo .As .PROPERTY ,
30
- property = " type"
31
- )
32
- @JsonSubTypes(
33
- JsonSubTypes .Type (value = Tilstand .IkkeKlarForUtfylling ::class , name = " IkkeKlarForUtfylling" ),
34
- JsonSubTypes .Type (value = Tilstand .KlarForUtfylling ::class , name = " KlarForUtfylling" ),
35
- JsonSubTypes .Type (value = Tilstand .VenterSvar ::class , name = " VenterSvar" ),
36
- JsonSubTypes .Type (value = Tilstand .GracePeriodeUtloept ::class , name = " GracePeriodeUtloept" ),
37
- JsonSubTypes .Type (value = Tilstand .Levert ::class , name = " Levert" )
38
- )
39
- sealed class Tilstand {
40
- data object IkkeKlarForUtfylling : Tilstand ()
41
- data object KlarForUtfylling : Tilstand ()
42
- data object VenterSvar : Tilstand ()
43
- data object GracePeriodeUtloept : Tilstand ()
44
- data object Levert : Tilstand ()
45
- }
46
-
47
- @JvmRecord
48
- data class PeriodeInfo (
49
- val periodeId : UUID ,
50
- val identitetsnummer : String ,
51
- val arbeidsoekerId : Long ,
52
- val recordKey : Long ,
53
- val startet : Instant ,
54
- val avsluttet : Instant ?
55
- ) {
56
- val erAvsluttet: Boolean
57
- get() = avsluttet != null
58
- }
59
-
60
11
fun initTilstand (
61
12
id : Long ,
62
13
key : Long ,
@@ -73,33 +24,3 @@ fun initTilstand(
73
24
),
74
25
bekreftelser = emptyList()
75
26
)
76
-
77
- fun initBekreftelsePeriode (
78
- periode : PeriodeInfo ,
79
- interval : Duration ,
80
- ): Bekreftelse =
81
- Bekreftelse (
82
- tilstand = Tilstand .IkkeKlarForUtfylling ,
83
- tilgjengeliggjort = null ,
84
- fristUtloept = null ,
85
- sisteVarselOmGjenstaaendeGraceTid = null ,
86
- bekreftelseId = UUID .randomUUID(),
87
- gjelderFra = periode.startet,
88
- gjelderTil = fristForNesteBekreftelse(periode.startet, interval)
89
- )
90
-
91
- fun List<Bekreftelse>.initNewBekreftelse (
92
- tilgjengeliggjort : Instant ,
93
- interval : Duration
94
- ): Bekreftelse {
95
- val sisteBekreftelse = maxBy { it.gjelderTil }
96
-
97
- return sisteBekreftelse.copy(
98
- tilstand = Tilstand .KlarForUtfylling ,
99
- tilgjengeliggjort = tilgjengeliggjort,
100
- sisteVarselOmGjenstaaendeGraceTid = null ,
101
- bekreftelseId = UUID .randomUUID(),
102
- gjelderFra = sisteBekreftelse.gjelderTil,
103
- gjelderTil = fristForNesteBekreftelse(sisteBekreftelse.gjelderTil, interval)
104
- )
105
- }
0 commit comments