1
1
package no .nav .k9 .søknad .ytelse .omsorgspenger .v1 ;
2
2
3
+ import java .time .LocalDate ;
3
4
import java .util .ArrayList ;
4
5
import java .util .Collections ;
5
6
import java .util .List ;
6
7
7
8
import javax .validation .Valid ;
8
- import javax .validation .constraints .NotNull ;
9
- import javax .validation .constraints .Size ;
10
9
11
10
import com .fasterxml .jackson .annotation .JsonAutoDetect ;
12
11
import com .fasterxml .jackson .annotation .JsonCreator ;
13
12
import com .fasterxml .jackson .annotation .JsonIgnoreProperties ;
14
13
import com .fasterxml .jackson .annotation .JsonProperty ;
15
14
import com .fasterxml .jackson .annotation .JsonTypeName ;
16
15
17
- import no .nav .k9 .søknad .PeriodeValidator ;
18
- import no .nav .k9 .søknad .felles .Feil ;
19
- import no .nav .k9 .søknad .felles .opptjening .OpptjeningAktivitet ;
20
16
import no .nav .k9 .søknad .felles .fravær .FraværPeriode ;
17
+ import no .nav .k9 .søknad .felles .opptjening .OpptjeningAktivitet ;
21
18
import no .nav .k9 .søknad .felles .personopplysninger .Barn ;
22
19
import no .nav .k9 .søknad .felles .personopplysninger .Bosteder ;
23
20
import no .nav .k9 .søknad .felles .personopplysninger .Utenlandsopphold ;
24
- import no .nav .k9 .søknad .felles .type .Person ;
25
21
import no .nav .k9 .søknad .felles .type .Periode ;
22
+ import no .nav .k9 .søknad .felles .type .Person ;
26
23
import no .nav .k9 .søknad .ytelse .Ytelse ;
27
24
import no .nav .k9 .søknad .ytelse .YtelseValidator ;
28
25
@@ -36,8 +33,7 @@ public class OmsorgspengerUtbetaling implements Ytelse {
36
33
private List <Barn > fosterbarn ;
37
34
38
35
@ Valid
39
- @ NotNull
40
- @ JsonProperty (value = "aktivitet" , required = true )
36
+ @ JsonProperty (value = "aktivitet" )
41
37
private OpptjeningAktivitet aktivitet ;
42
38
43
39
@ Valid
@@ -49,24 +45,28 @@ public class OmsorgspengerUtbetaling implements Ytelse {
49
45
private Utenlandsopphold utenlandsopphold ;
50
46
51
47
@ Valid
52
- @ NotNull
53
- @ Size (min = 1 , message = "Minst 1 fraværsperiode må oppgis" )
54
- @ JsonProperty (value = "fraværsperioder" , required = true )
48
+ @ JsonProperty (value = "fraværsperioder" )
55
49
private List <FraværPeriode > fraværsperioder ;
56
50
51
+ @ Valid
52
+ @ JsonProperty (value = "fraværsperioderKorrigeringIm" )
53
+ private List <FraværPeriode > fraværsperioderKorrigeringIm ;
54
+
57
55
public OmsorgspengerUtbetaling () {
58
56
//
59
57
}
60
58
61
59
@ JsonCreator
62
60
public OmsorgspengerUtbetaling (@ JsonProperty ("fosterbarn" ) @ Valid List <Barn > fosterbarn ,
63
- @ JsonProperty (value = "aktivitet" , required = true ) @ Valid @ NotNull OpptjeningAktivitet opptjening ,
64
- @ JsonProperty (value = "fraværsperioder" , required = true ) @ Valid @ NotNull @ Size (min = 1 ) List <FraværPeriode > fraværsperioder ,
65
- @ JsonProperty (value = "bosteder" ) @ Valid @ NotNull Bosteder bosteder ,
66
- @ JsonProperty (value = "utenlandsopphold" ) @ Valid @ NotNull Utenlandsopphold utenlandsopphold ) {
61
+ @ JsonProperty (value = "aktivitet" ) @ Valid OpptjeningAktivitet opptjening ,
62
+ @ JsonProperty (value = "fraværsperioder" ) @ Valid List <FraværPeriode > fraværsperioder ,
63
+ @ JsonProperty (value = "fraværsperioderKorrigeringIm" ) @ Valid List <FraværPeriode > fraværsperioderKorrigeringIm ,
64
+ @ JsonProperty (value = "bosteder" ) @ Valid Bosteder bosteder ,
65
+ @ JsonProperty (value = "utenlandsopphold" ) @ Valid Utenlandsopphold utenlandsopphold ) {
67
66
this .fosterbarn = fosterbarn ;
68
67
this .aktivitet = opptjening ;
69
68
this .fraværsperioder = fraværsperioder ;
69
+ this .fraværsperioderKorrigeringIm = fraværsperioderKorrigeringIm ;
70
70
this .bosteder = bosteder ;
71
71
this .utenlandsopphold = utenlandsopphold ;
72
72
}
@@ -83,6 +83,10 @@ public OpptjeningAktivitet getAktivitet() {
83
83
return fraværsperioder == null ? null : Collections .unmodifiableList (fraværsperioder );
84
84
}
85
85
86
+ public List <FraværPeriode > getFraværsperioderKorrigeringIm () {
87
+ return fraværsperioderKorrigeringIm ;
88
+ }
89
+
86
90
public Bosteder getBosteder () {
87
91
return bosteder ;
88
92
}
@@ -104,8 +108,18 @@ public Person getAnnenPart() {
104
108
/** har ikke egen søknadsperiode for omsorgspenger, men angir på bakggrunn av angitte fraværsperioder. */
105
109
@ Override
106
110
public Periode getSøknadsperiode () {
107
- var fom = fraværsperioder .stream ().min (FraværPeriode ::compareTo ).orElseThrow ().getPeriode ().getFraOgMed ();
108
- var tom = fraværsperioder .stream ().max (FraværPeriode ::compareTo ).orElseThrow ().getPeriode ().getTilOgMed ();
111
+ LocalDate fom ;
112
+ LocalDate tom ;
113
+ if (fraværsperioder != null && !fraværsperioder .isEmpty ()) {
114
+ fom = fraværsperioder .stream ().min (FraværPeriode ::compareTo ).orElseThrow ().getPeriode ().getFraOgMed ();
115
+ tom = fraværsperioder .stream ().max (FraværPeriode ::compareTo ).orElseThrow ().getPeriode ().getTilOgMed ();
116
+ } else if (fraværsperioderKorrigeringIm != null && !fraværsperioderKorrigeringIm .isEmpty ()) {
117
+ fom = fraværsperioderKorrigeringIm .stream ().min (FraværPeriode ::compareTo ).orElseThrow ().getPeriode ().getFraOgMed ();
118
+ tom = fraværsperioderKorrigeringIm .stream ().max (FraværPeriode ::compareTo ).orElseThrow ().getPeriode ().getTilOgMed ();
119
+ } else {
120
+ // Skal fanges opp av validator
121
+ throw new IllegalArgumentException ("Må ha fravær fra enten søker eller fra fraværskorrigering av inntektsmelding" );
122
+ }
109
123
return new Periode (fom , tom );
110
124
}
111
125
@@ -152,38 +166,4 @@ public OmsorgspengerUtbetaling medUtenlandsopphold(Utenlandsopphold utenlandsopp
152
166
this .utenlandsopphold = utenlandsopphold ;
153
167
return this ;
154
168
}
155
-
156
- @ Size (max = 0 , message = "${validatedValue}" )
157
- private List <Feil > validerAngittUtenlandsopphold () {
158
- if (utenlandsopphold == null )
159
- List .of ();
160
- return new PeriodeValidator ().validerIkkeTillattOverlapp (utenlandsopphold .getPerioder (), "utenlandsopphold.perioder" );
161
- }
162
-
163
- @ Size (max = 0 , message = "${validatedValue}" )
164
- private List <Feil > validerAngittBosteder () {
165
- if (bosteder == null )
166
- return List .of ();
167
- return new PeriodeValidator ().validerIkkeTillattOverlapp (bosteder .getPerioder (), "bosteder.perioder" );
168
- }
169
-
170
- @ Size (max = 0 , message = "${validatedValue}" )
171
- private List <Feil > getValiderAngittFosterbarn () {
172
- var barn = this .fosterbarn ;
173
- if (barn == null || barn .isEmpty ())
174
- return List .of ();
175
- var index = 0 ;
176
- List <Feil > feil = new ArrayList <>();
177
- for (Barn b : barn ) {
178
- if (b .getPersonIdent () == null && b .getFødselsdato () == null ) {
179
- feil .add (new Feil ("fosterbarn[" + index + "]" , "norskIdentitetsnummerEllerFødselsdatoPåkrevd" ,
180
- "Må sette enten Personnummer/D-nummer på fosterbarn, eller fødselsdato." ));
181
- } else if (b .getPersonIdent () != null && b .getFødselsdato () != null ) {
182
- feil .add (
183
- new Feil ("fosterbarn[" + index + "]" , "ikkeEntydigIdPåBarnet" , "Må sette enten Personnummer/D-nummer på fosterbarn, eller fødselsdato." ));
184
- }
185
- index ++;
186
- }
187
- return feil ;
188
- }
189
169
}
0 commit comments