diff --git a/src/main/kotlin/no/nav/k9/los/domene/modell/Kodeverk.kt b/src/main/kotlin/no/nav/k9/los/domene/modell/Kodeverk.kt index 8242c1947..c35fdf2f1 100644 --- a/src/main/kotlin/no/nav/k9/los/domene/modell/Kodeverk.kt +++ b/src/main/kotlin/no/nav/k9/los/domene/modell/Kodeverk.kt @@ -332,7 +332,7 @@ enum class KøSortering( @JsonFormat(shape = JsonFormat.Shape.OBJECT) -enum class Fagsystem(val kode: String, val kodeverk: String, val navn: String) { +enum class Fagsystem(override val kode: String, override val kodeverk: String, override val navn: String): Kodeverdi { K9SAK("K9SAK", "FAGSYSTEM", "K9-sak"), K9TILBAKE("K9TILBAKE", "FAGSYSTEM", "K9-tilbake"), FPTILBAKE("FPTILBAKE", "FAGSYSTEM", "FP-tilbake"), diff --git "a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/Omr\303\245deSetup.kt" "b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/Omr\303\245deSetup.kt" index 57cccce8f..b4e7d7211 100644 --- "a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/Omr\303\245deSetup.kt" +++ "b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/domeneadaptere/k9/Omr\303\245deSetup.kt" @@ -5,6 +5,8 @@ import no.nav.k9.kodeverk.behandling.BehandlingResultatType import no.nav.k9.kodeverk.behandling.BehandlingStegType import no.nav.k9.kodeverk.behandling.aksjonspunkt.AksjonspunktDefinisjon import no.nav.k9.kodeverk.behandling.aksjonspunkt.Venteårsak +import no.nav.k9.los.domene.lager.oppgave.Kodeverdi +import no.nav.k9.kodeverk.api.Kodeverdi as KodeverdiK9Sak import no.nav.k9.los.domene.modell.BehandlingStatus import no.nav.k9.los.domene.modell.BehandlingType import no.nav.k9.los.domene.modell.FagsakYtelseType @@ -71,7 +73,7 @@ class OmrådeSetup( } private fun aksjonspunktVerdierK9Sak() = - AksjonspunktDefinisjon.values().filterNot { it == AksjonspunktDefinisjon.UNDEFINED }.map { apDefinisjon -> + AksjonspunktDefinisjon.entries.filterNot { it == AksjonspunktDefinisjon.UNDEFINED }.map { apDefinisjon -> KodeverkVerdiDto( verdi = apDefinisjon.kode, visningsnavn = apDefinisjon.navn, @@ -80,7 +82,7 @@ class OmrådeSetup( } private fun aksjonspunktVerdierK9Klage() = - no.nav.k9.klage.kodeverk.behandling.aksjonspunkt.AksjonspunktDefinisjon.values() + no.nav.k9.klage.kodeverk.behandling.aksjonspunkt.AksjonspunktDefinisjon.entries .filterNot { it == no.nav.k9.klage.kodeverk.behandling.aksjonspunkt.AksjonspunktDefinisjon.UNDEFINED } .map { apDefinisjon -> KodeverkVerdiDto( @@ -96,13 +98,7 @@ class OmrådeSetup( eksternId = "Fagsystem", beskrivelse = null, uttømmende = true, - verdier = Fagsystem.values().map { fagsystem -> - KodeverkVerdiDto( - verdi = fagsystem.kode, - visningsnavn = fagsystem.navn, - beskrivelse = null - ) - } + verdier = Fagsystem.entries.lagDto(beskrivelse = null) ) feltdefinisjonTjeneste.oppdater(kodeverkDto) } @@ -113,13 +109,7 @@ class OmrådeSetup( eksternId = "Resultattype", beskrivelse = null, uttømmende = true, - verdier = BehandlingResultatType.values().map { resultattype -> - KodeverkVerdiDto( - verdi = resultattype.kode, - visningsnavn = resultattype.navn, - beskrivelse = null - ) - } + verdier = BehandlingResultatType.entries.lagK9Dto(beskrivelse = null) ) feltdefinisjonTjeneste.oppdater(kodeverkDto) } @@ -130,13 +120,7 @@ class OmrådeSetup( eksternId = "Ytelsetype", beskrivelse = null, uttømmende = true, - verdier = FagsakYtelseType.values().map { ytelsetype -> - KodeverkVerdiDto( - verdi = ytelsetype.kode, - visningsnavn = ytelsetype.navn, - beskrivelse = null - ) - } + verdier = FagsakYtelseType.entries.lagDto(null, KodeverkSynlighetRegler::ytelseType) ) feltdefinisjonTjeneste.oppdater(kodeverkDto) } @@ -147,13 +131,7 @@ class OmrådeSetup( eksternId = "Behandlingsstatus", beskrivelse = null, uttømmende = true, - verdier = BehandlingStatus.values().map { behandlingstatus -> - KodeverkVerdiDto( - verdi = behandlingstatus.kode, - visningsnavn = behandlingstatus.navn, - beskrivelse = null - ) - } + verdier = BehandlingStatus.entries.lagDto(beskrivelse = null) ) feltdefinisjonTjeneste.oppdater(kodeverkDto) } @@ -164,13 +142,7 @@ class OmrådeSetup( eksternId = "Behandlingtype", beskrivelse = null, uttømmende = true, - verdier = BehandlingType.values().map { behandlingtype -> - KodeverkVerdiDto( - verdi = behandlingtype.kode, - visningsnavn = behandlingtype.navn, - beskrivelse = null - ) - } + verdier = BehandlingType.entries.lagDto(beskrivelse = null, KodeverkSynlighetRegler::behandlingType) ) feltdefinisjonTjeneste.oppdater(kodeverkDto) } @@ -181,13 +153,7 @@ class OmrådeSetup( eksternId = "Venteårsak", beskrivelse = null, uttømmende = true, - verdier = Venteårsak.values().map { venteårsak -> - KodeverkVerdiDto( - verdi = venteårsak.kode, - visningsnavn = venteårsak.navn, - beskrivelse = null - ) - } + verdier = Venteårsak.entries.lagK9Dto(beskrivelse = null) ) feltdefinisjonTjeneste.oppdater(kodeverkDto) } @@ -198,14 +164,72 @@ class OmrådeSetup( eksternId = "Behandlingssteg", beskrivelse = null, uttømmende = false, - verdier = BehandlingStegType.values().map { verdi -> - KodeverkVerdiDto( - verdi = verdi.kode, - visningsnavn = verdi.navn, - beskrivelse = null - ) - } + verdier = BehandlingStegType.entries.lagK9Dto(beskrivelse = null) ) feltdefinisjonTjeneste.oppdater(kodeverkDto) } + + fun Collection.lagDto( + beskrivelse: String?, + synlighet: (T) -> KodeverkSynlighet = { KodeverkSynlighet.SYNLIG_FAVORITT } + ): List { + return associateWith { synlighet(it) } + .filter { (_, synlighet) -> synlighet != KodeverkSynlighet.SKJULT } + .map { (kodeverdi, synlighet) -> KodeverkVerdiDto( + verdi = kodeverdi.kode, + visningsnavn = kodeverdi.navn, + beskrivelse = beskrivelse, + favoritt = synlighet == KodeverkSynlighet.SYNLIG_FAVORITT + )}.sortedBy { it.visningsnavn } + } + + fun Collection.lagK9Dto( + beskrivelse: String?, + synlighet: (T) -> KodeverkSynlighet = { KodeverkSynlighet.SYNLIG_FAVORITT } + ): List { + return associateWith { synlighet(it) } + .filter { (_, synlighet) -> synlighet != KodeverkSynlighet.SKJULT } + .map { (kodeverdi, synlighet) -> KodeverkVerdiDto( + verdi = kodeverdi.kode, + visningsnavn = kodeverdi.navn, + beskrivelse = beskrivelse, + favoritt = synlighet == KodeverkSynlighet.SYNLIG_FAVORITT + )}.sortedBy { it.visningsnavn } + } +} + +object KodeverkSynlighetRegler { + fun behandlingType(behandlingType: BehandlingType): KodeverkSynlighet { + return when (behandlingType) { + BehandlingType.ANKE -> KodeverkSynlighet.SKJULT + BehandlingType.UNNTAKSBEHANDLING, + BehandlingType.PAPIRSØKNAD, + BehandlingType.PAPIRETTERSENDELSE, + BehandlingType.PAPIRINNTEKTSOPPLYSNINGER, + BehandlingType.DIGITAL_ETTERSENDELSE, + BehandlingType.INNLOGGET_CHAT, + BehandlingType.SKRIV_TIL_OSS_SPØRMSÅL, + BehandlingType.SKRIV_TIL_OSS_SVAR, + BehandlingType.SAMTALEREFERAT, + BehandlingType.KOPI, + BehandlingType.UTEN_FNR_DNR, + BehandlingType.UKJENT -> KodeverkSynlighet.SYNLIG + else -> KodeverkSynlighet.SYNLIG_FAVORITT + } + } + + fun ytelseType(ytelseType: FagsakYtelseType): KodeverkSynlighet { + return when(ytelseType) { + FagsakYtelseType.FRISINN -> KodeverkSynlighet.SKJULT + FagsakYtelseType.OLP, + FagsakYtelseType.UKJENT -> KodeverkSynlighet.SYNLIG + else -> KodeverkSynlighet.SYNLIG_FAVORITT + } + } +} + +enum class KodeverkSynlighet { + SKJULT, + SYNLIG, + SYNLIG_FAVORITT; } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/FeltdefinisjonRepository.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/FeltdefinisjonRepository.kt index 5d3d02206..216923cd7 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/FeltdefinisjonRepository.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/FeltdefinisjonRepository.kt @@ -87,7 +87,7 @@ class FeltdefinisjonRepository(val områdeRepository: OmrådeRepository) { "tolkesSom" to feltdefinisjon.tolkesSom, "visTilBruker" to feltdefinisjon.visTilBruker, "kokriterie" to feltdefinisjon.kokriterie, - "kodeverkreferanse" to feltdefinisjon.kodeverkreferanse?.let { it.toDatabasestreng() }, + "kodeverkreferanse" to feltdefinisjon.kodeverkreferanse?.toDatabasestreng(), "transientFeltutleder" to feltdefinisjon.transientFeltutleder?.let { TransientFeltutleder.hentId(it) } ) ).asUpdate @@ -130,7 +130,7 @@ class FeltdefinisjonRepository(val områdeRepository: OmrådeRepository) { "tolkesSom" to feltdefinisjon.tolkesSom, "visTilBruker" to feltdefinisjon.visTilBruker, "kokriterie" to feltdefinisjon.kokriterie, - "kodeverkreferanse" to feltdefinisjon.kodeverkreferanse?.let { it.toDatabasestreng() }, + "kodeverkreferanse" to feltdefinisjon.kodeverkreferanse?.toDatabasestreng(), "transientFeltutleder" to feltdefinisjon.transientFeltutleder?.let { TransientFeltutleder.hentId(it) } ) ).asUpdate @@ -176,16 +176,17 @@ class FeltdefinisjonRepository(val områdeRepository: OmrådeRepository) { ) ) tx.batchPreparedNamedStatement(""" - insert into kodeverk_verdi(kodeverk_id, verdi, visningsnavn, beskrivelse) - VALUES (:kodeverkId, :verdi, :visningsnavn, :beskrivelse) - on conflict(kodeverk_id, verdi) do update set visningsnavn = :visningsnavn, beskrivelse = :beskrivelse + insert into kodeverk_verdi(kodeverk_id, verdi, visningsnavn, beskrivelse, favoritt) + VALUES (:kodeverkId, :verdi, :visningsnavn, :beskrivelse, :favoritt) + on conflict(kodeverk_id, verdi) do update set visningsnavn = :visningsnavn, beskrivelse = :beskrivelse, favoritt = :favoritt """.trimIndent(), kodeverk.verdier.map { verdi -> mapOf( "kodeverkId" to kodeverkId, "verdi" to verdi.verdi, "visningsnavn" to verdi.visningsnavn, - "beskrivelse" to verdi.beskrivelse + "beskrivelse" to verdi.beskrivelse, + "favoritt" to verdi.favoritt ) } ) @@ -245,7 +246,8 @@ class FeltdefinisjonRepository(val områdeRepository: OmrådeRepository) { id = kodeverkverdiRow.long("id"), verdi = kodeverkverdiRow.string("verdi"), visningsnavn = kodeverkverdiRow.string("visningsnavn"), - beskrivelse = kodeverkverdiRow.stringOrNull("beskrivelse") + beskrivelse = kodeverkverdiRow.stringOrNull("beskrivelse"), + favoritt = kodeverkverdiRow.boolean("favoritt") ) }.asList ) diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/KodeverkVerdiDto.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/KodeverkVerdiDto.kt index b3664f8aa..9145a3667 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/KodeverkVerdiDto.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/KodeverkVerdiDto.kt @@ -3,5 +3,6 @@ package no.nav.k9.los.nyoppgavestyring.mottak.feltdefinisjon data class KodeverkVerdiDto( val verdi: String, val visningsnavn: String, + val favoritt: Boolean = false, val beskrivelse: String? = null, ) diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/Kodeverkverdi.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/Kodeverkverdi.kt index ee11ae917..e10269336 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/Kodeverkverdi.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/Kodeverkverdi.kt @@ -5,11 +5,13 @@ class Kodeverkverdi( val verdi: String, val visningsnavn: String, val beskrivelse: String?, + val favoritt: Boolean ) { constructor(kodeverkVerdiDto: KodeverkVerdiDto) :this ( verdi = kodeverkVerdiDto.verdi, visningsnavn = kodeverkVerdiDto.visningsnavn, beskrivelse = kodeverkVerdiDto.beskrivelse, + favoritt = kodeverkVerdiDto.favoritt ) override fun equals(other: Any?): Boolean { diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/query/db/OppgaveQueryRepository.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/query/db/OppgaveQueryRepository.kt index fed3231e7..53282f8c0 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/query/db/OppgaveQueryRepository.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/query/db/OppgaveQueryRepository.kt @@ -60,11 +60,11 @@ class OppgaveQueryRepository( tolkes_som = row.string("tolkes_som"), kokriterie = row.boolean("kokriterie"), verdiforklaringerErUttømmende = kodeverk?.uttømmende ?: false, - verdiforklaringer = kodeverk?.let { kodeverk -> - kodeverk.verdier.map { kodeverkverdi -> - Verdiforklaring( - verdi = kodeverkverdi.verdi, - visningsnavn = kodeverkverdi.visningsnavn + verdiforklaringer = kodeverk?.run { verdier.map { kodeverkverdi -> + Verdiforklaring( + verdi = kodeverkverdi.verdi, + visningsnavn = kodeverkverdi.visningsnavn, + sekundærvalg = !kodeverkverdi.favoritt ) } } @@ -72,7 +72,7 @@ class OppgaveQueryRepository( row.stringOrNull("transient_feltutleder")?.let { GyldigeTransientFeltutleder.hentFeltutleder(it) } ) }.asList - ) ?: throw IllegalStateException("Feil ved kjøring av hentAlleFelter") + ) val standardfelter = listOf( Oppgavefelt( @@ -82,10 +82,11 @@ class OppgaveQueryRepository( "String", kokriterie = true, verdiforklaringerErUttømmende = true, - Oppgavestatus.values().map { oppgavestatus -> + verdiforklaringer = Oppgavestatus.entries.map { oppgavestatus -> Verdiforklaring( verdi = oppgavestatus.kode, - visningsnavn = oppgavestatus.visningsnavn + visningsnavn = oppgavestatus.visningsnavn, + sekundærvalg = false ) }), Oppgavefelt(null, "kildeområde", "Kildeområde", "String", false,false, emptyList()), diff --git a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/query/dto/felter/Verdiforklaring.kt b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/query/dto/felter/Verdiforklaring.kt index 016be13c2..73c83b4cf 100644 --- a/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/query/dto/felter/Verdiforklaring.kt +++ b/src/main/kotlin/no/nav/k9/los/nyoppgavestyring/query/dto/felter/Verdiforklaring.kt @@ -2,6 +2,7 @@ package no.nav.k9.los.nyoppgavestyring.query.dto.felter class Verdiforklaring( val verdi: String, - val visningsnavn: String + val visningsnavn: String, + val sekundærvalg: Boolean ) { } \ No newline at end of file diff --git a/src/main/resources/migreringer/V1.0_0043__favoritt_kodeverdi.sql b/src/main/resources/migreringer/V1.0_0043__favoritt_kodeverdi.sql new file mode 100644 index 000000000..55fec3b7c --- /dev/null +++ b/src/main/resources/migreringer/V1.0_0043__favoritt_kodeverdi.sql @@ -0,0 +1 @@ +ALTER TABLE kodeverk_verdi ADD COLUMN favoritt BOOLEAN default true; \ No newline at end of file diff --git a/src/main/resources/migreringer/V1.0_0043__transient_feltutleder.sql b/src/main/resources/migreringer/V1.0_0044__transient_feltutleder.sql similarity index 100% rename from src/main/resources/migreringer/V1.0_0043__transient_feltutleder.sql rename to src/main/resources/migreringer/V1.0_0044__transient_feltutleder.sql diff --git a/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/KodeverkTest.kt b/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/KodeverkTest.kt index c263de984..fd13a7190 100644 --- a/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/KodeverkTest.kt +++ b/src/test/kotlin/no/nav/k9/los/nyoppgavestyring/mottak/feltdefinisjon/KodeverkTest.kt @@ -96,13 +96,15 @@ class KodeverkTest : AbstractK9LosIntegrationTest() { id = null, verdi = "verdi1", visningsnavn = "navn1", - beskrivelse = "beskrivelse1" + beskrivelse = "beskrivelse1", + favoritt = false ), Kodeverkverdi( id = null, verdi = "verdi2", visningsnavn = "navn2", - beskrivelse = "beskrivelse2" + beskrivelse = "beskrivelse2", + favoritt = false ) ) )