Skip to content

Commit 4994a73

Browse files
authored
Utvider Ettersendelse med pleietrengende og type (#422)
* Utvider Ettersendelse med pleietrengende og type * Not Notnull * TODO
1 parent 7ee3193 commit 4994a73

File tree

6 files changed

+123
-19
lines changed

6 files changed

+123
-19
lines changed

ettersendelse/src/main/java/no/nav/k9/ettersendelse/Ettersendelse.java

+48-17
Original file line numberDiff line numberDiff line change
@@ -32,36 +32,45 @@ public class Ettersendelse implements Innsending {
3232
@Valid
3333
private final Versjon versjon;
3434

35-
3635
@JsonProperty(value="mottattDato")
3736
@Valid
3837
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX", timezone = "UTC")
3938
private final ZonedDateTime mottattDato;
4039

41-
4240
@JsonProperty(value="søker", required = true)
4341
@Valid
4442
@NotNull
4543
private final Søker søker;
4644

47-
4845
@JsonProperty(value="ytelse", required = true)
4946
@Valid
5047
@NotNull
5148
private final Ytelse ytelse;
5249

50+
@JsonProperty(value="pleietrengende")
51+
@Valid
52+
private final Pleietrengende pleietrengende;
53+
54+
@JsonProperty(value="type") //TODO set required = true og @NotNull
55+
@Valid
56+
private final EttersendelseType type;
57+
5358
@JsonCreator
5459
private Ettersendelse(
55-
@JsonProperty("søknadId") SøknadId søknadId,
56-
@JsonProperty("versjon") Versjon versjon,
57-
@JsonProperty("mottattDato") ZonedDateTime mottattDato,
58-
@JsonProperty("søker") Søker søker,
59-
@JsonProperty("ytelse") Ytelse ytelse) {
60+
@JsonProperty("søknadId") SøknadId søknadId,
61+
@JsonProperty("versjon") Versjon versjon,
62+
@JsonProperty("mottattDato") ZonedDateTime mottattDato,
63+
@JsonProperty("søker") Søker søker,
64+
@JsonProperty("ytelse") Ytelse ytelse,
65+
@JsonProperty("pleietrengende") Pleietrengende pleietrengende,
66+
@JsonProperty("type") EttersendelseType type) {
6067
this.søknadId = søknadId;
6168
this.versjon = versjon;
6269
this.mottattDato = mottattDato;
6370
this.søker = søker;
6471
this.ytelse = ytelse;
72+
this.pleietrengende = pleietrengende;
73+
this.type = type;
6574
}
6675

6776
@Override
@@ -87,7 +96,15 @@ public Versjon getVersjon() {
8796
public Ytelse getYtelse() {
8897
return ytelse;
8998
}
90-
99+
100+
public Pleietrengende getPleietrengende() {
101+
return pleietrengende;
102+
}
103+
104+
public EttersendelseType getType() {
105+
return type;
106+
}
107+
91108
public static Builder builder() {
92109
return new Builder();
93110
}
@@ -122,6 +139,8 @@ public static final class Builder {
122139
private ZonedDateTime mottattDato;
123140
private Søker søker;
124141
private Ytelse ytelse;
142+
private Pleietrengende pleietrengende;
143+
private EttersendelseType type;
125144

126145
private Builder() {
127146
}
@@ -146,20 +165,32 @@ public Builder ytelse(Ytelse ytelse) {
146165
return this;
147166
}
148167

168+
public Builder pleietrengende(Pleietrengende pleietrengende) {
169+
this.pleietrengende = pleietrengende;
170+
return this;
171+
}
172+
173+
public Builder type(EttersendelseType type) {
174+
this.type = type;
175+
return this;
176+
}
177+
149178
public Builder json(String json) {
150179
this.json = json;
151180
return this;
152181
}
153182

154183
public Ettersendelse build() {
155-
Ettersendelse ettetrsendelse = (json == null) ? new Ettersendelse(
156-
søknadId,
157-
versjon,
158-
mottattDato,
159-
søker,
160-
ytelse) : SerDes.deserialize(json);
161-
validator.forsikreValidert(ettetrsendelse);
162-
return ettetrsendelse;
184+
Ettersendelse ettersendelse = (json == null) ? new Ettersendelse(
185+
søknadId,
186+
versjon,
187+
mottattDato,
188+
søker,
189+
ytelse,
190+
pleietrengende,
191+
type) : SerDes.deserialize(json);
192+
validator.forsikreValidert(ettersendelse);
193+
return ettersendelse;
163194
}
164195
}
165196
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package no.nav.k9.ettersendelse;
2+
3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
4+
5+
@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY)
6+
public enum EttersendelseType {
7+
LEGEERKLÆRING,
8+
ANNET
9+
}

ettersendelse/src/main/java/no/nav/k9/ettersendelse/EttersendelseValidator.java

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public List<Feil> valider(Ettersendelse ettersendelse) {
2020
validerMottattDato(ettersendelse.getMottattDato(), feil);
2121
validerSøker(ettersendelse.getSøker(), feil);
2222
validerYtelse(ettersendelse.getYtelse(), feil);
23+
//TODO valider type og pleietrengende når feltene tas i bruk
2324

2425
return feil;
2526
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package no.nav.k9.ettersendelse;
2+
3+
import java.util.Objects;
4+
5+
import com.fasterxml.jackson.annotation.JsonAlias;
6+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
7+
import com.fasterxml.jackson.annotation.JsonCreator;
8+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
9+
import com.fasterxml.jackson.annotation.JsonProperty;
10+
11+
import jakarta.validation.Valid;
12+
import jakarta.validation.constraints.AssertTrue;
13+
import jakarta.validation.constraints.NotNull;
14+
import no.nav.k9.søknad.felles.type.NorskIdentitetsnummer;
15+
import no.nav.k9.søknad.felles.type.Person;
16+
import no.nav.k9.søknad.felles.type.PersonIdent;
17+
18+
@JsonIgnoreProperties(ignoreUnknown = true)
19+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
20+
public class Pleietrengende implements Person {
21+
22+
@JsonAlias({ "fødselsnummer", "norskIdentifikator", "identitetsnummer", "fnr" })
23+
@JsonProperty(value = "norskIdentitetsnummer", required = true)
24+
@NotNull
25+
@Valid
26+
private NorskIdentitetsnummer norskIdentitetsnummer;
27+
28+
@JsonCreator
29+
public Pleietrengende(@JsonProperty(value = "norskIdentitetsnummer", required = true) @JsonAlias({ "fødselsnummer", "norskIdentifikator", "identitetsnummer", "fnr" }) NorskIdentitetsnummer norskIdentitetsnummer) {
30+
this.norskIdentitetsnummer = Objects.requireNonNull(norskIdentitetsnummer, "norskIdentitetsnummer");
31+
}
32+
33+
@Override
34+
public PersonIdent getPersonIdent() {
35+
return norskIdentitetsnummer;
36+
}
37+
38+
@AssertTrue(message = "norskIdentitetsnummer må være satt")
39+
private boolean isOk() {
40+
return norskIdentitetsnummer != null && norskIdentitetsnummer.getVerdi() != null;
41+
}
42+
43+
@Override
44+
public int hashCode() {
45+
return Objects.hash(norskIdentitetsnummer);
46+
}
47+
48+
@Override
49+
public boolean equals(Object obj) {
50+
if (obj == this)
51+
return true;
52+
if (obj == null || !getClass().equals(obj.getClass()))
53+
return false;
54+
var other = (Pleietrengende) obj;
55+
return Objects.equals(getPersonIdent(), other.getPersonIdent());
56+
}
57+
}

ettersendelse/src/test/java/no/nav/k9/ettersendelse/TestUtils.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ static Ettersendelse.Builder komplettBuilder() {
2525
.søker(new Søker(NorskIdentitetsnummer.of("11111111111")))
2626
.mottattDato(ZonedDateTime.parse("2019-10-20T07:15:36.124Z"))
2727
.søknadId(SøknadId.of("123-123-123"))
28-
.ytelse(Ytelse.valueOf("PLEIEPENGER_SYKT_BARN"));
28+
.ytelse(Ytelse.valueOf("PLEIEPENGER_SYKT_BARN"))
29+
.pleietrengende(new Pleietrengende(NorskIdentitetsnummer.of("22222222222")))
30+
.type(EttersendelseType.ANNET);
2931
}
3032
}

ettersendelse/src/test/resources/ettersendelse.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,9 @@
55
"søker": {
66
"norskIdentitetsnummer": "11111111111"
77
},
8-
"ytelse": "PLEIEPENGER_SYKT_BARN"
8+
"ytelse": "PLEIEPENGER_SYKT_BARN",
9+
"pleietrengende": {
10+
"norskIdentitetsnummer": "22222222222"
11+
},
12+
"type": "ANNET"
913
}

0 commit comments

Comments
 (0)