diff --git a/spesialist-modell/src/main/kotlin/no/nav/helse/modell/oppgave/Oppgave.kt b/spesialist-modell/src/main/kotlin/no/nav/helse/modell/oppgave/Oppgave.kt index 993ad4935..432418bba 100644 --- a/spesialist-modell/src/main/kotlin/no/nav/helse/modell/oppgave/Oppgave.kt +++ b/spesialist-modell/src/main/kotlin/no/nav/helse/modell/oppgave/Oppgave.kt @@ -34,7 +34,7 @@ class Oppgave private constructor( private var ferdigstiltAvIdent: String? = null private var ferdigstiltAvOid: UUID? = null - private val egenskaper = mutableListOf() + private val egenskaper = mutableSetOf() private var tildeltTil: Saksbehandler? = null private var påVent: Boolean = false @@ -63,7 +63,7 @@ class Oppgave private constructor( } fun accept(visitor: OppgaveVisitor) { - visitor.visitOppgave(id, egenskap, tilstand, vedtaksperiodeId, utbetalingId, hendelseId, ferdigstiltAvOid, ferdigstiltAvIdent, egenskaper, tildeltTil, påVent, kanAvvises, totrinnsvurdering) + visitor.visitOppgave(id, egenskap, tilstand, vedtaksperiodeId, utbetalingId, hendelseId, ferdigstiltAvOid, ferdigstiltAvIdent, egenskaper.toList(), tildeltTil, påVent, kanAvvises, totrinnsvurdering) totrinnsvurdering?.accept(visitor) } diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/db/OppgaveFraDatabase.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/db/OppgaveFraDatabase.kt index 1becca537..e0a534381 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/db/OppgaveFraDatabase.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/db/OppgaveFraDatabase.kt @@ -24,7 +24,7 @@ data class OppgaveFraDatabaseForVisning( val aktørId: String, val vedtaksperiodeId: UUID, val navn: PersonnavnFraDatabase, - val egenskaper: List, + val egenskaper: Set, val tildelt: SaksbehandlerFraDatabase? = null, val påVent: Boolean = false, val opprettet: LocalDateTime, @@ -41,7 +41,7 @@ data class AntallOppgaverFraDatabase( data class BehandletOppgaveFraDatabaseForVisning( val id: Long, val aktørId: String, - val egenskaper: List, + val egenskaper: Set, val ferdigstiltTidspunkt: LocalDateTime, val ferdigstiltAv: String?, val navn: PersonnavnFraDatabase, diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveDao.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveDao.kt index 05a14e9d3..3bf294eb3 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveDao.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveDao.kt @@ -170,7 +170,7 @@ class OppgaveDao(dataSource: DataSource) : HelseDao(dataSource), OppgaveReposito row.stringOrNull("mellomnavn"), row.string("etternavn"), ), - egenskaper = row.array("egenskaper").toList().map { enumValueOf(it) }, + egenskaper = row.array("egenskaper").map { enumValueOf(it) }.toSet(), tildelt = row.uuidOrNull("oid")?.let { SaksbehandlerFraDatabase( epostadresse = row.string("epost"), @@ -188,7 +188,7 @@ class OppgaveDao(dataSource: DataSource) : HelseDao(dataSource), OppgaveReposito } } - internal fun finnEgenskaper(vedtaksperiodeId: UUID, utbetalingId: UUID): List? = asSQL( + internal fun finnEgenskaper(vedtaksperiodeId: UUID, utbetalingId: UUID): Set? = asSQL( """ SELECT o.egenskaper FROM oppgave o INNER JOIN vedtak v ON o.vedtak_ref = v.id @@ -200,7 +200,7 @@ class OppgaveDao(dataSource: DataSource) : HelseDao(dataSource), OppgaveReposito "vedtaksperiodeId" to vedtaksperiodeId, "utbetalingId" to utbetalingId ) - ).single { row -> row.array("egenskaper").toList().map { enumValueOf(it) } } + ).single { row -> row.array("egenskaper").map { enumValueOf(it) }.toSet() } internal fun finnAntallOppgaver(saksbehandlerOid: UUID): AntallOppgaverFraDatabase { return asSQL( @@ -256,7 +256,7 @@ class OppgaveDao(dataSource: DataSource) : HelseDao(dataSource), OppgaveReposito BehandletOppgaveFraDatabaseForVisning( id = row.long("oppgave_id"), aktørId = row.string("aktor_id"), - egenskaper = row.array("egenskaper").toList().map { enumValueOf(it) }, + egenskaper = row.array("egenskaper").map { enumValueOf(it) }.toSet(), ferdigstiltTidspunkt = row.localDateTime("ferdigstilt_tidspunkt"), ferdigstiltAv = row.stringOrNull("ferdigstilt_av"), navn = PersonnavnFraDatabase( diff --git a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveMapper.kt b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveMapper.kt index 031a0188f..0fec6d7d0 100644 --- a/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveMapper.kt +++ b/spesialist-selve/src/main/kotlin/no/nav/helse/mediator/oppgave/OppgaveMapper.kt @@ -51,7 +51,7 @@ internal object OppgaveMapper { ) } - internal fun List.tilEgenskaperForVisning() = tilModellversjoner().map { egenskap -> + internal fun Set.tilEgenskaperForVisning() = tilModellversjoner().map { egenskap -> Oppgaveegenskap(egenskap.tilApiversjon(), egenskap.kategori.tilApiversjon()) } internal fun AntallOppgaverFraDatabase.tilApiversjon(): AntallOppgaver { @@ -76,7 +76,7 @@ internal object OppgaveMapper { ) } - private fun List.tilModellversjoner(): List = this.map { it.tilModellversjon() } + private fun Set.tilModellversjoner(): List = this.map { it.tilModellversjon() } private fun List.periodetype(): Periodetype { val egenskap = single { egenskap -> egenskap.kategori == Egenskap.Kategori.Periodetype } diff --git a/spesialist-selve/src/test/kotlin/no/nav/helse/db/OppgaveDaoTest.kt b/spesialist-selve/src/test/kotlin/no/nav/helse/db/OppgaveDaoTest.kt index e3aaa7fbb..f1aee126d 100644 --- a/spesialist-selve/src/test/kotlin/no/nav/helse/db/OppgaveDaoTest.kt +++ b/spesialist-selve/src/test/kotlin/no/nav/helse/db/OppgaveDaoTest.kt @@ -294,7 +294,7 @@ class OppgaveDaoTest : DatabaseIntegrationTest() { val førsteOppgave = oppgaver.first() assertEquals(OPPGAVE_ID, førsteOppgave.id) assertEquals(aktørId, førsteOppgave.aktørId) - assertEquals(listOf(EGENSKAP), førsteOppgave.egenskaper) + assertEquals(setOf(EGENSKAP), førsteOppgave.egenskaper) assertEquals(FORNAVN, førsteOppgave.navn.fornavn) assertEquals(MELLOMNAVN, førsteOppgave.navn.mellomnavn) assertEquals(ETTERNAVN, førsteOppgave.navn.etternavn) @@ -325,7 +325,7 @@ class OppgaveDaoTest : DatabaseIntegrationTest() { val førsteOppgave = oppgaver.first() assertEquals(OPPGAVE_ID, førsteOppgave.id) assertEquals(aktørId, førsteOppgave.aktørId) - assertEquals(listOf(EGENSKAP), førsteOppgave.egenskaper) + assertEquals(setOf(EGENSKAP), førsteOppgave.egenskaper) assertEquals(SAKSBEHANDLER_NAVN, førsteOppgave.ferdigstiltAv) assertEquals(FORNAVN, førsteOppgave.navn.fornavn) assertEquals(MELLOMNAVN, førsteOppgave.navn.mellomnavn) @@ -955,8 +955,8 @@ class OppgaveDaoTest : DatabaseIntegrationTest() { val egenskaperOppgaveId1 = oppgaveDao.finnEgenskaper(VEDTAKSPERIODE, UTBETALING_ID) val egenskaperOppgaveId2 = oppgaveDao.finnEgenskaper(vedtaksperiodeId2, utbetalingId2) - assertEquals(listOf(SØKNAD), egenskaperOppgaveId1) - assertEquals(listOf(SØKNAD, PÅ_VENT), egenskaperOppgaveId2) + assertEquals(setOf(SØKNAD), egenskaperOppgaveId1) + assertEquals(setOf(SØKNAD, PÅ_VENT), egenskaperOppgaveId2) } diff --git a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/OppgaveMediatorTest.kt b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/OppgaveMediatorTest.kt index c8b547bd1..ec5243ea6 100644 --- a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/OppgaveMediatorTest.kt +++ b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/OppgaveMediatorTest.kt @@ -76,7 +76,7 @@ internal class OppgaveMediatorTest { private const val SAKSBEHANDLERNAVN = "Hen Saksbehandler" private const val OPPGAVETYPE_SØKNAD = "SØKNAD" private val EGENSKAP_SØKNAD = EgenskapForDatabase.SØKNAD - private val EGENSKAPER = listOf(EgenskapForDatabase.SØKNAD, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.FORSTEGANGSBEHANDLING) + private val EGENSKAPER = setOf(EgenskapForDatabase.SØKNAD, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.FORSTEGANGSBEHANDLING) } private val oppgaveDao = mockk(relaxed = true) @@ -351,7 +351,7 @@ internal class OppgaveMediatorTest { val opprettet = LocalDateTime.now() val vedtaksperiodeId = UUID.randomUUID() val opprinneligSøknadsdato = LocalDateTime.now() - val egenskaper = listOf(egenskap, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.FORSTEGANGSBEHANDLING) + val egenskaper = setOf(egenskap, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.FORSTEGANGSBEHANDLING) every { oppgaveDao.finnOppgaverForVisning(any(), any()) } returns listOf( oppgaveFraDatabaseForVisning( oppgaveId = 1L, @@ -377,7 +377,7 @@ internal class OppgaveMediatorTest { val opprettet = LocalDateTime.now() val vedtaksperiodeId = UUID.randomUUID() val opprinneligSøknadsdato = LocalDateTime.now() - val egenskaper = listOf(egenskap, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.SØKNAD) + val egenskaper = setOf(egenskap, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.SØKNAD) every { oppgaveDao.finnOppgaverForVisning(any(), any()) } returns listOf( oppgaveFraDatabaseForVisning( oppgaveId = 1L, @@ -403,7 +403,7 @@ internal class OppgaveMediatorTest { val opprettet = LocalDateTime.now() val vedtaksperiodeId = UUID.randomUUID() val opprinneligSøknadsdato = LocalDateTime.now() - val egenskaper = listOf(egenskap, EgenskapForDatabase.FORSTEGANGSBEHANDLING, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.SØKNAD) + val egenskaper = setOf(egenskap, EgenskapForDatabase.FORSTEGANGSBEHANDLING, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.SØKNAD) every { oppgaveDao.finnOppgaverForVisning(any(), any()) } returns listOf( oppgaveFraDatabaseForVisning( oppgaveId = 1L, @@ -429,7 +429,7 @@ internal class OppgaveMediatorTest { val opprettet = LocalDateTime.now() val vedtaksperiodeId = UUID.randomUUID() val opprinneligSøknadsdato = LocalDateTime.now() - val egenskaper = listOf(egenskap, EgenskapForDatabase.FORSTEGANGSBEHANDLING, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.SØKNAD) + val egenskaper = setOf(egenskap, EgenskapForDatabase.FORSTEGANGSBEHANDLING, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.SØKNAD) every { oppgaveDao.finnOppgaverForVisning(ekskluderEgenskaper = any(), saksbehandlerOid = any()) } returns listOf( oppgaveFraDatabaseForVisning( oppgaveId = 1L, @@ -477,7 +477,7 @@ internal class OppgaveMediatorTest { private fun behandletOppgaveFraDatabaseForVisning( oppgaveId: Long = nextLong(), aktørId: String = nextLong(1000000000000, 2000000000000).toString(), - egenskaper: List = EGENSKAPER, + egenskaper: Set = EGENSKAPER, ferdigstiltAv: String? = "saksbehandler", personnavnFraDatabase: PersonnavnFraDatabase = PersonnavnFraDatabase("navn", "mellomnavn", "etternavn"), ferdigstiltTidspunkt: LocalDateTime = LocalDateTime.now(), @@ -494,7 +494,7 @@ internal class OppgaveMediatorTest { private fun oppgaveFraDatabaseForVisning( oppgaveId: Long = nextLong(), - egenskaper: List = EGENSKAPER, + egenskaper: Set = EGENSKAPER, aktørId: String = nextLong(1000000000000, 2000000000000).toString(), opprettet: LocalDateTime = LocalDateTime.now(), opprinneligSøknadsdato: LocalDateTime = LocalDateTime.now(), diff --git a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/oppgave/OppgaveMapperTest.kt b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/oppgave/OppgaveMapperTest.kt index b21a66539..131d16e37 100644 --- a/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/oppgave/OppgaveMapperTest.kt +++ b/spesialist-selve/src/test/kotlin/no/nav/helse/mediator/oppgave/OppgaveMapperTest.kt @@ -56,7 +56,7 @@ internal class OppgaveMapperTest { aktørId = aktørId, vedtaksperiodeId = vedtaksperiodeId, navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn), - egenskaper = listOf(SØKNAD, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER), + egenskaper = setOf(SØKNAD, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER), tildelt = saksbehandler, påVent = true, opprettet = opprettet, @@ -98,7 +98,7 @@ internal class OppgaveMapperTest { aktørId = aktørId, vedtaksperiodeId = vedtaksperiodeId, navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn), - egenskaper = listOf(egenskapSomMapperTilPeriodetype, DELVIS_REFUSJON, SØKNAD, EN_ARBEIDSGIVER), + egenskaper = setOf(egenskapSomMapperTilPeriodetype, DELVIS_REFUSJON, SØKNAD, EN_ARBEIDSGIVER), tildelt = saksbehandler, påVent = true, opprettet = opprettet, @@ -121,7 +121,7 @@ internal class OppgaveMapperTest { aktørId = aktørId, vedtaksperiodeId = vedtaksperiodeId, navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn), - egenskaper = listOf(egenskapSomMapperTilPeriodetype, DELVIS_REFUSJON, SØKNAD, EN_ARBEIDSGIVER), + egenskaper = setOf(egenskapSomMapperTilPeriodetype, DELVIS_REFUSJON, SØKNAD, EN_ARBEIDSGIVER), tildelt = saksbehandler, påVent = true, opprettet = opprettet, @@ -147,7 +147,7 @@ internal class OppgaveMapperTest { aktørId = aktørId, vedtaksperiodeId = vedtaksperiodeId, navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn), - egenskaper = listOf(egenskapSomMapperTilOppgavetype, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER), + egenskaper = setOf(egenskapSomMapperTilOppgavetype, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER), tildelt = saksbehandler, påVent = true, opprettet = opprettet, @@ -165,7 +165,7 @@ internal class OppgaveMapperTest { @EnumSource(names = ["SØKNAD", "REVURDERING"], mode = EnumSource.Mode.EXCLUDE) fun `map til oppgavetype kaster exception når det mangler en egenskap som er oppgavetype`(egenskapSomIkkeMapperTilOppgavetype: EgenskapForDatabase) { // Må gjøres fordi vi skal ha kun én av disse egenskapene pr. kategori. - val andreEgenskaper = listOfNotNull( + val andreEgenskaper = setOfNotNull( if (egenskapSomIkkeMapperTilOppgavetype in listOf(INFOTRYGDFORLENGELSE, FORLENGELSE, FORSTEGANGSBEHANDLING, OVERGANG_FRA_IT)) null else FORSTEGANGSBEHANDLING, if (egenskapSomIkkeMapperTilOppgavetype in listOf(DELVIS_REFUSJON, UTBETALING_TIL_SYKMELDT, UTBETALING_TIL_ARBEIDSGIVER, INGEN_UTBETALING)) null else DELVIS_REFUSJON, if (egenskapSomIkkeMapperTilOppgavetype in listOf(EN_ARBEIDSGIVER, FLERE_ARBEIDSGIVERE)) null else EN_ARBEIDSGIVER @@ -202,7 +202,7 @@ internal class OppgaveMapperTest { aktørId = aktørId, vedtaksperiodeId = vedtaksperiodeId, navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn), - egenskaper = listOf(egenskapSomMapperTilAntallArbeidsforhold, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, SØKNAD), + egenskaper = setOf(egenskapSomMapperTilAntallArbeidsforhold, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, SØKNAD), tildelt = saksbehandler, påVent = true, opprettet = opprettet, @@ -220,7 +220,7 @@ internal class OppgaveMapperTest { @EnumSource(names = ["EN_ARBEIDSGIVER", "FLERE_ARBEIDSGIVERE"], mode = EnumSource.Mode.EXCLUDE) fun `map til antallArbeidsforhold kaster exception når det mangler en egenskap som er antallArbeidsforhold`(egenskapSomIkkeMapperTilAntallArbeidsforhold: EgenskapForDatabase) { // Må gjøres fordi vi skal ha kun én av disse egenskapene pr. kategori. - val andreEgenskaper = listOfNotNull( + val andreEgenskaper = setOfNotNull( if (egenskapSomIkkeMapperTilAntallArbeidsforhold in listOf(INFOTRYGDFORLENGELSE, FORLENGELSE, FORSTEGANGSBEHANDLING, OVERGANG_FRA_IT)) null else FORSTEGANGSBEHANDLING, if (egenskapSomIkkeMapperTilAntallArbeidsforhold in listOf(DELVIS_REFUSJON, UTBETALING_TIL_SYKMELDT, UTBETALING_TIL_ARBEIDSGIVER, INGEN_UTBETALING)) null else DELVIS_REFUSJON, if (egenskapSomIkkeMapperTilAntallArbeidsforhold in listOf(SØKNAD, REVURDERING)) null else SØKNAD @@ -246,7 +246,7 @@ internal class OppgaveMapperTest { @Test fun `map EgenskapForDatabase til OppgaveEgenskap (api)`() { - val egenskaperForDatabase = listOf(SØKNAD, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER) + val egenskaperForDatabase = setOf(SØKNAD, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER) val oppgaveEgenskaper = egenskaperForDatabase.tilEgenskaperForVisning() assertEquals(