Skip to content

Commit

Permalink
Skilte ut håndtering av innkommende bekreftelse i en egen funksjon fo…
Browse files Browse the repository at this point in the history
…r enklere testing
  • Loading branch information
nilsmsa committed Oct 23, 2024
1 parent 7805be9 commit 0021473
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -43,8 +41,11 @@ fun StreamsBuilder.buildBekreftelseStream(applicationConfig: ApplicationConfig)
),
) { record ->
val internTilstandStateStore = getStateStore<InternTilstandStateStore>(internStateStoreName)
val ansvarStateStore = getStateStore<AnsvarStateStore>(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(
Expand All @@ -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<AnsvarStateStore>(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()))
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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<InternTilstand, List<BekreftelseHendelse>> {
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()
}
}

0 comments on commit 0021473

Please sign in to comment.