Skip to content

Commit

Permalink
♻️ "Fjernet fra på vent"- og "lagt på vent"-innslagene peker til gene…
Browse files Browse the repository at this point in the history
…rasjonId

Co-authored-by: Elias Andreassen Thøgersen <[email protected]>
  • Loading branch information
chsko and elitho committed Oct 22, 2024
1 parent 44d9cad commit 132be9a
Show file tree
Hide file tree
Showing 9 changed files with 93 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ sealed interface HistorikkinnslagDto {
val saksbehandler: SaksbehandlerDto?
val tidspunkt: LocalDateTime

fun toJson(): String = "{}"

companion object {
fun lagtPåVentInnslag(
notat: NotatDto?,
Expand Down Expand Up @@ -52,7 +54,7 @@ data class LagtPåVent(
val årsak: List<PåVentÅrsak>,
val frist: LocalDate,
) : HistorikkinnslagDto {
fun toJson(): String =
override fun toJson(): String =
mapOf(
"årsaker" to årsak.map { it },
"frist" to frist,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ interface OppgaveRepository {

fun finnUtbetalingId(oppgaveId: Long): UUID?

fun finnGenerasjonId(oppgaveId: Long): UUID

fun finnOppgave(id: Long): OppgaveFraDatabase?

fun finnOppgaveId(fødselsnummer: String): Long?
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package no.nav.helse.db

import kotliquery.sessionOf
import no.nav.helse.mediator.oppgave.OppgaveDao
import no.nav.helse.modell.periodehistorikk.FjernetFraPåVent
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
import no.nav.helse.modell.periodehistorikk.Innslagstype
import no.nav.helse.modell.periodehistorikk.LagtPåVent
import no.nav.helse.spesialist.api.graphql.schema.NotatType
import no.nav.helse.spesialist.api.notat.NotatApiDao
Expand All @@ -15,20 +15,15 @@ class PeriodehistorikkDao(
private val dataSource: DataSource,
) : PeriodehistorikkRepository {
private val notatDao: NotatApiDao = NotatApiDao(dataSource)
private val oppgaveDao = OppgaveDao(dataSource)

override fun lagre(
historikkinnslag: HistorikkinnslagDto,
oppgaveId: Long,
) {
val generasjonId = oppgaveDao.finnGenerasjonId(oppgaveId)
when (historikkinnslag) {
is FjernetFraPåVent ->
lagre(
historikkType = historikkinnslag.type.tilPeriodehistorikkType(),
saksbehandlerOid = historikkinnslag.saksbehandler.oid,
oppgaveId = oppgaveId,
notatId = null,
)

is FjernetFraPåVent -> lagre(historikkinnslag, generasjonId, null)
is LagtPåVent -> {
val notatId =
historikkinnslag.notat?.let { notat ->
Expand All @@ -40,17 +35,21 @@ class PeriodehistorikkDao(
type = NotatType.PaaVent,
)?.toInt()
}
lagre(
historikkType = historikkinnslag.type.tilPeriodehistorikkType(),
saksbehandlerOid = historikkinnslag.saksbehandler.oid,
oppgaveId = oppgaveId,
notatId = notatId,
json = historikkinnslag.toJson(),
)
lagre(historikkinnslag, generasjonId, notatId)
}
}
}

private fun lagre(
historikkinnslag: HistorikkinnslagDto,
generasjonId: UUID,
notatId: Int?,
) {
sessionOf(dataSource).use { session ->
TransactionalPeriodehistorikkDao(session).lagre(historikkinnslag, generasjonId, notatId)
}
}

override fun lagre(
historikkType: PeriodehistorikkType,
saksbehandlerOid: UUID?,
Expand Down Expand Up @@ -95,10 +94,4 @@ class PeriodehistorikkDao(
)
}
}

private fun Innslagstype.tilPeriodehistorikkType() =
when (this) {
Innslagstype.LAGT_PA_VENT -> PeriodehistorikkType.LEGG_PA_VENT
Innslagstype.FJERNET_FRA_PA_VENT -> PeriodehistorikkType.FJERN_FRA_PA_VENT
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,21 @@ class TransactionalOppgaveDao(private val session: Session) : OppgaveRepository
)
}

override fun finnGenerasjonId(oppgaveId: Long): UUID {
@Language("PostgreSQL")
val statement =
"""
SELECT generasjon_ref FROM oppgave WHERE id = :oppgaveId;
""".trimIndent()
return requireNotNull(
session.run(
queryOf(statement, mapOf("oppgaveId" to oppgaveId)).map {
it.uuid("generasjon_ref")
}.asSingle,
),
)
}

override fun finnOppgaveIdUansettStatus(fødselsnummer: String): Long {
@Language("PostgreSQL")
val statement =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.helse.db
import kotliquery.Session
import kotliquery.queryOf
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
import no.nav.helse.modell.periodehistorikk.Innslagstype
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import org.intellij.lang.annotations.Language
import java.util.UUID
Expand All @@ -15,6 +16,36 @@ class TransactionalPeriodehistorikkDao(private val session: Session) : Periodehi
throw UnsupportedOperationException()
}

internal fun lagre(
historikkinnslag: HistorikkinnslagDto,
generasjonId: UUID,
notatId: Int?,
) {
@Language("PostgreSQL")
val statement = """
INSERT INTO periodehistorikk (type, saksbehandler_oid, generasjon_id, utbetaling_id, notat_id, json)
VALUES (:type, :saksbehandler_oid, :generasjon_id, null, :notat_id, :json::json)
"""
session.run(
queryOf(
statement,
mapOf(
"type" to historikkinnslag.type.toDb(),
"saksbehandler_oid" to historikkinnslag.saksbehandler?.oid,
"generasjon_id" to generasjonId,
"notat_id" to notatId,
"json" to historikkinnslag.toJson(),
),
).asUpdate,
)
}

private fun Innslagstype.toDb() =
when (this) {
Innslagstype.LAGT_PA_VENT -> "LEGG_PA_VENT"
Innslagstype.FJERNET_FRA_PA_VENT -> "FJERN_FRA_PA_VENT" // TODO: Mangler å migrere typen i databasen
}

override fun lagre(
historikkType: PeriodehistorikkType,
saksbehandlerOid: UUID?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,12 @@ class OppgaveDao(private val dataSource: DataSource) : HelseDao(dataSource), Opp
TransactionalOppgaveDao(session).finnUtbetalingId(oppgaveId)
}

override fun finnGenerasjonId(oppgaveId: Long): UUID {
return sessionOf(dataSource).use { session ->
TransactionalOppgaveDao(session).finnGenerasjonId(oppgaveId)
}
}

override fun finnSpleisBehandlingId(oppgaveId: Long) =
sessionOf(dataSource).use { session ->
TransactionalOppgaveDao(session).finnSpleisBehandlingId(oppgaveId)
Expand Down
12 changes: 12 additions & 0 deletions spesialist-selve/src/test/kotlin/no/nav/helse/db/OppgaveDaoTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import no.nav.helse.spesialist.api.person.Adressebeskyttelse
import no.nav.helse.spesialist.test.lagAktørId
import no.nav.helse.spesialist.test.lagFødselsnummer
import no.nav.helse.spesialist.test.lagOrganisasjonsnummer
import org.junit.jupiter.api.Assertions.assertDoesNotThrow
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertFalse
import org.junit.jupiter.api.Assertions.assertNull
Expand Down Expand Up @@ -90,6 +91,17 @@ class OppgaveDaoTest : DatabaseIntegrationTest() {
assertEquals(spleisBehandlingId, oppgaveDao.finnSpleisBehandlingId(oppgaveId))
}

@Test
fun `finn generasjonId`() {
opprettPerson()
opprettArbeidsgiver()
opprettVedtaksperiode()
opprettOppgave(contextId = CONTEXT_ID)
assertDoesNotThrow {
oppgaveDao.finnGenerasjonId(oppgaveId)
}
}

@Test
fun `skal ikke lagre ny oppgave dersom det allerede er en eksisterende oppgave på samme person med gitt status`() {
opprettPerson()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package no.nav.helse.db

import DatabaseIntegrationTest
import no.nav.helse.modell.periodehistorikk.HistorikkinnslagDto
import no.nav.helse.modell.saksbehandler.SaksbehandlerDto
import no.nav.helse.spesialist.api.periodehistorikk.PeriodehistorikkType
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
Expand All @@ -15,11 +17,10 @@ class PeriodehistorikkDaoTest : DatabaseIntegrationTest() {
opprettVedtaksperiode()
opprettOppgave()

periodehistorikkDao.lagre(
PeriodehistorikkType.TOTRINNSVURDERING_TIL_GODKJENNING,
SAKSBEHANDLER_OID,
oppgaveId
)
val saksbehandler = SaksbehandlerDto(SAKSBEHANDLER_EPOST, SAKSBEHANDLER_OID, SAKSBEHANDLER_NAVN, SAKSBEHANDLER_IDENT)
val historikkinnslag = HistorikkinnslagDto.fjernetFraPåVentInnslag(saksbehandler)

periodehistorikkDao.lagre(historikkinnslag, oppgaveId)
val result = periodehistorikkApiDao.finn(UTBETALING_ID)

assertEquals(1, result.size)
Expand All @@ -42,4 +43,4 @@ class PeriodehistorikkDaoTest : DatabaseIntegrationTest() {

assertEquals(1, result.size)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ class OppgavehenterTest {

override fun finnUtbetalingId(oppgaveId: Long): UUID = throw UnsupportedOperationException()

override fun finnGenerasjonId(oppgaveId: Long): UUID = throw UnsupportedOperationException()

override fun oppgaveDataForAutomatisering(oppgaveId: Long): OppgaveDataForAutomatisering = throw UnsupportedOperationException()

override fun finnHendelseId(id: Long): UUID = UUID.randomUUID()
Expand Down

0 comments on commit 132be9a

Please sign in to comment.