Skip to content

Commit

Permalink
Støtte for ungdomsytelse (#461)
Browse files Browse the repository at this point in the history
* Oppsett av verdikjede og mottak av søknad

* Søknad og verdikjedetest

* Søknad, verdikjedetest og behandlingsmodell
  • Loading branch information
espenjv authored Sep 20, 2024
1 parent f6323d5 commit 8d1ab0f
Show file tree
Hide file tree
Showing 3 changed files with 140 additions and 0 deletions.
5 changes: 5 additions & 0 deletions soknad/src/main/java/no/nav/k9/søknad/ytelse/Ytelse.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import no.nav.k9.søknad.ytelse.olp.v1.Opplæringspenger;
import no.nav.k9.søknad.ytelse.pls.v1.PleipengerLivetsSluttfase;
import no.nav.k9.søknad.ytelse.psb.v1.PleiepengerSyktBarn;
import no.nav.k9.søknad.ytelse.ung.v1.Ungdomsytelse;

@Valid
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
Expand All @@ -30,6 +31,7 @@
@JsonSubTypes.Type(name = Ytelse.PLEIEPENGER_SYKT_BARN, value = PleiepengerSyktBarn.class),
@JsonSubTypes.Type(name = Ytelse.OPPLÆRINGSPENGER, value = Opplæringspenger.class),
@JsonSubTypes.Type(name = Ytelse.PLEIEPENGER_LIVETS_SLUTTFASE, value = PleipengerLivetsSluttfase.class),
@JsonSubTypes.Type(name = Ytelse.UNGDOMSYTELSE, value = Ungdomsytelse.class),
})
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
public interface Ytelse {
Expand All @@ -41,6 +43,7 @@ public interface Ytelse {
String OPPLÆRINGSPENGER = "OPPLÆRINGSPENGER";
String PLEIEPENGER_SYKT_BARN = "PLEIEPENGER_SYKT_BARN";
String PLEIEPENGER_LIVETS_SLUTTFASE = "PLEIEPENGER_LIVETS_SLUTTFASE";
String UNGDOMSYTELSE = "UNGDOMSYTELSE";

Ytelse.Type getType();

Expand Down Expand Up @@ -79,6 +82,8 @@ enum Type {
OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT_BARN(Ytelse.OMSORGSPENGER_UTVIDETRETT_KRONISK_SYKT),
OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE(Ytelse.OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE),
OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG(Ytelse.OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG),
UNGDOMSYTELSE(Ytelse.UNGDOMSYTELSE),

;

@JsonValue
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package no.nav.k9.søknad.ytelse.ung.v1;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import no.nav.k9.søknad.felles.Feil;
import no.nav.k9.søknad.felles.Versjon;
import no.nav.k9.søknad.felles.type.Periode;
import no.nav.k9.søknad.felles.type.Person;
import no.nav.k9.søknad.felles.validering.periode.LukketPeriode;
import no.nav.k9.søknad.ytelse.DataBruktTilUtledning;
import no.nav.k9.søknad.ytelse.Ytelse;
import no.nav.k9.søknad.ytelse.YtelseValidator;

public class Ungdomsytelse implements Ytelse {

@Valid
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
@JsonProperty(value = "søknadsperiode", required = true)
@NotNull
private List<@NotNull @LukketPeriode Periode> søknadsperiode = new ArrayList<>();

@Override
public Type getType() {
return Type.UNGDOMSYTELSE;
}

@Override
public YtelseValidator getValidator(Versjon versjon) {
return new YtelseValidator() {
@Override
public List<Feil> valider(Ytelse søknad) {
return List.of();
}
};
}

@Override
public DataBruktTilUtledning getDataBruktTilUtledning() {
return new DataBruktTilUtledning();
}

@Override
public Ytelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning) {
return this;
}

@Override
public List<Person> getBerørtePersoner() {
return List.of();
}

@Override
public Person getPleietrengende() {
return null;
}

@Override
public Person getAnnenPart() {
return null;
}

@Override
public Periode getSøknadsperiode() {
final List<Periode> perioder = new ArrayList<>(søknadsperiode);

final var fom = perioder
.stream()
.map(Periode::getFraOgMed)
.min(LocalDate::compareTo)
.orElseThrow();
final var tom = perioder
.stream()
.map(Periode::getTilOgMed)
.max(LocalDate::compareTo)
.orElseThrow();
return new Periode(fom, tom);
}

public Ungdomsytelse medSøknadsperiode(List<Periode> søknadsperiodeList) {
this.søknadsperiode.addAll(Objects.requireNonNull(søknadsperiodeList, "søknadsperiodeList"));
return this;
}

public Ungdomsytelse medSøknadsperiode(Periode søknadsperiode) {
this.søknadsperiode.add(Objects.requireNonNull(søknadsperiode, "søknadsperiode"));
return this;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package no.nav.k9.søknad.ytelse.ung.v1;

import java.util.List;
import java.util.stream.Collectors;

import jakarta.validation.Validation;
import jakarta.validation.ValidatorFactory;
import no.nav.k9.søknad.Søknad;
import no.nav.k9.søknad.SøknadValidator;
import no.nav.k9.søknad.felles.Feil;
import no.nav.k9.søknad.felles.type.Periode;
import no.nav.k9.søknad.felles.validering.AvbrytendeValideringsfeil;

public class UngdomsytelseSøknadValidator extends SøknadValidator<Søknad> {

private static final ValidatorFactory VALIDATOR_FACTORY = Validation.buildDefaultValidatorFactory();

@Override
public List<Feil> valider(Søknad søknad) {
return List.of();
}

public List<Feil> valider(Søknad søknad, List<Periode> gyldigeEndringsperioder) {
var validate = VALIDATOR_FACTORY.getValidator().validate(søknad);

List<Feil> feil = validate.stream()
.map(Feil::toFeil)
.collect(Collectors.toList());

if (AvbrytendeValideringsfeil.harAvbrytendeValideringsfeil(validate)) {
return feil;
}

validerFelterPåSøknad(søknad, feil);
return feil;
}

}

0 comments on commit 8d1ab0f

Please sign in to comment.