From 0021473e291b4b3c15b4d6ca1dd50ad102169f3c Mon Sep 17 00:00:00 2001 From: Nils Martin Sande Date: Wed, 23 Oct 2024 12:36:04 +0200 Subject: [PATCH] =?UTF-8?q?Skilte=20ut=20h=C3=A5ndtering=20av=20innkommend?= =?UTF-8?q?e=20bekreftelse=20i=20en=20egen=20funksjon=20for=20enklere=20te?= =?UTF-8?q?sting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../topology/BekreftelseStream.kt | 30 +++++-------------- .../topology/HaandterBekreftelseMottatt.kt | 28 +++++++++++++++++ 2 files changed, 35 insertions(+), 23 deletions(-) create mode 100644 apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/topology/HaandterBekreftelseMottatt.kt diff --git a/apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/topology/BekreftelseStream.kt b/apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/topology/BekreftelseStream.kt index 911649b3..26f5c334 100644 --- a/apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/topology/BekreftelseStream.kt +++ b/apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/topology/BekreftelseStream.kt @@ -11,8 +11,6 @@ import no.nav.paw.bekreftelse.internehendelser.BaOmAaAvsluttePeriode import no.nav.paw.bekreftelse.internehendelser.BekreftelseHendelse import no.nav.paw.bekreftelse.internehendelser.BekreftelseHendelseSerde import no.nav.paw.bekreftelse.internehendelser.BekreftelseMeldingMottatt -import no.nav.paw.bekreftelse.melding.v1.vo.Bekreftelsesloesning -import no.nav.paw.bekreftelsetjeneste.ansvar.Loesning import no.nav.paw.bekreftelsetjeneste.config.ApplicationConfig import no.nav.paw.bekreftelsetjeneste.tilstand.* import no.nav.paw.config.kafka.streams.Punctuation @@ -43,8 +41,11 @@ fun StreamsBuilder.buildBekreftelseStream(applicationConfig: ApplicationConfig) ), ) { record -> val internTilstandStateStore = getStateStore(internStateStoreName) + val ansvarStateStore = getStateStore(ansvarStateStoreName) val gjeldendeTilstand: InternTilstand? = retrieveState(internTilstandStateStore, record) + val ansvar = ansvarStateStore[record.value().periodeId] + val melding = record.value() if (gjeldendeTilstand == null) { Span.current().setStatus(StatusCode.ERROR).addEvent("tilstand is null for record", Attributes.of( @@ -53,28 +54,11 @@ fun StreamsBuilder.buildBekreftelseStream(applicationConfig: ApplicationConfig) meldingsLogger.warn("Melding mottatt for periode som ikke er aktiv/eksisterer") return@genericProcess } - - if (record.value().bekreftelsesloesning == Bekreftelsesloesning.ARBEIDSSOEKERREGISTERET) { - val (nyTilstand, hendelser) = processPawNamespace(record.value(), gjeldendeTilstand) - if (nyTilstand != gjeldendeTilstand) { - internTilstandStateStore.put(gjeldendeTilstand.periode.periodeId, nyTilstand) - } - forwardHendelser(record, hendelser, this::forward) - } else { - val ansvarStateStore = getStateStore(ansvarStateStoreName) - val ansvar = ansvarStateStore[gjeldendeTilstand.periode.periodeId]?.ansvarlige ?: emptyList() - if (ansvar.any { ansvarlig -> ansvarlig.loesning == Loesning.from(record.value().bekreftelsesloesning) }) { - gjeldendeTilstand.oppdaterBekreftelse(Bekreftelse( - tilstandsLogg = BekreftelseTilstandsLogg( - siste = Levert(record.value().svar.sendtInn.tidspunkt), - tidligere = emptyList() - ), - bekreftelseId = record.value().id, - gjelderFra = record.value().svar.gjelderFra, - gjelderTil = record.value().svar.gjelderTil - )) - } + val (oppdatertTilstand, hendelser) = haandterBekreftelseMottatt(gjeldendeTilstand, ansvar, melding) + if (oppdatertTilstand != gjeldendeTilstand) { + internTilstandStateStore.put(oppdatertTilstand.periode.periodeId, oppdatertTilstand) } + forwardHendelser(record, hendelser, this::forward) } .to(bekreftelseHendelseloggTopic, Produced.with(Serdes.Long(), BekreftelseHendelseSerde())) } diff --git a/apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/topology/HaandterBekreftelseMottatt.kt b/apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/topology/HaandterBekreftelseMottatt.kt new file mode 100644 index 00000000..9d8d1232 --- /dev/null +++ b/apps/bekreftelse-tjeneste/src/main/kotlin/no/nav/paw/bekreftelsetjeneste/topology/HaandterBekreftelseMottatt.kt @@ -0,0 +1,28 @@ +package no.nav.paw.bekreftelsetjeneste.topology + +import no.nav.paw.bekreftelse.internehendelser.BekreftelseHendelse +import no.nav.paw.bekreftelse.melding.v1.vo.Bekreftelsesloesning +import no.nav.paw.bekreftelsetjeneste.ansvar.Ansvar +import no.nav.paw.bekreftelsetjeneste.ansvar.Loesning +import no.nav.paw.bekreftelsetjeneste.tilstand.* + +fun haandterBekreftelseMottatt(gjeldendeTilstand: InternTilstand, ansvar: Ansvar?, melding: no.nav.paw.bekreftelse.melding.v1.Bekreftelse): Pair> { + return if (melding.bekreftelsesloesning == Bekreftelsesloesning.ARBEIDSSOEKERREGISTERET) { + processPawNamespace(melding, gjeldendeTilstand) + } else { + val ansvarlige = ansvar?.ansvarlige ?: emptyList() + if (ansvarlige.any { it.loesning == Loesning.from(melding.bekreftelsesloesning) }) { + gjeldendeTilstand.oppdaterBekreftelse( + Bekreftelse( + tilstandsLogg = BekreftelseTilstandsLogg( + siste = Levert(melding.svar.sendtInn.tidspunkt), + tidligere = emptyList() + ), + bekreftelseId = melding.id, + gjelderFra = melding.svar.gjelderFra, + gjelderTil = melding.svar.gjelderTil + ) + ) to emptyList() + } else gjeldendeTilstand to emptyList() + } +} \ No newline at end of file