Skip to content

Commit c9971a8

Browse files
authored
TFP-5383: Datointerval for avtaler og permisjoner må gjøres nullsafe … (#2544)
TFP-5383: Datointerval for avtaler og permisjoner må gjøres nullsafe før LocaldateSegmenter
1 parent c7651f4 commit c9971a8

File tree

1 file changed

+28
-14
lines changed

1 file changed

+28
-14
lines changed

domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/iay/tjeneste/dto/arbeidsforhold/ArbeidsforholdDtoTjeneste.java

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import no.nav.fpsak.tidsserie.LocalDateTimeline;
3535
import no.nav.vedtak.konfig.Tid;
3636

37+
import static no.nav.abakus.iaygrunnlag.kodeverk.PermisjonsbeskrivelseType.finnForKodeverkEiersKode;
38+
3739
@ApplicationScoped
3840
public class ArbeidsforholdDtoTjeneste {
3941

@@ -74,38 +76,50 @@ private ArbeidsforholdDto mapTilArbeidsforholdMedPermisjoner(Map.Entry<Arbeidsfo
7476
ArbeidsforholdDto dto = new ArbeidsforholdDto(arbeidsgiver, arbeidType);
7577
dto.setArbeidsforholdId(mapArbeidsforholdId(key.getArbeidsforholdId()));
7678
dto.setAnsettelsesperiode(mapAnsettelsesPerioder(arbeidsforholdEntry.getValue()));
77-
dto.setArbeidsavtaler(arbeidsforholdEntry.getValue().stream().map(this::mapArbeidsavtaler).flatMap(Collection::stream).toList());
78-
dto.setPermisjoner(arbeidsforholdEntry.getValue().stream().map(this::mapPermisjoner).flatMap(Collection::stream).toList());
79+
dto.setArbeidsavtaler(tilArbeidsavtaler(arbeidsforholdEntry.getValue()));
80+
dto.setPermisjoner(tilPermisjoner(arbeidsforholdEntry.getValue()));
7981
return dto;
8082
}
8183

84+
private List<PermisjonDto> tilPermisjoner(List<Arbeidsforhold> arbeidsforhold) {
85+
return arbeidsforhold.stream().map(this::mapPermisjoner).flatMap(Collection::stream).toList();
86+
}
87+
88+
private List<ArbeidsavtaleDto> tilArbeidsavtaler(List<Arbeidsforhold> arbeidsforhold) {
89+
return arbeidsforhold.stream().map(this::mapArbeidsavtaler).flatMap(Collection::stream).toList();
90+
}
91+
8292
private List<ArbeidsavtaleDto> mapArbeidsavtaler(Arbeidsforhold arbeidsforhold) {
83-
LocalDateInterval ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom());
84-
var tidslinje = arbeidsforhold.getArbeidsavtaler().stream()
93+
var ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom());
94+
var arbeidsavtalerTidlinje = arbeidsforhold.getArbeidsavtaler().stream()
8595
.filter(arbeidsavtale -> !arbeidsavtale.getErAnsettelsesPerioden())
8696
.filter(arbeidsavtale -> arbeidsavtale.getStillingsprosent() != null)
87-
.map(a -> new LocalDateSegment<>(a.getArbeidsavtaleFom(), a.getArbeidsavtaleTom(), a.getStillingsprosent()))
97+
.map(a -> new LocalDateSegment<>(safeFom(a.getArbeidsavtaleFom()), safeTom(a.getArbeidsavtaleTom()), a.getStillingsprosent()))
8898
.collect(Collectors.collectingAndThen(Collectors.toList(), LocalDateTimeline::new));
89-
return tidslinje.intersection(ansettelse).stream().map(s -> new ArbeidsavtaleDto(new Periode(safeFom(s.getFom()), safeTom(s.getTom())), s.getValue())).toList();
99+
return arbeidsavtalerTidlinje.intersection(ansettelse).stream()
100+
.map(s -> new ArbeidsavtaleDto(new Periode(s.getFom(), s.getTom()), s.getValue()))
101+
.toList();
90102
}
91103

92104
private List<PermisjonDto> mapPermisjoner(Arbeidsforhold arbeidsforhold) {
93-
LocalDateInterval ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom());
94-
var tidslinje = arbeidsforhold.getPermisjoner()
95-
.stream()
105+
var ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom());
106+
var permisjonTidslinje = arbeidsforhold.getPermisjoner().stream()
96107
.filter(permisjon -> permisjon.getPermisjonsprosent() != null)
97-
.map(p -> new LocalDateSegment<>(p.getPermisjonFom(), p.getPermisjonTom(),
108+
.map(p -> new LocalDateSegment<>(safeFom(p.getPermisjonFom()), safeTom(p.getPermisjonTom()),
98109
new PermisjonTidslinjeObjekt(p.getPermisjonsprosent(), p.getPermisjonsÅrsak())))
99110
.collect(Collectors.collectingAndThen(Collectors.toList(), LocalDateTimeline::new));
100111

101-
return tidslinje.intersection(ansettelse)
112+
return permisjonTidslinje.intersection(ansettelse)
102113
.stream()
103-
.map(s -> new PermisjonDto(new Periode(safeFom(s.getFom()), safeTom(s.getTom())),
104-
PermisjonsbeskrivelseType.finnForKodeverkEiersKode(s.getValue().permisjonsÅrsak))
105-
.medProsentsats(s.getValue().permisjonsprosent()))
114+
.map(ArbeidsforholdDtoTjeneste::tilPermisjonDto)
106115
.toList();
107116
}
108117

118+
private static PermisjonDto tilPermisjonDto(LocalDateSegment<PermisjonTidslinjeObjekt> s) {
119+
return new PermisjonDto(new Periode(s.getFom(), s.getTom()), finnForKodeverkEiersKode(s.getValue().permisjonsÅrsak))
120+
.medProsentsats(s.getValue().permisjonsprosent());
121+
}
122+
109123
private static LocalDate safeFom(LocalDate fom) {
110124
return fom != null ? fom : Tid.TIDENES_BEGYNNELSE;
111125
}

0 commit comments

Comments
 (0)