Skip to content

Commit 0f1489a

Browse files
authored
OLP - flere perioder per kurs - med avreise og hjemkomst (#301)
* OLP - flere perioder per kurs - med avreise og hjemkomst * OLP - Validering av kursperioder med reisetid * nullsjekk i validering
1 parent 88efacd commit 0f1489a

File tree

3 files changed

+89
-9
lines changed

3 files changed

+89
-9
lines changed

soknad/src/main/java/no/nav/k9/søknad/ytelse/olp/v1/OpplæringspengerYtelseValidator.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import no.nav.k9.søknad.felles.type.Periode;
1919
import no.nav.k9.søknad.ytelse.Ytelse;
2020
import no.nav.k9.søknad.ytelse.YtelseValidator;
21-
import no.nav.k9.søknad.ytelse.omsorgspenger.v1.OmsorgspengerUtbetalingSøknadValidator;
21+
import no.nav.k9.søknad.ytelse.olp.v1.kurs.KursPeriodeMedReisetid;
2222

2323
class OpplæringspengerYtelseValidator extends YtelseValidator {
2424

@@ -96,6 +96,8 @@ List<Feil> validerOgLeggTilFeilene(Opplæringspenger olp,
9696

9797
validerAtYtelsePeriodenErKomplettMedSøknad(søknadsperiodeTidslinje, olp.getUttak().getPerioder(), "uttak", feilene);
9898

99+
validerReisetidMotKursperioden(olp.getKurs().getKursperioder(), "kurs", feilene);
100+
99101
return feilene;
100102
}
101103

@@ -127,6 +129,28 @@ private List<Feil> validerAtYtelsePerioderErInnenforIntervalForEndring(LocalDate
127129
.collect(Collectors.toCollection(ArrayList::new)));
128130
}
129131

132+
private void validerReisetidMotKursperioden(List<KursPeriodeMedReisetid> kursperioder, String felt, List<Feil> feil) {
133+
for (KursPeriodeMedReisetid kursPeriode : kursperioder) {
134+
if (kursPeriode != null) {
135+
LocalDate avreise = kursPeriode.getAvreise();
136+
LocalDate hjemkomst = kursPeriode.getHjemkomst();
137+
Periode periode = kursPeriode.getPeriode();
138+
139+
if (avreise != null && hjemkomst != null && periode != null) {
140+
if (hjemkomst.isBefore(avreise)) {
141+
feil.add(toFeil(periode, felt, "ugyldigKursPeriode", "hjemkomst er før avreise: "));
142+
}
143+
if (avreise.isAfter(periode.getFraOgMed())) {
144+
feil.add(toFeil(periode, felt, "ugyldigKursPeriode", "avreise er etter kursstart: "));
145+
}
146+
if (hjemkomst.isBefore(periode.getTilOgMed())) {
147+
feil.add(toFeil(periode, felt, "ugyldigKursPeriode", "hjemkomst er før kursslutt: "));
148+
}
149+
}
150+
}
151+
}
152+
}
153+
130154
private List<Feil> validerAtIngenPerioderOverlapperMedTrekkKravPerioder(LocalDateTimeline<Boolean> trekkKravPerioder,
131155
LocalDateTimeline<Boolean> test,
132156
String felt) {

soknad/src/main/java/no/nav/k9/søknad/ytelse/olp/v1/kurs/Kurs.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package no.nav.k9.søknad.ytelse.olp.v1.kurs;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
5+
36
import javax.validation.Valid;
47
import javax.validation.constraints.NotNull;
8+
import javax.validation.constraints.Size;
59

610
import com.fasterxml.jackson.annotation.JsonAutoDetect;
711
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
812
import com.fasterxml.jackson.annotation.JsonProperty;
913

10-
import no.nav.k9.søknad.felles.type.Periode;
11-
1214
@JsonIgnoreProperties(ignoreUnknown = true)
1315
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
1416
public class Kurs {
@@ -23,18 +25,19 @@ public class Kurs {
2325
@Valid
2426
private String formål;
2527

26-
@JsonProperty(value = "periode", required = true)
28+
@JsonProperty(value = "kursperioder", required = true)
2729
@NotNull
30+
@Size(min = 1)
2831
@Valid
29-
private Periode periode;
32+
private List<KursPeriodeMedReisetid> kursperioder;
3033

3134
public Kurs() {
3235
}
3336

34-
public Kurs(String kursholder, String formålMedKurset, Periode periode) {
37+
public Kurs(String kursholder, String formålMedKurset, List<KursPeriodeMedReisetid> kursperioder) {
3538
this.holder = kursholder;
3639
this.formål = formålMedKurset;
37-
this.periode = periode;
40+
this.kursperioder = kursperioder;
3841
}
3942

4043
public String getHolder() {
@@ -45,7 +48,7 @@ public String getHolder() {
4548
return formål;
4649
}
4750

48-
public Periode getPeriode() {
49-
return periode;
51+
public List<KursPeriodeMedReisetid> getKursperioder() {
52+
return new ArrayList<>(kursperioder);
5053
}
5154
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package no.nav.k9.søknad.ytelse.olp.v1.kurs;
2+
3+
import java.time.LocalDate;
4+
5+
import javax.validation.Valid;
6+
import javax.validation.constraints.NotNull;
7+
8+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
9+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
10+
import com.fasterxml.jackson.annotation.JsonProperty;
11+
12+
import no.nav.k9.søknad.felles.type.Periode;
13+
14+
@JsonIgnoreProperties(ignoreUnknown = true)
15+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
16+
public class KursPeriodeMedReisetid {
17+
18+
@JsonProperty(value = "periode", required = true)
19+
@NotNull
20+
@Valid
21+
private Periode periode;
22+
23+
@JsonProperty(value = "avreise", required = true)
24+
@NotNull
25+
@Valid
26+
private LocalDate avreise;
27+
28+
@JsonProperty(value = "hjemkomst", required = true)
29+
@NotNull
30+
@Valid
31+
private LocalDate hjemkomst;
32+
33+
public KursPeriodeMedReisetid() {
34+
}
35+
36+
public KursPeriodeMedReisetid(Periode periode, LocalDate avreise, LocalDate hjemkomst) {
37+
this.periode = periode;
38+
this.avreise = avreise;
39+
this.hjemkomst = hjemkomst;
40+
}
41+
42+
public Periode getPeriode() {
43+
return periode;
44+
}
45+
46+
public LocalDate getAvreise() {
47+
return avreise;
48+
}
49+
50+
public LocalDate getHjemkomst() {
51+
return hjemkomst;
52+
}
53+
}

0 commit comments

Comments
 (0)