From d17c2912b1c5bf4354979b9243ea5010e3b06c24 Mon Sep 17 00:00:00 2001 From: Terje Heen Date: Thu, 2 Feb 2023 10:26:08 +0100 Subject: [PATCH] f Legger til filter av tekniske ISERV-endringer ved populering av perioder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tekniske ISERV-endringer er noe vi har filter for fra før i andre deler av stacken. Det handler om at vi får inn 2 endringer på akkurat samme tidspunkt. En ISERV og en ARBS. Litt avhengig av hvordan de prosesseres, så risikerer vi å sitte igjen med feil status. Tror dette skyldes måter ting gjøres på i Arena, hvor en bruker først må opprettes og får ISERV før den blir aktivert som arbeidssøker (ARBS). --- .../FormidlingsgruppeEndretEvent.kt | 8 ++++++++ .../db/ArbeidssokerperioderMapper.kt | 1 + .../PopulerArbeidssokerperioderService.kt | 15 ++++++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeEndretEvent.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeEndretEvent.kt index f63a7d934..428f841bf 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeEndretEvent.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeEndretEvent.kt @@ -18,6 +18,14 @@ data class FormidlingsgruppeEndretEvent( override fun formidlingsgruppe(): Formidlingsgruppe = formidlingsgruppe + fun erISERV(): Boolean { + return formidlingsgruppe.kode == "ISERV" + } + + fun erAktiv(): Boolean { + return personIdStatus == "AKTIV" + } + override fun toString(): String { return "FormidlingsgruppeEvent{" + "foedselsnummer=" + foedselsnummer.maskert() + diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/db/ArbeidssokerperioderMapper.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/db/ArbeidssokerperioderMapper.kt index a8135be87..4150b96ac 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/db/ArbeidssokerperioderMapper.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/db/ArbeidssokerperioderMapper.kt @@ -8,6 +8,7 @@ import no.nav.fo.veilarbregistrering.bruker.Periode import java.time.LocalDate internal object ArbeidssokerperioderMapper { + fun map(formidlingsgruppeendringer: List): Arbeidssokerperioder { return Arbeidssokerperioder( formidlingsgruppeendringer diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/PopulerArbeidssokerperioderService.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/PopulerArbeidssokerperioderService.kt index 464c71102..44690d563 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/PopulerArbeidssokerperioderService.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/PopulerArbeidssokerperioderService.kt @@ -1,6 +1,7 @@ package no.nav.fo.veilarbregistrering.arbeidssoker.perioder import no.nav.fo.veilarbregistrering.arbeidssoker.Arbeidssoker +import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeEndretEvent import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeRepository import no.nav.fo.veilarbregistrering.bruker.Bruker import no.nav.fo.veilarbregistrering.registrering.ordinaer.BrukerRegistreringRepository @@ -29,7 +30,7 @@ class PopulerArbeidssokerperioderService( val reaktiveringer = brukerReaktiveringRepository.finnReaktiveringerForFoedselsnummer(bruker.alleFoedselsnummer()) - val listeMedArbeidssøkerEndringer = formidlingsgruppe + ordinaerBrukerRegistreringer + reaktiveringer + val listeMedArbeidssøkerEndringer = filterTekniskeISERVEndringer(formidlingsgruppe) + ordinaerBrukerRegistreringer + reaktiveringer val arbeidssoker = Arbeidssoker() @@ -39,4 +40,16 @@ class PopulerArbeidssokerperioderService( return arbeidssoker } + + private fun filterTekniskeISERVEndringer(formidlingsgruppeendringer: List): List { + return formidlingsgruppeendringer + .sortedByDescending { it.formidlingsgruppeEndret } + .filter(FormidlingsgruppeEndretEvent::erAktiv) + .run(::slettTekniskeISERVEndringer) + } + + private fun slettTekniskeISERVEndringer(formidlingsgruppeendringer: List) = + formidlingsgruppeendringer.groupBy { it.formidlingsgruppeEndret } + .values.flatMap { samtidigeEndringer -> if (samtidigeEndringer.size > 1) samtidigeEndringer.filter { !it.erISERV() } else samtidigeEndringer } + .sortedByDescending { it.formidlingsgruppeEndret } } \ No newline at end of file