Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Støtt klageinstanshendelse AnkebehandlingOpprettet #1878

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@ package no.nav.su.se.bakover.client.oppgave

import arrow.core.NonEmptyCollection
import no.nav.su.se.bakover.client.oppgave.OppgaveHttpClient.Companion.toOppgaveFormat
import no.nav.su.se.bakover.domain.klage.KlageinstansUtfall
import no.nav.su.se.bakover.domain.klage.AvsluttetKlageinstansUtfall
import no.nav.su.se.bakover.domain.oppgave.OppgaveConfig
import no.nav.su.se.bakover.domain.personhendelse.Personhendelse
import person.domain.SivilstandTyper

data object OppgavebeskrivelseMapper {
fun map(config: OppgaveConfig.Klage.Klageinstanshendelse): String {
return "Utfall: ${config.utfall.toReadableName()}" +
"\nRelevante JournalpostIDer: ${config.journalpostIDer.joinToString(", ")}" +
"\nKlageinstans sin behandling ble avsluttet den ${config.avsluttetTidspunkt.toOppgaveFormat()}" +
"\n\n${config.utfall.lukkBeskrivelse()}"
return when (config) {
is OppgaveConfig.Klage.Klageinstanshendelse.KlagebehandlingAvsluttet -> "Utfall: ${config.utfall.toReadableName()}" +
"\nRelevante JournalpostIDer: ${config.journalpostIDer.joinToString(", ")}" +
"\nKlageinstans sin behandling ble avsluttet den ${config.avsluttetTidspunkt.toOppgaveFormat()}" +
"\n\n${config.utfall.lukkBeskrivelse()}"
is OppgaveConfig.Klage.Klageinstanshendelse.AnkebehandlingOpprettet -> "Klageinstans mottok en ny anke den ${config.mottattKlageinstans.toOppgaveFormat()}"
}
}

fun map(personhendelser: NonEmptyCollection<Personhendelse.TilknyttetSak.IkkeSendtTilOppgave>): String =
Expand Down Expand Up @@ -77,32 +80,32 @@ data object OppgavebeskrivelseMapper {
SivilstandTyper.GJENLEVENDE_PARTNER -> "Gjenlevende partner"
}

private fun KlageinstansUtfall.toReadableName() = when (this) {
KlageinstansUtfall.TRUKKET -> "Trukket"
KlageinstansUtfall.RETUR -> "Retur"
KlageinstansUtfall.OPPHEVET -> "Opphevet"
KlageinstansUtfall.MEDHOLD -> "Medhold"
KlageinstansUtfall.DELVIS_MEDHOLD -> "Delvis medhold"
KlageinstansUtfall.STADFESTELSE -> "Stadfestelse"
KlageinstansUtfall.UGUNST -> "Ugunst"
KlageinstansUtfall.AVVIST -> "Avvist"
private fun AvsluttetKlageinstansUtfall.toReadableName() = when (this) {
AvsluttetKlageinstansUtfall.TRUKKET -> "Trukket"
AvsluttetKlageinstansUtfall.RETUR -> "Retur"
AvsluttetKlageinstansUtfall.OPPHEVET -> "Opphevet"
AvsluttetKlageinstansUtfall.MEDHOLD -> "Medhold"
AvsluttetKlageinstansUtfall.DELVIS_MEDHOLD -> "Delvis medhold"
AvsluttetKlageinstansUtfall.STADFESTELSE -> "Stadfestelse"
AvsluttetKlageinstansUtfall.UGUNST -> "Ugunst"
AvsluttetKlageinstansUtfall.AVVIST -> "Avvist"
}

private fun KlageinstansUtfall.lukkBeskrivelse() = when (this) {
private fun AvsluttetKlageinstansUtfall.lukkBeskrivelse() = when (this) {
/*
* Informasjonsoppgaver som må lukkes manuelt.
* */
KlageinstansUtfall.STADFESTELSE,
KlageinstansUtfall.TRUKKET,
KlageinstansUtfall.AVVIST,
AvsluttetKlageinstansUtfall.STADFESTELSE,
AvsluttetKlageinstansUtfall.TRUKKET,
AvsluttetKlageinstansUtfall.AVVIST,
-> "Denne oppgaven er kun til opplysning og må lukkes manuelt."
/* Oppgaver som krever ytterligere handlinger og må lukkes manuelt. */
KlageinstansUtfall.UGUNST,
KlageinstansUtfall.OPPHEVET,
KlageinstansUtfall.MEDHOLD,
KlageinstansUtfall.DELVIS_MEDHOLD,
AvsluttetKlageinstansUtfall.UGUNST,
AvsluttetKlageinstansUtfall.OPPHEVET,
AvsluttetKlageinstansUtfall.MEDHOLD,
AvsluttetKlageinstansUtfall.DELVIS_MEDHOLD,
-> "Klagen krever ytterligere saksbehandling. Denne oppgaven må lukkes manuelt."
/* Oppgaver som krever ytterligere handling. Oppgaver lukkes automatisk av `su-se-bakover` */
KlageinstansUtfall.RETUR -> "Klagen krever ytterligere saksbehandling. Lukking av oppgaven håndteres automatisk."
AvsluttetKlageinstansUtfall.RETUR -> "Klagen krever ytterligere saksbehandling. Lukking av oppgaven håndteres automatisk."
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.ident.NavIdentBruker.Saksbehandler
import no.nav.su.se.bakover.common.infrastructure.config.ApplicationConfig
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.domain.klage.KlageinstansUtfall
import no.nav.su.se.bakover.domain.klage.AvsluttetKlageinstansUtfall
import no.nav.su.se.bakover.domain.oppgave.OppgaveConfig
import no.nav.su.se.bakover.oppgave.domain.KunneIkkeOppretteOppgave
import no.nav.su.se.bakover.oppgave.domain.Oppgavetype
Expand Down Expand Up @@ -450,12 +450,12 @@ internal class OppgaveHttpClientTest {
clock = fixedClock,
)
val actual = client.opprettOppgave(
OppgaveConfig.Klage.Klageinstanshendelse.Informasjon(
OppgaveConfig.Klage.Klageinstanshendelse.KlagebehandlingAvsluttet.Informasjon(
saksnummer = saksnummer,
fnr = fnr,
tilordnetRessurs = null,
clock = fixedClock,
utfall = KlageinstansUtfall.STADFESTELSE,
utfall = AvsluttetKlageinstansUtfall.STADFESTELSE,
avsluttetTidspunkt = fixedTidspunkt,
journalpostIDer = listOf(JournalpostId("123"), JournalpostId("456")),
),
Expand Down Expand Up @@ -504,12 +504,12 @@ internal class OppgaveHttpClientTest {
)

val actual = client.opprettOppgave(
OppgaveConfig.Klage.Klageinstanshendelse.Handling(
OppgaveConfig.Klage.Klageinstanshendelse.KlagebehandlingAvsluttet.Handling(
saksnummer = saksnummer,
fnr = fnr,
tilordnetRessurs = null,
clock = fixedClock,
utfall = KlageinstansUtfall.RETUR,
utfall = AvsluttetKlageinstansUtfall.RETUR,
avsluttetTidspunkt = fixedTidspunkt,
journalpostIDer = listOf(JournalpostId("123"), JournalpostId("456")),
),
Expand Down Expand Up @@ -559,12 +559,12 @@ internal class OppgaveHttpClientTest {
clock = fixedClock,
)
val actual = client.opprettOppgave(
OppgaveConfig.Klage.Klageinstanshendelse.Handling(
OppgaveConfig.Klage.Klageinstanshendelse.KlagebehandlingAvsluttet.Handling(
saksnummer = saksnummer,
fnr = fnr,
tilordnetRessurs = null,
clock = fixedClock,
utfall = KlageinstansUtfall.MEDHOLD,
utfall = AvsluttetKlageinstansUtfall.MEDHOLD,
avsluttetTidspunkt = fixedTidspunkt,
journalpostIDer = listOf(JournalpostId("123"), JournalpostId("456")),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,10 @@ internal class KlageinstanshendelsePostgresRepo(
"id" to hendelse.id,
"type" to KlageinstanshendelseType.PROSESSERT.toString(),
"oppgaveid" to hendelse.oppgaveId,
"utlest_utfall" to hendelse.utfall.toDatabaseType(),
"utlest_journalpostid" to hendelse.journalpostIDer,
"utlest_utfall" to (hendelse as? ProsessertKlageinstanshendelse.KlagebehandlingAvsluttet)?.utfall?.toDatabaseType(),
"utlest_journalpostid" to (hendelse as? ProsessertKlageinstanshendelse.KlagebehandlingAvsluttet)?.journalpostIDer,
"utlest_klageid" to hendelse.klageId.value,
"utlest_mottattKlageinstans" to (hendelse as? ProsessertKlageinstanshendelse.AnkebehandlingOpprettet)?.mottattKlageinstans,
),
session = transaction,
)
Expand Down Expand Up @@ -139,14 +140,31 @@ internal class KlageinstanshendelsePostgresRepo(
),
session,
) { row ->
ProsessertKlageinstanshendelse(
id = row.uuid("id"),
opprettet = row.tidspunkt("opprettet"),
klageId = KlageId(row.uuid("utlest_klageid")),
utfall = UtfallJson.valueOf(row.string("utlest_utfall")).toDomain(),
journalpostIDer = row.array<String>("utlest_journalpostid").map { JournalpostId(it) },
oppgaveId = OppgaveId(row.string("oppgaveid")),
)
require(KlageId(row.uuid("utlest_klageid")) == klageId) {
"Fant klageinstanshendelse med klageId ${KlageId(row.uuid("utlest_klageid"))} som ikke matcher forventet klageId $klageId"
}
val id = row.uuid("id")
val opprettet = row.tidspunkt("opprettet")
val oppgaveId = OppgaveId(row.string("oppgaveid"))
val utlestUtfall = row.stringOrNull("utlest_utfall")
if (utlestUtfall != null) {
ProsessertKlageinstanshendelse.KlagebehandlingAvsluttet(
id = id,
opprettet = opprettet,
klageId = klageId,
utfall = UtfallJson.valueOf(utlestUtfall).toDomain(),
journalpostIDer = row.array<String>("utlest_journalpostid").map { JournalpostId(it) },
oppgaveId = oppgaveId,
)
} else {
ProsessertKlageinstanshendelse.AnkebehandlingOpprettet(
id = id,
opprettet = opprettet,
klageId = klageId,
oppgaveId = oppgaveId,
mottattKlageinstans = row.tidspunkt("utlest_mottattKlageinstans"),
)
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package no.nav.su.se.bakover.database.klage.klageinstans

import no.nav.su.se.bakover.domain.klage.KlageinstansUtfall
import no.nav.su.se.bakover.domain.klage.AvsluttetKlageinstansUtfall

internal enum class UtfallJson(val databaseType: String) {
TRUKKET("TRUKKET"),
Expand All @@ -14,24 +14,24 @@ internal enum class UtfallJson(val databaseType: String) {
;

fun toDomain() = when (this) {
TRUKKET -> KlageinstansUtfall.TRUKKET
RETUR -> KlageinstansUtfall.RETUR
OPPHEVET -> KlageinstansUtfall.OPPHEVET
MEDHOLD -> KlageinstansUtfall.MEDHOLD
DELVIS_MEDHOLD -> KlageinstansUtfall.DELVIS_MEDHOLD
STADFESTELSE -> KlageinstansUtfall.STADFESTELSE
UGUNST -> KlageinstansUtfall.UGUNST
AVVIST -> KlageinstansUtfall.AVVIST
TRUKKET -> AvsluttetKlageinstansUtfall.TRUKKET
RETUR -> AvsluttetKlageinstansUtfall.RETUR
OPPHEVET -> AvsluttetKlageinstansUtfall.OPPHEVET
MEDHOLD -> AvsluttetKlageinstansUtfall.MEDHOLD
DELVIS_MEDHOLD -> AvsluttetKlageinstansUtfall.DELVIS_MEDHOLD
STADFESTELSE -> AvsluttetKlageinstansUtfall.STADFESTELSE
UGUNST -> AvsluttetKlageinstansUtfall.UGUNST
AVVIST -> AvsluttetKlageinstansUtfall.AVVIST
}
}

internal fun KlageinstansUtfall.toDatabaseType() = when (this) {
KlageinstansUtfall.TRUKKET -> UtfallJson.TRUKKET.databaseType
KlageinstansUtfall.RETUR -> UtfallJson.RETUR.databaseType
KlageinstansUtfall.OPPHEVET -> UtfallJson.OPPHEVET.databaseType
KlageinstansUtfall.MEDHOLD -> UtfallJson.MEDHOLD.databaseType
KlageinstansUtfall.DELVIS_MEDHOLD -> UtfallJson.DELVIS_MEDHOLD.databaseType
KlageinstansUtfall.STADFESTELSE -> UtfallJson.STADFESTELSE.databaseType
KlageinstansUtfall.UGUNST -> UtfallJson.UGUNST.databaseType
KlageinstansUtfall.AVVIST -> UtfallJson.AVVIST.databaseType
internal fun AvsluttetKlageinstansUtfall.toDatabaseType() = when (this) {
AvsluttetKlageinstansUtfall.TRUKKET -> UtfallJson.TRUKKET.databaseType
AvsluttetKlageinstansUtfall.RETUR -> UtfallJson.RETUR.databaseType
AvsluttetKlageinstansUtfall.OPPHEVET -> UtfallJson.OPPHEVET.databaseType
AvsluttetKlageinstansUtfall.MEDHOLD -> UtfallJson.MEDHOLD.databaseType
AvsluttetKlageinstansUtfall.DELVIS_MEDHOLD -> UtfallJson.DELVIS_MEDHOLD.databaseType
AvsluttetKlageinstansUtfall.STADFESTELSE -> UtfallJson.STADFESTELSE.databaseType
AvsluttetKlageinstansUtfall.UGUNST -> UtfallJson.UGUNST.databaseType
AvsluttetKlageinstansUtfall.AVVIST -> UtfallJson.AVVIST.databaseType
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
alter table klageinstanshendelse
add column if not exists utlest_mottattKlageinstans text default null -- Tilsvarer mottattKlageinstans i metadata
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import io.kotest.matchers.types.shouldBeTypeOf
import no.nav.su.se.bakover.common.domain.oppgave.OppgaveId
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.domain.klage.KlageinstansUtfall
import no.nav.su.se.bakover.domain.klage.AvsluttetKlageinstansUtfall
import no.nav.su.se.bakover.domain.klage.TolketKlageinstanshendelse
import no.nav.su.se.bakover.domain.klage.VurdertKlage
import no.nav.su.se.bakover.test.fixedTidspunkt
Expand Down Expand Up @@ -327,12 +327,12 @@ internal class KlagePostgresRepoTest {
val klage = testDataHelper.persisterKlageOversendt()
val (klageinstanshendelseId, _) = testDataHelper.persisterUprosessertKlageinstanshendelse(klageId = klage.id)

val tolketKlageinstanshendelse = TolketKlageinstanshendelse(
val tolketKlageinstanshendelse = TolketKlageinstanshendelse.KlagebehandlingAvsluttet(
id = klageinstanshendelseId,
opprettet = fixedTidspunkt,
avsluttetTidspunkt = fixedTidspunkt,
klageId = klage.id,
utfall = KlageinstansUtfall.RETUR,
utfall = AvsluttetKlageinstansUtfall.RETUR,
journalpostIDer = listOf(JournalpostId(UUID.randomUUID().toString())),
)

Expand Down Expand Up @@ -361,12 +361,12 @@ internal class KlagePostgresRepoTest {
val klage = testDataHelper.persisterKlageOversendt()
val (klageinstanshendelseId, _) = testDataHelper.persisterUprosessertKlageinstanshendelse(klageId = klage.id)

val tolketKlageinstanshendelse = TolketKlageinstanshendelse(
val tolketKlageinstanshendelse = TolketKlageinstanshendelse.KlagebehandlingAvsluttet(
id = klageinstanshendelseId,
opprettet = fixedTidspunkt,
avsluttetTidspunkt = fixedTidspunkt,
klageId = klage.id,
utfall = KlageinstansUtfall.RETUR,
utfall = AvsluttetKlageinstansUtfall.RETUR,
journalpostIDer = listOf(JournalpostId(UUID.randomUUID().toString())),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ import io.kotest.assertions.throwables.shouldThrow
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.domain.klage.KlageinstansUtfall
import no.nav.su.se.bakover.domain.klage.AvsluttetKlageinstansUtfall
import no.nav.su.se.bakover.domain.klage.ProsessertKlageinstanshendelse
import no.nav.su.se.bakover.test.fixedTidspunkt
import no.nav.su.se.bakover.test.oppgave.oppgaveId
import no.nav.su.se.bakover.test.persistence.TestDataHelper
import no.nav.su.se.bakover.test.persistence.withMigratedDb
import org.junit.jupiter.api.Test
Expand Down Expand Up @@ -110,13 +111,13 @@ internal class KlageinstanshendelsePostgresRepoTest {
).also {
klageinstanshendelsePostgresRepo.lagre(it)
klageinstanshendelsePostgresRepo.lagre(
ProsessertKlageinstanshendelse(
ProsessertKlageinstanshendelse.KlagebehandlingAvsluttet(
id = it.id,
opprettet = fixedTidspunkt,
klageId = klage.id,
utfall = KlageinstansUtfall.STADFESTELSE,
utfall = AvsluttetKlageinstansUtfall.STADFESTELSE,
journalpostIDer = listOf(JournalpostId(UUID.randomUUID().toString())),
oppgaveId = null,
oppgaveId = oppgaveId,
),
)
klageinstanshendelsePostgresRepo.hentUbehandlaKlageinstanshendelser() shouldBe emptyList()
Expand Down
Loading