Skip to content

Commit

Permalink
Første versjon av kontrakt for søknad for Pleiepenger i livets sluttf…
Browse files Browse the repository at this point in the history
…ase (#209)
  • Loading branch information
tendestad authored Oct 14, 2021
1 parent 80d1df6 commit d6796b9
Show file tree
Hide file tree
Showing 4 changed files with 184 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.stream.Collectors;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
Expand All @@ -21,6 +22,7 @@
public class FraværPeriode implements Comparable<FraværPeriode> {

@Valid
@NotNull
@JsonProperty("periode")
private final Periode periode;
@JsonProperty("duration")
Expand All @@ -34,8 +36,9 @@ public class FraværPeriode implements Comparable<FraværPeriode> {
@JsonProperty(value = "søknadÅrsak")
private SøknadÅrsak søknadÅrsak;

//TODO konverter fra liste til enkeltelement
@Valid
@Size(min = 1, max = 2)
@Size(min = 1, max = 1)
@JsonProperty(value = "aktivitetFravær", required = true)
private final List<AktivitetFravær> aktivitetFravær;

Expand Down Expand Up @@ -102,13 +105,14 @@ public boolean equals(Object o) {
Objects.equals(duration, that.duration) &&
Objects.equals(årsak, that.årsak) &&
Objects.equals(aktivitetFravær, that.aktivitetFravær) &&
Objects.equals(søknadÅrsak, that.søknadÅrsak) &&
Objects.equals(arbeidsgiverOrgNr, that.arbeidsgiverOrgNr) &&
Objects.equals(aktivitetFravær, that.arbeidsforholdId);
Objects.equals(arbeidsforholdId, that.arbeidsforholdId);
}

@Override
public int hashCode() {
return Objects.hash(periode, duration, årsak, aktivitetFravær, arbeidsgiverOrgNr, arbeidsforholdId);
return Objects.hash(periode, duration, årsak, aktivitetFravær, søknadÅrsak, arbeidsgiverOrgNr, arbeidsforholdId);
}

@Override
Expand Down
2 changes: 2 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 @@ -34,6 +34,7 @@ public interface Ytelse {
String OMSORGSPENGER_UTVIDETRETT_MIDLERTIDIG_ALENE = "OMP_UTV_MA";
String OMSORGSPENGER_UTVIDETRETT_ALENE_OMSORG = "OMP_UTV_AO";
String PLEIEPENGER_SYKT_BARN = "PLEIEPENGER_SYKT_BARN";
String PLEIEPENGER_LIVETS_SLUTTFASE = "PLEIEPENGER_LIVETS_SLUTTFASE";

Ytelse.Type getType();

Expand All @@ -53,6 +54,7 @@ public interface Ytelse {
enum Type {
OMSORGSPENGER_UTBETALING(Ytelse.OMSORGSPENGER_UTBETALING),
PLEIEPENGER_SYKT_BARN(Ytelse.PLEIEPENGER_SYKT_BARN),
PLEIEPENGER_LIVETS_SLUTTFASE(Ytelse.PLEIEPENGER_LIVETS_SLUTTFASE),
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),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package no.nav.k9.søknad.ytelse.pls.v1;

import java.util.Objects;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

import no.nav.k9.søknad.felles.type.NorskIdentitetsnummer;
import no.nav.k9.søknad.felles.type.Person;
import no.nav.k9.søknad.felles.type.PersonIdent;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
public class Pleietrengende implements Person {

@JsonAlias({ "fødselsnummer", "norskIdentifikator", "identitetsnummer", "fnr" })
@JsonProperty(value = "norskIdentitetsnummer", required = true)
@NotNull
@Valid
private NorskIdentitetsnummer norskIdentitetsnummer;

@JsonCreator
public Pleietrengende(@JsonProperty(value = "norskIdentitetsnummer", required = true) @JsonAlias({ "fødselsnummer", "norskIdentifikator", "identitetsnummer", "fnr" }) NorskIdentitetsnummer norskIdentitetsnummer) {
this.norskIdentitetsnummer = Objects.requireNonNull(norskIdentitetsnummer, "norskIdentitetsnummer");
}

@Override
public boolean equals(Object obj) {
if (obj == this)
return true;
if (obj == null || obj.getClass() != this.getClass())
return false;
var other = (Pleietrengende) obj;

return Objects.equals(norskIdentitetsnummer, other.norskIdentitetsnummer);
}

@Override
public PersonIdent getPersonIdent() {
return norskIdentitetsnummer;
}

@Override
public int hashCode() {
return Objects.hash(norskIdentitetsnummer);
}

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

import java.util.List;
import java.util.Objects;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;

import no.nav.k9.søknad.felles.opptjening.OpptjeningAktivitet;
import no.nav.k9.søknad.felles.personopplysninger.Bosteder;
import no.nav.k9.søknad.felles.personopplysninger.Utenlandsopphold;
import no.nav.k9.søknad.felles.type.Periode;
import no.nav.k9.søknad.felles.type.Person;
import no.nav.k9.søknad.ytelse.Ytelse;
import no.nav.k9.søknad.ytelse.YtelseValidator;
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstid;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
@JsonTypeName(Ytelse.PLEIEPENGER_LIVETS_SLUTTFASE)
public class PleipengerLivetsSluttfase implements Ytelse{

@Valid
@NotNull
@JsonProperty(value = "pleietrengende", required = true)
private Pleietrengende pleietrengende;

@Valid
@NotNull
@JsonProperty(value = "arbeidstid", required = true)
private Arbeidstid arbeidstid = new Arbeidstid();

@Valid
@JsonProperty(value = "opptjeningAktivitet")
private OpptjeningAktivitet opptjeningAktivitet = new OpptjeningAktivitet();

@Valid
@JsonProperty(value = "bosteder", required = true)
private Bosteder bosteder = new Bosteder();

@Valid
@JsonProperty(value = "utenlandsopphold", required = true)
private Utenlandsopphold utenlandsopphold = new Utenlandsopphold();

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

@Override
public YtelseValidator getValidator() {
//TODO lage validator
return null;
}

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

public Pleietrengende getPleietrengende() {
return pleietrengende;
}

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

@Override
public Periode getSøknadsperiode() {
//TODO utlede omsluttende periode
return null;
}

public Arbeidstid getArbeidstid() {
return arbeidstid;
}

public OpptjeningAktivitet getOpptjeningAktivitet() {
return opptjeningAktivitet;
}

public Bosteder getBosteder() {
return bosteder;
}

public Utenlandsopphold getUtenlandsopphold() {
return utenlandsopphold;
}

public PleipengerLivetsSluttfase medPleietrengende(Pleietrengende pleietrengende) {
this.pleietrengende = Objects.requireNonNull(pleietrengende, "pleietrengende");
return this;
}

public PleipengerLivetsSluttfase medArbeidstid(Arbeidstid arbeidstid) {
this.arbeidstid = Objects.requireNonNull(arbeidstid, "arbeidstid");
return this;
}

public PleipengerLivetsSluttfase medOpptjeningAktivitet(OpptjeningAktivitet opptjeningAktivitet) {
this.opptjeningAktivitet = Objects.requireNonNull(opptjeningAktivitet, "opptjeningAktivitet");
return this;
}

public PleipengerLivetsSluttfase medBosteder(Bosteder bosteder) {
this.bosteder = Objects.requireNonNull(bosteder, "bosteder");
return this;
}

public PleipengerLivetsSluttfase medUtenlandsopphold(Utenlandsopphold utenlandsopphold) {
this.utenlandsopphold = Objects.requireNonNull(utenlandsopphold, "utenlandsopphold");
return this;
}
}

0 comments on commit d6796b9

Please sign in to comment.