Skip to content

Commit

Permalink
♻️ Godkjenningsbehov benytter ny flyt
Browse files Browse the repository at this point in the history
  • Loading branch information
chsko committed Aug 19, 2024
1 parent 1d4fe45 commit 6a41929
Show file tree
Hide file tree
Showing 9 changed files with 77 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,11 @@ internal class Kommandofabrikk(
)
}

fun godkjenningsbehov(hendelse: Godkjenningsbehov): GodkjenningsbehovCommand {
private fun godkjenningsbehov(
hendelse: Godkjenningsbehov,
person: Person,
tags: List<String>
): GodkjenningsbehovCommand {
val utbetaling = utbetalingDao.hentUtbetaling(hendelse.utbetalingId)
val førsteKjenteDagFinner = { generasjonRepository.førsteKjenteDag(hendelse.fødselsnummer()) }
return GodkjenningsbehovCommand(
Expand All @@ -403,7 +407,6 @@ internal class Kommandofabrikk(
utbetalingId = hendelse.utbetalingId,
utbetaling = utbetaling,
utbetalingtype = hendelse.utbetalingtype,
sykefraværstilfelle = sykefraværstilfelle(hendelse.fødselsnummer(), hendelse.skjæringstidspunkt),
skjæringstidspunkt = hendelse.skjæringstidspunkt,
kanAvvises = hendelse.kanAvvises,
førsteKjenteDagFinner = førsteKjenteDagFinner,
Expand All @@ -430,6 +433,8 @@ internal class Kommandofabrikk(
godkjenningMediator = godkjenningMediator,
totrinnsvurderingMediator = totrinnsvurderingMediator,
json = hendelse.toJson(),
person = person,
tags = tags,
)
}

Expand Down Expand Up @@ -460,6 +465,14 @@ internal class Kommandofabrikk(
iverksett(vedtaksperiodeNyUtbetaling(melding), melding.id)
}

internal fun iverksettGodkjenningsbehov(
melding: Godkjenningsbehov,
person: Person,
tags: List<String>
) {
iverksett(godkjenningsbehov(melding, person, tags), melding.id)
}

internal fun iverksettOverstyringIgangsatt(melding: OverstyringIgangsatt) {
iverksett(overstyringIgangsatt(melding), melding.id)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,6 @@ import no.nav.helse.modell.stoppautomatiskbehandling.StoppknappÅrsak
import no.nav.helse.modell.varsel.VarselRepository
import no.nav.helse.modell.varsel.Varseldefinisjon
import no.nav.helse.modell.vedtaksperiode.GenerasjonDao
import no.nav.helse.modell.vedtaksperiode.GenerasjonRepository
import no.nav.helse.modell.vedtaksperiode.Godkjenningsbehov
import no.nav.helse.modell.vedtaksperiode.GodkjenningsbehovCommand
import no.nav.helse.modell.vedtaksperiode.vedtak.Saksbehandlerløsning
import no.nav.helse.modell.vedtaksperiode.vedtak.VedtakFattet
Expand Down Expand Up @@ -104,7 +102,6 @@ internal class MeldingMediator(
private val dokumentDao: DokumentDao = DokumentDao(dataSource),
avviksvurderingDao: AvviksvurderingDao,
private val varselRepository: VarselRepository = VarselRepository(dataSource),
private val generasjonRepository: GenerasjonRepository = GenerasjonRepository(dataSource),
private val metrikkDao: MetrikkDao = MetrikkDao(dataSource),
private val stansAutomatiskBehandlingMediator: StansAutomatiskBehandlingMediator,
generasjonDao: GenerasjonDao,
Expand Down Expand Up @@ -292,28 +289,6 @@ internal class MeldingMediator(
kommandofabrikk.avviksvurdering(avviksvurdering)
}

fun godkjenningsbehov(
godkjenningsbehov: Godkjenningsbehov,
context: MessageContext,
) {
personRepository.brukPersonHvisFinnes(godkjenningsbehov.fødselsnummer()) {
mottaSpleisVedtaksperioder(godkjenningsbehov.spleisVedtaksperioder)
flyttEventuelleAvviksvarsler(godkjenningsbehov.vedtaksperiodeId(), godkjenningsbehov.skjæringstidspunkt)
}

generasjonRepository.brukVedtaksperiode(
godkjenningsbehov.fødselsnummer(),
godkjenningsbehov.vedtaksperiodeId()
) { vedtaksperiode ->
vedtaksperiode.mottaBehandlingsinformasjon(
godkjenningsbehov.tags,
godkjenningsbehov.spleisBehandlingId,
godkjenningsbehov.utbetalingId,
)
}
håndter(godkjenningsbehov, context)
}

private fun finnOppgavedata(fødselsnummer: String): OppgaveDataForAutomatisering? {
return oppgaveDao.finnOppgaveId(fødselsnummer)?.let { oppgaveId ->
sikkerlogg.info("Fant en oppgave for {}: {}", fødselsnummer, oppgaveId)
Expand Down Expand Up @@ -609,18 +584,13 @@ internal class MeldingMediator(
)

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


is Saksbehandlerløsning -> iverksett(
kommandofabrikk.utbetalingsgodkjenning(melding),
melding.id,
commandContext
)

else -> throw IllegalArgumentException("Personhendelse må håndteres")
}
utgåendeMeldingerMediator.publiserOppsamledeMeldinger(melding, messageContext)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package no.nav.helse.mediator.meldinger

import net.logstash.logback.argument.StructuredArguments
import no.nav.helse.mediator.MeldingMediator
import no.nav.helse.mediator.SpesialistRiver
import no.nav.helse.modell.utbetaling.Utbetalingtype
Expand All @@ -12,12 +11,10 @@ import no.nav.helse.rapids_rivers.MessageProblems
import no.nav.helse.rapids_rivers.River
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import java.util.UUID

internal class GodkjenningsbehovRiver(
private val mediator: MeldingMediator,
) : SpesialistRiver {
private val logg = LoggerFactory.getLogger(this::class.java)
private val sikkerLogg: Logger = LoggerFactory.getLogger("tjenestekall")

override fun validations() =
Expand Down Expand Up @@ -62,24 +59,5 @@ internal class GodkjenningsbehovRiver(
override fun onPacket(
packet: JsonMessage,
context: MessageContext,
) {
val hendelseId = UUID.fromString(packet["@id"].asText())

if (hendelseId == UUID.fromString("390911c8-d94d-4b53-8854-e0f6b813edd4")) {
return
}
logg.info(
"Mottok godkjenningsbehov med {}",
StructuredArguments.keyValue("hendelseId", hendelseId),
)
sikkerLogg.info(
"Mottok godkjenningsbehov med {}, {}",
StructuredArguments.keyValue("hendelseId", hendelseId),
StructuredArguments.keyValue("hendelse", packet.toJson()),
)
mediator.godkjenningsbehov(
Godkjenningsbehov(packet),
context = context,
)
}
) = mediator.mottaMelding(Godkjenningsbehov(packet), context)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import kotliquery.queryOf
import kotliquery.sessionOf
import no.nav.helse.mediator.meldinger.AdressebeskyttelseEndret
import no.nav.helse.mediator.meldinger.PersonmeldingOld
import no.nav.helse.mediator.meldinger.VedtaksperiodemeldingOld
import no.nav.helse.mediator.meldinger.Vedtaksperiodemelding
import no.nav.helse.mediator.meldinger.hendelser.AvsluttetUtenVedtakMessage
import no.nav.helse.modell.MeldingDao.Meldingtype.ADRESSEBESKYTTELSE_ENDRET
import no.nav.helse.modell.MeldingDao.Meldingtype.AVSLUTTET_UTEN_VEDTAK
Expand Down Expand Up @@ -57,7 +57,7 @@ internal class MeldingDao(private val dataSource: DataSource) {
session.transaction { transactionalSession ->
transactionalSession.run {
lagre(melding)
if (melding is VedtaksperiodemeldingOld) {
if (melding is Vedtaksperiodemelding) {
opprettKobling(melding.vedtaksperiodeId(), melding.id)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package no.nav.helse.modell.kommando

import no.nav.helse.modell.person.Person
import no.nav.helse.modell.vedtaksperiode.SpleisVedtaksperiode
import java.time.LocalDate
import java.util.UUID

internal class ForberedBehandlingAvGodkjenningsbehov(
private val person: Person,
private val spleisVedtaksperioder: List<SpleisVedtaksperiode>,
private val vedtaksperiodeId: UUID,
private val utbetalingId: UUID,
private val spleisBehandlingId: UUID,
private val tags: List<String>,
private val skjæringstidspunkt: LocalDate,
): Command {
override fun execute(context: CommandContext): Boolean {
person.mottaSpleisVedtaksperioder(spleisVedtaksperioder)
person.flyttEventuelleAvviksvarsler(vedtaksperiodeId, skjæringstidspunkt)
person.oppdaterPeriodeTilGodkjenning(vedtaksperiodeId, tags, spleisBehandlingId, utbetalingId)
return true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import org.slf4j.LoggerFactory
import java.util.UUID


internal class VurderBehovForBehandlingAvGodkjenningsbehov(
internal class VurderVidereBehandlingAvGodkjenningsbehov(
private val meldingId: UUID,
private val utbetalingId: UUID,
private val vedtaksperiodeId: UUID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ class Person private constructor(
vedtaksperioder.forEach { it.nyttGodkjenningsbehov(perioder) }
}

fun oppdaterPeriodeTilGodkjenning(vedtaksperiodeId: UUID, tags: List<String>, spleisBehandlingId: UUID, utbetalingId: UUID) {
vedtaksperiode(vedtaksperiodeId)?.mottaBehandlingsinformasjon(tags, spleisBehandlingId, utbetalingId)
}

internal fun vedtakFattet(vedtakFattet: VedtakFattet) {
vedtaksperiode(vedtakFattet.vedtaksperiodeId())
?.vedtakFattet(vedtakFattet.id, vedtakFattet.spleisBehandlingId())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ package no.nav.helse.modell.vedtaksperiode
import com.fasterxml.jackson.databind.JsonNode
import no.nav.helse.db.AvviksvurderingDao
import no.nav.helse.mediator.GodkjenningMediator
import no.nav.helse.mediator.Kommandofabrikk
import no.nav.helse.mediator.asUUID
import no.nav.helse.mediator.meldinger.VedtaksperiodemeldingOld
import no.nav.helse.mediator.meldinger.Vedtaksperiodemelding
import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.mediator.oppgave.OppgaveService
import no.nav.helse.modell.CommandContextDao
Expand All @@ -22,6 +23,7 @@ import no.nav.helse.modell.gosysoppgaver.VurderÅpenGosysoppgave
import no.nav.helse.modell.gosysoppgaver.ÅpneGosysOppgaverDao
import no.nav.helse.modell.kommando.AvbrytContextCommand
import no.nav.helse.modell.kommando.Command
import no.nav.helse.modell.kommando.ForberedBehandlingAvGodkjenningsbehov
import no.nav.helse.modell.kommando.KlargjørArbeidsgiverCommand
import no.nav.helse.modell.kommando.MacroCommand
import no.nav.helse.modell.kommando.OppdaterPersonCommand
Expand All @@ -33,14 +35,14 @@ import no.nav.helse.modell.kommando.OpprettSaksbehandleroppgave
import no.nav.helse.modell.kommando.PersisterInntektCommand
import no.nav.helse.modell.kommando.PersisterPeriodehistorikkCommand
import no.nav.helse.modell.kommando.PersisterVedtaksperiodetypeCommand
import no.nav.helse.modell.kommando.VurderBehovForBehandlingAvGodkjenningsbehov
import no.nav.helse.modell.kommando.VurderVidereBehandlingAvGodkjenningsbehov
import no.nav.helse.modell.kommando.VurderBehovForTotrinnskontroll
import no.nav.helse.modell.overstyring.OverstyringDao
import no.nav.helse.modell.person.Person
import no.nav.helse.modell.person.PersonDao
import no.nav.helse.modell.påvent.PåVentDao
import no.nav.helse.modell.risiko.RisikovurderingDao
import no.nav.helse.modell.risiko.VurderVurderingsmomenter
import no.nav.helse.modell.sykefraværstilfelle.Sykefraværstilfelle
import no.nav.helse.modell.totrinnsvurdering.TotrinnsvurderingMediator
import no.nav.helse.modell.utbetaling.Utbetaling
import no.nav.helse.modell.utbetaling.UtbetalingDao
Expand Down Expand Up @@ -88,13 +90,17 @@ internal class Godkjenningsbehov private constructor(
val orgnummereMedRelevanteArbeidsforhold: List<String>,
val skjæringstidspunkt: LocalDate,
private val json: String,
) : VedtaksperiodemeldingOld {
) : Vedtaksperiodemelding {
override fun fødselsnummer() = fødselsnummer

override fun vedtaksperiodeId() = vedtaksperiodeId

override fun toJson() = json

override fun behandle(person: Person, kommandofabrikk: Kommandofabrikk) {
kommandofabrikk.iverksettGodkjenningsbehov(this, person, tags)
}

internal constructor(packet: JsonMessage) : this(
id = packet["@id"].asUUID(),
fødselsnummer = packet["fødselsnummer"].asText(),
Expand Down Expand Up @@ -198,7 +204,6 @@ internal class GodkjenningsbehovCommand(
utbetalingId: UUID,
utbetaling: Utbetaling,
utbetalingtype: Utbetalingtype,
sykefraværstilfelle: Sykefraværstilfelle,
skjæringstidspunkt: LocalDate,
kanAvvises: Boolean,
rsteKjenteDagFinner: () -> LocalDate,
Expand Down Expand Up @@ -226,10 +231,22 @@ internal class GodkjenningsbehovCommand(
totrinnsvurderingMediator: TotrinnsvurderingMediator,
json: String,
spleisVedtaksperioder: List<SpleisVedtaksperiode>,
tags: List<String>,
person: Person
) : MacroCommand() {
private val sykefraværstilfelle = person.sykefraværstilfelle(vedtaksperiodeId)
override val commands: List<Command> =
listOf(
VurderBehovForBehandlingAvGodkjenningsbehov(
ForberedBehandlingAvGodkjenningsbehov(
person = person,
spleisBehandlingId = spleisBehandlingId,
spleisVedtaksperioder = spleisVedtaksperioder,
vedtaksperiodeId = vedtaksperiodeId,
utbetalingId = utbetalingId,
skjæringstidspunkt = skjæringstidspunkt,
tags = tags
),
VurderVidereBehandlingAvGodkjenningsbehov(
meldingId = id,
utbetalingId = utbetalingId,
vedtaksperiodeId = vedtaksperiodeId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import io.mockk.verify
import no.nav.helse.medRivers
import no.nav.helse.mediator.MeldingMediator
import no.nav.helse.modell.utbetaling.Utbetalingtype
import no.nav.helse.modell.vedtaksperiode.Godkjenningsbehov
import no.nav.helse.modell.vedtaksperiode.Inntektskilde
import no.nav.helse.modell.vedtaksperiode.Periodetype
import no.nav.helse.rapids_rivers.testsupport.TestRapid
Expand Down Expand Up @@ -58,8 +59,8 @@ internal class GodkjenningsbehovRiverTest {
utbetalingtype = Utbetalingtype.UTBETALING
)
)
verify(exactly = 1) { mediator.godkjenningsbehov(
godkjenningsbehov = withArg {
verify(exactly = 1) { mediator.mottaMelding(
melding = withArg<Godkjenningsbehov> {
assertEquals(HENDELSE, it.id)
assertEquals(FNR, it.fødselsnummer())
assertEquals(AKTØR, it.aktørId)
Expand All @@ -75,7 +76,7 @@ internal class GodkjenningsbehovRiverTest {
assertEquals(Periodetype.FØRSTEGANGSBEHANDLING, it.periodetype)
assertEquals(Utbetalingtype.UTBETALING, it.utbetalingtype)
},
context = any()
messageContext = any()
) }
}

Expand All @@ -99,9 +100,9 @@ internal class GodkjenningsbehovRiverTest {
)
)
verify(exactly = 0) {
mediator.godkjenningsbehov(
godkjenningsbehov = any(),
context = any(),
mediator.mottaMelding(
melding = any(),
messageContext = any(),
)
}
}
Expand Down

0 comments on commit 6a41929

Please sign in to comment.