From 3a5d5d4d9ea89a7148c27a5f77f7621886756627 Mon Sep 17 00:00:00 2001 From: Trondl <56258085+throndi@users.noreply.github.com> Date: Thu, 30 Nov 2023 12:49:43 +0100 Subject: [PATCH] =?UTF-8?q?Overlapp=20mellom=20tidligere=20barnetilsynsper?= =?UTF-8?q?ioder=20og=20tidligere=20overgangsst=C3=B8nadsperioder=20(#2468?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Sjekker om perioder overlapper med overgangsstønad når vi oppretter GrunnlagsdataPeriodeHistorikkBarnetilsynDto * Sjekker for om overlapp er delvis eller omsluttende --- .../dto/TidligereVedtaksperioderDto.kt" | 51 +++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git "a/src/main/kotlin/no/nav/familie/ef/sak/vilk\303\245r/dto/TidligereVedtaksperioderDto.kt" "b/src/main/kotlin/no/nav/familie/ef/sak/vilk\303\245r/dto/TidligereVedtaksperioderDto.kt" index 28eacd2dcc..29f1aff112 100644 --- "a/src/main/kotlin/no/nav/familie/ef/sak/vilk\303\245r/dto/TidligereVedtaksperioderDto.kt" +++ "b/src/main/kotlin/no/nav/familie/ef/sak/vilk\303\245r/dto/TidligereVedtaksperioderDto.kt" @@ -37,9 +37,14 @@ data class GrunnlagsdataPeriodeHistorikkDto( val antallMånederUtenBeløp: Long = 0, ) +enum class OverlappMedOvergangsstønad { + NEI, JA, DELVIS, +} + data class GrunnlagsdataPeriodeHistorikkBarnetilsynDto( val fom: LocalDate, val tom: LocalDate, + val overlapperMedOvergangsstønad: OverlappMedOvergangsstønad, ) fun TidligereVedtaksperioder?.tilDto(): TidligereVedtaksperioderDto = this?.let { @@ -56,19 +61,28 @@ fun TidligereInnvilgetVedtak.tilDto() = harTidligereBarnetilsyn = this.harTidligereBarnetilsyn, harTidligereSkolepenger = this.harTidligereSkolepenger, periodeHistorikkOvergangsstønad = this.periodeHistorikkOvergangsstønad.tilDtoOvergangsstønad(), - periodeHistorikkBarnetilsyn = this.periodeHistorikkBarnetilsyn.tilDtoBarnetilsyn(), + periodeHistorikkBarnetilsyn = this.periodeHistorikkBarnetilsyn.tilDtoBarnetilsyn(this.periodeHistorikkOvergangsstønad), ) private fun List.tilDtoOvergangsstønad() = this.map { it.tilDto() } .slåSammenPåfølgendePerioderMedLikPeriodetype() .sortedByDescending { it.fom } -private fun List.slåSammenHistoriskePerioder(): List { +private fun List.slåSammenHistoriskePerioder( + grunnlagsdataPeriodeHistorikkOvergangsstønad: List, +): List { val sortertePerioder = this.sortedBy { it.fom } return sortertePerioder.fold(mutableListOf()) { resultat, periode -> if (resultat.isNotEmpty() && resultat.last().periode() påfølgesAv periode.periode()) { val siste = resultat.removeLast() - resultat.add(GrunnlagsdataPeriodeHistorikkBarnetilsynDto(siste.fom, periode.tom)) + + resultat.add( + GrunnlagsdataPeriodeHistorikkBarnetilsynDto( + siste.fom, + periode.tom, + grunnlagsdataPeriodeHistorikkOvergangsstønad.overlapperMedPeriode(siste.fom, periode.tom), + ), + ) } else { resultat.add(periode) } @@ -76,8 +90,22 @@ private fun List.slåSammenHistoris } } -private fun List.tilDtoBarnetilsyn() = this.map { it.tilDto() } - .slåSammenHistoriskePerioder() +private fun List.overlapperMedPeriode( + fom: LocalDate, + tom: LocalDate, +): OverlappMedOvergangsstønad { + val periode = Månedsperiode(fom, tom) + return when { + this.any { periode omsluttesAv Månedsperiode(it.fom, it.tom) } -> OverlappMedOvergangsstønad.JA + this.any { periode overlapper Månedsperiode(it.fom, it.tom) } -> OverlappMedOvergangsstønad.DELVIS + else -> OverlappMedOvergangsstønad.NEI + } +} + +private fun List.tilDtoBarnetilsyn( + grunnlagsdataPeriodeHistorikkOvergangsstønad: List, +) = this.map { it.tilDto(grunnlagsdataPeriodeHistorikkOvergangsstønad) } + .slåSammenHistoriskePerioder(grunnlagsdataPeriodeHistorikkOvergangsstønad) .sortedByDescending { it.fom } private fun GrunnlagsdataPeriodeHistorikkOvergangsstønad.tilDto() = GrunnlagsdataPeriodeHistorikkDto( @@ -88,10 +116,15 @@ private fun GrunnlagsdataPeriodeHistorikkOvergangsstønad.tilDto() = Grunnlagsda antallMånederUtenBeløp = månederUtenBeløp(periodeType, beløp, fom, tom), ) -private fun GrunnlagsdataPeriodeHistorikkBarnetilsyn.tilDto() = GrunnlagsdataPeriodeHistorikkBarnetilsynDto( - fom = this.fom, - tom = this.tom, -) +private fun GrunnlagsdataPeriodeHistorikkBarnetilsyn.tilDto(grunnlagsdataPeriodeHistorikkOvergangsstønad: List) = + GrunnlagsdataPeriodeHistorikkBarnetilsynDto( + fom = this.fom, + tom = this.tom, + overlapperMedOvergangsstønad = grunnlagsdataPeriodeHistorikkOvergangsstønad.overlapperMedPeriode( + this.fom, + this.tom, + ), + ) private fun månederUtenBeløp( periodeType: VedtaksperiodeType,