Skip to content

Commit 874dc0b

Browse files
committed
✨ Legger til vedtaksperiode_forkastet på totrinnsvurdering
1 parent c172ff1 commit 874dc0b

File tree

8 files changed

+88
-0
lines changed

8 files changed

+88
-0
lines changed

spesialist-application/src/main/kotlin/no/nav/helse/modell/kommando/AvbrytCommand.kt

+6
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ internal class AvbrytCommand(
3131
featureToggles = featureToggles,
3232
),
3333
AvbrytOppgaveCommand(vedtaksperiodeId = vedtaksperiodeId, oppgaveService = oppgaveService),
34+
AvbrytTotrinnsvurderingCommand(
35+
vedtaksperiodeId = vedtaksperiodeId,
36+
fødselsnummer = fødselsnummer,
37+
totrinnsvurderingRepository = totrinnsvurderingRepository,
38+
featureToggles = featureToggles,
39+
),
3440
AvbrytContextCommand(vedtaksperiodeId = vedtaksperiodeId, commandContextDao = commandContextDao),
3541
)
3642
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package no.nav.helse.modell.kommando
2+
3+
import no.nav.helse.FeatureToggles
4+
import no.nav.helse.spesialist.application.TotrinnsvurderingRepository
5+
import org.slf4j.LoggerFactory
6+
import java.util.UUID
7+
8+
internal class AvbrytTotrinnsvurderingCommand(
9+
private val vedtaksperiodeId: UUID,
10+
private valdselsnummer: String,
11+
private val totrinnsvurderingRepository: TotrinnsvurderingRepository,
12+
private val featureToggles: FeatureToggles,
13+
) : Command {
14+
private companion object {
15+
private val sikkerlogg = LoggerFactory.getLogger("tjenestekall")
16+
}
17+
18+
override fun execute(context: CommandContext): Boolean {
19+
sikkerlogg.info("setter vedtaksperiode_forkastet i totrinnsvurdering for fødselsnummer=$fødselsnummer")
20+
21+
val totrinnsvurdering =
22+
if (featureToggles.skalBenytteNyTotrinnsvurderingsløsning()) {
23+
totrinnsvurderingRepository.finn(fødselsnummer)
24+
} else {
25+
totrinnsvurderingRepository.finn(vedtaksperiodeId)
26+
}
27+
if (totrinnsvurdering == null) return true
28+
29+
totrinnsvurdering.vedtaksperiodeForkastet(vedtaksperiodeId)
30+
totrinnsvurderingRepository.lagre(totrinnsvurdering)
31+
return true
32+
}
33+
}

spesialist-application/src/test/kotlin/no/nav/helse/spesialist/application/kommando/VurderBehovForTotrinnskontrollTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ internal class VurderBehovForTotrinnskontrollTest {
191191
oppdatert = LocalDateTime.now(),
192192
overstyringer = emptyList(),
193193
tilstand = tilstand,
194+
vedtaksperiodeForkastet = false,
194195
)
195196

196197
private fun command(nyTotrinnsløype: Boolean = true) =
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
alter table totrinnsvurdering add column vedtaksperiode_forkastet boolean default false;
2+
3+
update totrinnsvurdering tv
4+
set vedtaksperiode_forkastet = true
5+
from vedtak v
6+
where tv.vedtaksperiode_id = v.vedtaksperiode_id
7+
and v.forkastet = true

spesialist-db/src/main/kotlin/no/nav/helse/spesialist/db/repository/PgTotrinnsvurderingRepository.kt

+8
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,15 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
4343
tv.beslutter as beslutter_oid,
4444
ui.id as utbetaling_id,
4545
tv.tilstand,
46+
tv.vedtaksperiode_forkastet,
4647
tv.opprettet,
4748
tv.oppdatert
4849
FROM totrinnsvurdering tv
4950
INNER JOIN person p on tv.person_ref = p.id
5051
LEFT JOIN utbetaling_id ui on ui.id = tv.utbetaling_id_ref
5152
WHERE p.fødselsnummer = :fodselsnummer
5253
AND tv.tilstand != 'GODKJENT'
54+
AND tv.vedtaksperiode_forkastet = false
5355
""".trimIndent(),
5456
"fodselsnummer" to fødselsnummer,
5557
).singleOrNull { it.toTotrinnsvurdering() }
@@ -65,6 +67,7 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
6567
tv.beslutter as beslutter_oid,
6668
ui.id as utbetaling_id,
6769
tv.tilstand,
70+
tv.vedtaksperiode_forkastet,
6871
tv.opprettet,
6972
tv.oppdatert,
7073
p.fødselsnummer
@@ -75,6 +78,7 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
7578
LEFT JOIN utbetaling_id ui on ui.id = tv.utbetaling_id_ref
7679
WHERE v.vedtaksperiode_id = :vedtaksperiodeId
7780
AND tv.tilstand != 'GODKJENT'
81+
AND tv.vedtaksperiode_forkastet = false
7882
""".trimIndent(),
7983
"vedtaksperiodeId" to vedtaksperiodeId,
8084
).singleOrNull { it.toTotrinnsvurderingDeprecated() }
@@ -103,6 +107,7 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
103107
beslutter = :beslutter,
104108
utbetaling_id_ref = (SELECT id from utbetaling_id ui WHERE ui.utbetaling_id = :utbetalingId),
105109
tilstand = CAST(:tilstand AS totrinnsvurdering_tilstand),
110+
vedtaksperiode_forkastet = :vedtaksperiodeForkastet,
106111
oppdatert = :oppdatert
107112
WHERE id = :id
108113
""".trimIndent(),
@@ -111,6 +116,7 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
111116
"beslutter" to totrinnsvurdering.beslutter?.value,
112117
"utbetalingId" to totrinnsvurdering.utbetalingId,
113118
"tilstand" to totrinnsvurdering.tilstand.name,
119+
"vedtaksperiodeForkastet" to totrinnsvurdering.vedtaksperiodeForkastet,
114120
"oppdatert" to totrinnsvurdering.oppdatert,
115121
).update()
116122
}
@@ -126,6 +132,7 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
126132
opprettet = localDateTime("opprettet"),
127133
oppdatert = localDateTimeOrNull("oppdatert"),
128134
tilstand = enumValueOf(string("tilstand")),
135+
vedtaksperiodeForkastet = boolean("vedtaksperiode_forkastet"),
129136
overstyringer = overstyringRepository.finnAktive(string("fødselsnummer"), TotrinnsvurderingId(long("id"))),
130137
)
131138

@@ -141,6 +148,7 @@ class PgTotrinnsvurderingRepository(session: Session) : QueryRunner by MedSessio
141148
opprettet = localDateTime("opprettet"),
142149
oppdatert = localDateTimeOrNull("oppdatert"),
143150
tilstand = enumValueOf(string("tilstand")),
151+
vedtaksperiodeForkastet = boolean("vedtaksperiode_forkastet"),
144152
overstyringer = overstyringRepository.finnAktive(string("fødselsnummer")),
145153
)
146154
}

spesialist-db/src/test/kotlin/no/nav/helse/spesialist/db/repository/PgTotrinnsvurderingRepositoryTest.kt

+12
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,18 @@ class PgTotrinnsvurderingRepositoryTest : AbstractDBIntegrationTest() {
6161
assertNotNull(oppdatertTotrinnsvurdering.oppdatert)
6262
}
6363

64+
@Test
65+
fun `finner ikke frem totrinnsvurdering hvor vdtaksperiode er forkastet`() {
66+
totrinnsvurderingRepository.lagre(nyTotrinnsvurdering())
67+
val hentetTotrinnsvurdering = totrinnsvurderingRepository.finn(FNR)
68+
checkNotNull(hentetTotrinnsvurdering)
69+
hentetTotrinnsvurdering.vedtaksperiodeForkastet(vedtaksperiodeId = VEDTAKSPERIODE)
70+
totrinnsvurderingRepository.lagre(hentetTotrinnsvurdering)
71+
val oppdatertTotrinnsvurdering = totrinnsvurderingRepository.finn(FNR)
72+
73+
assertNull(oppdatertTotrinnsvurdering)
74+
}
75+
6476
private fun nyTotrinnsvurdering(): Totrinnsvurdering =
6577
Totrinnsvurdering.ny(vedtaksperiodeId = VEDTAKSPERIODE, fødselsnummer = FNR)
6678

spesialist-domain/src/main/kotlin/no/nav/helse/modell/totrinnsvurdering/Totrinnsvurdering.kt

+12
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class Totrinnsvurdering private constructor(
3232
oppdatert: LocalDateTime?,
3333
overstyringer: List<Overstyring> = emptyList(),
3434
tilstand: TotrinnsvurderingTilstand,
35+
vedtaksperiodeForkastet: Boolean,
3536
) : AggregateRoot<TotrinnsvurderingId>(id) {
3637
private val _overstyringer: MutableList<Overstyring> = overstyringer.toMutableList()
3738
val overstyringer: List<Overstyring>
@@ -52,6 +53,9 @@ class Totrinnsvurdering private constructor(
5253
var tilstand: TotrinnsvurderingTilstand = tilstand
5354
private set
5455

56+
var vedtaksperiodeForkastet: Boolean = vedtaksperiodeForkastet
57+
private set
58+
5559
fun settAvventerSaksbehandler() =
5660
oppdatering {
5761
tilstand = AVVENTER_SAKSBEHANDLER
@@ -109,6 +113,11 @@ class Totrinnsvurdering private constructor(
109113
.forEach { it.ferdigstill() }
110114
}
111115

116+
fun vedtaksperiodeForkastet(vedtaksperiodeId: UUID) =
117+
oppdatering {
118+
if (this.vedtaksperiodeId == vedtaksperiodeId) vedtaksperiodeForkastet = true
119+
}
120+
112121
private fun <T> oppdatering(block: () -> T): T {
113122
return block().also {
114123
oppdatert = LocalDateTime.now()
@@ -155,6 +164,7 @@ class Totrinnsvurdering private constructor(
155164
oppdatert = null,
156165
overstyringer = emptyList(),
157166
tilstand = AVVENTER_SAKSBEHANDLER,
167+
vedtaksperiodeForkastet = false,
158168
)
159169
}
160170

@@ -169,6 +179,7 @@ class Totrinnsvurdering private constructor(
169179
oppdatert: LocalDateTime?,
170180
overstyringer: List<Overstyring>,
171181
tilstand: TotrinnsvurderingTilstand,
182+
vedtaksperiodeForkastet: Boolean,
172183
): Totrinnsvurdering {
173184
return Totrinnsvurdering(
174185
id = id,
@@ -181,6 +192,7 @@ class Totrinnsvurdering private constructor(
181192
oppdatert = oppdatert,
182193
overstyringer = overstyringer,
183194
tilstand = tilstand,
195+
vedtaksperiodeForkastet = vedtaksperiodeForkastet,
184196
)
185197
}
186198
}

spesialist-domain/src/test/kotlin/no/nav/helse/modell/totrinnsvurdering/TotrinnsvurderingTest.kt

+9
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,14 @@ internal class TotrinnsvurderingTest {
215215
assertEquals(AVVENTER_SAKSBEHANDLER, totrinnsvurdering.tilstand)
216216
}
217217

218+
@Test
219+
fun `kan sette vedtaksperiodeForkastet til true`() {
220+
val vedtaksperiodeId = UUID.randomUUID()
221+
val totrinnsvurdering = nyTotrinnsvurdering(vedtaksperiodeId = vedtaksperiodeId)
222+
totrinnsvurdering.vedtaksperiodeForkastet(vedtaksperiodeId = vedtaksperiodeId)
223+
assertTrue(totrinnsvurdering.vedtaksperiodeForkastet)
224+
}
225+
218226
private fun nySaksbehandler(
219227
oid: UUID = UUID.randomUUID()
220228
) = SaksbehandlerOid(oid)
@@ -236,6 +244,7 @@ internal class TotrinnsvurderingTest {
236244
oppdatert = LocalDateTime.now(),
237245
overstyringer = overstyringer,
238246
tilstand = tilstand,
247+
vedtaksperiodeForkastet = false,
239248
)
240249

241250
private fun overstyrteDager(): List<OverstyrtTidslinjedag> = listOf(

0 commit comments

Comments
 (0)