-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
176 additions
and
135 deletions.
There are no files selected for viewing
42 changes: 42 additions & 0 deletions
42
service/src/main/kotlin/no/nav/su/se/bakover/service/personhendelser/DryrunResult.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package no.nav.su.se.bakover.service.personhendelser | ||
|
||
import no.nav.su.se.bakover.common.domain.Saksnummer | ||
|
||
data class DryrunResult( | ||
val perHendelse: List<DryRunResultPerHendelse>, | ||
) { | ||
companion object { | ||
fun empty() = DryrunResult(emptyList()) | ||
} | ||
|
||
fun leggTilHendelse(resultatBruker: PersonhendelseresultatBruker, resultatEps: PersonhendelseresultatEps) = | ||
DryrunResult(perHendelse + DryRunResultPerHendelse(resultatBruker, resultatEps)) | ||
|
||
val antallForkastet: Int by lazy { forkastet.size } | ||
val antallBruker: Int by lazy { bruker.sumOf { it.antallTreff() } } | ||
val antallEps: Int by lazy { eps.sumOf { it.antallTreff() } } | ||
val antallOppgaver: Int by lazy { | ||
oppgaver.size | ||
} | ||
|
||
val forkastet: List<DryRunResultPerHendelse> by lazy { perHendelse.filter { it.ikkeTreff() } } | ||
val bruker: List<PersonhendelseresultatBruker> by lazy { perHendelse.map { it.resultatBruker } } | ||
val eps: List<PersonhendelseresultatEps> by lazy { perHendelse.map { it.resultatEps } } | ||
val oppgaver: List<Saksnummer> by lazy { | ||
(bruker.flatMap { it.unikeSaksnummer() } + eps.flatMap { it.unikeSaksnummer() }).distinct() | ||
.sortedBy { it.nummer } | ||
} | ||
|
||
data class DryRunResultPerHendelse( | ||
val resultatBruker: PersonhendelseresultatBruker, | ||
val resultatEps: PersonhendelseresultatEps, | ||
) { | ||
fun ikkeTreff(): Boolean = resultatBruker.ikkeTreff() && resultatEps.ikkeTreff() | ||
} | ||
|
||
override fun toString() = | ||
"DryrunResult(antallHendelser=${perHendelse.size}, $antallForkastet=$antallForkastet, antallBruker=$antallBruker, antallEps=$antallEps, antallOppgaver=$antallOppgaver). Se sikkerlogg for mer detaljer" | ||
|
||
fun toSikkerloggString(): String = | ||
"DryrunResult(antallHendelser=${perHendelse.size},antallForkastet=$antallForkastet, antallBruker=$antallBruker, antallEps=$antallEps, antallOppgaver=$antallOppgaver). Forkastet: $forkastet, Bruker: $bruker, Eps: $eps, Oppgaver: $oppgaver" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
41 changes: 41 additions & 0 deletions
41
.../main/kotlin/no/nav/su/se/bakover/service/personhendelser/PersonhendelseresultatBruker.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
package no.nav.su.se.bakover.service.personhendelser | ||
|
||
import no.nav.su.se.bakover.common.domain.Saksnummer | ||
import no.nav.su.se.bakover.common.person.Fnr | ||
|
||
sealed interface PersonhendelseresultatBruker { | ||
fun ikkeTreff(): Boolean = this is IkkeRelevantHendelseForBruker | ||
|
||
fun unikeSaksnummer(): List<Saksnummer> = when (this) { | ||
is IkkeRelevantHendelseForBruker -> emptyList() | ||
is TreffPåBruker -> listOf(this.saksnummer) | ||
} | ||
|
||
fun antallTreff(): Int | ||
|
||
sealed interface IkkeRelevantHendelseForBruker : PersonhendelseresultatBruker { | ||
val identer: List<String> | ||
|
||
/** Enten har vi ikke en sak, eller så har ikke den saken vedtak av typen søknad, endring, opphør. */ | ||
data class IngenSakEllerVedtak(override val identer: List<String>) : IkkeRelevantHendelseForBruker { | ||
override fun antallTreff(): Int = 0 | ||
} | ||
|
||
/** Vi har en sak med vedtak av typen søknad, endring, opphør; men ingen av disse var aktive etter fraOgMed dato */ | ||
data class IngenAktiveVedtak( | ||
override val identer: List<String>, | ||
val saksnummer: Saksnummer, | ||
val fnr: Fnr, | ||
) : IkkeRelevantHendelseForBruker { | ||
override fun antallTreff(): Int = 0 | ||
} | ||
} | ||
|
||
data class TreffPåBruker( | ||
val saksnummer: Saksnummer, | ||
val fnr: Fnr, | ||
val identer: List<String>, | ||
) : PersonhendelseresultatBruker { | ||
override fun antallTreff(): Int = 1 | ||
} | ||
} |
49 changes: 49 additions & 0 deletions
49
...src/main/kotlin/no/nav/su/se/bakover/service/personhendelser/PersonhendelseresultatEps.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package no.nav.su.se.bakover.service.personhendelser | ||
|
||
import no.nav.su.se.bakover.common.domain.Saksnummer | ||
import no.nav.su.se.bakover.common.person.Fnr | ||
|
||
sealed interface PersonhendelseresultatEps { | ||
fun ikkeTreff(): Boolean | ||
|
||
fun unikeSaksnummer(): List<Saksnummer> = when (this) { | ||
is IkkeTreffPåEps -> emptyList() | ||
is TreffPåEnEllerFlereEps -> this.treff.map { it.brukersSaksnummer } | ||
}.distinct().sortedBy { it.nummer } | ||
|
||
fun antallTreff(): Int | ||
|
||
data class IkkeTreffPåEps(val identer: List<String>) : PersonhendelseresultatEps { | ||
override fun ikkeTreff(): Boolean = true | ||
override fun antallTreff() = 0 | ||
} | ||
|
||
data class TreffPåEnEllerFlereEps(val treff: List<TreffPåEps>) : PersonhendelseresultatEps { | ||
override fun ikkeTreff(): Boolean = treff.all { it is TreffPåEps.IkkeAktivtVedtak } | ||
override fun antallTreff() = this.treff.sumOf { it.antallEps() } | ||
} | ||
|
||
sealed interface TreffPåEps { | ||
val brukersSaksnummer: Saksnummer | ||
val brukersFnr: Fnr | ||
val identer: List<String> | ||
|
||
fun antallEps(): Int | ||
|
||
data class AktivtVedtak( | ||
override val brukersSaksnummer: Saksnummer, | ||
override val brukersFnr: Fnr, | ||
override val identer: List<String>, | ||
) : TreffPåEps { | ||
override fun antallEps() = 1 | ||
} | ||
|
||
data class IkkeAktivtVedtak( | ||
override val brukersSaksnummer: Saksnummer, | ||
override val brukersFnr: Fnr, | ||
override val identer: List<String>, | ||
) : TreffPåEps { | ||
override fun antallEps() = 0 | ||
} | ||
} | ||
} |
Oops, something went wrong.