Skip to content

Commit

Permalink
lager behandlingssammendrag av Tilbakekrevingsbehandler
Browse files Browse the repository at this point in the history
  • Loading branch information
RamziAbuQassim committed Nov 6, 2023
1 parent 4a4b812 commit d894fa5
Show file tree
Hide file tree
Showing 17 changed files with 271 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package no.nav.su.se.bakover.domain.sak
package no.nav.su.se.bakover.common.domain.sak

import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.tid.Tidspunkt
import no.nav.su.se.bakover.common.tid.periode.Periode
import java.util.UUID

/**
* TODO - Vi burde på sikt ha en sak modul, og denne burde være der
*
* @param behandlingStartet Dette skulle egentlig vært sistEndret
*/
data class Behandlingssammendrag(
Expand All @@ -14,13 +16,14 @@ data class Behandlingssammendrag(
val periode: Periode?,
val behandlingstype: Behandlingstype,
val behandlingStartet: Tidspunkt?,
val status: Behandlingsstatus,
val status: Behandlingsstatus?,
) {

enum class Behandlingstype {
SØKNADSBEHANDLING,
REVURDERING,
KLAGE,
TILBAKEKREVING,
}

enum class Behandlingsstatus {
Expand All @@ -35,5 +38,6 @@ data class Behandlingssammendrag(
STANS,
GJENOPPTAK,
OVERSENDT,
IVERKSATT,
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.su.se.bakover.database.sak
import kotliquery.Row
import no.nav.su.se.bakover.common.deserialize
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.infrastructure.persistence.DbMetrics
import no.nav.su.se.bakover.common.infrastructure.persistence.Session
import no.nav.su.se.bakover.common.infrastructure.persistence.hentListe
Expand All @@ -11,7 +12,6 @@ import no.nav.su.se.bakover.common.tid.periode.Periode
import no.nav.su.se.bakover.database.klage.KlagePostgresRepo
import no.nav.su.se.bakover.database.revurdering.RevurderingsType
import no.nav.su.se.bakover.database.søknadsbehandling.SøknadsbehandlingStatusDB
import no.nav.su.se.bakover.domain.sak.Behandlingssammendrag
import java.util.UUID

internal class FerdigeBehandlingerRepo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.su.se.bakover.database.sak
import arrow.core.NonEmptyList
import kotliquery.Row
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.infrastructure.persistence.DbMetrics
Expand All @@ -29,7 +30,6 @@ import no.nav.su.se.bakover.domain.behandling.Behandlinger
import no.nav.su.se.bakover.domain.klage.KlageRepo
import no.nav.su.se.bakover.domain.oppdrag.utbetaling.Utbetalinger
import no.nav.su.se.bakover.domain.regulering.ReguleringRepo
import no.nav.su.se.bakover.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.domain.sak.NySak
import no.nav.su.se.bakover.domain.sak.SakInfo
import no.nav.su.se.bakover.domain.sak.SakRepo
Expand Down Expand Up @@ -58,6 +58,8 @@ internal class SakPostgresRepo(

private val åpneBehandlingerRepo = ÅpneBehandlingerRepo(
dbMetrics = dbMetrics,
tilbakekrevingsbehandlingRepo = tilbakekrevingRepo,
sessionFactory = sessionFactory,
)

private val ferdigeBehandlingerRepo = FerdigeBehandlingerRepo(
Expand Down Expand Up @@ -249,8 +251,8 @@ internal class SakPostgresRepo(

override fun hentÅpneBehandlinger(): List<Behandlingssammendrag> {
return dbMetrics.timeQuery("hentÅpneBehandlinger") {
sessionFactory.withSession { session ->
åpneBehandlingerRepo.hentÅpneBehandlinger(session)
sessionFactory.withSessionContext { tx ->
åpneBehandlingerRepo.hentÅpneBehandlinger(tx)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,41 @@ package no.nav.su.se.bakover.database.sak
import kotliquery.Row
import no.nav.su.se.bakover.common.deserialize
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.infrastructure.persistence.DbMetrics
import no.nav.su.se.bakover.common.infrastructure.persistence.Session
import no.nav.su.se.bakover.common.infrastructure.persistence.PostgresSessionContext.Companion.withOptionalSession
import no.nav.su.se.bakover.common.infrastructure.persistence.hentListe
import no.nav.su.se.bakover.common.infrastructure.persistence.tidspunktOrNull
import no.nav.su.se.bakover.common.persistence.SessionContext
import no.nav.su.se.bakover.common.persistence.SessionFactory
import no.nav.su.se.bakover.common.tid.periode.Periode
import no.nav.su.se.bakover.database.klage.KlagePostgresRepo
import no.nav.su.se.bakover.database.revurdering.RevurderingsType
import no.nav.su.se.bakover.database.søknadsbehandling.SøknadsbehandlingStatusDB
import no.nav.su.se.bakover.domain.sak.Behandlingssammendrag
import tilbakekreving.domain.opprett.TilbakekrevingsbehandlingRepo
import java.util.UUID

internal class ÅpneBehandlingerRepo(
private val dbMetrics: DbMetrics,
private val tilbakekrevingsbehandlingRepo: TilbakekrevingsbehandlingRepo,
private val sessionFactory: SessionFactory,
) {
fun hentÅpneBehandlinger(sessionContext: SessionContext? = null): List<Behandlingssammendrag> {
return sessionContext.withOptionalSession(sessionFactory) {
åpneBehandlingerUtenTilbakekreving(sessionContext).plus(
tilbakekrevingsbehandlingRepo.hentÅpneBehandlingssamendrag(),
)
}
}

/**
* Henter åpne søknadsbehandlinger, åpne revurderinger, åpne klager, og nye søknader
*/
fun hentÅpneBehandlinger(session: Session): List<Behandlingssammendrag> {
private fun åpneBehandlingerUtenTilbakekreving(sessionContext: SessionContext? = null): List<Behandlingssammendrag> {
return dbMetrics.timeQuery("hentÅpneBehandlinger") {
//language=sql
"""
sessionContext.withOptionalSession(sessionFactory) {
//language=postgresql
"""
with sak as (
select id as sakId, saksnummer
from sak
Expand Down Expand Up @@ -75,8 +89,9 @@ internal class ÅpneBehandlingerRepo(
)
select *
from slåttSammen
""".hentListe(emptyMap(), session) {
it.toBehandlingsoversikt()
""".hentListe(emptyMap(), it) {
it.toBehandlingsoversikt()
}
}
}
}
Expand All @@ -99,7 +114,9 @@ internal class ÅpneBehandlingerRepo(
): Behandlingssammendrag.Behandlingsstatus {
return when (behandlingsTypeDB) {
BehandlingsTypeDB.SØKNAD -> Behandlingssammendrag.Behandlingsstatus.NY_SØKNAD
BehandlingsTypeDB.SØKNADSBEHANDLING -> SøknadsbehandlingStatusDB.valueOf(string("status")).tilBehandlingsstatus()
BehandlingsTypeDB.SØKNADSBEHANDLING -> SøknadsbehandlingStatusDB.valueOf(string("status"))
.tilBehandlingsstatus()

BehandlingsTypeDB.REVURDERING -> RevurderingsType.valueOf(string("status")).tilBehandlingsstatus()
BehandlingsTypeDB.KLAGE -> KlagePostgresRepo.Tilstand.fromString(string("status")).tilBehandlingsstatus()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ package no.nav.su.se.bakover.database.sak
import io.kotest.matchers.collections.shouldContainExactlyInAnyOrder
import io.kotest.matchers.shouldBe
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.tid.periode.desember
import no.nav.su.se.bakover.common.tid.periode.februar
import no.nav.su.se.bakover.common.tid.periode.år
import no.nav.su.se.bakover.domain.klage.VurdertKlage
import no.nav.su.se.bakover.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.domain.vedtak.VedtakInnvilgetSøknadsbehandling
import no.nav.su.se.bakover.domain.vedtak.VedtakSomKanRevurderes
import no.nav.su.se.bakover.test.persistence.TestDataHelper
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import arrow.core.nonEmptyListOf
import io.kotest.matchers.collections.shouldContainExactlyInAnyOrder
import io.kotest.matchers.shouldBe
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.person.Fnr
import no.nav.su.se.bakover.common.tid.periode.år
import no.nav.su.se.bakover.domain.Sak
import no.nav.su.se.bakover.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.domain.sak.SakInfo
import no.nav.su.se.bakover.test.generer
import no.nav.su.se.bakover.test.persistence.TestDataHelper
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package no.nav.su.se.bakover.domain.sak

import arrow.core.NonEmptyList
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.persistence.SessionContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.su.se.bakover.domain.sak
import arrow.core.Either
import dokument.domain.Dokument
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.persistence.SessionContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import dokument.domain.Dokument
import dokument.domain.DokumentRepo
import dokument.domain.brev.BrevService
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.persistence.SessionContext
import no.nav.su.se.bakover.common.person.Fnr
Expand All @@ -22,7 +23,6 @@ import no.nav.su.se.bakover.domain.brev.command.FritekstDokumentCommand
import no.nav.su.se.bakover.domain.journalpost.Journalpost
import no.nav.su.se.bakover.domain.journalpost.JournalpostClient
import no.nav.su.se.bakover.domain.journalpost.KunneIkkeHenteJournalposter
import no.nav.su.se.bakover.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.domain.sak.FantIkkeSak
import no.nav.su.se.bakover.domain.sak.KunneIkkeHenteGjeldendeGrunnlagsdataForVedtak
import no.nav.su.se.bakover.domain.sak.KunneIkkeHenteGjeldendeVedtaksdata
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import dokument.domain.brev.BrevService
import io.kotest.assertions.arrow.core.shouldBeRight
import io.kotest.matchers.shouldBe
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.common.tid.periode.år
import no.nav.su.se.bakover.domain.Sak
import no.nav.su.se.bakover.domain.journalpost.Journalpost
import no.nav.su.se.bakover.domain.journalpost.JournalpostClient
import no.nav.su.se.bakover.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.domain.sak.OpprettDokumentRequest
import no.nav.su.se.bakover.domain.sak.SakInfo
import no.nav.su.se.bakover.domain.sak.SakRepo
Expand Down
24 changes: 24 additions & 0 deletions test-common/src/main/kotlin/TilbakekrevingTestData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import no.nav.su.se.bakover.common.tid.periode.januar
import no.nav.su.se.bakover.hendelse.domain.DefaultHendelseMetadata
import no.nav.su.se.bakover.hendelse.domain.HendelseId
import no.nav.su.se.bakover.hendelse.domain.Hendelsesversjon
import tilbakekreving.domain.AvbruttHendelse
import tilbakekreving.domain.BrevTilbakekrevingsbehandlingHendelse
import tilbakekreving.domain.ForhåndsvarsleTilbakekrevingsbehandlingHendelse
import tilbakekreving.domain.IverksattHendelse
Expand Down Expand Up @@ -329,3 +330,26 @@ fun nyIverksattTilbakekrevingsbehandlingHendelse(
utførtAv = utførtAv,
tidligereHendelseId = forrigeHendelse.hendelseId,
)

fun nyAvbruttTilbakekrevingsbehandlingHendelse(
hendelseId: HendelseId = HendelseId.generer(),
brevvalg: Brevvalg.SaksbehandlersValg = Brevvalg.SaksbehandlersValg.SkalSendeBrev.InformasjonsbrevMedFritekst(
fritekst = "fritekst",
),
utførtAv: NavIdentBruker.Saksbehandler = saksbehandler,
hendelsesTidspunkt: Tidspunkt = fixedTidspunkt,
meta: DefaultHendelseMetadata = DefaultHendelseMetadata.tom(),
forrigeHendelse: TilbakekrevingsbehandlingHendelse = nyOpprettetTilbakekrevingsbehandlingHendelse(),
versjon: Hendelsesversjon = forrigeHendelse.versjon.inc(),
): AvbruttHendelse = AvbruttHendelse(
hendelseId = hendelseId,
sakId = forrigeHendelse.sakId,
hendelsestidspunkt = hendelsesTidspunkt,
versjon = versjon,
meta = meta,
id = forrigeHendelse.id,
tidligereHendelseId = forrigeHendelse.hendelseId,
utførtAv = utførtAv,
brevvalg = brevvalg,
begrunnelse = "Avbrutt av TilbakekrevingTestData.kt",
)
29 changes: 28 additions & 1 deletion test-common/src/main/kotlin/persistence/TestDataHelper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ import no.nav.su.se.bakover.test.iverksattSøknadsbehandling
import no.nav.su.se.bakover.test.iverksattSøknadsbehandlingUføre
import no.nav.su.se.bakover.test.kravgrunnlag.kravgrunnlagPåSakHendelse
import no.nav.su.se.bakover.test.kravgrunnlag.råttKravgrunnlagHendelse
import no.nav.su.se.bakover.test.nyAvbruttTilbakekrevingsbehandlingHendelse
import no.nav.su.se.bakover.test.nyForhåndsvarsletTilbakekrevingsbehandlingHendelse
import no.nav.su.se.bakover.test.nyInstitusjonsoppholdHendelse
import no.nav.su.se.bakover.test.nyIverksattTilbakekrevingsbehandlingHendelse
Expand Down Expand Up @@ -169,6 +170,7 @@ import no.nav.su.se.bakover.test.vilkår.institusjonsoppholdvilkårAvslag
import no.nav.su.se.bakover.test.vilkårsvurderinger.avslåttUførevilkårUtenGrunnlag
import no.nav.su.se.bakover.test.vilkårsvurderingerSøknadsbehandlingInnvilget
import no.nav.su.se.bakover.test.vilkårsvurdertSøknadsbehandling
import tilbakekreving.domain.AvbruttHendelse
import tilbakekreving.domain.OpprettetTilbakekrevingsbehandlingHendelse
import tilbakekreving.domain.TilbakekrevingsbehandlingHendelser
import tilbakekreving.domain.kravgrunnlag.Kravgrunnlag
Expand Down Expand Up @@ -225,7 +227,8 @@ class TestDataHelper(
val hendelsekonsumenterRepo = databaseRepos.hendelsekonsumenterRepo
private val hendelseRepo = HendelsePostgresRepo(sessionFactory = sessionFactory, dbMetrics = dbMetrics)
val kravgrunnlagPostgresRepo = KravgrunnlagPostgresRepo(hendelseRepo, hendelsekonsumenterRepo)
private val dokumentHendelseRepo = DokumentHendelsePostgresRepo(hendelseRepo, HendelseFilPostgresRepo(sessionFactory))
private val dokumentHendelseRepo =
DokumentHendelsePostgresRepo(hendelseRepo, HendelseFilPostgresRepo(sessionFactory))
val tilbakekrevingHendelseRepo = TilbakekrevingsbehandlingPostgresRepo(
sessionFactory = sessionFactory,
hendelseRepo = hendelseRepo,
Expand Down Expand Up @@ -1894,6 +1897,30 @@ class TestDataHelper(
}
}

fun persisterAvbruttTilbakekrevingsbehandlingHendelse(
forrigeHendelse: Tuple8<Sak, IverksattRevurdering, Utbetaling.OversendtUtbetaling.MedKvittering, VedtakEndringIYtelse, RåttKravgrunnlagHendelse, KravgrunnlagPåSakHendelse, OpprettetTilbakekrevingsbehandlingHendelse, OppgaveHendelse> = persisterOpprettetTilbakekrevingsbehandlingHendelse(),
): Tuple8<Sak, IverksattRevurdering, Utbetaling.OversendtUtbetaling.MedKvittering, VedtakEndringIYtelse, RåttKravgrunnlagHendelse, KravgrunnlagPåSakHendelse, AvbruttHendelse, OppgaveHendelse> {
return forrigeHendelse.let { (sak, revurdering, utbetaling, vedtak, råttKravgrunnlagHendelse, kravgrunnlagPåSakHendelse, opprettetHendelse) ->
nyAvbruttTilbakekrevingsbehandlingHendelse(
forrigeHendelse = opprettetHendelse,
versjon = hendelseRepo.hentSisteVersjonFraEntitetId(sak.id)!!.inc(),
).let { avbruttHendelse ->
tilbakekrevingHendelseRepo.lagre(avbruttHendelse)
val oppgaveHendelse = persisterOppgaveHendelseFraRelatertHendelse { avbruttHendelse }
Tuple8(
first = sak,
second = revurdering,
third = utbetaling,
fourth = vedtak,
fifth = råttKravgrunnlagHendelse,
sixth = kravgrunnlagPåSakHendelse,
seventh = avbruttHendelse,
eighth = oppgaveHendelse,
)
}
}
}

companion object {
/** Kaster hvis size != 1 */
fun Sak.journalførtSøknadMedOppgave(): Søknad.Journalført.MedOppgave.IkkeLukket {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package tilbakekreving.domain.opprett

import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.persistence.SessionContext
import no.nav.su.se.bakover.hendelse.domain.HendelseId
import tilbakekreving.domain.TilbakekrevingbehandlingsSerie
Expand All @@ -21,4 +22,6 @@ interface TilbakekrevingsbehandlingRepo {
fun hentForSak(sakId: UUID, sessionContext: SessionContext? = null): TilbakekrevingsbehandlingHendelser

fun hentBehandlingsSerieFor(hendelse: TilbakekrevingsbehandlingHendelse, sessionContext: SessionContext? = null): TilbakekrevingbehandlingsSerie
fun hentÅpneBehandlingssamendrag(sessionContext: SessionContext? = null): List<Behandlingssammendrag>
fun hentFerdigeBehandlingssamendrag(sessionContext: SessionContext? = null): List<Behandlingssammendrag>
}
Loading

0 comments on commit d894fa5

Please sign in to comment.