Skip to content

Commit

Permalink
♻️ Innført datastruktur for data fra godkjenningsbehovet
Browse files Browse the repository at this point in the history
Et steg på veien til å frikoble dataene kommandokjeder trenger fra
meldingene fra rapiden.

Co-authored-by: Christian Bülow Skovborg <[email protected]>
Co-authored-by: Øydis Kind Refsum <[email protected]>
  • Loading branch information
3 people committed Aug 26, 2024
1 parent 732f5ce commit 3a32c38
Show file tree
Hide file tree
Showing 9 changed files with 147 additions and 144 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ import no.nav.helse.modell.utbetaling.UtbetalingDao
import no.nav.helse.modell.utbetaling.UtbetalingEndret
import no.nav.helse.modell.utbetaling.UtbetalingEndretCommand
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.GodkjenningsbehovData
import no.nav.helse.modell.vedtaksperiode.VedtaksperiodeForkastet
import no.nav.helse.modell.vedtaksperiode.VedtaksperiodeForkastetCommand
import no.nav.helse.modell.vedtaksperiode.VedtaksperiodeNyUtbetaling
Expand Down Expand Up @@ -345,30 +345,14 @@ internal class Kommandofabrikk(
}

internal fun godkjenningsbehov(
hendelse: Godkjenningsbehov,
godkjenningsbehovData: GodkjenningsbehovData,
person: Person,
tags: List<String>,
): GodkjenningsbehovCommand {
val utbetaling = utbetalingDao.hentUtbetaling(hendelse.utbetalingId)
val førsteKjenteDagFinner = { generasjonRepository.førsteKjenteDag(hendelse.fødselsnummer()) }
val utbetaling = utbetalingDao.hentUtbetaling(godkjenningsbehovData.utbetalingId)
val førsteKjenteDagFinner = { generasjonRepository.førsteKjenteDag(godkjenningsbehovData.fødselsnummer) }
return GodkjenningsbehovCommand(
id = hendelse.id,
fødselsnummer = hendelse.fødselsnummer(),
aktørId = hendelse.aktørId,
organisasjonsnummer = hendelse.organisasjonsnummer,
orgnummereMedRelevanteArbeidsforhold = hendelse.orgnummereMedRelevanteArbeidsforhold,
vedtaksperiodeId = hendelse.vedtaksperiodeId(),
spleisBehandlingId = hendelse.spleisBehandlingId,
avviksvurderingId = hendelse.avviksvurderingId,
vilkårsgrunnlagId = hendelse.vilkårsgrunnlagId,
periodetype = hendelse.periodetype,
inntektskilde = hendelse.inntektskilde,
førstegangsbehandling = hendelse.førstegangsbehandling,
utbetalingId = hendelse.utbetalingId,
commandData = godkjenningsbehovData,
utbetaling = utbetaling,
utbetalingtype = hendelse.utbetalingtype,
skjæringstidspunkt = hendelse.skjæringstidspunkt,
kanAvvises = hendelse.kanAvvises,
førsteKjenteDagFinner = førsteKjenteDagFinner,
automatisering = automatisering,
vedtakDao = vedtakDao,
Expand All @@ -391,9 +375,6 @@ internal class Kommandofabrikk(
oppgaveService = oppgaveService,
godkjenningMediator = godkjenningMediator,
totrinnsvurderingMediator = totrinnsvurderingMediator,
json = hendelse.toJson(),
spleisVedtaksperioder = hendelse.spleisVedtaksperioder,
tags = tags,
person = person,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package no.nav.helse.modell.kommando

import no.nav.helse.modell.CommandContextDao
import org.slf4j.LoggerFactory
import java.util.*
import java.util.UUID

internal class AvbrytContextCommand(
private val vedtaksperiodeId: UUID,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
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
import no.nav.helse.modell.vedtaksperiode.GodkjenningsbehovData

internal class ForberedBehandlingAvGodkjenningsbehov(
private val commandData: GodkjenningsbehovData,
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 {
) : Command {
override fun execute(context: CommandContext): Boolean {
person.mottaSpleisVedtaksperioder(spleisVedtaksperioder)
person.flyttEventuelleAvviksvarsler(vedtaksperiodeId, skjæringstidspunkt)
person.oppdaterPeriodeTilGodkjenning(vedtaksperiodeId, tags, spleisBehandlingId, utbetalingId)
person.mottaSpleisVedtaksperioder(commandData.spleisVedtaksperioder)
person.flyttEventuelleAvviksvarsler(commandData.vedtaksperiodeId, commandData.skjæringstidspunkt)
person.oppdaterPeriodeTilGodkjenning(
commandData.vedtaksperiodeId,
commandData.tags,
commandData.spleisBehandlingId,
commandData.utbetalingId,
)
return true
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
package no.nav.helse.modell.kommando

import no.nav.helse.db.AvviksvurderingDao
import java.util.UUID
import no.nav.helse.modell.vedtaksperiode.GodkjenningsbehovData

internal class OpprettKoblingTilAvviksvurdering(
private val avviksvurderingId: UUID?,
private val vilkårsgrunnlagId: UUID,
private val avviksvurderingDao: AvviksvurderingDao
): Command {
private val commandData: GodkjenningsbehovData,
private val avviksvurderingDao: AvviksvurderingDao,
) : Command {
override fun execute(context: CommandContext): Boolean {
if (avviksvurderingId != null) {
avviksvurderingDao.opprettKobling(avviksvurderingId, vilkårsgrunnlagId)
if (commandData.avviksvurderingId != null) {
avviksvurderingDao.opprettKobling(commandData.avviksvurderingId, commandData.vilkårsgrunnlagId)
}
return true
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
package no.nav.helse.modell.kommando

import no.nav.helse.modell.VedtakDao
import java.util.*
import no.nav.helse.modell.vedtaksperiode.GodkjenningsbehovData

internal class OpprettKoblingTilHendelseCommand(
private val hendelseId: UUID,
private val vedtaksperiodeId: UUID,
commandData: GodkjenningsbehovData,
private val vedtakDao: VedtakDao,
) : Command {
private val meldingId = commandData.id

private val vedtaksperiodeId = commandData.vedtaksperiodeId

override fun execute(context: CommandContext): Boolean {
vedtakDao.opprettKobling(vedtaksperiodeId, hendelseId)
vedtakDao.opprettKobling(vedtaksperiodeId, meldingId)
return true
}

override fun undo(context: CommandContext) {
vedtakDao.fjernKobling(vedtaksperiodeId, hendelseId)
vedtakDao.fjernKobling(vedtaksperiodeId, meldingId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package no.nav.helse.modell.kommando
import no.nav.helse.modell.VedtakDao
import no.nav.helse.modell.vedtaksperiode.Inntektskilde
import no.nav.helse.modell.vedtaksperiode.Periodetype
import java.util.*
import java.util.UUID

internal class PersisterVedtaksperiodetypeCommand(
private val vedtaksperiodeId: UUID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,29 @@ import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.modell.VedtakDao
import no.nav.helse.modell.kommando.CommandContext.Companion.ferdigstill
import no.nav.helse.modell.utbetaling.UtbetalingDao
import no.nav.helse.modell.vedtaksperiode.GodkjenningsbehovData
import org.slf4j.LoggerFactory
import java.util.UUID


internal class VurderVidereBehandlingAvGodkjenningsbehov(
private val meldingId: UUID,
private val utbetalingId: UUID,
private val vedtaksperiodeId: UUID,
private val commandData: GodkjenningsbehovData,
private val utbetalingDao: UtbetalingDao,
private val oppgaveDao: OppgaveDao,
private val vedtakDao: VedtakDao,
): Command {
) : Command {
private companion object {
private val sikkerlogg = LoggerFactory.getLogger("tjenestekall")
}

override fun execute(context: CommandContext): Boolean {
val utbetalingId = commandData.utbetalingId
val meldingId = commandData.id
if (utbetalingDao.erUtbetalingForkastet(utbetalingId)) {
sikkerlogg.info("Ignorerer godkjenningsbehov med id=$meldingId for utbetalingId=$utbetalingId fordi utbetalingen er forkastet")
return ferdigstill(context)
}
if (oppgaveDao.harGyldigOppgave(utbetalingId) || vedtakDao.erAutomatiskGodkjent(utbetalingId)) {
sikkerlogg.info(
"vedtaksperiodeId=$vedtaksperiodeId med utbetalingId=$utbetalingId har gyldig oppgave eller er automatisk godkjent. Ignorerer godkjenningsbehov med id=$meldingId",
"vedtaksperiodeId=${commandData.vedtaksperiodeId} med utbetalingId=$utbetalingId har gyldig oppgave eller er automatisk godkjent. Ignorerer godkjenningsbehov med id=$meldingId",
)
return ferdigstill(context)
}
Expand Down
Loading

0 comments on commit 3a32c38

Please sign in to comment.