Skip to content

Commit

Permalink
🚧 Finn gjeldende generasjon med tilhørende varsler uten en builder
Browse files Browse the repository at this point in the history
  • Loading branch information
chsko committed Mar 5, 2024
1 parent bb7907a commit 920b224
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 77 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import kotliquery.sessionOf
import no.nav.helse.mediator.builders.GenerasjonBuilder
import no.nav.helse.modell.varsel.Varsel
import no.nav.helse.modell.varsel.VarselDto
import no.nav.helse.modell.varsel.VarselStatusDto
import org.intellij.lang.annotations.Language

class GenerasjonDao(private val dataSource: DataSource) {
Expand Down Expand Up @@ -107,6 +108,73 @@ class GenerasjonDao(private val dataSource: DataSource) {
this.run(queryOf(query, generasjonId, *varselIder.toTypedArray()).asExecute)
}

internal fun finnGjeldendeGenerasjon(vedtaksperiodeId: UUID): GenerasjonDto? {
return sessionOf(dataSource).use { session ->
session.transaction { tx ->
tx.finnGenerasjon(vedtaksperiodeId)
}
}
}

private fun TransactionalSession.finnGenerasjon(vedtaksperiodeId: UUID): GenerasjonDto? {
return run(
finnSiste(vedtaksperiodeId).map { row ->
val generasjonRef = row.long("id")
GenerasjonDto(
row.uuid("unik_id"),
row.uuid("vedtaksperiode_id"),
row.uuidOrNull("utbetaling_id"),
row.localDate("skjæringstidspunkt"),
row.localDate("fom"),
row.localDate("tom"),
when (val tilstand = row.string("tilstand")) {
"Låst" -> TilstandDto.Låst
"Ulåst" -> TilstandDto.Ulåst
"AvsluttetUtenUtbetaling" -> TilstandDto.AvsluttetUtenUtbetaling
"UtenUtbetalingMåVurderes" -> TilstandDto.UtenUtbetalingMåVurderes
else -> throw IllegalArgumentException("$tilstand er ikke en gyldig generasjontilstand")
},
varsler = finnVarsler(generasjonRef)
)
}.asSingle
)
}

private fun TransactionalSession.finnVarsler(generasjonRef: Long): List<VarselDto> {
@Language("PostgreSQL")
val query = """
SELECT
unik_id,
kode,
vedtaksperiode_id,
opprettet,
status
FROM selve_varsel sv WHERE generasjon_ref = :generasjon_ref
""".trimIndent()
return this.run(
queryOf(
query,
mapOf("generasjon_ref" to generasjonRef),
).map { row ->
VarselDto(
row.uuid("unik_id"),
row.string("kode"),
row.localDateTime("opprettet"),
row.uuid("vedtaksperiode_id"),
when (val status = row.string("status")) {
"AKTIV" -> VarselStatusDto.AKTIV
"INAKTIV" -> VarselStatusDto.INAKTIV
"GODKJENT" -> VarselStatusDto.GODKJENT
"VURDERT" -> VarselStatusDto.VURDERT
"AVVIST" -> VarselStatusDto.AVVIST
"AVVIKLET" -> VarselStatusDto.AVVIKLET
else -> throw IllegalArgumentException("$status er ikke en gyldig varselstatus")
}
)
}.asList
)
}

internal fun finnSkjæringstidspunktFor(vedtaksperiodeId: UUID): LocalDate? {
return sessionOf(dataSource).use { session ->
session.run(finnSiste(vedtaksperiodeId).map { it.localDate("skjæringstidspunkt") }.asSingle)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ internal class GenerasjonDaoTest : DatabaseIntegrationTest() {
)
)
generasjonDao.lagre(generasjonDto)
val lagretGenerasjon = finnGenerasjon(id)
val lagretGenerasjon = generasjonDao.finnGjeldendeGenerasjon(vedtaksperiodeId)
assertNotNull(lagretGenerasjon)
assertEquals(id, lagretGenerasjon?.id)
assertEquals(vedtaksperiodeId, lagretGenerasjon?.vedtaksperiodeId)
Expand All @@ -92,7 +92,7 @@ internal class GenerasjonDaoTest : DatabaseIntegrationTest() {
val varsel = lagretGenerasjon?.varsler?.single()
assertEquals(varselId, varsel?.id)
assertEquals("RV_IM_1", varsel?.varselkode)
assertEquals(varselOpprettet, varsel?.opprettet)
assertEquals(varselOpprettet.withNano(0), varsel?.opprettet?.withNano(0))
assertEquals(varselstatus, varsel?.status)
assertEquals(vedtaksperiodeId, varsel?.vedtaksperiodeId)
}
Expand All @@ -114,7 +114,7 @@ internal class GenerasjonDaoTest : DatabaseIntegrationTest() {
)
generasjonDao.lagre(generasjonDto)
generasjonDao.lagre(generasjonDto.copy(utbetalingId = nyUtbetalingId, fom = 2.januar, tom = 30.januar, skjæringstidspunkt = 2.januar, tilstand = TilstandDto.Låst))
val lagretGenerasjon = finnGenerasjon(id)
val lagretGenerasjon = generasjonDao.finnGjeldendeGenerasjon(vedtaksperiodeId)
assertNotNull(lagretGenerasjon)
assertEquals(id, lagretGenerasjon?.id)
assertEquals(vedtaksperiodeId, lagretGenerasjon?.vedtaksperiodeId)
Expand Down Expand Up @@ -144,7 +144,7 @@ internal class GenerasjonDaoTest : DatabaseIntegrationTest() {
)
generasjonDao.lagre(generasjonDto)
generasjonDao.lagre(generasjonDto.copy(varsler = listOf(VarselDto(varselId, "RV_IM_1", varselOpprettet, vedtaksperiodeId, varselstatus))))
val lagretGenerasjon = finnGenerasjon(id)
val lagretGenerasjon = generasjonDao.finnGjeldendeGenerasjon(vedtaksperiodeId)

assertNotNull(lagretGenerasjon)
assertEquals(1, lagretGenerasjon?.varsler?.size)
Expand All @@ -168,7 +168,7 @@ internal class GenerasjonDaoTest : DatabaseIntegrationTest() {
)
generasjonDao.lagre(generasjonDto)
generasjonDao.lagre(generasjonDto.copy(varsler = listOf(VarselDto(varselId, "RV_IM_1", varselOpprettet, vedtaksperiodeId, VarselStatusDto.VURDERT))))
val lagretGenerasjon = finnGenerasjon(id)
val lagretGenerasjon = generasjonDao.finnGjeldendeGenerasjon(vedtaksperiodeId)

assertNotNull(lagretGenerasjon)
assertEquals(1, lagretGenerasjon?.varsler?.size)
Expand Down Expand Up @@ -204,7 +204,7 @@ internal class GenerasjonDaoTest : DatabaseIntegrationTest() {
)
)
)
val lagretGenerasjon = finnGenerasjon(id)
val lagretGenerasjon = generasjonDao.finnGjeldendeGenerasjon(vedtaksperiodeId)

assertNotNull(lagretGenerasjon)
assertEquals(1, lagretGenerasjon?.varsler?.size)
Expand All @@ -228,7 +228,7 @@ internal class GenerasjonDaoTest : DatabaseIntegrationTest() {
)
generasjonDao.lagre(generasjonDto)
generasjonDao.lagre(generasjonDto.copy(varsler = emptyList()))
val lagretGenerasjon = finnGenerasjon(id)
val lagretGenerasjon = generasjonDao.finnGjeldendeGenerasjon(vedtaksperiodeId)

assertNotNull(lagretGenerasjon)
assertEquals(0, lagretGenerasjon?.varsler?.size)
Expand Down Expand Up @@ -575,74 +575,4 @@ internal class GenerasjonDaoTest : DatabaseIntegrationTest() {
it.localDateTimeOrNull("opprettet_tidspunkt")
}.asSingle)
}

private fun finnGenerasjon(generasjonId: UUID): GenerasjonDto? {
@Language("PostgreSQL")
val query = """
SELECT unik_id, vedtaksperiode_id, utbetaling_id, fom, tom, skjæringstidspunkt, tilstand FROM selve_vedtaksperiode_generasjon svg WHERE unik_id = :generasjon_id
""".trimIndent()
return sessionOf(dataSource).use {
it.run(
queryOf(
query,
mapOf("generasjon_id" to generasjonId),
).map { row ->
GenerasjonDto(
row.uuid("unik_id"),
row.uuid("vedtaksperiode_id"),
row.uuidOrNull("utbetaling_id"),
row.localDate("skjæringstidspunkt"),
row.localDate("fom"),
row.localDate("tom"),
when (val tilstand = row.string("tilstand")) {
"Låst" -> TilstandDto.Låst
"Ulåst" -> TilstandDto.Ulåst
"AvsluttetUtenUtbetaling" -> TilstandDto.AvsluttetUtenUtbetaling
"UtenUtbetalingMåVurderes" -> TilstandDto.UtenUtbetalingMåVurderes
else -> throw IllegalArgumentException("$tilstand er ikke en gyldig generasjontilstand")
},
varsler = finnVarsler(generasjonId)
)
}.asSingle
)
}
}

private fun finnVarsler(generasjonId: UUID): List<VarselDto> {
@Language("PostgreSQL")
val query = """
SELECT
unik_id,
kode,
vedtaksperiode_id,
opprettet,
status
FROM selve_varsel sv WHERE generasjon_ref = (SELECT id FROM selve_vedtaksperiode_generasjon WHERE unik_id = :generasjon_id)
""".trimIndent()
return sessionOf(dataSource).use {
it.run(
queryOf(
query,
mapOf("generasjon_id" to generasjonId),
).map { row ->
VarselDto(
row.uuid("unik_id"),
row.string("kode"),
row.localDateTime("opprettet"),
row.uuid("vedtaksperiode_id"),
when (val status = row.string("status")) {
"AKTIV" -> VarselStatusDto.AKTIV
"INAKTIV" -> VarselStatusDto.INAKTIV
"GODKJENT" -> VarselStatusDto.GODKJENT
"VURDERT" -> VarselStatusDto.VURDERT
"AVVIST" -> VarselStatusDto.AVVIST
"AVVIKLET" -> VarselStatusDto.AVVIKLET
else -> throw IllegalArgumentException("$status er ikke en gyldig varselstatus")
}
)
}.asList
)
}

}
}

0 comments on commit 920b224

Please sign in to comment.