Skip to content

Commit 6cd4ea2

Browse files
authored
Pleiepenger i livets sluttfase - legger til nye felter (#249)
1 parent 3569a40 commit 6cd4ea2

File tree

3 files changed

+54
-11
lines changed

3 files changed

+54
-11
lines changed

soknad/src/main/java/no/nav/k9/søknad/ytelse/pls/v1/PleiepengerLivetsSluttfaseYtelseValidator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public List<Feil> valider(PleipengerLivetsSluttfase søknad) {
2929
List<Feil> feilene = new ArrayList<>();
3030
try {
3131
if (søknad.getSøknadsperiode() == null) {
32-
feilene.add(lagFeil("arbeidstid", "påkrevd", "det finnes ingen søknadsperiode"));
32+
feilene.add(lagFeil("søknadsperiode", "påkrevd", "det finnes ingen søknadsperiode"));
3333
}
3434
feilene.addAll(validerPerioderErLukketOgGyldig(søknad.getBosteder().getPerioder(), "bosteder.perioder"));
3535
feilene.addAll(validerPerioderErLukketOgGyldig(søknad.getBosteder().getPerioderSomSkalSlettes(), "bosteder.perioderSomSkalSlettes"));
@@ -38,6 +38,7 @@ public List<Feil> valider(PleipengerLivetsSluttfase søknad) {
3838
validerArbeidstid(søknad);
3939
validerOpptjening(søknad, feilene);
4040
validerTrekkKravPerioder(søknad, feilene);
41+
//TODO valider søknadsperiode(overlapp), uttak
4142
} catch (ValideringsAvbrytendeFeilException valideringsAvbrytendeFeilException) {
4243
feilene.addAll(valideringsAvbrytendeFeilException.getFeilList());
4344
}

soknad/src/main/java/no/nav/k9/søknad/ytelse/pls/v1/PleipengerLivetsSluttfase.java

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import javax.validation.constraints.NotNull;
1414

1515
import com.fasterxml.jackson.annotation.JsonAutoDetect;
16+
import com.fasterxml.jackson.annotation.JsonFormat;
1617
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
1718
import com.fasterxml.jackson.annotation.JsonProperty;
1819
import com.fasterxml.jackson.annotation.JsonTypeName;
@@ -24,6 +25,7 @@
2425
import no.nav.k9.søknad.felles.type.Person;
2526
import no.nav.k9.søknad.ytelse.Ytelse;
2627
import no.nav.k9.søknad.ytelse.YtelseValidator;
28+
import no.nav.k9.søknad.ytelse.psb.v1.Uttak;
2729
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstaker;
2830
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstid;
2931
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidInfo;
@@ -39,9 +41,10 @@ public class PleipengerLivetsSluttfase implements Ytelse {
3941
private Pleietrengende pleietrengende;
4042

4143
@Valid
42-
@NotNull
43-
@JsonProperty(value = "arbeidstid", required = true)
44-
private Arbeidstid arbeidstid = new Arbeidstid();
44+
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
45+
@JsonProperty(value = "søknadsperiode" /* ,required = true TODO skal skrus på før lansering */)
46+
//@NotNull --TODO skal bli NotNull før lansering
47+
private List<Periode> søknadsperiode = new ArrayList<>();
4548

4649
@Valid
4750
@JsonProperty(value = "trekkKravPerioder", required = true)
@@ -60,6 +63,15 @@ public class PleipengerLivetsSluttfase implements Ytelse {
6063
@JsonProperty(value = "utenlandsopphold", required = true)
6164
private Utenlandsopphold utenlandsopphold = new Utenlandsopphold();
6265

66+
@Valid
67+
@NotNull
68+
@JsonProperty(value = "arbeidstid", required = true)
69+
private Arbeidstid arbeidstid = new Arbeidstid();
70+
71+
@Valid
72+
@JsonProperty(value = "uttak"/* ,required = true TODO skal skrus på før lansering */)
73+
private Uttak uttak = new Uttak(); //TODO vurder å lage egen variant for å ha riktigere navngiving
74+
6375
@Override
6476
public Type getType() {
6577
return Type.PLEIEPENGER_LIVETS_SLUTTFASE;
@@ -86,13 +98,20 @@ public Person getAnnenPart() {
8698

8799
@Override
88100
public Periode getSøknadsperiode() {
101+
if (!søknadsperiode.isEmpty()) {
102+
return new Periode(
103+
søknadsperiode.stream().map(Periode::getFraOgMed).min(Comparator.naturalOrder()).orElseThrow(),
104+
søknadsperiode.stream().map(Periode::getTilOgMed).max(Comparator.naturalOrder()).orElseThrow()
105+
);
106+
}
107+
108+
//TODO deprecated, erstattes av søknadsperiode (se over), fjernes før lansering
89109
List<ArbeidstidInfo> fraværsperioder = new ArrayList<>();
90110
arbeidstid.getFrilanserArbeidstidInfo().ifPresent(fraværsperioder::add);
91111
arbeidstid.getSelvstendigNæringsdrivendeArbeidstidInfo().ifPresent(fraværsperioder::add);
92112
arbeidstid.getArbeidstakerList().stream()
93113
.map(Arbeidstaker::getArbeidstidInfo)
94114
.forEach(fraværsperioder::add);
95-
96115
List<Periode> allePerioder = fraværsperioder.stream()
97116
.flatMap(ai -> ai.getPerioder().keySet().stream())
98117
.collect(Collectors.toList());
@@ -104,15 +123,14 @@ public Person getAnnenPart() {
104123
.map(Periode::getTilOgMed)
105124
.filter(Objects::nonNull)
106125
.max(Comparator.naturalOrder());
107-
108126
if (fom.isPresent() && tom.isPresent()) {
109127
return new Periode(fom.get(), tom.get());
110128
}
111129
return null;
112130
}
113131

114-
public Arbeidstid getArbeidstid() {
115-
return arbeidstid;
132+
public List<Periode> getSøknadsperiodeList() {
133+
return søknadsperiode == null ? null : Collections.unmodifiableList(søknadsperiode);
116134
}
117135

118136
public OpptjeningAktivitet getOpptjeningAktivitet() {
@@ -131,13 +149,26 @@ public List<Periode> getTrekkKravPerioder() {
131149
return Collections.unmodifiableList(trekkKravPerioder);
132150
}
133151

152+
public Arbeidstid getArbeidstid() {
153+
return arbeidstid;
154+
}
155+
156+
public Uttak getUttak() {
157+
return uttak;
158+
}
159+
134160
public PleipengerLivetsSluttfase medPleietrengende(Pleietrengende pleietrengende) {
135161
this.pleietrengende = Objects.requireNonNull(pleietrengende, "pleietrengende");
136162
return this;
137163
}
138164

139-
public PleipengerLivetsSluttfase medArbeidstid(Arbeidstid arbeidstid) {
140-
this.arbeidstid = Objects.requireNonNull(arbeidstid, "arbeidstid");
165+
public PleipengerLivetsSluttfase medSøknadsperiode(List<Periode> søknadsperiodeList) {
166+
this.søknadsperiode.addAll(Objects.requireNonNull(søknadsperiodeList, "søknadsperiodeList"));
167+
return this;
168+
}
169+
170+
public PleipengerLivetsSluttfase medSøknadsperiode(Periode søknadsperiode) {
171+
this.søknadsperiode.add(Objects.requireNonNull(søknadsperiode, "søknadsperiode"));
141172
return this;
142173
}
143174

@@ -160,4 +191,15 @@ public PleipengerLivetsSluttfase leggTilTrekkKravPerioder(List<Periode> trekkKra
160191
this.trekkKravPerioder.addAll(Objects.requireNonNull(trekkKravPerioder, "trekkKravPerioder"));
161192
return this;
162193
}
194+
195+
public PleipengerLivetsSluttfase medArbeidstid(Arbeidstid arbeidstid) {
196+
this.arbeidstid = Objects.requireNonNull(arbeidstid, "arbeidstid");
197+
return this;
198+
}
199+
200+
public PleipengerLivetsSluttfase medUttak(Uttak uttak) {
201+
this.uttak = Objects.requireNonNull(uttak, "uttak");
202+
return this;
203+
}
204+
163205
}

soknad/src/test/java/no/nav/k9/søknad/ytelse/pls/v1/SøknadTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public void bostederKanIkkeHaInvertertePerioder() {
124124
var søknad = SøknadEksempel.søknad(tomYtelse);
125125

126126
var feil = verifyHarFeil(søknad);
127-
feilInneholder(feil, "ytelse.arbeidstid", "påkrevd", "det finnes ingen søknadsperiode");
127+
feilInneholder(feil, "ytelse.søknadsperiode", "påkrevd", "det finnes ingen søknadsperiode");
128128
}
129129

130130

0 commit comments

Comments
 (0)