diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/tjenester/DomeneobjektProvider.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/tjenester/DomeneobjektProvider.java index 314ab21aa..2f550e016 100644 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/tjenester/DomeneobjektProvider.java +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/tjenester/DomeneobjektProvider.java @@ -24,9 +24,7 @@ import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.MottattDokumentDtoMapper; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.StønadskontoDtoMapper; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.SøknadDtoMapper; -import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.TilkjentYtelseDiffSjekk; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.TilkjentYtelseDtoMapper; -import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.TilkjentYtelseDtoMapperV2; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.UttakDtoMapper; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.UttakSvpDtoMapper; import no.nav.foreldrepenger.fpformidling.klage.Klage; @@ -93,39 +91,23 @@ public Optional hentOriginalBehandlingHvisFinnes(Behandling behandli } public TilkjentYtelseEngangsstønad hentTilkjentYtelseEngangsstønad(Behandling behandling) { - var res = TilkjentYtelseDtoMapper.mapTilkjentYtelseESFraDto( - behandlingRestKlient.hentTilkjentYtelseEngangsstønad(behandling.getResourceLinker())); - var resV2 = TilkjentYtelseDtoMapperV2.mapTilkjentYtelseESFraDto( - behandlingRestKlient.hentTilkjentYtelseEngangsstønadV2(behandling.getFormidlingRessurser())); - TilkjentYtelseDiffSjekk.loggDiff(res, resV2); - return res; + return TilkjentYtelseDtoMapper.mapTilkjentYtelseESFraDto( + behandlingRestKlient.hentTilkjentYtelseEngangsstønad(behandling.getFormidlingRessurser())); } public Optional hentTilkjentYtelseESHvisFinnes(Behandling behandling) { - var res = behandlingRestKlient.hentTilkjentYtelseEngangsstønadHvisFinnes(behandling.getResourceLinker()) + return behandlingRestKlient.hentTilkjentYtelseEngangsstønadHvisFinnes(behandling.getFormidlingRessurser()) .map(TilkjentYtelseDtoMapper::mapTilkjentYtelseESFraDto); - var resV2 = behandlingRestKlient.hentTilkjentYtelseEngangsstønadHvisFinnesV2(behandling.getFormidlingRessurser()) - .map(TilkjentYtelseDtoMapperV2::mapTilkjentYtelseESFraDto); - TilkjentYtelseDiffSjekk.loggDiff(res.orElse(null), resV2.orElse(null)); - return res; } public TilkjentYtelseForeldrepenger hentTilkjentYtelseForeldrepenger(Behandling behandling) { - var res = TilkjentYtelseDtoMapper.mapTilkjentYtelseFPFraDto( - behandlingRestKlient.hentTilkjentYtelseForeldrepenger(behandling.getResourceLinker()), arbeidsgiverTjeneste::hentArbeidsgiverNavn); - var resV2 = TilkjentYtelseDtoMapperV2.mapTilkjentYtelseDagytelseFraDto( - behandlingRestKlient.hentTilkjentYtelseForeldrepengerV2(behandling.getFormidlingRessurser()), arbeidsgiverTjeneste::hentArbeidsgiverNavn); - TilkjentYtelseDiffSjekk.loggDiff(res, resV2); - return res; + return TilkjentYtelseDtoMapper.mapTilkjentYtelseDagytelseFraDto( + behandlingRestKlient.hentTilkjentYtelseForeldrepenger(behandling.getFormidlingRessurser()), arbeidsgiverTjeneste::hentArbeidsgiverNavn); } public Optional hentTilkjentYtelseFPHvisFinnes(Behandling behandling) { - var res = behandlingRestKlient.hentTilkjentYtelseForeldrepengerHvisFinnes(behandling.getResourceLinker()) - .map(r -> TilkjentYtelseDtoMapper.mapTilkjentYtelseFPFraDto(r, arbeidsgiverTjeneste::hentArbeidsgiverNavn)); - var resV2 = behandlingRestKlient.hentTilkjentYtelseForeldrepengerHvisFinnesV2(behandling.getFormidlingRessurser()) - .map(r -> TilkjentYtelseDtoMapperV2.mapTilkjentYtelseDagytelseFraDto(r, arbeidsgiverTjeneste::hentArbeidsgiverNavn)); - TilkjentYtelseDiffSjekk.loggDiff(res.orElse(null), resV2.orElse(null)); - return res; + return behandlingRestKlient.hentTilkjentYtelseForeldrepengerHvisFinnes(behandling.getFormidlingRessurser()) + .map(r -> TilkjentYtelseDtoMapper.mapTilkjentYtelseDagytelseFraDto(r, arbeidsgiverTjeneste::hentArbeidsgiverNavn)); } public FamilieHendelse hentFamiliehendelse(Behandling behandling) { diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/Behandlinger.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/Behandlinger.java index 563bc41ef..5bb758523 100644 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/Behandlinger.java +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/Behandlinger.java @@ -18,8 +18,6 @@ import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.klage.MottattKlagedokumentDto; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.personopplysning.VergeDto; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.soknad.SoknadBackendDto; -import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseEngangsstønadDto; -import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseMedUttaksplanDto; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.uttak.StartdatoUtsattDto; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.uttak.UttakResultatPerioderDto; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.uttak.YtelseFordelingDto; @@ -68,50 +66,25 @@ default Optional hentFamiliehendelseHvisFinnes(List< .flatMap(link -> hentDtoFraLink(link, FamilieHendelseGrunnlagDto.class)); } - default Optional hentTilkjentYtelseEngangsstønadHvisFinnes(List resourceLinker) { - return resourceLinker.stream() - .filter(dto -> "beregningsresultat-engangsstonad".equals(dto.getRel())) - .findFirst() - .flatMap(link -> hentDtoFraLink(link, TilkjentYtelseEngangsstønadDto.class)); - } - - default Optional hentTilkjentYtelseEngangsstønadHvisFinnesV2(List resourceLinker) { + default Optional hentTilkjentYtelseEngangsstønadHvisFinnes(List resourceLinker) { return resourceLinker.stream() .filter(dto -> "tilkjentytelse-engangsstonad".equals(dto.getRel())) .findFirst() .flatMap(link -> hentDtoFraLink(link, no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseEngangsstønadDto.class)); } - default TilkjentYtelseEngangsstønadDto hentTilkjentYtelseEngangsstønad(List resourceLinker) { + default no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseEngangsstønadDto hentTilkjentYtelseEngangsstønad(List resourceLinker) { return hentTilkjentYtelseEngangsstønadHvisFinnes(resourceLinker).orElseThrow( () -> new IllegalStateException("Klarte ikke hente Tilkjent ytelse engangsstønad for behandling: " + hentBehandlingId(resourceLinker))); } - default no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseEngangsstønadDto hentTilkjentYtelseEngangsstønadV2(List resourceLinker) { - return hentTilkjentYtelseEngangsstønadHvisFinnesV2(resourceLinker).orElseThrow( - () -> new IllegalStateException("Klarte ikke hente Tilkjent ytelse engangsstønad for behandling: " + hentBehandlingId(resourceLinker))); - } - - default TilkjentYtelseMedUttaksplanDto hentTilkjentYtelseForeldrepenger(List resourceLinker) { + default TilkjentYtelseDagytelseDto hentTilkjentYtelseForeldrepenger(List resourceLinker) { return hentTilkjentYtelseForeldrepengerHvisFinnes(resourceLinker).orElseThrow(() -> { throw new IllegalStateException("Klarte ikke hente Tilkjent ytelse foreldrepenger for behandling: " + hentBehandlingId(resourceLinker)); }); } - default TilkjentYtelseDagytelseDto hentTilkjentYtelseForeldrepengerV2(List resourceLinker) { - return hentTilkjentYtelseForeldrepengerHvisFinnesV2(resourceLinker).orElseThrow(() -> { - throw new IllegalStateException("Klarte ikke hente Tilkjent ytelse foreldrepenger for behandling: " + hentBehandlingId(resourceLinker)); - }); - } - - default Optional hentTilkjentYtelseForeldrepengerHvisFinnes(List resourceLinker) { - return resourceLinker.stream() - .filter(dto -> "beregningsresultat-dagytelse".equals(dto.getRel())) - .findFirst() - .flatMap(link -> hentDtoFraLink(link, TilkjentYtelseMedUttaksplanDto.class)); - } - - default Optional hentTilkjentYtelseForeldrepengerHvisFinnesV2(List resourceLinker) { + default Optional hentTilkjentYtelseForeldrepengerHvisFinnes(List resourceLinker) { return resourceLinker.stream() .filter(dto -> "tilkjentytelse-dagytelse".equals(dto.getRel())) .findFirst() diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelseAndelDto.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelseAndelDto.java deleted file mode 100644 index 1101898a9..000000000 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelseAndelDto.java +++ /dev/null @@ -1,9 +0,0 @@ -package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse; - -import no.nav.foreldrepenger.fpformidling.beregningsgrunnlag.AktivitetStatus; - -import java.math.BigDecimal; - -public record TilkjentYtelseAndelDto(String arbeidsgiverReferanse, Integer refusjon, Integer tilSoker, AktivitetStatus aktivitetStatus, - String arbeidsforholdId, BigDecimal stillingsprosent) { -} diff --git "a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelseEngangsst\303\270nadDto.java" "b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelseEngangsst\303\270nadDto.java" deleted file mode 100644 index 590cbdac4..000000000 --- "a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelseEngangsst\303\270nadDto.java" +++ /dev/null @@ -1,5 +0,0 @@ -package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse; - -public record TilkjentYtelseEngangsstønadDto(Long beregnetTilkjentYtelse) { - -} diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelseMedUttaksplanDto.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelseMedUttaksplanDto.java deleted file mode 100644 index 027f5e88f..000000000 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelseMedUttaksplanDto.java +++ /dev/null @@ -1,16 +0,0 @@ -package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse; - -import java.util.Arrays; - -public class TilkjentYtelseMedUttaksplanDto { - private TilkjentYtelsePeriodeDto[] perioder; - - public TilkjentYtelsePeriodeDto[] getPerioder() { - return Arrays.copyOf(perioder, perioder.length); - } - - public void setPerioder(TilkjentYtelsePeriodeDto[] perioder) { - this.perioder = perioder; - } - -} diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelsePeriodeDto.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelsePeriodeDto.java deleted file mode 100644 index a5f23b16d..000000000 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/dto/tilkjentytelse/TilkjentYtelsePeriodeDto.java +++ /dev/null @@ -1,43 +0,0 @@ -package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse; - -import java.time.LocalDate; -import java.util.Arrays; - -public class TilkjentYtelsePeriodeDto { - private LocalDate fom; - private LocalDate tom; - private int dagsats; - private TilkjentYtelseAndelDto[] andeler; - - public LocalDate getFom() { - return fom; - } - - public LocalDate getTom() { - return tom; - } - - public int getDagsats() { - return dagsats; - } - - public TilkjentYtelseAndelDto[] getAndeler() { - return Arrays.copyOf(andeler, andeler.length); - } - - public void setFom(LocalDate fom) { - this.fom = fom; - } - - public void setTom(LocalDate tom) { - this.tom = tom; - } - - public void setDagsats(int dagsats) { - this.dagsats = dagsats; - } - - public void setAndeler(TilkjentYtelseAndelDto[] andeler) { - this.andeler = andeler; - } -} diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapper.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapper.java index d3ef0a66c..ae10e7857 100644 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapper.java +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapper.java @@ -1,15 +1,10 @@ package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.function.UnaryOperator; import no.nav.foreldrepenger.fpformidling.beregningsgrunnlag.AktivitetStatus; -import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseAndelDto; -import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseEngangsstønadDto; -import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseMedUttaksplanDto; -import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelsePeriodeDto; import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.sortering.PeriodeComparator; import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseAndel; import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseEngangsstønad; @@ -18,6 +13,8 @@ import no.nav.foreldrepenger.fpformidling.typer.ArbeidsforholdRef; import no.nav.foreldrepenger.fpformidling.typer.DatoIntervall; import no.nav.foreldrepenger.fpformidling.virksomhet.Arbeidsgiver; +import no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseDagytelseDto; +import no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseEngangsstønadDto; public class TilkjentYtelseDtoMapper { @@ -29,8 +26,9 @@ private TilkjentYtelseDtoMapper() { return new TilkjentYtelseEngangsstønad(dto.beregnetTilkjentYtelse()); } - public static TilkjentYtelseForeldrepenger mapTilkjentYtelseFPFraDto(TilkjentYtelseMedUttaksplanDto dto, UnaryOperator hentNavn) { - var tilkjentYtelsePerioder = Arrays.stream(dto.getPerioder()) + public static TilkjentYtelseForeldrepenger mapTilkjentYtelseDagytelseFraDto(TilkjentYtelseDagytelseDto dto, UnaryOperator hentNavn) { + var tilkjentYtelsePerioder = dto.perioder() + .stream() .map(p -> mapPeriodeFraDto(p, hentNavn)) .sorted(PeriodeComparator.TILKJENTYTELSERESULTAT) .toList(); @@ -38,22 +36,22 @@ public static TilkjentYtelseForeldrepenger mapTilkjentYtelseFPFraDto(TilkjentYte } - private static TilkjentYtelsePeriode mapPeriodeFraDto(TilkjentYtelsePeriodeDto dto, UnaryOperator hentNavn) { + private static TilkjentYtelsePeriode mapPeriodeFraDto(TilkjentYtelseDagytelseDto.TilkjentYtelsePeriodeDto dto, UnaryOperator hentNavn) { List andelListe = new ArrayList<>(); - for (var tilkjentYtelseAndelDto : dto.getAndeler()) { + for (var tilkjentYtelseAndelDto : dto.andeler()) { andelListe.add(mapAndelFraDto(tilkjentYtelseAndelDto, hentNavn)); } return TilkjentYtelsePeriode.ny() - .medDagsats((long) dto.getDagsats()) - .medPeriode(DatoIntervall.fraOgMedTilOgMed(dto.getFom(), dto.getTom())) + .medDagsats((long) dto.dagsats()) + .medPeriode(DatoIntervall.fraOgMedTilOgMed(dto.fom(), dto.tom())) .medAndeler(andelListe) .build(); } //Fpsak slår sammen andeler i dto, så vi må eventuelt splitte dem opp igjen - private static TilkjentYtelseAndel mapAndelFraDto(TilkjentYtelseAndelDto dto, UnaryOperator hentNavn) { + private static TilkjentYtelseAndel mapAndelFraDto(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto, UnaryOperator hentNavn) { return TilkjentYtelseAndel.ny() - .medAktivitetStatus(dto.aktivitetStatus()) + .medAktivitetStatus(mapAktivitetstatusFraKontrakt(dto.aktivitetstatus())) .medArbeidsforholdRef( dto.arbeidsforholdId() != null && !dto.arbeidsforholdId().isEmpty() ? ArbeidsforholdRef.ref(dto.arbeidsforholdId()) : null) .medArbeidsgiver(mapArbeidsgiverFraDto(dto, hentNavn)) @@ -65,14 +63,32 @@ private static TilkjentYtelseAndel mapAndelFraDto(TilkjentYtelseAndelDto dto, Un .build(); } - private static Arbeidsgiver mapArbeidsgiverFraDto(TilkjentYtelseAndelDto dto, UnaryOperator hentNavn) { - if (!AktivitetStatus.ARBEIDSTAKER.equals(dto.aktivitetStatus()) || dto.arbeidsgiverReferanse() == null) { + private static AktivitetStatus mapAktivitetstatusFraKontrakt(TilkjentYtelseDagytelseDto.Aktivitetstatus aktivitetstatus) { + return switch(aktivitetstatus) { + case ARBEIDSAVKLARINGSPENGER -> AktivitetStatus.ARBEIDSAVKLARINGSPENGER; + case ARBEIDSTAKER -> AktivitetStatus.ARBEIDSTAKER; + case DAGPENGER -> AktivitetStatus.DAGPENGER; + case FRILANSER -> AktivitetStatus.FRILANSER; + case MILITÆR_ELLER_SIVIL -> AktivitetStatus.MILITÆR_ELLER_SIVIL; + case SELVSTENDIG_NÆRINGSDRIVENDE -> AktivitetStatus.SELVSTENDIG_NÆRINGSDRIVENDE; + case BRUKERS_ANDEL -> AktivitetStatus.BRUKERS_ANDEL; + case KUN_YTELSE -> AktivitetStatus.KUN_YTELSE; + case TTLSTØTENDE_YTELSE -> AktivitetStatus.TTLSTØTENDE_YTELSE; + case VENTELØNN_VARTPENGER -> AktivitetStatus.VENTELØNN_VARTPENGER; + case KOMBINERT_AT_FL, KOMBINERT_AT_SN, KOMBINERT_FL_SN, + KOMBINERT_AT_FL_SN, UDEFINERT -> throw new IllegalStateException("Ugyldig aktivitetstatus for tilkjent ytelse andel: " + aktivitetstatus); + }; + } + + + private static Arbeidsgiver mapArbeidsgiverFraDto(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto, UnaryOperator hentNavn) { + if (!TilkjentYtelseDagytelseDto.Aktivitetstatus.ARBEIDSTAKER.equals(dto.aktivitetstatus()) || dto.arbeidsgiverReferanse() == null) { return null; } return new Arbeidsgiver(dto.arbeidsgiverReferanse(), hentNavn.apply(dto.arbeidsgiverReferanse())); } - private static int summerDagsats(TilkjentYtelseAndelDto dto) { + private static int summerDagsats(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto) { var sum = 0; if (dto.tilSoker() != null) { sum += dto.tilSoker(); @@ -82,5 +98,4 @@ private static int summerDagsats(TilkjentYtelseAndelDto dto) { } return sum; } - } diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapperV2.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapperV2.java deleted file mode 100644 index 0b97c020d..000000000 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/fpsak/mapper/TilkjentYtelseDtoMapperV2.java +++ /dev/null @@ -1,101 +0,0 @@ -package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.UnaryOperator; - -import no.nav.foreldrepenger.fpformidling.beregningsgrunnlag.AktivitetStatus; -import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.sortering.PeriodeComparator; -import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseAndel; -import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseEngangsstønad; -import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseForeldrepenger; -import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelsePeriode; -import no.nav.foreldrepenger.fpformidling.typer.ArbeidsforholdRef; -import no.nav.foreldrepenger.fpformidling.typer.DatoIntervall; -import no.nav.foreldrepenger.fpformidling.virksomhet.Arbeidsgiver; -import no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseDagytelseDto; -import no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseEngangsstønadDto; - -public class TilkjentYtelseDtoMapperV2 { - - private TilkjentYtelseDtoMapperV2() { - //CDI - } - - public static TilkjentYtelseEngangsstønad mapTilkjentYtelseESFraDto(TilkjentYtelseEngangsstønadDto dto) { - return new TilkjentYtelseEngangsstønad(dto.beregnetTilkjentYtelse()); - } - - public static TilkjentYtelseForeldrepenger mapTilkjentYtelseDagytelseFraDto(TilkjentYtelseDagytelseDto dto, UnaryOperator hentNavn) { - var tilkjentYtelsePerioder = dto.perioder() - .stream() - .map(p -> mapPeriodeFraDto(p, hentNavn)) - .sorted(PeriodeComparator.TILKJENTYTELSERESULTAT) - .toList(); - return TilkjentYtelseForeldrepenger.ny().leggTilPerioder(tilkjentYtelsePerioder).build(); - } - - - private static TilkjentYtelsePeriode mapPeriodeFraDto(TilkjentYtelseDagytelseDto.TilkjentYtelsePeriodeDto dto, UnaryOperator hentNavn) { - List andelListe = new ArrayList<>(); - for (var tilkjentYtelseAndelDto : dto.andeler()) { - andelListe.add(mapAndelFraDto(tilkjentYtelseAndelDto, hentNavn)); - } - return TilkjentYtelsePeriode.ny() - .medDagsats((long) dto.dagsats()) - .medPeriode(DatoIntervall.fraOgMedTilOgMed(dto.fom(), dto.tom())) - .medAndeler(andelListe) - .build(); - } - - //Fpsak slår sammen andeler i dto, så vi må eventuelt splitte dem opp igjen - private static TilkjentYtelseAndel mapAndelFraDto(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto, UnaryOperator hentNavn) { - return TilkjentYtelseAndel.ny() - .medAktivitetStatus(mapAktivitetstatusFraKontrakt(dto.aktivitetstatus())) - .medArbeidsforholdRef( - dto.arbeidsforholdId() != null && !dto.arbeidsforholdId().isEmpty() ? ArbeidsforholdRef.ref(dto.arbeidsforholdId()) : null) - .medArbeidsgiver(mapArbeidsgiverFraDto(dto, hentNavn)) - .medStillingsprosent(dto.stillingsprosent()) - .medErBrukerMottaker(dto.tilSoker() != null && dto.tilSoker() != 0) - .medErArbeidsgiverMottaker(dto.refusjon() != null && dto.refusjon() != 0) - .medDagsats(summerDagsats(dto)) - .medUtbetalesTilBruker(dto.tilSoker()) - .build(); - } - - private static AktivitetStatus mapAktivitetstatusFraKontrakt(TilkjentYtelseDagytelseDto.Aktivitetstatus aktivitetstatus) { - return switch(aktivitetstatus) { - case ARBEIDSAVKLARINGSPENGER -> AktivitetStatus.ARBEIDSAVKLARINGSPENGER; - case ARBEIDSTAKER -> AktivitetStatus.ARBEIDSTAKER; - case DAGPENGER -> AktivitetStatus.DAGPENGER; - case FRILANSER -> AktivitetStatus.FRILANSER; - case MILITÆR_ELLER_SIVIL -> AktivitetStatus.MILITÆR_ELLER_SIVIL; - case SELVSTENDIG_NÆRINGSDRIVENDE -> AktivitetStatus.SELVSTENDIG_NÆRINGSDRIVENDE; - case BRUKERS_ANDEL -> AktivitetStatus.BRUKERS_ANDEL; - case KUN_YTELSE -> AktivitetStatus.KUN_YTELSE; - case TTLSTØTENDE_YTELSE -> AktivitetStatus.TTLSTØTENDE_YTELSE; - case VENTELØNN_VARTPENGER -> AktivitetStatus.VENTELØNN_VARTPENGER; - case KOMBINERT_AT_FL, KOMBINERT_AT_SN, KOMBINERT_FL_SN, - KOMBINERT_AT_FL_SN, UDEFINERT -> throw new IllegalStateException("Ugyldig aktivitetstatus for tilkjent ytelse andel: " + aktivitetstatus); - }; - } - - - private static Arbeidsgiver mapArbeidsgiverFraDto(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto, UnaryOperator hentNavn) { - if (!TilkjentYtelseDagytelseDto.Aktivitetstatus.ARBEIDSTAKER.equals(dto.aktivitetstatus()) || dto.arbeidsgiverReferanse() == null) { - return null; - } - return new Arbeidsgiver(dto.arbeidsgiverReferanse(), hentNavn.apply(dto.arbeidsgiverReferanse())); - } - - private static int summerDagsats(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto) { - var sum = 0; - if (dto.tilSoker() != null) { - sum += dto.tilSoker(); - } - if (dto.refusjon() != null) { - sum += dto.refusjon(); - } - return sum; - } -}