Skip to content

Commit 8d1ab0f

Browse files
authored
Støtte for ungdomsytelse (#461)
* Oppsett av verdikjede og mottak av søknad * Søknad og verdikjedetest * Søknad, verdikjedetest og behandlingsmodell
1 parent f6323d5 commit 8d1ab0f

File tree

3 files changed

+140
-0
lines changed

3 files changed

+140
-0
lines changed

soknad/src/main/java/no/nav/k9/søknad/ytelse/Ytelse.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import no.nav.k9.søknad.ytelse.olp.v1.Opplæringspenger;
2020
import no.nav.k9.søknad.ytelse.pls.v1.PleipengerLivetsSluttfase;
2121
import no.nav.k9.søknad.ytelse.psb.v1.PleiepengerSyktBarn;
22+
import no.nav.k9.søknad.ytelse.ung.v1.Ungdomsytelse;
2223

2324
@Valid
2425
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@@ -30,6 +31,7 @@
3031
@JsonSubTypes.Type(name = Ytelse.PLEIEPENGER_SYKT_BARN, value = PleiepengerSyktBarn.class),
3132
@JsonSubTypes.Type(name = Ytelse.OPPLÆRINGSPENGER, value = Opplæringspenger.class),
3233
@JsonSubTypes.Type(name = Ytelse.PLEIEPENGER_LIVETS_SLUTTFASE, value = PleipengerLivetsSluttfase.class),
34+
@JsonSubTypes.Type(name = Ytelse.UNGDOMSYTELSE, value = Ungdomsytelse.class),
3335
})
3436
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
3537
public interface Ytelse {
@@ -41,6 +43,7 @@ public interface Ytelse {
4143
String OPPLÆRINGSPENGER = "OPPLÆRINGSPENGER";
4244
String PLEIEPENGER_SYKT_BARN = "PLEIEPENGER_SYKT_BARN";
4345
String PLEIEPENGER_LIVETS_SLUTTFASE = "PLEIEPENGER_LIVETS_SLUTTFASE";
46+
String UNGDOMSYTELSE = "UNGDOMSYTELSE";
4447

4548
Ytelse.Type getType();
4649

@@ -79,6 +82,8 @@ enum Type {
7982
OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT_BARN(Ytelse.OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT),
8083
OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE(Ytelse.OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE),
8184
OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG(Ytelse.OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG),
85+
UNGDOMSYTELSE(Ytelse.UNGDOMSYTELSE),
86+
8287
;
8388

8489
@JsonValue
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package no.nav.k9.søknad.ytelse.ung.v1;
2+
3+
import java.time.LocalDate;
4+
import java.util.ArrayList;
5+
import java.util.List;
6+
import java.util.Objects;
7+
8+
import com.fasterxml.jackson.annotation.JsonFormat;
9+
import com.fasterxml.jackson.annotation.JsonProperty;
10+
11+
import jakarta.validation.Valid;
12+
import jakarta.validation.constraints.NotNull;
13+
import no.nav.k9.søknad.felles.Feil;
14+
import no.nav.k9.søknad.felles.Versjon;
15+
import no.nav.k9.søknad.felles.type.Periode;
16+
import no.nav.k9.søknad.felles.type.Person;
17+
import no.nav.k9.søknad.felles.validering.periode.LukketPeriode;
18+
import no.nav.k9.søknad.ytelse.DataBruktTilUtledning;
19+
import no.nav.k9.søknad.ytelse.Ytelse;
20+
import no.nav.k9.søknad.ytelse.YtelseValidator;
21+
22+
public class Ungdomsytelse implements Ytelse {
23+
24+
@Valid
25+
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
26+
@JsonProperty(value = "søknadsperiode", required = true)
27+
@NotNull
28+
private List<@NotNull @LukketPeriode Periode> søknadsperiode = new ArrayList<>();
29+
30+
@Override
31+
public Type getType() {
32+
return Type.UNGDOMSYTELSE;
33+
}
34+
35+
@Override
36+
public YtelseValidator getValidator(Versjon versjon) {
37+
return new YtelseValidator() {
38+
@Override
39+
public List<Feil> valider(Ytelse søknad) {
40+
return List.of();
41+
}
42+
};
43+
}
44+
45+
@Override
46+
public DataBruktTilUtledning getDataBruktTilUtledning() {
47+
return new DataBruktTilUtledning();
48+
}
49+
50+
@Override
51+
public Ytelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning) {
52+
return this;
53+
}
54+
55+
@Override
56+
public List<Person> getBerørtePersoner() {
57+
return List.of();
58+
}
59+
60+
@Override
61+
public Person getPleietrengende() {
62+
return null;
63+
}
64+
65+
@Override
66+
public Person getAnnenPart() {
67+
return null;
68+
}
69+
70+
@Override
71+
public Periode getSøknadsperiode() {
72+
final List<Periode> perioder = new ArrayList<>(søknadsperiode);
73+
74+
final var fom = perioder
75+
.stream()
76+
.map(Periode::getFraOgMed)
77+
.min(LocalDate::compareTo)
78+
.orElseThrow();
79+
final var tom = perioder
80+
.stream()
81+
.map(Periode::getTilOgMed)
82+
.max(LocalDate::compareTo)
83+
.orElseThrow();
84+
return new Periode(fom, tom);
85+
}
86+
87+
public Ungdomsytelse medSøknadsperiode(List<Periode> søknadsperiodeList) {
88+
this.søknadsperiode.addAll(Objects.requireNonNull(søknadsperiodeList, "søknadsperiodeList"));
89+
return this;
90+
}
91+
92+
public Ungdomsytelse medSøknadsperiode(Periode søknadsperiode) {
93+
this.søknadsperiode.add(Objects.requireNonNull(søknadsperiode, "søknadsperiode"));
94+
return this;
95+
}
96+
97+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package no.nav.k9.søknad.ytelse.ung.v1;
2+
3+
import java.util.List;
4+
import java.util.stream.Collectors;
5+
6+
import jakarta.validation.Validation;
7+
import jakarta.validation.ValidatorFactory;
8+
import no.nav.k9.søknad.Søknad;
9+
import no.nav.k9.søknad.SøknadValidator;
10+
import no.nav.k9.søknad.felles.Feil;
11+
import no.nav.k9.søknad.felles.type.Periode;
12+
import no.nav.k9.søknad.felles.validering.AvbrytendeValideringsfeil;
13+
14+
public class UngdomsytelseSøknadValidator extends SøknadValidator<Søknad> {
15+
16+
private static final ValidatorFactory VALIDATOR_FACTORY = Validation.buildDefaultValidatorFactory();
17+
18+
@Override
19+
public List<Feil> valider(Søknad søknad) {
20+
return List.of();
21+
}
22+
23+
public List<Feil> valider(Søknad søknad, List<Periode> gyldigeEndringsperioder) {
24+
var validate = VALIDATOR_FACTORY.getValidator().validate(søknad);
25+
26+
List<Feil> feil = validate.stream()
27+
.map(Feil::toFeil)
28+
.collect(Collectors.toList());
29+
30+
if (AvbrytendeValideringsfeil.harAvbrytendeValideringsfeil(validate)) {
31+
return feil;
32+
}
33+
34+
validerFelterPåSøknad(søknad, feil);
35+
return feil;
36+
}
37+
38+
}

0 commit comments

Comments
 (0)