From 4994a73745ac5900ebffede7035e89d524edd019 Mon Sep 17 00:00:00 2001 From: oyvemb <107673448+oyvemb@users.noreply.github.com> Date: Thu, 21 Mar 2024 08:04:03 +0100 Subject: [PATCH] Utvider Ettersendelse med pleietrengende og type (#422) * Utvider Ettersendelse med pleietrengende og type * Not Notnull * TODO --- .../nav/k9/ettersendelse/Ettersendelse.java | 65 ++++++++++++++----- .../k9/ettersendelse/EttersendelseType.java | 9 +++ .../ettersendelse/EttersendelseValidator.java | 1 + .../nav/k9/ettersendelse/Pleietrengende.java | 57 ++++++++++++++++ .../no/nav/k9/ettersendelse/TestUtils.java | 4 +- .../src/test/resources/ettersendelse.json | 6 +- 6 files changed, 123 insertions(+), 19 deletions(-) create mode 100644 ettersendelse/src/main/java/no/nav/k9/ettersendelse/EttersendelseType.java create mode 100644 ettersendelse/src/main/java/no/nav/k9/ettersendelse/Pleietrengende.java diff --git a/ettersendelse/src/main/java/no/nav/k9/ettersendelse/Ettersendelse.java b/ettersendelse/src/main/java/no/nav/k9/ettersendelse/Ettersendelse.java index da973389..e40806ce 100644 --- a/ettersendelse/src/main/java/no/nav/k9/ettersendelse/Ettersendelse.java +++ b/ettersendelse/src/main/java/no/nav/k9/ettersendelse/Ettersendelse.java @@ -32,36 +32,45 @@ public class Ettersendelse implements Innsending { @Valid private final Versjon versjon; - @JsonProperty(value="mottattDato") @Valid @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX", timezone = "UTC") private final ZonedDateTime mottattDato; - @JsonProperty(value="søker", required = true) @Valid @NotNull private final Søker søker; - @JsonProperty(value="ytelse", required = true) @Valid @NotNull private final Ytelse ytelse; + @JsonProperty(value="pleietrengende") + @Valid + private final Pleietrengende pleietrengende; + + @JsonProperty(value="type") //TODO set required = true og @NotNull + @Valid + private final EttersendelseType type; + @JsonCreator private Ettersendelse( - @JsonProperty("søknadId") SøknadId søknadId, - @JsonProperty("versjon") Versjon versjon, - @JsonProperty("mottattDato") ZonedDateTime mottattDato, - @JsonProperty("søker") Søker søker, - @JsonProperty("ytelse") Ytelse ytelse) { + @JsonProperty("søknadId") SøknadId søknadId, + @JsonProperty("versjon") Versjon versjon, + @JsonProperty("mottattDato") ZonedDateTime mottattDato, + @JsonProperty("søker") Søker søker, + @JsonProperty("ytelse") Ytelse ytelse, + @JsonProperty("pleietrengende") Pleietrengende pleietrengende, + @JsonProperty("type") EttersendelseType type) { this.søknadId = søknadId; this.versjon = versjon; this.mottattDato = mottattDato; this.søker = søker; this.ytelse = ytelse; + this.pleietrengende = pleietrengende; + this.type = type; } @Override @@ -87,7 +96,15 @@ public Versjon getVersjon() { public Ytelse getYtelse() { return ytelse; } - + + public Pleietrengende getPleietrengende() { + return pleietrengende; + } + + public EttersendelseType getType() { + return type; + } + public static Builder builder() { return new Builder(); } @@ -122,6 +139,8 @@ public static final class Builder { private ZonedDateTime mottattDato; private Søker søker; private Ytelse ytelse; + private Pleietrengende pleietrengende; + private EttersendelseType type; private Builder() { } @@ -146,20 +165,32 @@ public Builder ytelse(Ytelse ytelse) { return this; } + public Builder pleietrengende(Pleietrengende pleietrengende) { + this.pleietrengende = pleietrengende; + return this; + } + + public Builder type(EttersendelseType type) { + this.type = type; + return this; + } + public Builder json(String json) { this.json = json; return this; } public Ettersendelse build() { - Ettersendelse ettetrsendelse = (json == null) ? new Ettersendelse( - søknadId, - versjon, - mottattDato, - søker, - ytelse) : SerDes.deserialize(json); - validator.forsikreValidert(ettetrsendelse); - return ettetrsendelse; + Ettersendelse ettersendelse = (json == null) ? new Ettersendelse( + søknadId, + versjon, + mottattDato, + søker, + ytelse, + pleietrengende, + type) : SerDes.deserialize(json); + validator.forsikreValidert(ettersendelse); + return ettersendelse; } } } diff --git a/ettersendelse/src/main/java/no/nav/k9/ettersendelse/EttersendelseType.java b/ettersendelse/src/main/java/no/nav/k9/ettersendelse/EttersendelseType.java new file mode 100644 index 00000000..f486f825 --- /dev/null +++ b/ettersendelse/src/main/java/no/nav/k9/ettersendelse/EttersendelseType.java @@ -0,0 +1,9 @@ +package no.nav.k9.ettersendelse; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; + +@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY) +public enum EttersendelseType { + LEGEERKLÆRING, + ANNET +} diff --git a/ettersendelse/src/main/java/no/nav/k9/ettersendelse/EttersendelseValidator.java b/ettersendelse/src/main/java/no/nav/k9/ettersendelse/EttersendelseValidator.java index fed5651f..ef97da68 100644 --- a/ettersendelse/src/main/java/no/nav/k9/ettersendelse/EttersendelseValidator.java +++ b/ettersendelse/src/main/java/no/nav/k9/ettersendelse/EttersendelseValidator.java @@ -20,6 +20,7 @@ public List valider(Ettersendelse ettersendelse) { validerMottattDato(ettersendelse.getMottattDato(), feil); validerSøker(ettersendelse.getSøker(), feil); validerYtelse(ettersendelse.getYtelse(), feil); + //TODO valider type og pleietrengende når feltene tas i bruk return feil; } diff --git a/ettersendelse/src/main/java/no/nav/k9/ettersendelse/Pleietrengende.java b/ettersendelse/src/main/java/no/nav/k9/ettersendelse/Pleietrengende.java new file mode 100644 index 00000000..aa309eef --- /dev/null +++ b/ettersendelse/src/main/java/no/nav/k9/ettersendelse/Pleietrengende.java @@ -0,0 +1,57 @@ +package no.nav.k9.ettersendelse; + +import java.util.Objects; + +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 jakarta.validation.Valid; +import jakarta.validation.constraints.AssertTrue; +import jakarta.validation.constraints.NotNull; +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 PersonIdent getPersonIdent() { + return norskIdentitetsnummer; + } + + @AssertTrue(message = "norskIdentitetsnummer må være satt") + private boolean isOk() { + return norskIdentitetsnummer != null && norskIdentitetsnummer.getVerdi() != null; + } + + @Override + public int hashCode() { + return Objects.hash(norskIdentitetsnummer); + } + + @Override + public boolean equals(Object obj) { + if (obj == this) + return true; + if (obj == null || !getClass().equals(obj.getClass())) + return false; + var other = (Pleietrengende) obj; + return Objects.equals(getPersonIdent(), other.getPersonIdent()); + } +} diff --git a/ettersendelse/src/test/java/no/nav/k9/ettersendelse/TestUtils.java b/ettersendelse/src/test/java/no/nav/k9/ettersendelse/TestUtils.java index 873bbb33..6213eeaa 100644 --- a/ettersendelse/src/test/java/no/nav/k9/ettersendelse/TestUtils.java +++ b/ettersendelse/src/test/java/no/nav/k9/ettersendelse/TestUtils.java @@ -25,6 +25,8 @@ static Ettersendelse.Builder komplettBuilder() { .søker(new Søker(NorskIdentitetsnummer.of("11111111111"))) .mottattDato(ZonedDateTime.parse("2019-10-20T07:15:36.124Z")) .søknadId(SøknadId.of("123-123-123")) - .ytelse(Ytelse.valueOf("PLEIEPENGER_SYKT_BARN")); + .ytelse(Ytelse.valueOf("PLEIEPENGER_SYKT_BARN")) + .pleietrengende(new Pleietrengende(NorskIdentitetsnummer.of("22222222222"))) + .type(EttersendelseType.ANNET); } } diff --git a/ettersendelse/src/test/resources/ettersendelse.json b/ettersendelse/src/test/resources/ettersendelse.json index 07a8c577..047f3378 100644 --- a/ettersendelse/src/test/resources/ettersendelse.json +++ b/ettersendelse/src/test/resources/ettersendelse.json @@ -5,5 +5,9 @@ "søker": { "norskIdentitetsnummer": "11111111111" }, - "ytelse": "PLEIEPENGER_SYKT_BARN" + "ytelse": "PLEIEPENGER_SYKT_BARN", + "pleietrengende": { + "norskIdentitetsnummer": "22222222222" + }, + "type": "ANNET" } \ No newline at end of file