Skip to content

Commit

Permalink
♻️ GosysOppgaveEndret benytter ny flyt
Browse files Browse the repository at this point in the history
  • Loading branch information
chsko committed Aug 19, 2024
1 parent 6a41929 commit c8479d3
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import no.nav.helse.modell.automatisering.Automatisering
import no.nav.helse.modell.egenansatt.EgenAnsattDao
import no.nav.helse.modell.gosysoppgaver.GosysOppgaveEndret
import no.nav.helse.modell.gosysoppgaver.GosysOppgaveEndretCommand
import no.nav.helse.modell.gosysoppgaver.OppgaveDataForAutomatisering
import no.nav.helse.modell.gosysoppgaver.ÅpneGosysOppgaverDao
import no.nav.helse.modell.kommando.Command
import no.nav.helse.modell.kommando.CommandContext
Expand Down Expand Up @@ -118,6 +119,7 @@ internal class Kommandofabrikk(
) {
private companion object {
private val logg = LoggerFactory.getLogger(this::class.java)
private val sikkerlogg = LoggerFactory.getLogger("tjenestekall")
}

private val sykefraværstilfelleDao = SykefraværstilfelleDao(dataSource)
Expand Down Expand Up @@ -190,13 +192,11 @@ internal class Kommandofabrikk(
oppgaveService = oppgaveService,
)

fun gosysOppgaveEndret(
dselsnummer: String,
hendelse: GosysOppgaveEndret,
private fun gosysOppgaveEndret(
melding: GosysOppgaveEndret,
person: Person,
oppgaveDataForAutomatisering: OppgaveDataForAutomatisering
): GosysOppgaveEndretCommand {
val oppgaveDataForAutomatisering = hendelse.oppgavedataForAutomatisering

val utbetaling = utbetalingDao.hentUtbetaling(oppgaveDataForAutomatisering.utbetalingId)
val harTildeltOppgave = tildelingDao.tildelingForOppgave(oppgaveDataForAutomatisering.oppgaveId) != null
val vedtaksperiodeId = oppgaveDataForAutomatisering.vedtaksperiodeId
Expand All @@ -206,8 +206,8 @@ internal class Kommandofabrikk(
}

return GosysOppgaveEndretCommand(
id = hendelse.id,
fødselsnummer = fødselsnummer,
id = melding.id,
fødselsnummer = melding.fødselsnummer(),
aktørId = person.aktørId(),
utbetaling = utbetaling,
sykefraværstilfelle = person.sykefraværstilfelle(oppgaveDataForAutomatisering.vedtaksperiodeId),
Expand Down Expand Up @@ -251,6 +251,26 @@ internal class Kommandofabrikk(
)
}

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 vedtaksperiodeReberegnet(hendelse: VedtaksperiodeReberegnet): VedtaksperiodeReberegnetCommand =
VedtaksperiodeReberegnetCommand(
fødselsnummer = hendelse.fødselsnummer(),
Expand Down Expand Up @@ -489,6 +509,11 @@ internal class Kommandofabrikk(
iverksett(adressebeskyttelseEndret(melding), melding.id)
}

internal fun iverksettGosysOppgaveEndret(melding: GosysOppgaveEndret, person: Person) {
val oppgaveDataForAutomatisering = finnOppgavedata(melding.fødselsnummer()) ?: return
iverksett(gosysOppgaveEndret(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 @@ -53,7 +53,6 @@ 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.GosysOppgaveEndret
import no.nav.helse.modell.gosysoppgaver.OppgaveDataForAutomatisering
import no.nav.helse.modell.kommando.Command
import no.nav.helse.modell.kommando.CommandContext
Expand Down Expand Up @@ -309,24 +308,6 @@ internal class MeldingMediator(
}
}

private fun gosysOppgaveEndret(
dselsnummer: String,
oppgaveEndret: GosysOppgaveEndret,
commandContext: CommandContext,
) {
val oppgavedata =
finnOppgavedata(fødselsnummer)
?: return commandContext.avbryt(commandContextDao, oppgaveEndret.id)
oppgaveEndret.oppgavedataForAutomatisering(oppgavedata)
personRepository.brukPersonHvisFinnes(fødselsnummer) {
iverksett(
kommandofabrikk.gosysOppgaveEndret(fødselsnummer, oppgaveEndret, this),
oppgaveEndret.id,
commandContext
)
}
}

private fun tilbakedateringBehandlet(
dselsnummer: String,
tilbakedateringBehandlet: TilbakedateringBehandlet,
Expand Down Expand Up @@ -576,7 +557,6 @@ internal class MeldingMediator(
val hendelsenavn = melding::class.simpleName ?: "ukjent hendelse"
try {
when (melding) {
is GosysOppgaveEndret -> gosysOppgaveEndret(melding.fødselsnummer(), melding, commandContext)
is TilbakedateringBehandlet -> tilbakedateringBehandlet(
melding.fødselsnummer(),
melding,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@ internal class GosysOppgaveEndretRiver(
}
sikkerlogg.info("gosys_oppgave_endret for fnr {}", fødselsnummer)

mediator.håndter(GosysOppgaveEndret(packet), context)
mediator.mottaMelding(GosysOppgaveEndret(packet), context)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ package no.nav.helse.modell.gosysoppgaver

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.OppgaveDao
import no.nav.helse.mediator.oppgave.OppgaveService
import no.nav.helse.modell.automatisering.Automatisering
Expand All @@ -11,6 +12,7 @@ import no.nav.helse.modell.automatisering.SettTidligereAutomatiseringInaktivComm
import no.nav.helse.modell.kommando.Command
import no.nav.helse.modell.kommando.MacroCommand
import no.nav.helse.modell.oppgave.SjekkAtOppgaveFortsattErÅpenCommand
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.GenerasjonRepository
Expand All @@ -21,7 +23,7 @@ internal class GosysOppgaveEndret private constructor(
override val id: UUID,
private valdselsnummer: String,
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 @@ -34,11 +36,8 @@ internal class GosysOppgaveEndret private constructor(
json = jsonNode.toString(),
)

internal lateinit var oppgavedataForAutomatisering: OppgaveDataForAutomatisering
private set

internal fun oppgavedataForAutomatisering(oppgavedataForAutomatisering: OppgaveDataForAutomatisering) {
this.oppgavedataForAutomatisering = oppgavedataForAutomatisering
override fun behandle(person: Person, kommandofabrikk: Kommandofabrikk) {
kommandofabrikk.iverksettGosysOppgaveEndret(this, person)
}

override fun fødselsnummer() = fødselsnummer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ internal class GosysOppgaveEndretE2ETest : AbstractE2ETest() {
assertSisteEtterspurteBehov("ÅpneOppgaver")
}

@Test
fun `Legg til varsel ved åpne oppgaver i Gosys`() {
vedtaksløsningenMottarNySøknad()
spleisOppretterNyBehandling()
spesialistBehandlerGodkjenningsbehovFremTilOppgave()
håndterGosysOppgaveEndret()
håndterÅpneOppgaverløsning(antallÅpneOppgaverIGosys = 1)
assertVarsel(VEDTAKSPERIODE_ID, "SB_EX_1")
}

@Test
fun `ber ikke om informasjon dersom det ikke finnes aktiv oppgave i Speil`() {
vedtaksløsningenMottarNySøknad()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal class GosysOppgaveEndretRiverTest {
@Test
fun `Leser GosysOppgaveEndret`() {
testRapid.sendTestMessage(event())
verify(exactly = 1) { mediator.håndter(any<GosysOppgaveEndret>(), any()) }
verify(exactly = 1) { mediator.mottaMelding(any<GosysOppgaveEndret>(), any()) }
}

@Language("JSON")
Expand Down

0 comments on commit c8479d3

Please sign in to comment.