From dc20faa0b4d1a2afe688861c41dbbe0312ac9d39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frode=20Lind=C3=A5s?= Date: Mon, 16 Sep 2024 15:54:52 +0200 Subject: [PATCH] Omskriving til bruk av BehandlingshistorikkRequest --- api-kontrakt/build.gradle.kts | 7 ++ .../no/nav/aap/oppgave/AvsluttOppgaveDto.kt | 4 +- .../kotlin/no/nav/aap/oppgave/OppgaveDto.kt | 4 +- .../no/nav/aap/oppgave/filter/FilterDto.kt | 4 +- .../opprett/BehandlingshistorikkRequest.kt | 94 +++++++++++++++++++ .../aap/oppgave/opprett/OpprettOppgaveDto.kt | 13 --- ...ngsbehovType.kt => AvklaringsbehovKode.kt} | 2 +- .../kotlin/no/nav/aap/oppgave/OppgaveAPI.kt | 2 +- .../no/nav/aap/oppgave/OppgaveRepository.kt | 12 +-- .../aap/oppgave/filter/FilterRepository.kt | 4 +- ...BehandlingshistorikkTilOppgaveConverter.kt | 59 ++++++++++++ .../aap/oppgave/opprette/OpprettOppgaveAPI.kt | 30 +++--- .../test/kotlin/no/nav/aap/oppgave/ApiTest.kt | 50 +++++++--- .../nav/aap/oppgave/OppgaveRepositoryTest.kt | 14 +-- 14 files changed, 233 insertions(+), 66 deletions(-) create mode 100644 api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/opprett/BehandlingshistorikkRequest.kt delete mode 100644 api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/opprett/OpprettOppgaveDto.kt rename api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/verdityper/{AvklaringsbehovType.kt => AvklaringsbehovKode.kt} (50%) create mode 100644 app/src/main/kotlin/no/nav/aap/oppgave/opprette/BehandlingshistorikkTilOppgaveConverter.kt diff --git a/api-kontrakt/build.gradle.kts b/api-kontrakt/build.gradle.kts index 209e41e..91f96f5 100644 --- a/api-kontrakt/build.gradle.kts +++ b/api-kontrakt/build.gradle.kts @@ -9,6 +9,13 @@ group = "no.nav.aap.oppgave" apply(plugin = "maven-publish") apply(plugin = "java-library") +val jacksonVersion = "2.17.2" + +dependencies { + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jacksonVersion") + +} + java { withSourcesJar() } diff --git a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/AvsluttOppgaveDto.kt b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/AvsluttOppgaveDto.kt index 677beb2..f01f9f4 100644 --- a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/AvsluttOppgaveDto.kt +++ b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/AvsluttOppgaveDto.kt @@ -1,11 +1,11 @@ package no.nav.aap.oppgave -import no.nav.aap.oppgave.verdityper.AvklaringsbehovType +import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode import java.util.UUID data class AvsluttOppgaveDto( val saksnummer: String? = null, val behandlingRef: UUID? = null, val journalpostId: Long? = null, - val avklaringsbehovType: AvklaringsbehovType, + val avklaringsbehovKode: AvklaringsbehovKode, ) diff --git a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/OppgaveDto.kt b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/OppgaveDto.kt index e153ca8..5b4786b 100644 --- a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/OppgaveDto.kt +++ b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/OppgaveDto.kt @@ -1,6 +1,6 @@ package no.nav.aap.oppgave -import no.nav.aap.oppgave.verdityper.AvklaringsbehovType +import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode import no.nav.aap.oppgave.verdityper.OppgaveId import no.nav.aap.oppgave.verdityper.Status import java.time.LocalDateTime @@ -12,7 +12,7 @@ data class OppgaveDto( val behandlingRef: UUID? = null, val journalpostId: Long? = null, val behandlingOpprettet: LocalDateTime, - val avklaringsbehovType: AvklaringsbehovType, + val avklaringsbehovKode: AvklaringsbehovKode, val status: Status = Status.OPPRETTET, val reservertAv: String? = null, val reservertTidspunkt: LocalDateTime? = null, diff --git a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/filter/FilterDto.kt b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/filter/FilterDto.kt index a4f7aeb..9f4d4e0 100644 --- a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/filter/FilterDto.kt +++ b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/filter/FilterDto.kt @@ -1,9 +1,9 @@ package no.nav.aap.oppgave.filter -import no.nav.aap.oppgave.verdityper.AvklaringsbehovType +import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode data class FilterDto( val id: Long, val navn: String, - val avklaringsbehovKoder: Set = emptySet() + val avklaringsbehovKoder: Set = emptySet() ) \ No newline at end of file diff --git a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/opprett/BehandlingshistorikkRequest.kt b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/opprett/BehandlingshistorikkRequest.kt new file mode 100644 index 0000000..2874b57 --- /dev/null +++ b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/opprett/BehandlingshistorikkRequest.kt @@ -0,0 +1,94 @@ +package no.nav.aap.oppgave.opprett + +import com.fasterxml.jackson.annotation.JsonIgnore +import java.time.LocalDateTime + +//TODO skal ligge behandlingsflyt.api-kontrakt, fjernes når det er klart +data class BehandlingshistorikkRequest( + val personident: String, + val saksnummer: String, + val referanse: String, + val behandlingType: Behandlingstype, + val status: Behandlingstatus, + val opprettetTidspunkt: LocalDateTime, + val avklaringsbehov: List, +) { + fun erLukket() = + (status == Behandlingstatus.AVSLUTTET) || + avklaringsbehov.all { it.status == Avklaringsbehovstatus.AVSLUTTET } + + @JsonIgnore + fun getÅpentAvklaringsbehov() = avklaringsbehov.firstOrNull { + it.status in setOf( + Avklaringsbehovstatus.OPPRETTET, + Avklaringsbehovstatus.SENDT_TILBAKE_FRA_BESLUTTER, + Avklaringsbehovstatus.SENDT_TILBAKE_FRA_KVALITETSSIKRER + ) + } +} + +enum class Behandlingstype { + Førstegangsbehandling, + Revurdering, + Tilbakekreving, + Klage +} + +enum class Behandlingstatus { + OPPRETTET, + UTREDES, + AVSLUTTET, + PÅ_VENT +} + +enum class Avklaringsbehovstatus { + OPPRETTET, + AVSLUTTET, + KVALITETSSIKRET, + SENDT_TILBAKE_FRA_KVALITETSSIKRER, + TOTRINNS_VURDERT, + SENDT_TILBAKE_FRA_BESLUTTER, + AVBRUTT +} + +enum class Avklaringsbehovtype(val kode: String) { + MANUELT_SATT_PÅ_VENT("9001"), + AVKLAR_STUDENT("5001"), + AVKLAR_SYKDOM("5003"), + FASTSETT_ARBEIDSEVNE("5004"), + FRITAK_MELDEPLIKT("5005"), + AVKLAR_BISTANDSBEHOV("5006"), + VURDER_SYKEPENGEERSTATNING("5007"), + FASTSETT_BEREGNINGSTIDSPUNKT("5008"), + AVKLAR_BARN("5009"), + AVKLAR_SONINGSFORRHOLD("5010"), + AVKLAR_HELSEINSTITUSJON("5011"), + KVALITETSSIKRING("5097"), + FORESLÅ_VEDTAK("5098"), + FATTE_VEDTAK("5099"); + + companion object { + private val map = entries.associateBy(Avklaringsbehovtype::kode) + fun fraKode(kode: String) = + map[kode] ?: throw IllegalArgumentException("Finner ikke Avklaringsbehovtype for kode: $kode") + } +} + +data class AvklaringsbehovDto( + val definisjon: Definisjon, + val status: Avklaringsbehovstatus, + val endringer: List +) { + fun getOpprettelsestidspunkt() = endringer.find { it.status == Avklaringsbehovstatus.OPPRETTET }?.tidsstempel + ?: throw IllegalArgumentException("Avklaringsbehov mangler ") +} + +data class Definisjon( + val type: String +) + +data class AvklaringsbehovhendelseEndring( + val status: Avklaringsbehovstatus, + val tidsstempel: LocalDateTime, + val endretAv: String +) diff --git a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/opprett/OpprettOppgaveDto.kt b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/opprett/OpprettOppgaveDto.kt deleted file mode 100644 index dce3045..0000000 --- a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/opprett/OpprettOppgaveDto.kt +++ /dev/null @@ -1,13 +0,0 @@ -package no.nav.aap.oppgave.opprett - -import no.nav.aap.oppgave.verdityper.AvklaringsbehovType -import java.time.LocalDateTime -import java.util.UUID - -data class OpprettOppgaveDto( - val saksnummer: String? = null, - val behandlingRef: UUID? = null, - val journalpostId: Long? = null, - val behandlingOpprettet: LocalDateTime, - val avklaringsbehovType: AvklaringsbehovType, -) \ No newline at end of file diff --git a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/verdityper/AvklaringsbehovType.kt b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/verdityper/AvklaringsbehovKode.kt similarity index 50% rename from api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/verdityper/AvklaringsbehovType.kt rename to api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/verdityper/AvklaringsbehovKode.kt index 7db3501..73d695e 100644 --- a/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/verdityper/AvklaringsbehovType.kt +++ b/api-kontrakt/src/main/kotlin/no/nav/aap/oppgave/verdityper/AvklaringsbehovKode.kt @@ -1,4 +1,4 @@ package no.nav.aap.oppgave.verdityper @JvmInline -value class AvklaringsbehovType(val kode: String) \ No newline at end of file +value class AvklaringsbehovKode(val kode: String) \ No newline at end of file diff --git a/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveAPI.kt b/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveAPI.kt index 3b3fa0f..89c607d 100644 --- a/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveAPI.kt +++ b/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveAPI.kt @@ -31,7 +31,7 @@ fun NormalOpenAPIRoute.avsluttOppgave(dataSource: DataSource, prometheus: Promet dto.saksnummer, dto.behandlingRef, dto.journalpostId, - dto.avklaringsbehovType, + dto.avklaringsbehovKode, ident() ) oppgaverSomSkalAvsluttes.forEach { diff --git a/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveRepository.kt b/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveRepository.kt index 938e812..4f1f213 100644 --- a/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveRepository.kt +++ b/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveRepository.kt @@ -3,7 +3,7 @@ package no.nav.aap.oppgave import no.nav.aap.komponenter.dbconnect.DBConnection import no.nav.aap.oppgave.filter.FilterDto import no.nav.aap.oppgave.plukk.NesteOppgaveDto -import no.nav.aap.oppgave.verdityper.AvklaringsbehovType +import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode import no.nav.aap.oppgave.verdityper.OppgaveId import no.nav.aap.oppgave.verdityper.Status import java.util.UUID @@ -32,7 +32,7 @@ class OppgaveRepository(private val connection: DBConnection) { setUUID(2, oppgaveDto.behandlingRef) setLong(3, oppgaveDto.journalpostId) setLocalDateTime(4, oppgaveDto.behandlingOpprettet) - setString(5, oppgaveDto.avklaringsbehovType.kode) + setString(5, oppgaveDto.avklaringsbehovKode.kode) setString(6, oppgaveDto.status.name) setString(7, oppgaveDto.opprettetAv) setLocalDateTime(8, oppgaveDto.opprettetTidspunkt) @@ -117,7 +117,7 @@ class OppgaveRepository(private val connection: DBConnection) { behandlingRef = row.getUUIDOrNull("BEHANDLING_REF"), journalpostId = row.getLongOrNull("JOURNALPOST_ID"), behandlingOpprettet = row.getLocalDateTime("BEHANDLING_OPPRETTET"), - avklaringsbehovType = AvklaringsbehovType(row.getString("AVKLARINGSBEHOV_TYPE")), + avklaringsbehovKode = AvklaringsbehovKode(row.getString("AVKLARINGSBEHOV_TYPE")), status = Status.valueOf(row.getString("STATUS")), reservertAv = row.getStringOrNull("RESERVERT_AV"), reservertTidspunkt = row.getLocalDateTimeOrNull("RESERVERT_TIDSPUNKT"), @@ -130,7 +130,7 @@ class OppgaveRepository(private val connection: DBConnection) { } } - fun hentOppgaverForReferanse(saksnummer: String?, behandlingRef: UUID?, journalpostId: Long?, avklaringsbehovType: AvklaringsbehovType, ident: String): List { + fun hentOppgaverForReferanse(saksnummer: String?, behandlingRef: UUID?, journalpostId: Long?, avklaringsbehovKode: AvklaringsbehovKode, ident: String): List { val oppgaverForReferanseQuery = """ SELECT ID @@ -149,7 +149,7 @@ class OppgaveRepository(private val connection: DBConnection) { setString(1, saksnummer) setUUID(2, behandlingRef) setLong(3, journalpostId) - setString(4, avklaringsbehovType.kode) + setString(4, avklaringsbehovKode.kode) setString(5, ident) } } @@ -183,7 +183,7 @@ class OppgaveRepository(private val connection: DBConnection) { return "" } - private fun Set.tilStringListe(): String { + private fun Set.tilStringListe(): String { return map {"'${it.kode}'"}.joinToString(prefix = "(", postfix = ")", separator = ", ") } } \ No newline at end of file diff --git a/app/src/main/kotlin/no/nav/aap/oppgave/filter/FilterRepository.kt b/app/src/main/kotlin/no/nav/aap/oppgave/filter/FilterRepository.kt index a3020c2..3bbea11 100644 --- a/app/src/main/kotlin/no/nav/aap/oppgave/filter/FilterRepository.kt +++ b/app/src/main/kotlin/no/nav/aap/oppgave/filter/FilterRepository.kt @@ -1,14 +1,14 @@ package no.nav.aap.oppgave.filter import no.nav.aap.komponenter.dbconnect.DBConnection -import no.nav.aap.oppgave.verdityper.AvklaringsbehovType +import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode // Forløpig mock repository class FilterRepository(private val connection: DBConnection) { private val filterDtoMap = mapOf( 1L to FilterDto(1L, "Alle oppgaver"), - 2L to FilterDto(2L, "Oppgaver av med avklaringsbehov 1000", setOf(AvklaringsbehovType("1000"))), + 2L to FilterDto(2L, "Oppgaver av med avklaringsbehov 1000", setOf(AvklaringsbehovKode("1000"))), ) fun hentFilter(filterId: Long): FilterDto? { diff --git a/app/src/main/kotlin/no/nav/aap/oppgave/opprette/BehandlingshistorikkTilOppgaveConverter.kt b/app/src/main/kotlin/no/nav/aap/oppgave/opprette/BehandlingshistorikkTilOppgaveConverter.kt new file mode 100644 index 0000000..963ef8e --- /dev/null +++ b/app/src/main/kotlin/no/nav/aap/oppgave/opprette/BehandlingshistorikkTilOppgaveConverter.kt @@ -0,0 +1,59 @@ +package no.nav.aap.oppgave.opprette + +import no.nav.aap.oppgave.OppgaveDto +import no.nav.aap.oppgave.opprett.AvklaringsbehovDto +import no.nav.aap.oppgave.opprett.Avklaringsbehovstatus +import no.nav.aap.oppgave.opprett.BehandlingshistorikkRequest +import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode +import java.time.LocalDateTime +import java.util.UUID + +object BehandlingshistorikkTilOppgaveConverter { + + fun lagOppgave(behandlingshistorikk: BehandlingshistorikkRequest, ident: String): OppgaveDto? { + val åpentAvklaringsbehov = behandlingshistorikk.getÅpentAvklaringsbehov() + if (åpentAvklaringsbehov == null) { + return null + } + return when (åpentAvklaringsbehov.status) { + Avklaringsbehovstatus.OPPRETTET -> + opprettNyOppgave(behandlingshistorikk, åpentAvklaringsbehov, ident) + Avklaringsbehovstatus.SENDT_TILBAKE_FRA_KVALITETSSIKRER, Avklaringsbehovstatus.SENDT_TILBAKE_FRA_BESLUTTER -> + gjenopprettOppgave(behandlingshistorikk, åpentAvklaringsbehov, ident) + else -> return null + } + } + + private fun opprettNyOppgave(behandlingshistorikkRequest: BehandlingshistorikkRequest, + avklaringsbehov: AvklaringsbehovDto, + ident: String + ): OppgaveDto { + return OppgaveDto( + saksnummer = behandlingshistorikkRequest.saksnummer, + behandlingRef = UUID.fromString(behandlingshistorikkRequest.referanse), + behandlingOpprettet = behandlingshistorikkRequest.opprettetTidspunkt, + avklaringsbehovKode = AvklaringsbehovKode(avklaringsbehov.definisjon.type), + opprettetAv = ident, + opprettetTidspunkt = LocalDateTime.now() + ) + } + + private fun gjenopprettOppgave(behandlingshistorikkRequest: BehandlingshistorikkRequest, + avklaringsbehov: AvklaringsbehovDto, + ident: String + ): OppgaveDto? { + val oppgaveDto = opprettNyOppgave(behandlingshistorikkRequest, avklaringsbehov, ident) + val sistEndretAv = avklaringsbehov.sistEndretAv() + oppgaveDto.copy(reservertAv = sistEndretAv, reservertTidspunkt = LocalDateTime.now()) + return oppgaveDto + } + + private fun AvklaringsbehovDto.sistEndretAv(): String? { + return endringer + .sortedByDescending { it.tidsstempel } + .filter { it.status == this.status } + .map { it.endretAv } + .firstOrNull() + } + +} \ No newline at end of file diff --git a/app/src/main/kotlin/no/nav/aap/oppgave/opprette/OpprettOppgaveAPI.kt b/app/src/main/kotlin/no/nav/aap/oppgave/opprette/OpprettOppgaveAPI.kt index 04aa147..36c1e26 100644 --- a/app/src/main/kotlin/no/nav/aap/oppgave/opprette/OpprettOppgaveAPI.kt +++ b/app/src/main/kotlin/no/nav/aap/oppgave/opprette/OpprettOppgaveAPI.kt @@ -3,35 +3,29 @@ package no.nav.aap.oppgave.opprette import com.papsign.ktor.openapigen.route.path.normal.NormalOpenAPIRoute import com.papsign.ktor.openapigen.route.path.normal.post import com.papsign.ktor.openapigen.route.response.respond +import com.papsign.ktor.openapigen.route.response.respondWithStatus import com.papsign.ktor.openapigen.route.route +import io.ktor.http.HttpStatusCode import io.micrometer.prometheusmetrics.PrometheusMeterRegistry import no.nav.aap.komponenter.dbconnect.transaction -import no.nav.aap.oppgave.OppgaveDto import no.nav.aap.oppgave.verdityper.OppgaveId import no.nav.aap.oppgave.OppgaveRepository import no.nav.aap.oppgave.metriker.httpCallCounter -import no.nav.aap.oppgave.opprett.OpprettOppgaveDto +import no.nav.aap.oppgave.opprett.BehandlingshistorikkRequest import no.nav.aap.oppgave.server.authenticate.ident -import java.time.LocalDateTime import javax.sql.DataSource fun NormalOpenAPIRoute.opprettOppgaveApi(dataSource: DataSource, prometheus: PrometheusMeterRegistry) = - route("/opprett-oppgave").post { _, request -> + route("/opprett-oppgave").post { _, request -> prometheus.httpCallCounter("/opprett-oppgave").increment() - val oppgaveId = dataSource.transaction { connection -> - val oppgaveDto = OppgaveDto( - saksnummer = request.saksnummer, - behandlingRef = request.behandlingRef, - behandlingOpprettet = request.behandlingOpprettet, - avklaringsbehovType = request.avklaringsbehovType, - opprettetAv = ident(), - opprettetTidspunkt = LocalDateTime.now() - ) - OppgaveRepository(connection).opprettOppgave(oppgaveDto) + val oppgave = BehandlingshistorikkTilOppgaveConverter.lagOppgave(request, ident()) + if (oppgave != null) { + val oppgaveId = dataSource.transaction { connection -> + OppgaveRepository(connection).opprettOppgave(oppgave) + } + respond(oppgaveId) + } else { + respondWithStatus(HttpStatusCode.NoContent) } - respond(oppgaveId) } - - - diff --git a/app/src/test/kotlin/no/nav/aap/oppgave/ApiTest.kt b/app/src/test/kotlin/no/nav/aap/oppgave/ApiTest.kt index bc4e4de..141187c 100644 --- a/app/src/test/kotlin/no/nav/aap/oppgave/ApiTest.kt +++ b/app/src/test/kotlin/no/nav/aap/oppgave/ApiTest.kt @@ -13,10 +13,17 @@ import no.nav.aap.komponenter.httpklient.httpclient.request.PostRequest import no.nav.aap.komponenter.httpklient.httpclient.tokenprovider.azurecc.ClientCredentialsTokenProvider import no.nav.aap.oppgave.fakes.Fakes import no.nav.aap.oppgave.filter.FilterDto -import no.nav.aap.oppgave.opprett.OpprettOppgaveDto +import no.nav.aap.oppgave.opprett.AvklaringsbehovDto +import no.nav.aap.oppgave.opprett.AvklaringsbehovhendelseEndring +import no.nav.aap.oppgave.opprett.Avklaringsbehovstatus +import no.nav.aap.oppgave.opprett.Avklaringsbehovtype +import no.nav.aap.oppgave.opprett.BehandlingshistorikkRequest +import no.nav.aap.oppgave.opprett.Behandlingstatus +import no.nav.aap.oppgave.opprett.Behandlingstype +import no.nav.aap.oppgave.opprett.Definisjon import no.nav.aap.oppgave.plukk.FinnNesteOppgaveDto import no.nav.aap.oppgave.plukk.NesteOppgaveDto -import no.nav.aap.oppgave.verdityper.AvklaringsbehovType +import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode import no.nav.aap.oppgave.verdityper.OppgaveId import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.AfterAll @@ -34,10 +41,9 @@ class ApiTest { @Test fun `Opprett og plukk oppgave`() { val saksnummer = "123456" - val behandlingRef = UUID.randomUUID() - val avklaringsbehovKode = "1000" + val referanse = UUID.randomUUID().toString() - val oppgaveId = opprettOppgave(saksnummer, behandlingRef, avklaringsbehovKode) + val oppgaveId = opprettOppgave(saksnummer, referanse) assertThat(oppgaveId).isNotNull() val nesteOppgaveDto = hentNesteOppgave() @@ -61,14 +67,34 @@ class ApiTest { assertThat(filterListe).hasSize(2) } - - private fun opprettOppgave(saksnummer: String, behandlingRef: UUID, avklaringsbehovKode: String): OppgaveId? { - val request = OpprettOppgaveDto( + private fun opprettBehandlingshistorikk(saksnummer: String, referanse: String): BehandlingshistorikkRequest { + return BehandlingshistorikkRequest( + personident = "01010012345", saksnummer = saksnummer, - behandlingRef = behandlingRef, - behandlingOpprettet = LocalDateTime.now(), - avklaringsbehovType = AvklaringsbehovType(avklaringsbehovKode) + referanse = referanse, + behandlingType = Behandlingstype.Førstegangsbehandling, + status = Behandlingstatus.OPPRETTET, + opprettetTidspunkt = LocalDateTime.now(), + avklaringsbehov = listOf( + AvklaringsbehovDto( + definisjon = Definisjon( + type = Avklaringsbehovtype.AVKLAR_SYKDOM.kode + ), + status = Avklaringsbehovstatus.OPPRETTET, + endringer = listOf( + AvklaringsbehovhendelseEndring( + status = Avklaringsbehovstatus.OPPRETTET, + tidsstempel = LocalDateTime.now(), + endretAv = "Kelvin" + ) + ) + ) + ) ) + } + + private fun opprettOppgave(saksnummer: String, referanse: String): OppgaveId? { + val request = opprettBehandlingshistorikk(saksnummer, referanse) val oppgaveId:OppgaveId? = client.post( URI.create("http://localhost:8080/opprett-oppgave"), PostRequest(body = request) @@ -91,7 +117,7 @@ class ApiTest { saksnummer = saksnummer, behandlingRef = behandlingRef, journalpostId = null, - avklaringsbehovType = AvklaringsbehovType(avklaringsbehovKode)) + avklaringsbehovKode = AvklaringsbehovKode(avklaringsbehovKode)) ) ) return oppgaveIder!! diff --git a/app/src/test/kotlin/no/nav/aap/oppgave/OppgaveRepositoryTest.kt b/app/src/test/kotlin/no/nav/aap/oppgave/OppgaveRepositoryTest.kt index 26787bc..34016f4 100644 --- a/app/src/test/kotlin/no/nav/aap/oppgave/OppgaveRepositoryTest.kt +++ b/app/src/test/kotlin/no/nav/aap/oppgave/OppgaveRepositoryTest.kt @@ -4,7 +4,7 @@ import no.nav.aap.komponenter.dbconnect.transaction import no.nav.aap.komponenter.dbtest.InitTestDatabase import no.nav.aap.oppgave.filter.FilterDto import no.nav.aap.oppgave.plukk.NesteOppgaveDto -import no.nav.aap.oppgave.verdityper.AvklaringsbehovType +import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode import no.nav.aap.oppgave.verdityper.OppgaveId import no.nav.aap.oppgave.verdityper.Status import org.assertj.core.api.Assertions.assertThat @@ -38,7 +38,7 @@ class OppgaveRepositoryTest { @Test fun `Reserver neste oppgave finner ingen oppgave fordi opprettet oppgave ikke matcher filter`() { - opprettOppgave(avklaringsbehovType = AvklaringsbehovType("1000")) + opprettOppgave(avklaringsbehovKode = AvklaringsbehovKode("1000")) InitTestDatabase.dataSource.transaction { connection -> val oppgaveId = OppgaveRepository(connection).reserverNesteOppgave(filter("2000"), "test") assertThat(oppgaveId).isNull() @@ -47,8 +47,8 @@ class OppgaveRepositoryTest { @Test fun `Reserver neste oppgave finner en oppgave fordi en av oppgavene matcher filter`() { - opprettOppgave(avklaringsbehovType = AvklaringsbehovType("2000")) - opprettOppgave(avklaringsbehovType = AvklaringsbehovType("3000")) + opprettOppgave(avklaringsbehovKode = AvklaringsbehovKode("2000")) + opprettOppgave(avklaringsbehovKode = AvklaringsbehovKode("3000")) InitTestDatabase.dataSource.transaction { connection -> val oppgaveId = OppgaveRepository(connection).reserverNesteOppgave(filter("3000"), "test") assertThat(oppgaveId).isNotNull() @@ -84,7 +84,7 @@ class OppgaveRepositoryTest { } private fun filter(vararg avklaringsbehovKoder: String) = - FilterDto(1, "Filter for test", avklaringsbehovKoder.map { AvklaringsbehovType(it) }.toSet()) + FilterDto(1, "Filter for test", avklaringsbehovKoder.map { AvklaringsbehovKode(it) }.toSet()) private fun avsluttOppgave(oppgaveId: OppgaveId) { @@ -103,13 +103,13 @@ class OppgaveRepositoryTest { saksnummer: String = "123", behandlingRef: UUID = UUID.randomUUID(), status: Status = Status.OPPRETTET, - avklaringsbehovType: AvklaringsbehovType = AvklaringsbehovType("1000") + avklaringsbehovKode: AvklaringsbehovKode = AvklaringsbehovKode("1000") ): OppgaveId { val oppgaveDto = OppgaveDto( saksnummer = saksnummer, behandlingRef = behandlingRef, behandlingOpprettet = LocalDateTime.now().minusDays(3), - avklaringsbehovType = avklaringsbehovType, + avklaringsbehovKode = avklaringsbehovKode, status = status, opprettetAv = "bruker1", opprettetTidspunkt = LocalDateTime.now()