Skip to content

Commit

Permalink
Ta i bruk tidslinje fra familie-felles i VilkårsvurderingTidslinjer (#…
Browse files Browse the repository at this point in the history
…5083)

### 💰 Hva skal gjøres, og hvorfor?

Favro:
[NAV-23270](https://favro.com/organization/98c34fb974ce445eac854de0/?card=NAV-23270)

Bytter ut tidslinje fra ba-sak med tidslinje fra familie-felles enkelte
steder.
Holder PR'ene små, så de skal være lette å lese.
Bør leses commit for commit.
Det er noe duplikatkode, men dette vil fjernes i neste PR

I noen av testene er bare importen av funksjonene som bruker tidslinje
endret, så testene tester det samme, men med tidslinjene fra
familie-felles
  • Loading branch information
MagnusTonnessen authored Feb 18, 2025
1 parent 45e8c3d commit 4c893ec
Show file tree
Hide file tree
Showing 35 changed files with 519 additions and 368 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,12 @@ import no.nav.familie.ba.sak.kjerne.beregning.domene.AndelTilkjentYtelseReposito
import no.nav.familie.ba.sak.kjerne.eøs.felles.BehandlingId
import no.nav.familie.ba.sak.kjerne.eøs.vilkårsvurdering.VilkårsvurderingTidslinjeService
import no.nav.familie.ba.sak.kjerne.logg.LoggService
import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.innholdForTidspunkt
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunkt
import no.nav.familie.ba.sak.kjerne.tidslinjefamiliefelles.komposisjon.verdiPåTidspunkt
import no.nav.familie.ba.sak.kjerne.vilkårsvurdering.domene.Regelverk
import no.nav.familie.ba.sak.kjerne.vilkårsvurdering.domene.Vilkår
import no.nav.familie.ba.sak.kjerne.vilkårsvurdering.domene.VilkårsvurderingRepository
import org.springframework.stereotype.Service
import java.time.YearMonth
import java.time.LocalDate

@Service
class BehandlingstemaService(
Expand Down Expand Up @@ -87,14 +86,14 @@ class BehandlingstemaService(
tidslinjer
.barnasTidslinjer()
.values
.map { it.egetRegelverkResultatTidslinje.innholdForTidspunkt(YearMonth.now(clockProvider.get()).tilTidspunkt()) }
.map { it.egetRegelverkResultatTidslinje.verdiPåTidspunkt(LocalDate.now(clockProvider.get())) }

val etBarnHarMinstEnLøpendeEØSPeriode = alleBarnasTidslinjerSomHarLøpendePeriode.any { it.innhold?.regelverk == Regelverk.EØS_FORORDNINGEN }
val etBarnHarMinstEnLøpendeEØSPeriode = alleBarnasTidslinjerSomHarLøpendePeriode.any { it?.regelverk == Regelverk.EØS_FORORDNINGEN }
if (etBarnHarMinstEnLøpendeEØSPeriode) {
return BehandlingKategori.EØS
}

val etBarnHarMinstEnLøpendeNasjonalPeriode = alleBarnasTidslinjerSomHarLøpendePeriode.any { it.innhold?.regelverk == Regelverk.NASJONALE_REGLER }
val etBarnHarMinstEnLøpendeNasjonalPeriode = alleBarnasTidslinjerSomHarLøpendePeriode.any { it?.regelverk == Regelverk.NASJONALE_REGLER }
if (etBarnHarMinstEnLøpendeNasjonalPeriode) {
return BehandlingKategori.NASJONAL
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package no.nav.familie.ba.sak.kjerne.beregning

import no.nav.familie.ba.sak.common.erTilogMed3ÅrTidslinje
import no.nav.familie.ba.sak.common.førsteDagIInneværendeMåned
import no.nav.familie.ba.sak.common.sisteDagIInneværendeMåned
import no.nav.familie.ba.sak.kjerne.beregning.domene.AndelTilkjentYtelse
import no.nav.familie.ba.sak.kjerne.beregning.domene.TilkjentYtelse
import no.nav.familie.ba.sak.kjerne.beregning.domene.YtelseType
Expand All @@ -15,8 +17,10 @@ import no.nav.familie.ba.sak.kjerne.tidslinje.tidslinje
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.Måned
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunkt
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.tilYearMonth
import no.nav.familie.tidslinje.tilTidslinje
import java.math.BigDecimal
import java.time.YearMonth
import no.nav.familie.tidslinje.Periode as FamilieFellesPeriode

fun Iterable<AndelTilkjentYtelse>.tilSeparateTidslinjerForBarna(): Map<Aktør, Tidslinje<AndelTilkjentYtelse, Måned>> =
this
Expand Down Expand Up @@ -68,6 +72,18 @@ fun Iterable<AndelTilkjentYtelse>.tilTidslinjeForSøkersYtelse(ytelseType: Ytels
}
}

fun Iterable<AndelTilkjentYtelse>.tilFamilieFellesTidslinjeForSøkersYtelse(ytelseType: YtelseType) =
this
.filter { it.erSøkersAndel() }
.filter { it.type == ytelseType }
.map {
FamilieFellesPeriode(
verdi = it,
fom = it.stønadFom.førsteDagIInneværendeMåned(),
tom = it.stønadTom.sisteDagIInneværendeMåned(),
)
}.tilTidslinje()

fun Map<Aktør, Tidslinje<AndelTilkjentYtelse, Måned>>.kunAndelerTilOgMed3År(barna: List<Person>): Map<Aktør, Tidslinje<AndelTilkjentYtelse, Måned>> {
val barnasErInntil3ÅrTidslinjer = barna.associate { it.aktør to erTilogMed3ÅrTidslinje(it.fødselsdato) }

Expand Down
Original file line number Diff line number Diff line change
@@ -1,36 +1,32 @@
package no.nav.familie.ba.sak.kjerne.eøs.endringsabonnement

import no.nav.familie.ba.sak.common.ClockProvider
import no.nav.familie.ba.sak.common.sisteDagIInneværendeMåned
import no.nav.familie.ba.sak.kjerne.endretutbetaling.EndretUtbetalingAndelHentOgPersisterService
import no.nav.familie.ba.sak.kjerne.endretutbetaling.EndretUtbetalingAndelerOppdatertAbonnent
import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.EndretUtbetalingAndel
import no.nav.familie.ba.sak.kjerne.eøs.felles.BehandlingId
import no.nav.familie.ba.sak.kjerne.eøs.felles.PeriodeOgBarnSkjemaEndringAbonnent
import no.nav.familie.ba.sak.kjerne.eøs.felles.PeriodeOgBarnSkjemaRepository
import no.nav.familie.ba.sak.kjerne.eøs.felles.PeriodeOgBarnSkjemaService
import no.nav.familie.ba.sak.kjerne.eøs.felles.beregning.tilSeparateTidslinjerForBarna
import no.nav.familie.ba.sak.kjerne.eøs.felles.beregning.tilSkjemaer
import no.nav.familie.ba.sak.kjerne.eøs.felles.beregning.familieFellesTidslinjerTilSkjemaer
import no.nav.familie.ba.sak.kjerne.eøs.felles.beregning.tilSeparateFamilieFellesTidslinjerForBarna
import no.nav.familie.ba.sak.kjerne.eøs.felles.medBehandlingId
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.Kompetanse
import no.nav.familie.ba.sak.kjerne.eøs.utbetaling.UtbetalingTidslinjeService
import no.nav.familie.ba.sak.kjerne.eøs.vilkårsvurdering.RegelverkResultat
import no.nav.familie.ba.sak.kjerne.eøs.vilkårsvurdering.VilkårsvurderingTidslinjeService
import no.nav.familie.ba.sak.kjerne.personident.Aktør
import no.nav.familie.ba.sak.kjerne.tidslinje.Tidslinje
import no.nav.familie.ba.sak.kjerne.tidslinje.eksperimentelt.filtrer
import no.nav.familie.ba.sak.kjerne.tidslinje.eksperimentelt.filtrerIkkeNull
import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.TomTidslinje
import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.kombinerMed
import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.leftJoin
import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.outerJoin
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.Måned
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunkt
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.tilForrigeMåned
import no.nav.familie.ba.sak.kjerne.tidslinje.transformasjon.beskjærTilOgMed
import no.nav.familie.ba.sak.kjerne.tidslinje.transformasjon.forlengFremtidTilUendelig
import no.nav.familie.ba.sak.kjerne.tidslinje.transformasjon.map
import no.nav.familie.ba.sak.kjerne.tidslinjefamiliefelles.komposisjon.mapVerdiNullable
import no.nav.familie.ba.sak.kjerne.tidslinjefamiliefelles.transformasjon.forlengFremtidTilUendelig
import no.nav.familie.ba.sak.kjerne.vilkårsvurdering.domene.Regelverk
import no.nav.familie.tidslinje.Tidslinje
import no.nav.familie.tidslinje.leftJoin
import no.nav.familie.tidslinje.outerJoin
import no.nav.familie.tidslinje.tomTidslinje
import no.nav.familie.tidslinje.utvidelser.filtrer
import no.nav.familie.tidslinje.utvidelser.filtrerIkkeNull
import no.nav.familie.tidslinje.utvidelser.kombinerMed
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.time.YearMonth
Expand Down Expand Up @@ -122,9 +118,9 @@ class TilpassKompetanserTilEndretUtebetalingAndelerService(

fun tilpassKompetanserTilRegelverk(
gjeldendeKompetanser: Collection<Kompetanse>,
barnaRegelverkTidslinjer: Map<Aktør, Tidslinje<RegelverkResultat, Måned>>,
utbetalesIkkeOrdinærEllerUtvidetTidslinjer: Map<Aktør, Tidslinje<Boolean, Måned>>,
annenForelderOmfattetAvNorskLovgivningTidslinje: Tidslinje<Boolean, Måned> = TomTidslinje<Boolean, Måned>(),
barnaRegelverkTidslinjer: Map<Aktør, Tidslinje<RegelverkResultat>>,
utbetalesIkkeOrdinærEllerUtvidetTidslinjer: Map<Aktør, Tidslinje<Boolean>>,
annenForelderOmfattetAvNorskLovgivningTidslinje: Tidslinje<Boolean> = tomTidslinje(),
inneværendeMåned: YearMonth,
): Collection<Kompetanse> {
val barnasEøsRegelverkTidslinjer =
Expand All @@ -136,23 +132,20 @@ fun tilpassKompetanserTilRegelverk(
else -> regelverk
}
}.mapValues { (_, tidslinjer) ->
tidslinjer.forlengFremtidTilUendelig(MånedTidspunkt.nå())
tidslinjer.forlengFremtidTilUendelig(inneværendeMåned.sisteDagIInneværendeMåned())
}

return gjeldendeKompetanser
.tilSeparateTidslinjerForBarna()
.tilSeparateFamilieFellesTidslinjerForBarna()
.outerJoin(barnasEøsRegelverkTidslinjer) { kompetanse, eøsRegelverk ->
eøsRegelverk?.let { kompetanse ?: Kompetanse.NULL }
}.mapValues { (_, value) ->
value.kombinerMed(annenForelderOmfattetAvNorskLovgivningTidslinje) { kompetanse, annenForelderOmfattet ->
kompetanse?.copy(erAnnenForelderOmfattetAvNorskLovgivning = annenForelderOmfattet ?: false)
}
}.mapValues { (_, value) ->
valMåned = inneværendeMåned.tilTidspunkt()
value
.beskjærTilOgMed(nåMåned)
.forlengFremtidTilUendelig(senesteEndeligeTidspunkt =Måned.tilForrigeMåned())
}.tilSkjemaer()
}.mapValues { (_, tidslinje) ->
tidslinje.forlengFremtidTilUendelig(inneværendeMåned.sisteDagIInneværendeMåned())
}.familieFellesTidslinjerTilSkjemaer()
}

fun VilkårsvurderingTidslinjeService.hentBarnasRegelverkResultatTidslinjer(behandlingId: BehandlingId) =
Expand All @@ -163,10 +156,10 @@ fun VilkårsvurderingTidslinjeService.hentBarnasRegelverkResultatTidslinjer(beha
tidslinjer.regelverkResultatTidslinje
}

private fun Map<Aktør, Tidslinje<RegelverkResultat, Måned>>.tilBarnasEøsRegelverkTidslinjer(): Map<Aktør, Tidslinje<Regelverk, Måned>> =
private fun Map<Aktør, Tidslinje<RegelverkResultat>>.tilBarnasEøsRegelverkTidslinjer(): Map<Aktør, Tidslinje<Regelverk>> =
this.mapValues { (_, regelverkResultatTidslinje) ->
regelverkResultatTidslinje
.map { it?.regelverk }
.mapVerdiNullable { it?.regelverk }
.filtrer { it == Regelverk.EØS_FORORDNINGEN }
.filtrerIkkeNull()
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package no.nav.familie.ba.sak.kjerne.eøs.felles.beregning

import no.nav.familie.ba.sak.common.førsteDagIInneværendeMåned
import no.nav.familie.ba.sak.common.sisteDagIInneværendeMåned
import no.nav.familie.ba.sak.common.toYearMonth
import no.nav.familie.ba.sak.kjerne.eøs.felles.PeriodeOgBarnSkjema
import no.nav.familie.ba.sak.kjerne.eøs.felles.PeriodeOgBarnSkjemaEntitet
import no.nav.familie.ba.sak.kjerne.eøs.felles.utenPeriode
Expand All @@ -11,6 +14,10 @@ import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.Måned
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunktEllerUendeligSent
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunktEllerUendeligTidlig
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.tilYearMonthEllerNull
import no.nav.familie.tidslinje.tilTidslinje
import no.nav.familie.tidslinje.utvidelser.tilPerioder
import no.nav.familie.tidslinje.Periode as FamilieFellesPeriode
import no.nav.familie.tidslinje.Tidslinje as FamilieFellesTidslinje

fun <S : PeriodeOgBarnSkjema<S>> S.tilTidslinje() = listOf(this).tilTidslinje()

Expand Down Expand Up @@ -46,11 +53,35 @@ fun <S : PeriodeOgBarnSkjema<S>> Iterable<S>.tilSeparateTidslinjerForBarna(): Ma
}
}

fun <S : PeriodeOgBarnSkjema<S>> Iterable<S>.tilSeparateFamilieFellesTidslinjerForBarna(): Map<Aktør, FamilieFellesTidslinje<S>> {
val skjemaer = this
if (skjemaer.toList().isEmpty()) return emptyMap()

val alleBarnAktørIder = skjemaer.map { it.barnAktører }.reduce { akk, neste -> akk + neste }

return alleBarnAktørIder.associateWith { aktør ->
skjemaer
.filter { it.barnAktører.contains(aktør) }
.map {
FamilieFellesPeriode(
fom = it.fom?.førsteDagIInneværendeMåned(),
tom = it.tom?.sisteDagIInneværendeMåned(),
verdi = it.kopier(fom = null, tom = null, barnAktører = setOf(aktør)),
)
}.tilTidslinje()
}
}

fun <S : PeriodeOgBarnSkjemaEntitet<S>> Map<Aktør, Tidslinje<S, Måned>>.tilSkjemaer() =
this
.flatMap { (aktør, tidslinjer) -> tidslinjer.tilSkjemaer(aktør) }
.slåSammen()

fun <S : PeriodeOgBarnSkjemaEntitet<S>> Map<Aktør, FamilieFellesTidslinje<S>>.familieFellesTidslinjerTilSkjemaer() =
this
.flatMap { (aktør, tidslinjer) -> tidslinjer.tilSkjemaer(aktør) }
.slåSammen()

private fun <S : PeriodeOgBarnSkjema<S>> Tidslinje<S, Måned>.tilSkjemaer(aktør: Aktør) =
this.perioder().mapNotNull { periode ->
periode.innhold?.kopier(
Expand All @@ -59,3 +90,12 @@ private fun <S : PeriodeOgBarnSkjema<S>> Tidslinje<S, Måned>.tilSkjemaer(aktør
barnAktører = setOf(aktør),
)
}

private fun <S : PeriodeOgBarnSkjema<S>> FamilieFellesTidslinje<S>.tilSkjemaer(aktør: Aktør) =
this.tilPerioder().mapNotNull { periode ->
periode.verdi?.kopier(
fom = periode.fom?.toYearMonth(),
tom = periode.tom?.toYearMonth(),
barnAktører = setOf(aktør),
)
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
package no.nav.familie.ba.sak.kjerne.eøs.utbetaling

import no.nav.familie.ba.sak.common.førsteDagIInneværendeMåned
import no.nav.familie.ba.sak.common.sisteDagIInneværendeMåned
import no.nav.familie.ba.sak.kjerne.beregning.BeregningService
import no.nav.familie.ba.sak.kjerne.beregning.domene.YtelseType
import no.nav.familie.ba.sak.kjerne.beregning.tilTidslinjeForSøkersYtelse
import no.nav.familie.ba.sak.kjerne.beregning.tilFamilieFellesTidslinjeForSøkersYtelse
import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.EndretUtbetalingAndel
import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.Årsak
import no.nav.familie.ba.sak.kjerne.eøs.felles.BehandlingId
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersonType
import no.nav.familie.ba.sak.kjerne.personident.Aktør
import no.nav.familie.ba.sak.kjerne.tidslinje.Periode
import no.nav.familie.ba.sak.kjerne.tidslinje.Tidslinje
import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.kombinerMed
import no.nav.familie.ba.sak.kjerne.tidslinje.tidslinje
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.Måned
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunktEllerUendeligSent
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunktEllerUendeligTidlig
import no.nav.familie.tidslinje.Periode
import no.nav.familie.tidslinje.Tidslinje
import no.nav.familie.tidslinje.tilTidslinje
import no.nav.familie.tidslinje.utvidelser.kombinerMed
import org.springframework.stereotype.Service
import java.math.BigDecimal

Expand All @@ -25,39 +24,40 @@ class UtbetalingTidslinjeService(
fun hentUtbetalesIkkeOrdinærEllerUtvidetTidslinjer(
behandlingId: BehandlingId,
endretUtbetalingAndeler: List<EndretUtbetalingAndel>,
): Map<Aktør, Tidslinje<Boolean, Måned>> {
): Map<Aktør, Tidslinje<Boolean>> {
val barnasSkalIkkeUtbetalesTidslinjer =
endretUtbetalingAndeler
.tilBarnasSkalIkkeUtbetalesTidslinjer()

val utvidetTidslinje =
beregningService
.hentAndelerTilkjentYtelseForBehandling(behandlingId.id)
.tilTidslinjeForSøkersYtelse(YtelseType.UTVIDET_BARNETRYGD)
.tilFamilieFellesTidslinjeForSøkersYtelse(YtelseType.UTVIDET_BARNETRYGD)

return barnasSkalIkkeUtbetalesTidslinjer
.mapValues { (_, ordinærSkalIkkeUtbetalesTidslinje) ->
val utbetalesIkkeOrdinærEllerUtvidetTidslinje =
ordinærSkalIkkeUtbetalesTidslinje.kombinerMed(utvidetTidslinje) { ordinærSkalIkkeUtbetales, utvidetAndel ->
ordinærSkalIkkeUtbetales == true && (utvidetAndel == null || utvidetAndel.kalkulertUtbetalingsbeløp == 0)
}
ordinærSkalIkkeUtbetalesTidslinje
.kombinerMed(utvidetTidslinje) { ordinærSkalIkkeUtbetales, utvidetAndel ->
ordinærSkalIkkeUtbetales == true && (utvidetAndel == null || utvidetAndel.kalkulertUtbetalingsbeløp == 0)
}
utbetalesIkkeOrdinærEllerUtvidetTidslinje
}
}
}

internal fun Iterable<EndretUtbetalingAndel>.tilBarnasSkalIkkeUtbetalesTidslinjer(): Map<Aktør, Tidslinje<Boolean, Måned>> =
internal fun Iterable<EndretUtbetalingAndel>.tilBarnasSkalIkkeUtbetalesTidslinjer(): Map<Aktør, Tidslinje<Boolean>> =
this
.filter { it.årsak in listOf(Årsak.ETTERBETALING_3ÅR, Årsak.ETTERBETALING_3MND, Årsak.ALLEREDE_UTBETALT, Årsak.ENDRE_MOTTAKER) && it.prosent == BigDecimal.ZERO }
.filter { it.person?.type == PersonType.BARN }
.filter { it.person?.aktør != null }
.groupBy { it.person?.aktør!! }
.mapValues { (_, endringer) -> endringer.map { it.tilPeriode { true } } }
.mapValues { (_, perioder) -> tidslinje { perioder } }
.mapValues { (_, perioder) -> perioder.tilTidslinje() }

private fun <I> EndretUtbetalingAndel.tilPeriode(mapper: (EndretUtbetalingAndel) -> I?) =
private fun <V> EndretUtbetalingAndel.tilPeriode(mapper: (EndretUtbetalingAndel) -> V) =
Periode(
fraOgMed = this.fom.tilTidspunktEllerUendeligTidlig(tom),
tilOgMed = this.tom.tilTidspunktEllerUendeligSent(fom),
innhold = mapper(this),
fom = this.fom?.førsteDagIInneværendeMåned(),
tom = this.tom?.sisteDagIInneværendeMåned(),
verdi = mapper(this),
)
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package no.nav.familie.ba.sak.kjerne.eøs.vilkårsvurdering

import no.nav.familie.ba.sak.kjerne.tidslinje.Periode
import no.nav.familie.ba.sak.kjerne.tidslinje.tidslinje
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.Dag
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.DagTidspunkt.Companion.tilTidspunktEllerUendeligSent
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.DagTidspunkt.Companion.tilTidspunktEllerUendeligTidlig
import no.nav.familie.ba.sak.kjerne.vilkårsvurdering.domene.VilkårResultat
import no.nav.familie.tidslinje.Periode
import no.nav.familie.tidslinje.tilTidslinje

/**
* Lager tidslinje av VilkårRegelverkResultat for ett vilkår og én aktør
Expand All @@ -17,22 +14,19 @@ import no.nav.familie.ba.sak.kjerne.vilkårsvurdering.domene.VilkårResultat
* Overlapp er ikke støttet av tidsliner, og ville gitt exception
*/
fun Iterable<VilkårResultat>.tilVilkårRegelverkResultatTidslinje() =
tidslinje {
this
.filter { it.erOppfylt() }
.map { it.tilPeriode() }
}
this
.filter { it.erOppfylt() }
.map { it.tilPeriode() }
.tilTidslinje()

fun VilkårResultat.tilPeriode(): Periode<VilkårRegelverkResultat, Dag> {
val fom = periodeFom.tilTidspunktEllerUendeligTidlig(periodeTom)
val tom = periodeTom.tilTidspunktEllerUendeligSent(periodeFom)
return Periode(
fom,
tom,
VilkårRegelverkResultat(
vilkår = vilkårType,
regelverkResultat = this.tilRegelverkResultat(),
utdypendeVilkårsvurderinger = this.utdypendeVilkårsvurderinger,
),
private fun VilkårResultat.tilPeriode() =
Periode(
verdi =
VilkårRegelverkResultat(
vilkår = vilkårType,
regelverkResultat = this.tilRegelverkResultat(),
utdypendeVilkårsvurderinger = this.utdypendeVilkårsvurderinger,
),
fom = periodeFom,
tom = periodeTom,
)
}
Loading

0 comments on commit 4c893ec

Please sign in to comment.