Skip to content

Commit

Permalink
♻️ TilbakedateringBehandlet benytter ny flyt
Browse files Browse the repository at this point in the history
  • Loading branch information
chsko committed Aug 19, 2024
1 parent c8479d3 commit 0e73d3f
Show file tree
Hide file tree
Showing 8 changed files with 37 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -224,12 +224,11 @@ internal class Kommandofabrikk(
)
}

fun tilbakedateringGodkjent(
dselsnummer: String,
private fun tilbakedateringGodkjent(
melding: TilbakedateringBehandlet,
person: Person,
oppgaveDataForAutomatisering: OppgaveDataForAutomatisering
): TilbakedateringGodkjentCommand {
val oppgaveDataForAutomatisering = melding.oppgavedataForAutomatisering
val vedtaksperiodeId = oppgaveDataForAutomatisering.vedtaksperiodeId
val sykefraværstilfelle = person.sykefraværstilfelle(vedtaksperiodeId)
val utbetaling = utbetalingDao.hentUtbetaling(oppgaveDataForAutomatisering.utbetalingId)
Expand All @@ -239,7 +238,7 @@ internal class Kommandofabrikk(
}

return TilbakedateringGodkjentCommand(
fødselsnummer = fødselsnummer,
fødselsnummer = melding.fødselsnummer(),
sykefraværstilfelle = sykefraværstilfelle,
utbetaling = utbetaling,
automatisering = automatisering,
Expand All @@ -248,6 +247,7 @@ internal class Kommandofabrikk(
godkjenningMediator = godkjenningMediator,
spleisBehandlingId = vedtaksperiode.gjeldendeBehandlingId,
organisasjonsnummer = vedtaksperiode.organisasjonsnummer(),
søknadsperioder = melding.perioder
)
}

Expand Down Expand Up @@ -514,6 +514,11 @@ internal class Kommandofabrikk(
iverksett(gosysOppgaveEndret(melding, person, oppgaveDataForAutomatisering), melding.id)
}

internal fun iverksettTilbakedateringBehandlet(melding: TilbakedateringBehandlet, person: Person) {
val oppgaveDataForAutomatisering = finnOppgavedata(melding.fødselsnummer()) ?: return
iverksett(tilbakedateringGodkjent(melding, person, oppgaveDataForAutomatisering), melding.id)
}

private fun nyContext(meldingId: UUID) =
CommandContext(UUID.randomUUID()).apply {
opprett(commandContextDao, meldingId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,13 @@ import no.nav.helse.mediator.meldinger.løsninger.SaksbehandlerløsningRiver
import no.nav.helse.mediator.meldinger.løsninger.Vergemålløsning
import no.nav.helse.mediator.meldinger.løsninger.ÅpneGosysOppgaverløsning
import no.nav.helse.mediator.meldinger.påminnelser.KommandokjedePåminnelseRiver
import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.modell.CommandContextDao
import no.nav.helse.modell.MeldingDao
import no.nav.helse.modell.MeldingDuplikatkontrollDao
import no.nav.helse.modell.VedtakDao
import no.nav.helse.modell.dokument.DokumentDao
import no.nav.helse.modell.gosysoppgaver.OppgaveDataForAutomatisering
import no.nav.helse.modell.kommando.Command
import no.nav.helse.modell.kommando.CommandContext
import no.nav.helse.modell.kommando.TilbakedateringBehandlet
import no.nav.helse.modell.person.AdressebeskyttelseEndretRiver
import no.nav.helse.modell.person.OppdaterPersonsnapshot
import no.nav.helse.modell.person.PersonDao
Expand Down Expand Up @@ -91,7 +88,6 @@ internal interface SpesialistRiver : River.PacketListener {
internal class MeldingMediator(
private val dataSource: DataSource,
private val rapidsConnection: RapidsConnection,
private val oppgaveDao: OppgaveDao = OppgaveDao(dataSource),
private val vedtakDao: VedtakDao = VedtakDao(dataSource),
private val personDao: PersonDao = PersonDao(dataSource),
private val commandContextDao: CommandContextDao = CommandContextDao(dataSource),
Expand Down Expand Up @@ -288,56 +284,6 @@ internal class MeldingMediator(
kommandofabrikk.avviksvurdering(avviksvurdering)
}

private fun finnOppgavedata(fødselsnummer: String): OppgaveDataForAutomatisering? {
return oppgaveDao.finnOppgaveId(fødselsnummer)?.let { oppgaveId ->
sikkerlogg.info("Fant en oppgave for {}: {}", fødselsnummer, oppgaveId)
val oppgaveDataForAutomatisering = oppgaveDao.oppgaveDataForAutomatisering(oppgaveId)

if (oppgaveDataForAutomatisering == null) {
sikkerlogg.info("Fant ikke oppgavedata for {} og {}", fødselsnummer, oppgaveId)
return null
} else {
sikkerlogg.info(
"Har aktiv saksbehandleroppgave og oppgavedata for fnr $fødselsnummer og vedtaksperiodeId ${oppgaveDataForAutomatisering.vedtaksperiodeId}",
)
return oppgaveDataForAutomatisering
}
} ?: kotlin.run {
sikkerlogg.info("Ingen åpne oppgaver i Speil for {}", fødselsnummer)
null
}
}

private fun tilbakedateringBehandlet(
dselsnummer: String,
tilbakedateringBehandlet: TilbakedateringBehandlet,
commandContext: CommandContext,
) {
personRepository.brukPersonHvisFinnes(fødselsnummer) {
behandleTilbakedateringBehandlet(tilbakedateringBehandlet.perioder)
}
val oppgaveDataForAutomatisering =
finnOppgavedata(fødselsnummer)
?: return commandContext.avbryt(commandContextDao, tilbakedateringBehandlet.id)

if (!oppgaveDataForAutomatisering.periodeOverlapperMed(tilbakedateringBehandlet.perioder)) {
sikkerlogg.info(
"Ingen av periodene i sykmeldingen er innenfor vedtaksperiodens fom og tom, for tilbakedateringen {} og {}",
fødselsnummer,
oppgaveDataForAutomatisering.oppgaveId,
)
return
}
tilbakedateringBehandlet.oppgavedataForAutomatisering(oppgaveDataForAutomatisering)
personRepository.brukPersonHvisFinnes(fødselsnummer) {
iverksett(
command = kommandofabrikk.tilbakedateringGodkjent(fødselsnummer, tilbakedateringBehandlet, this),
hendelseId = tilbakedateringBehandlet.id,
commandContext = commandContext,
)
}
}

fun stansAutomatiskBehandling(
dselsnummer: String,
status: String,
Expand Down Expand Up @@ -557,12 +503,6 @@ internal class MeldingMediator(
val hendelsenavn = melding::class.simpleName ?: "ukjent hendelse"
try {
when (melding) {
is TilbakedateringBehandlet -> tilbakedateringBehandlet(
melding.fødselsnummer(),
melding,
commandContext
)

is SøknadSendt -> iverksett(kommandofabrikk.søknadSendt(melding), melding.id, commandContext)


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@ internal class TilbakedateringBehandletRiver(
StructuredArguments.keyValue("hendelse", packet.toJson()),
)

mediator.håndter(TilbakedateringBehandlet(packet), context)
mediator.mottaMelding(TilbakedateringBehandlet(packet), context)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ package no.nav.helse.modell.kommando

import com.fasterxml.jackson.databind.JsonNode
import no.nav.helse.mediator.GodkjenningMediator
import no.nav.helse.mediator.meldinger.PersonmeldingOld
import no.nav.helse.mediator.Kommandofabrikk
import no.nav.helse.mediator.meldinger.Personmelding
import no.nav.helse.mediator.oppgave.OppgaveService
import no.nav.helse.modell.automatisering.Automatisering
import no.nav.helse.modell.automatisering.AutomatiseringForEksisterendeOppgaveCommand
import no.nav.helse.modell.automatisering.SettTidligereAutomatiseringInaktivCommand
import no.nav.helse.modell.gosysoppgaver.OppgaveDataForAutomatisering
import no.nav.helse.modell.person.Person
import no.nav.helse.modell.sykefraværstilfelle.Sykefraværstilfelle
import no.nav.helse.modell.utbetaling.Utbetaling
import no.nav.helse.modell.vedtaksperiode.Periode
Expand All @@ -20,7 +22,7 @@ internal class TilbakedateringBehandlet private constructor(
private valdselsnummer: String,
val perioder: List<Periode>,
private val json: String,
) : PersonmeldingOld {
) : Personmelding {
internal constructor(packet: JsonMessage) : this(
id = UUID.fromString(packet["@id"].asText()),
fødselsnummer = packet["fødselsnummer"].asText(),
Expand All @@ -40,16 +42,14 @@ internal class TilbakedateringBehandlet private constructor(
json = jsonNode.toString(),
)

override fun behandle(person: Person, kommandofabrikk: Kommandofabrikk) {
person.behandleTilbakedateringBehandlet(perioder)
kommandofabrikk.iverksettTilbakedateringBehandlet(this, person)
}

override fun fødselsnummer() = fødselsnummer

override fun toJson(): String = json

internal lateinit var oppgavedataForAutomatisering: OppgaveDataForAutomatisering
private set

internal fun oppgavedataForAutomatisering(oppgavedataForAutomatisering: OppgaveDataForAutomatisering) {
this.oppgavedataForAutomatisering = oppgavedataForAutomatisering
}
}

internal class TilbakedateringGodkjentCommand(
Expand All @@ -62,9 +62,11 @@ internal class TilbakedateringGodkjentCommand(
godkjenningMediator: GodkjenningMediator,
spleisBehandlingId: UUID?,
organisasjonsnummer: String,
knadsperioder: List<Periode>
) : MacroCommand() {
override val commands: List<Command> =
listOf(
VurderOmSøknadsperiodenOverlapperMedOppgave(oppgaveDataForAutomatisering, søknadsperioder),
ikkesuspenderendeCommand("fjernTilbakedatertEgenskap") {
oppgaveService.fjernTilbakedatert(oppgaveDataForAutomatisering.vedtaksperiodeId)
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package no.nav.helse.modell.kommando

import no.nav.helse.modell.gosysoppgaver.OppgaveDataForAutomatisering
import no.nav.helse.modell.kommando.CommandContext.Companion.ferdigstill
import no.nav.helse.modell.vedtaksperiode.Periode

internal class VurderOmSøknadsperiodenOverlapperMedOppgave(
private val oppgaveDataForAutomatisering: OppgaveDataForAutomatisering,
private valknadsperioder: List<Periode>
): Command {
override fun execute(context: CommandContext): Boolean {
if (!oppgaveDataForAutomatisering.periodeOverlapperMed(søknadsperioder)) return ferdigstill(context)
return true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import kotliquery.sessionOf
import no.nav.helse.AbstractDatabaseTest
import no.nav.helse.db.AvslagDao
import no.nav.helse.db.AvviksvurderingDao
import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.modell.stoppautomatiskbehandling.StansAutomatiskBehandlingMediator
import no.nav.helse.modell.varsel.Varseldefinisjon
import no.nav.helse.modell.varsel.Varselkode
Expand All @@ -22,7 +21,6 @@ import java.util.UUID
internal class MeldingMediatorTest : AbstractDatabaseTest() {
private val testRapid = TestRapid()

private val oppgaveDao = mockk<OppgaveDao>(relaxed = true)
private val avviksvurderingDao = mockk<AvviksvurderingDao>()
private val generasjonDao = mockk<GenerasjonDao>()
private val avslagDao = mockk<AvslagDao>()
Expand All @@ -33,7 +31,6 @@ internal class MeldingMediatorTest : AbstractDatabaseTest() {
MeldingMediator(
dataSource = dataSource,
rapidsConnection = testRapid,
oppgaveDao = oppgaveDao,
kommandofabrikk = kommandofabrikk,
avviksvurderingDao = avviksvurderingDao,
stansAutomatiskBehandlingMediator = stansAutomatiskBehandlingMediator,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ internal class MetrikkerFraMeldingMediatorTest : AbstractDatabaseTest() {
MeldingMediator(
dataSource = dataSource,
rapidsConnection = testRapid,
oppgaveDao = mockk(relaxed = true),
kommandofabrikk = kommandofabrikk,
avviksvurderingDao = mockk(),
stansAutomatiskBehandlingMediator = mockk(relaxed = true),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ internal class TilbakedateringBehandletRiverTest {
fun `Leser tilbakedatering behandlet`() {
mocks()
testRapid.sendTestMessage(event())
verify(exactly = 1) { mediator.håndter(any<TilbakedateringBehandlet>(), any()) }
verify(exactly = 1) { mediator.mottaMelding(any<TilbakedateringBehandlet>(), any()) }
}

private fun mocks(
Expand Down

0 comments on commit 0e73d3f

Please sign in to comment.