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 f01f9f4..31419ca 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,12 @@ package no.nav.aap.oppgave +import no.nav.aap.oppgave.opprett.Avklaringsbehovtype import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode import java.util.UUID data class AvsluttOppgaveDto( val saksnummer: String? = null, - val behandlingRef: UUID? = null, + val referanse: UUID? = null, val journalpostId: Long? = null, - val avklaringsbehovKode: AvklaringsbehovKode, + val avklaringsbehovtype: Avklaringsbehovtype, ) 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 89c607d..951a04c 100644 --- a/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveAPI.kt +++ b/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveAPI.kt @@ -29,9 +29,9 @@ fun NormalOpenAPIRoute.avsluttOppgave(dataSource: DataSource, prometheus: Promet val oppgaver = dataSource.transaction { connection -> val oppgaverSomSkalAvsluttes = OppgaveRepository(connection).hentOppgaverForReferanse( dto.saksnummer, - dto.behandlingRef, + dto.referanse, dto.journalpostId, - dto.avklaringsbehovKode, + dto.avklaringsbehovtype, 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 4f1f213..2598ab5 100644 --- a/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveRepository.kt +++ b/app/src/main/kotlin/no/nav/aap/oppgave/OppgaveRepository.kt @@ -2,6 +2,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.opprett.Avklaringsbehovtype import no.nav.aap.oppgave.plukk.NesteOppgaveDto import no.nav.aap.oppgave.verdityper.AvklaringsbehovKode import no.nav.aap.oppgave.verdityper.OppgaveId @@ -130,27 +131,34 @@ class OppgaveRepository(private val connection: DBConnection) { } } - fun hentOppgaverForReferanse(saksnummer: String?, behandlingRef: UUID?, journalpostId: Long?, avklaringsbehovKode: AvklaringsbehovKode, ident: String): List { + fun hentOppgaverForReferanse(saksnummer: String?, referanse: UUID?, journalpostId: Long?, avklaringsbehovtype: Avklaringsbehovtype, ident: String): List { + val saksnummerClause = if (saksnummer != null) "SAKSNUMMER = ?" else "SAKSNUMMER IS NULL" + val referanseClause = if (referanse != null) "BEHANDLING_REF = ?" else "BEHANDLING_REF IS NULL" + val journalpostIdClause = if (journalpostId != null) "JOURNALPOST_ID = ?" else "JOURNALPOST_ID IS NULL" val oppgaverForReferanseQuery = """ SELECT ID FROM OPPGAVE WHERE - SAKSNUMMER = ? AND - BEHANDLING_REF = ? AND - JOURNALPOST_ID = ? AND + $saksnummerClause AND + $referanseClause AND + $journalpostIdClause AND AVKLARINGSBEHOV_TYPE = ? AND RESERVERT_AV = ? """.trimIndent() return connection.queryList(oppgaverForReferanseQuery) { setParams { - setString(1, saksnummer) - setUUID(2, behandlingRef) - setLong(3, journalpostId) - setString(4, avklaringsbehovKode.kode) - setString(5, ident) + var index = 1 + if (saksnummer != null) setString(index++, saksnummer) + if (referanse != null) setUUID(index++, referanse) + if (journalpostId != null ) setLong(index++, journalpostId) + setString(index++, avklaringsbehovtype.kode) + setString(index++, ident) + } + setRowMapper { row -> + OppgaveId(row.getLong("ID")) } } } diff --git a/app/src/main/kotlin/no/nav/aap/oppgave/plukk/PlukkAPI.kt b/app/src/main/kotlin/no/nav/aap/oppgave/plukk/PlukkAPI.kt index 42281d0..cf428a7 100644 --- a/app/src/main/kotlin/no/nav/aap/oppgave/plukk/PlukkAPI.kt +++ b/app/src/main/kotlin/no/nav/aap/oppgave/plukk/PlukkAPI.kt @@ -29,6 +29,6 @@ fun NormalOpenAPIRoute.plukkApi(dataSource: DataSource, prometheus: PrometheusMe if (nesteOppgave != null) { respond(nesteOppgave) } else { - respondWithStatus(HttpStatusCode.NotFound) + respondWithStatus(HttpStatusCode.NoContent) } } 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 141187c..f5e5f92 100644 --- a/app/src/test/kotlin/no/nav/aap/oppgave/ApiTest.kt +++ b/app/src/test/kotlin/no/nav/aap/oppgave/ApiTest.kt @@ -23,7 +23,6 @@ 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.AvklaringsbehovKode import no.nav.aap.oppgave.verdityper.OppgaveId import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.AfterAll @@ -39,21 +38,28 @@ import java.util.UUID class ApiTest { @Test - fun `Opprett og plukk oppgave`() { + fun `Opprett, plukk og avslutt oppgave`() { val saksnummer = "123456" - val referanse = UUID.randomUUID().toString() + val referanse = UUID.randomUUID() + val avklaringsbehovtype: Avklaringsbehovtype = Avklaringsbehovtype.AVKLAR_SYKDOM + // Opprett ny oppgave val oppgaveId = opprettOppgave(saksnummer, referanse) assertThat(oppgaveId).isNotNull() - val nesteOppgaveDto = hentNesteOppgave() - assertThat(nesteOppgaveDto).isNotNull() - assertThat(nesteOppgaveDto!!.oppgaveId).isEqualTo(oppgaveId!!) + // Plukk neste oppgave + var nesteOppgave = hentNesteOppgave() + assertThat(nesteOppgave).isNotNull() + assertThat(nesteOppgave!!.oppgaveId).isEqualTo(oppgaveId!!) -//TODO: fiks senere -// val oppgaveIder = avsluttOppgave(saksnummer, behandlingRef, avklaringsbehovKode) -// assertThat(oppgaveIder).hasSize(1) -// assertThat(oppgaveIder.first()).isEqualTo(oppgaveId) + // Avslutt plukket oppgave + val oppgaveIder = avsluttOppgave(saksnummer, referanse, avklaringsbehovtype) + assertThat(oppgaveIder).hasSize(1) + assertThat(oppgaveIder.first()).isEqualTo(oppgaveId) + + // Sjekk at det ikkk er flere oppgaver i køen + nesteOppgave = hentNesteOppgave() + assertThat(nesteOppgave).isNull() } @@ -67,18 +73,18 @@ class ApiTest { assertThat(filterListe).hasSize(2) } - private fun opprettBehandlingshistorikk(saksnummer: String, referanse: String): BehandlingshistorikkRequest { + private fun opprettBehandlingshistorikk(saksnummer: String, referanse: UUID, avklaringsbehovtype: Avklaringsbehovtype): BehandlingshistorikkRequest { return BehandlingshistorikkRequest( personident = "01010012345", saksnummer = saksnummer, - referanse = referanse, + referanse = referanse.toString(), behandlingType = Behandlingstype.Førstegangsbehandling, status = Behandlingstatus.OPPRETTET, opprettetTidspunkt = LocalDateTime.now(), avklaringsbehov = listOf( AvklaringsbehovDto( definisjon = Definisjon( - type = Avklaringsbehovtype.AVKLAR_SYKDOM.kode + type = avklaringsbehovtype.kode ), status = Avklaringsbehovstatus.OPPRETTET, endringer = listOf( @@ -93,8 +99,8 @@ class ApiTest { ) } - private fun opprettOppgave(saksnummer: String, referanse: String): OppgaveId? { - val request = opprettBehandlingshistorikk(saksnummer, referanse) + private fun opprettOppgave(saksnummer: String, referanse: UUID): OppgaveId? { + val request = opprettBehandlingshistorikk(saksnummer, referanse, Avklaringsbehovtype.AVKLAR_SYKDOM) val oppgaveId:OppgaveId? = client.post( URI.create("http://localhost:8080/opprett-oppgave"), PostRequest(body = request) @@ -110,14 +116,14 @@ class ApiTest { return nesteOppgave } - private fun avsluttOppgave(saksnummer: String, behandlingRef: UUID, avklaringsbehovKode: String): List { + private fun avsluttOppgave(saksnummer: String, referanse: UUID, avklaringsbehovtype: Avklaringsbehovtype): List { val oppgaveIder: List? = client.post( URI.create("http://localhost:8080/avslutt-oppgave"), PostRequest(body = AvsluttOppgaveDto( saksnummer = saksnummer, - behandlingRef = behandlingRef, + referanse = referanse, journalpostId = null, - avklaringsbehovKode = AvklaringsbehovKode(avklaringsbehovKode)) + avklaringsbehovtype = avklaringsbehovtype) ) ) return oppgaveIder!!