Skip to content

Commit

Permalink
Slette saksbehandler i v3-modellen (#2700)
Browse files Browse the repository at this point in the history
  • Loading branch information
mbolstad authored Oct 29, 2024
1 parent b5aa137 commit 5995942
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 36 deletions.
3 changes: 2 additions & 1 deletion src/main/kotlin/no/nav/k9/los/KoinProfiles.kt
Original file line number Diff line number Diff line change
Expand Up @@ -339,12 +339,13 @@ fun common(app: Application, config: Configuration) = module {

single {
AvdelingslederTjeneste(
transactionalManager = get(),
oppgaveKøRepository = get(),
oppgaveKøV3Repository = get(),
saksbehandlerRepository = get(),
oppgaveTjeneste = get(),
pepClient = get(),
reservasjonV3Tjeneste = get(),
reservasjonV3DtoBuilder = get(),
)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package no.nav.k9.los.domene.repository

import com.fasterxml.jackson.module.kotlin.readValue
import kotlinx.coroutines.runBlocking
import kotliquery.*
import no.nav.k9.los.domene.modell.Saksbehandler
import no.nav.k9.los.integrasjon.abac.IPepClient
import no.nav.k9.los.utils.LosObjectMapper
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import java.util.*
import java.util.concurrent.atomic.LongAdder
import javax.sql.DataSource

class SaksbehandlerRepository(
Expand Down Expand Up @@ -265,10 +263,26 @@ class SaksbehandlerRepository(
return saksbehandler
}

suspend fun finnSaksbehandlerMedEpost(
tx: TransactionalSession,
epost: String
): Saksbehandler? {
val skjermet = pepClient.harTilgangTilKode6()

return tx.run(
queryOf(
"select * from saksbehandler where lower(epost) = lower(:epost) and skjermet = :skjermet",
mapOf("epost" to epost, "skjermet" to skjermet)
).map { row ->
mapSaksbehandler(row)
}.asSingle
)
}

fun finnSaksbehandlerIdForIdent(ident: String): Long? {
return using(sessionOf(dataSource)) { session ->
session.transaction {
finnSaksbehandlerIdForIdent(ident, it)
session.transaction { tx->
finnSaksbehandlerIdForIdent(ident, tx)
}
}
}
Expand Down Expand Up @@ -320,21 +334,15 @@ class SaksbehandlerRepository(
return saksbehandler
}

suspend fun slettSaksbehandler(epost: String) {

val skjermet = pepClient.harTilgangTilKode6()
using(sessionOf(dataSource)) {
it.transaction { tx ->
tx.run(
queryOf(
"""
fun slettSaksbehandler(tx: TransactionalSession, epost: String, skjermet: Boolean) {
tx.run(
queryOf(
"""
delete from saksbehandler
where lower(epost) = lower(:epost) and skjermet = :skjermet""",
mapOf("epost" to epost.lowercase(Locale.getDefault()), "skjermet" to skjermet)
).asUpdate
)
}
}
mapOf("epost" to epost.lowercase(Locale.getDefault()), "skjermet" to skjermet)
).asUpdate
)
}

suspend fun hentAlleSaksbehandlere(): List<Saksbehandler> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ import no.nav.k9.los.utils.LosObjectMapper
import java.time.LocalDateTime
import javax.sql.DataSource

class OppgaveKoRepository(val datasource: DataSource) {
class OppgaveKoRepository(
private val datasource: DataSource
) {

companion object {
val objectMapper = LosObjectMapper.instance
Expand Down Expand Up @@ -151,7 +153,7 @@ class OppgaveKoRepository(val datasource: DataSource) {

fun hentKoerMedOppgittSaksbehandler(
tx: TransactionalSession,
saksbehandler_epost: String,
saksbehandlerEpost: String,
skjermet: Boolean = false
): List<OppgaveKo> {
return tx.run(
Expand All @@ -167,7 +169,7 @@ class OppgaveKoRepository(val datasource: DataSource) {
and s.saksbehandler_epost = lower(:saksbehandler_epost)
)""",
mapOf(
"saksbehandler_epost" to saksbehandler_epost,
"saksbehandler_epost" to saksbehandlerEpost,
"skjermet" to skjermet
)
).map { row ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ internal fun Route.AvdelingslederApis() {

get("/saksbehandlere") {
requestContextService.withRequestContext(call) {
println("/saksbehandlere")
call.respond(avdelingslederTjeneste.hentSaksbehandlere())
}
}
Expand All @@ -52,7 +53,7 @@ internal fun Route.AvdelingslederApis() {
post("/saksbehandlere/slett") {
requestContextService.withRequestContext(call) {
val epost = call.receive<EpostDto>()
call.respond(avdelingslederTjeneste.fjernSaksbehandler(epost.epost))
call.respond(avdelingslederTjeneste.slettSaksbehandler(epost.epost))
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,30 @@
package no.nav.k9.los.tjenester.avdelingsleder

import no.nav.k9.los.domene.lager.oppgave.v2.TransactionalManager
import no.nav.k9.los.domene.modell.*
import no.nav.k9.los.domene.repository.OppgaveKøRepository
import no.nav.k9.los.domene.repository.SaksbehandlerRepository
import no.nav.k9.los.integrasjon.abac.IPepClient
import no.nav.k9.los.nyoppgavestyring.ko.db.OppgaveKoRepository
import no.nav.k9.los.nyoppgavestyring.reservasjon.ReservasjonV3Tjeneste
import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveNøkkelDto
import no.nav.k9.los.tjenester.avdelingsleder.oppgaveko.*
import no.nav.k9.los.tjenester.avdelingsleder.reservasjoner.ReservasjonDto
import no.nav.k9.los.tjenester.saksbehandler.oppgave.OppgaveTjeneste
import no.nav.k9.los.tjenester.saksbehandler.oppgave.ReservasjonV3DtoBuilder
import no.nav.k9.los.tjenester.saksbehandler.saksliste.OppgavekøDto
import no.nav.k9.los.tjenester.saksbehandler.saksliste.SaksbehandlerDto
import no.nav.k9.los.tjenester.saksbehandler.saksliste.SorteringDto
import java.time.LocalDate
import java.util.*

class AvdelingslederTjeneste(
private val transactionalManager: TransactionalManager,
private val oppgaveKøRepository: OppgaveKøRepository,
private val oppgaveKøV3Repository: OppgaveKoRepository,
private val saksbehandlerRepository: SaksbehandlerRepository,
private val oppgaveTjeneste: OppgaveTjeneste,
private val pepClient: IPepClient,
private val reservasjonV3Tjeneste: ReservasjonV3Tjeneste,
private val reservasjonV3DtoBuilder: ReservasjonV3DtoBuilder,
) {
suspend fun hentOppgaveKø(uuid: UUID): OppgavekøDto {
sjekkTilgang()
Expand Down Expand Up @@ -103,10 +105,28 @@ class AvdelingslederTjeneste(
return saksbehandler
}

suspend fun fjernSaksbehandler(epost: String) {
suspend fun slettSaksbehandler(
epost: String,
) {
sjekkTilgang()

saksbehandlerRepository.slettSaksbehandler(epost)
val skjermet = pepClient.harTilgangTilKode6()

transactionalManager.transaction { tx ->
// V3-modellen: Sletter køer saksbehandler er med i
oppgaveKøV3Repository.hentKoerMedOppgittSaksbehandler(tx, epost, skjermet).forEach { kø ->
oppgaveKøV3Repository.endre(tx, kø.copy(saksbehandlere = kø.saksbehandlere - epost))
}

// Sletter fra saksbehandler-tabellen
saksbehandlerRepository.slettSaksbehandler(
tx,
epost,
skjermet
)
}

// V1-modellen: Sletter køer saksbehandler er med i. (Lager sin egen transaksjon.)
oppgaveKøRepository.hent().forEach { t: OppgaveKø ->
oppgaveKøRepository.lagre(t.id) { oppgaveKø ->
oppgaveKø!!.saksbehandlere =
Expand Down Expand Up @@ -274,7 +294,8 @@ class AvdelingslederTjeneste(
private fun leggTilEllerEndreKriterium(kriteriumDto: KriteriumDto, oppgaveKø: OppgaveKø) {
when (kriteriumDto.kriterierType) {
KøKriterierType.FEILUTBETALING ->
oppgaveKø.filtreringFeilutbetaling = Intervall(kriteriumDto.fom?.toLong(), kriteriumDto.tom?.toLong())
oppgaveKø.filtreringFeilutbetaling =
Intervall(kriteriumDto.fom?.toLong(), kriteriumDto.tom?.toLong())

KøKriterierType.MERKNADTYPE -> oppgaveKø.merknadKoder = kriteriumDto.koder ?: emptyList()
KøKriterierType.OPPGAVEKODE -> oppgaveKø.oppgaveKoder = kriteriumDto.koder ?: emptyList()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package no.nav.k9.los.tjenester.avdelingsleder.nokkeltall

import io.ktor.http.*
import io.ktor.server.application.call
import io.ktor.server.locations.Location
import io.ktor.server.locations.get
import io.ktor.server.application.*
import io.ktor.server.locations.*
import io.ktor.server.response.*
import io.ktor.server.routing.Route
import io.ktor.server.routing.*
import no.nav.k9.los.integrasjon.rest.RequestContextService
import no.nav.k9.los.tjenester.saksbehandler.oppgave.OppgaveTjeneste
import org.koin.ktor.ext.inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package no.nav.k9.los.tjenester.saksbehandler.saksliste

class SaksbehandlerDto(
data class SaksbehandlerDto(
val brukerIdent: String?,
val navn: String?,
var epost: String,
var enhet: String?,
val epost: String,
val enhet: String?,
val oppgavekoer: List<String>
)
3 changes: 2 additions & 1 deletion src/test/kotlin/no/nav/k9/los/KoinModules.kt
Original file line number Diff line number Diff line change
Expand Up @@ -348,12 +348,13 @@ fun buildAndTestConfig(dataSource: DataSource, pepClient: IPepClient = PepClient

single {
AvdelingslederTjeneste(
transactionalManager = get(),
oppgaveKøRepository = get(),
oppgaveKøV3Repository = get(),
saksbehandlerRepository = get(),
oppgaveTjeneste = get(),
pepClient = get(),
reservasjonV3Tjeneste = get(),
reservasjonV3DtoBuilder = get(),
)
}

Expand Down

0 comments on commit 5995942

Please sign in to comment.