Skip to content

Commit a5be742

Browse files
authored
Forbedring på periodevalidering OMP_UT + validator på søknadsnivå (#219)
1 parent 3900f31 commit a5be742

File tree

4 files changed

+83
-8
lines changed

4 files changed

+83
-8
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package no.nav.k9.søknad.ytelse.omsorgspenger.v1;
2+
3+
import java.util.List;
4+
import java.util.stream.Collectors;
5+
6+
import javax.validation.Validation;
7+
import javax.validation.ValidatorFactory;
8+
9+
import no.nav.k9.søknad.Søknad;
10+
import no.nav.k9.søknad.SøknadValidator;
11+
import no.nav.k9.søknad.felles.Feil;
12+
import no.nav.k9.søknad.felles.Versjon;
13+
14+
public class OmsorgspengerUtbetalingSøknadValidator extends SøknadValidator<Søknad> {
15+
16+
17+
private static final ValidatorFactory VALIDATOR_FACTORY = Validation.buildDefaultValidatorFactory();
18+
19+
public OmsorgspengerUtbetalingSøknadValidator() {
20+
}
21+
22+
private static void validerVersjon(Versjon versjon, List<Feil> feil) {
23+
if (versjon != null && !versjon.erGyldig()) {
24+
feil.add(new Feil("versjon", "ugyldigVersjon", "Versjonen er på ugyldig format."));
25+
}
26+
}
27+
28+
29+
@Override
30+
public List<Feil> valider(Søknad søknad) {
31+
var validate = VALIDATOR_FACTORY.getValidator().validate(søknad);
32+
33+
List<Feil> feil = validate.stream()
34+
.map(Feil::toFeil)
35+
.collect(Collectors.toList());
36+
37+
validerVersjon(søknad.getVersjon(), feil);
38+
feil.addAll(new OmsorgspengerUtbetalingValidator().valider(søknad.getYtelse()));
39+
40+
return feil;
41+
}
42+
}

soknad/src/main/java/no/nav/k9/søknad/ytelse/omsorgspenger/v1/OmsorgspengerUtbetalingValidator.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
import java.time.Duration;
44
import java.util.ArrayList;
5+
import java.util.LinkedHashMap;
56
import java.util.List;
7+
import java.util.Map;
68
import java.util.Objects;
79
import java.util.Optional;
8-
import java.util.stream.Collectors;
910

1011
import no.nav.k9.søknad.PeriodeValidator;
1112
import no.nav.k9.søknad.felles.Feil;
@@ -15,6 +16,7 @@
1516
import no.nav.k9.søknad.felles.opptjening.SelvstendigNæringsdrivende;
1617
import no.nav.k9.søknad.felles.personopplysninger.Barn;
1718
import no.nav.k9.søknad.felles.type.Organisasjonsnummer;
19+
import no.nav.k9.søknad.felles.type.Periode;
1820
import no.nav.k9.søknad.ytelse.Ytelse;
1921
import no.nav.k9.søknad.ytelse.YtelseValidator;
2022

@@ -27,6 +29,7 @@ public OmsorgspengerUtbetalingValidator() {
2729

2830
@Override
2931
public List<Feil> valider(Ytelse ytelse) {
32+
3033
var omsorgspengerUtbetaling = (OmsorgspengerUtbetaling) ytelse;
3134

3235
List<Feil> feil = new ArrayList<>();
@@ -203,9 +206,21 @@ private List<Feil> validerBosteder(OmsorgspengerUtbetaling ytelse) {
203206
index++;
204207
}
205208

206-
// Valider perioder på tvers
207-
var perioder = fraværsperioderKorrigeringIm.stream().collect(Collectors.toMap(e -> e.getPeriode(), e -> e.getArbeidsgiverOrgNr()));
208-
feil.addAll(periodeValidator.validerIkkeTillattOverlapp(perioder, "fraværsperioderKorrigeringIm.perioder"));
209+
210+
211+
Map<Periode, Organisasjonsnummer> perioder = new LinkedHashMap<>();
212+
for (FraværPeriode fraværPeriode : fraværsperioderKorrigeringIm) {
213+
if (perioder.containsKey(fraværPeriode.getPeriode())) {
214+
feil.add(new Feil("fraværsperioderKorrigeringIm.perioder[" + fraværPeriode.getPeriode().getIso8601() + "]", "likePerioder", "To identiske perioder oppgitt"));
215+
} else {
216+
perioder.put(fraværPeriode.getPeriode(), fraværPeriode.getArbeidsgiverOrgNr());
217+
}
218+
index++;
219+
}
220+
if (feil.stream().noneMatch(it -> it.getFeilkode().equals("likePerioder"))) {
221+
// Valider perioder på tvers
222+
feil.addAll(periodeValidator.validerIkkeTillattOverlapp(perioder, "fraværsperioderKorrigeringIm.perioder"));
223+
}
209224

210225
return feil;
211226
}

soknad/src/test/java/no/nav/k9/søknad/ytelse/omsorgspenger/v1/OmsorgspengerUtbetalingValidatorTest.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class OmsorgspengerUtbetalingValidatorTest {
3232
void skal_returnere_ingen_feil_for_minimum_json_søknad() {
3333
var søknad = TestUtils.minimumJsonSøknad();
3434

35-
var feil = validatorSøknad.valider(søknad.getYtelse());
35+
var feil = new OmsorgspengerUtbetalingSøknadValidator().valider(søknad);
3636

3737
assertThat(feil).isEmpty();
3838
}
@@ -106,6 +106,22 @@ public void skal_returnere_feil_for_overlappende_perioder() {
106106
feilInneholder(feil, "fraværsperioderKorrigeringIm.perioder[2021-09-01/2021-09-02]", "overlappendePerioder");
107107
}
108108

109+
@Test
110+
public void skal_returnere_feil_for_identiske_perioder() {
111+
var fraværPeriode1 = new Periode(LocalDate.parse("2021-09-01"), LocalDate.parse("2021-09-02"));
112+
var fraværPeriode2 = new Periode(LocalDate.parse("2021-09-01"), LocalDate.parse("2021-09-02"));
113+
114+
OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingMedFraværskorrigeringIm(
115+
lagFraværskorrigeringIm(orgnr1, arbforholdId1, fraværPeriode1, null),
116+
lagFraværskorrigeringIm(orgnr1, arbforholdId1, fraværPeriode2, null));
117+
118+
var feil = validatorSøknad.valider(ytelse);
119+
120+
121+
assertThat(feil).hasSize(1);
122+
feilInneholder(feil, "fraværsperioderKorrigeringIm.perioder[2021-09-01/2021-09-02]", "likePerioder");
123+
}
124+
109125
@Test
110126
public void skal_returnere_feil_for_flere_orgnr() {
111127
var fraværPeriode1 = new Periode(LocalDate.parse("2021-09-01"), LocalDate.parse("2021-09-02"));

soknad/src/test/resources/ytelse/omp/utbetaling/minimum-søknad-omp-utbetaling-snf.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"søknadId": "$søknadId",
2+
"søknadId": "123",
33
"mottattDato": "2018-01-02T03:04:05.000Z",
44
"versjon": "1.0.0",
55
"språk": "nb",
@@ -10,8 +10,10 @@
1010
"type": "OMP_UT",
1111
"fosterbarn": null,
1212
"aktivitet": {
13-
"selvstendigNæringsdrivende": null,
14-
"frilanser": null
13+
"frilanser": {
14+
"startdato": "2020-01-01",
15+
"jobberFortsattSomFrilans": true
16+
}
1517
},
1618
"fraværsperioder": [
1719
{

0 commit comments

Comments
 (0)