13
13
import javax .validation .constraints .NotNull ;
14
14
15
15
import com .fasterxml .jackson .annotation .JsonAutoDetect ;
16
+ import com .fasterxml .jackson .annotation .JsonFormat ;
16
17
import com .fasterxml .jackson .annotation .JsonIgnoreProperties ;
17
18
import com .fasterxml .jackson .annotation .JsonProperty ;
18
19
import com .fasterxml .jackson .annotation .JsonTypeName ;
24
25
import no .nav .k9 .søknad .felles .type .Person ;
25
26
import no .nav .k9 .søknad .ytelse .Ytelse ;
26
27
import no .nav .k9 .søknad .ytelse .YtelseValidator ;
28
+ import no .nav .k9 .søknad .ytelse .psb .v1 .Uttak ;
27
29
import no .nav .k9 .søknad .ytelse .psb .v1 .arbeidstid .Arbeidstaker ;
28
30
import no .nav .k9 .søknad .ytelse .psb .v1 .arbeidstid .Arbeidstid ;
29
31
import no .nav .k9 .søknad .ytelse .psb .v1 .arbeidstid .ArbeidstidInfo ;
@@ -39,9 +41,10 @@ public class PleipengerLivetsSluttfase implements Ytelse {
39
41
private Pleietrengende pleietrengende ;
40
42
41
43
@ Valid
42
- @ NotNull
43
- @ JsonProperty (value = "arbeidstid" , required = true )
44
- private Arbeidstid arbeidstid = new Arbeidstid ();
44
+ @ JsonFormat (with = JsonFormat .Feature .ACCEPT_SINGLE_VALUE_AS_ARRAY )
45
+ @ JsonProperty (value = "søknadsperiode" /* ,required = true TODO skal skrus på før lansering */ )
46
+ //@NotNull --TODO skal bli NotNull før lansering
47
+ private List <Periode > søknadsperiode = new ArrayList <>();
45
48
46
49
@ Valid
47
50
@ JsonProperty (value = "trekkKravPerioder" , required = true )
@@ -60,6 +63,15 @@ public class PleipengerLivetsSluttfase implements Ytelse {
60
63
@ JsonProperty (value = "utenlandsopphold" , required = true )
61
64
private Utenlandsopphold utenlandsopphold = new Utenlandsopphold ();
62
65
66
+ @ Valid
67
+ @ NotNull
68
+ @ JsonProperty (value = "arbeidstid" , required = true )
69
+ private Arbeidstid arbeidstid = new Arbeidstid ();
70
+
71
+ @ Valid
72
+ @ JsonProperty (value = "uttak" /* ,required = true TODO skal skrus på før lansering */ )
73
+ private Uttak uttak = new Uttak (); //TODO vurder å lage egen variant for å ha riktigere navngiving
74
+
63
75
@ Override
64
76
public Type getType () {
65
77
return Type .PLEIEPENGER_LIVETS_SLUTTFASE ;
@@ -86,13 +98,20 @@ public Person getAnnenPart() {
86
98
87
99
@ Override
88
100
public Periode getSøknadsperiode () {
101
+ if (!søknadsperiode .isEmpty ()) {
102
+ return new Periode (
103
+ søknadsperiode .stream ().map (Periode ::getFraOgMed ).min (Comparator .naturalOrder ()).orElseThrow (),
104
+ søknadsperiode .stream ().map (Periode ::getTilOgMed ).max (Comparator .naturalOrder ()).orElseThrow ()
105
+ );
106
+ }
107
+
108
+ //TODO deprecated, erstattes av søknadsperiode (se over), fjernes før lansering
89
109
List <ArbeidstidInfo > fraværsperioder = new ArrayList <>();
90
110
arbeidstid .getFrilanserArbeidstidInfo ().ifPresent (fraværsperioder ::add );
91
111
arbeidstid .getSelvstendigNæringsdrivendeArbeidstidInfo ().ifPresent (fraværsperioder ::add );
92
112
arbeidstid .getArbeidstakerList ().stream ()
93
113
.map (Arbeidstaker ::getArbeidstidInfo )
94
114
.forEach (fraværsperioder ::add );
95
-
96
115
List <Periode > allePerioder = fraværsperioder .stream ()
97
116
.flatMap (ai -> ai .getPerioder ().keySet ().stream ())
98
117
.collect (Collectors .toList ());
@@ -104,15 +123,14 @@ public Person getAnnenPart() {
104
123
.map (Periode ::getTilOgMed )
105
124
.filter (Objects ::nonNull )
106
125
.max (Comparator .naturalOrder ());
107
-
108
126
if (fom .isPresent () && tom .isPresent ()) {
109
127
return new Periode (fom .get (), tom .get ());
110
128
}
111
129
return null ;
112
130
}
113
131
114
- public Arbeidstid getArbeidstid () {
115
- return arbeidstid ;
132
+ public List < Periode > getSøknadsperiodeList () {
133
+ return søknadsperiode == null ? null : Collections . unmodifiableList ( søknadsperiode ) ;
116
134
}
117
135
118
136
public OpptjeningAktivitet getOpptjeningAktivitet () {
@@ -131,13 +149,26 @@ public List<Periode> getTrekkKravPerioder() {
131
149
return Collections .unmodifiableList (trekkKravPerioder );
132
150
}
133
151
152
+ public Arbeidstid getArbeidstid () {
153
+ return arbeidstid ;
154
+ }
155
+
156
+ public Uttak getUttak () {
157
+ return uttak ;
158
+ }
159
+
134
160
public PleipengerLivetsSluttfase medPleietrengende (Pleietrengende pleietrengende ) {
135
161
this .pleietrengende = Objects .requireNonNull (pleietrengende , "pleietrengende" );
136
162
return this ;
137
163
}
138
164
139
- public PleipengerLivetsSluttfase medArbeidstid (Arbeidstid arbeidstid ) {
140
- this .arbeidstid = Objects .requireNonNull (arbeidstid , "arbeidstid" );
165
+ public PleipengerLivetsSluttfase medSøknadsperiode (List <Periode > søknadsperiodeList ) {
166
+ this .søknadsperiode .addAll (Objects .requireNonNull (søknadsperiodeList , "søknadsperiodeList" ));
167
+ return this ;
168
+ }
169
+
170
+ public PleipengerLivetsSluttfase medSøknadsperiode (Periode søknadsperiode ) {
171
+ this .søknadsperiode .add (Objects .requireNonNull (søknadsperiode , "søknadsperiode" ));
141
172
return this ;
142
173
}
143
174
@@ -160,4 +191,15 @@ public PleipengerLivetsSluttfase leggTilTrekkKravPerioder(List<Periode> trekkKra
160
191
this .trekkKravPerioder .addAll (Objects .requireNonNull (trekkKravPerioder , "trekkKravPerioder" ));
161
192
return this ;
162
193
}
194
+
195
+ public PleipengerLivetsSluttfase medArbeidstid (Arbeidstid arbeidstid ) {
196
+ this .arbeidstid = Objects .requireNonNull (arbeidstid , "arbeidstid" );
197
+ return this ;
198
+ }
199
+
200
+ public PleipengerLivetsSluttfase medUttak (Uttak uttak ) {
201
+ this .uttak = Objects .requireNonNull (uttak , "uttak" );
202
+ return this ;
203
+ }
204
+
163
205
}
0 commit comments