Skip to content

Commit

Permalink
Ta V3reservasjon for spesifisert V1-oppgave (#1859)
Browse files Browse the repository at this point in the history
* Ta V3reservasjon for spesifisert V1-oppgave

* Refactor identisk kode til konstruktør
  • Loading branch information
boerta authored Jan 18, 2024
1 parent 764465c commit 81ac5f8
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 29 deletions.
2 changes: 2 additions & 0 deletions src/main/kotlin/no/nav/k9/los/KoinProfiles.kt
Original file line number Diff line number Diff line change
Expand Up @@ -543,12 +543,14 @@ fun common(app: Application, config: Configuration) = module {
single {
OppgaveApisTjeneste(
oppgaveTjeneste = get(),
oppgaveV1Repository = get(),
saksbehandlerRepository = get(),
reservasjonV3Tjeneste = get(),
oppgaveV3Repository = get(),
oppgaveV3RepositoryMedTxWrapper = get(),
transactionalManager = get(),
reservasjonV3DtoBuilder = get(),
reservasjonOversetter = get(),
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package no.nav.k9.los.tjenester.saksbehandler.oppgave
import no.nav.k9.los.domene.lager.oppgave.v2.TransactionalManager
import no.nav.k9.los.domene.modell.Saksbehandler
import no.nav.k9.los.domene.repository.SaksbehandlerRepository
import no.nav.k9.los.nyoppgavestyring.domeneadaptere.k9.reservasjonkonvertering.ReservasjonOversetter
import no.nav.k9.los.nyoppgavestyring.reservasjon.ReservasjonV3
import no.nav.k9.los.nyoppgavestyring.reservasjon.ReservasjonV3Dto
import no.nav.k9.los.nyoppgavestyring.reservasjon.ReservasjonV3Tjeneste
import no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveRepository
Expand All @@ -12,19 +14,22 @@ import java.util.*

class OppgaveApisTjeneste(
private val oppgaveTjeneste: OppgaveTjeneste,
private val oppgaveV1Repository: no.nav.k9.los.domene.repository.OppgaveRepository,
private val saksbehandlerRepository: SaksbehandlerRepository,
private val reservasjonV3Tjeneste: ReservasjonV3Tjeneste,
private val oppgaveV3Repository: OppgaveRepository,
private val oppgaveV3RepositoryMedTxWrapper: no.nav.k9.los.nyoppgavestyring.visningoguttrekk.OppgaveRepositoryTxWrapper,
private val transactionalManager: TransactionalManager,
private val reservasjonV3DtoBuilder: ReservasjonV3DtoBuilder
private val reservasjonV3DtoBuilder: ReservasjonV3DtoBuilder,
private val reservasjonOversetter: ReservasjonOversetter,
) {

suspend fun reserverOppgave(
innloggetBruker: Saksbehandler,
oppgaveIdMedOverstyringDto: OppgaveIdMedOverstyringDto
): OppgaveStatusDto {
val reserverFra = LocalDateTime.now()
val oppgaveNøkkel = oppgaveIdMedOverstyringDto.oppgaveNøkkel
/*
1. Reserver i V1-modellen
2. Reserver i V3-modellen
Expand All @@ -36,7 +41,7 @@ class OppgaveApisTjeneste(
val oppgaveStatusDto = oppgaveTjeneste.reserverOppgave(
innloggetBruker.brukerIdent!!,
oppgaveIdMedOverstyringDto.overstyrIdent,
UUID.fromString(oppgaveIdMedOverstyringDto.oppgaveNøkkel.oppgaveEksternId),
UUID.fromString(oppgaveNøkkel.oppgaveEksternId),
oppgaveIdMedOverstyringDto.overstyrSjekk,
oppgaveIdMedOverstyringDto.overstyrBegrunnelse
)
Expand All @@ -45,35 +50,40 @@ class OppgaveApisTjeneste(
oppgaveIdMedOverstyringDto.overstyrIdent ?: innloggetBruker.brukerIdent!!
)!!

val reservasjonV3 = transactionalManager.transaction { tx ->
val oppgaveV3 = oppgaveV3Repository.hentNyesteOppgaveForEksternId(
tx,
oppgaveIdMedOverstyringDto.oppgaveNøkkel.områdeEksternId,
oppgaveIdMedOverstyringDto.oppgaveNøkkel.oppgaveEksternId
)

reservasjonV3Tjeneste.forsøkReservasjonOgReturnerAktiv(
reservasjonsnøkkel = oppgaveV3.reservasjonsnøkkel,
reserverForId = reserverForSaksbehandler.id!!,
gyldigFra = reserverFra,
utføresAvId = innloggetBruker.id!!,
if (oppgaveNøkkel.erV1Oppgave()) {
val reservasjonV3 = reservasjonOversetter.taNyReservasjonFraGammelKontekst(
oppgaveV1 = oppgaveV1Repository.hent(UUID.fromString(oppgaveNøkkel.oppgaveEksternId)),
reserverForSaksbehandlerId = reserverForSaksbehandler.id!!,
reservertTil = reserverFra.plusHours(24).forskyvReservasjonsDato(),
utførtAvSaksbehandlerId = innloggetBruker.id!!,
kommentar = oppgaveIdMedOverstyringDto.overstyrBegrunnelse ?: "",
gyldigTil = reserverFra.plusHours(24).forskyvReservasjonsDato(),
tx = tx
)
val saksbehandlerSomHarReservasjon =
saksbehandlerRepository.finnSaksbehandlerMedId(reservasjonV3.reservertAv)
return OppgaveStatusDto(reservasjonV3, innloggetBruker, saksbehandlerSomHarReservasjon)
} else {
val reservasjonV3 = transactionalManager.transaction { tx ->
val oppgaveV3 = oppgaveV3Repository.hentNyesteOppgaveForEksternId(
tx,
oppgaveNøkkel.områdeEksternId,
oppgaveNøkkel.oppgaveEksternId
)

reservasjonV3Tjeneste.forsøkReservasjonOgReturnerAktiv(
reservasjonsnøkkel = oppgaveV3.reservasjonsnøkkel,
reserverForId = reserverForSaksbehandler.id!!,
gyldigFra = reserverFra,
utføresAvId = innloggetBruker.id!!,
kommentar = oppgaveIdMedOverstyringDto.overstyrBegrunnelse ?: "",
gyldigTil = reserverFra.plusHours(24).forskyvReservasjonsDato(),
tx = tx
)
}

val saksbehandlerSomHarReservasjon =
saksbehandlerRepository.finnSaksbehandlerMedId(reservasjonV3.reservertAv)
return OppgaveStatusDto(reservasjonV3, innloggetBruker, saksbehandlerSomHarReservasjon)
}

val saksbehandlerSomHarReservasjon =
saksbehandlerRepository.finnSaksbehandlerMedId(reservasjonV3.reservertAv)
return OppgaveStatusDto(
erReservert = true,
reservertTilTidspunkt = reservasjonV3.gyldigTil,
erReservertAvInnloggetBruker = reservasjonV3.reservertAv == innloggetBruker.id!!,
reservertAv = saksbehandlerSomHarReservasjon.brukerIdent,
reservertAvNavn = saksbehandlerSomHarReservasjon.navn,
flyttetReservasjon = null,
kanOverstyres = reservasjonV3.reservertAv != innloggetBruker.id!!
)
}

suspend fun endreReservasjon(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package no.nav.k9.los.tjenester.saksbehandler.oppgave

import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonFormat
import no.nav.k9.los.domene.modell.Saksbehandler
import no.nav.k9.los.nyoppgavestyring.reservasjon.ReservasjonV3
import java.time.LocalDateTime

//ingen auditlogg på denne, siden den ikke inneholder personidentifiserende informasjon, bortsett fra saksbehandlers ident
Expand All @@ -14,7 +16,19 @@ class OppgaveStatusDto(
val flyttetReservasjon: FlyttetReservasjonDto?,
val kanOverstyres: Boolean? = false,
val beskjed: Beskjed? = null
)
) {
constructor(reservasjonV3: ReservasjonV3, innloggetBruker: Saksbehandler, saksbehandlerSomHarReservasjon: Saksbehandler) : this (
erReservert = true,
reservertTilTidspunkt = reservasjonV3.gyldigTil,
erReservertAvInnloggetBruker = reservasjonV3.reservertAv == innloggetBruker.id!!,
reservertAv = saksbehandlerSomHarReservasjon.brukerIdent,
reservertAvNavn = saksbehandlerSomHarReservasjon.navn,
flyttetReservasjon = null,
kanOverstyres = reservasjonV3.reservertAv != innloggetBruker.id!!
)
}



@JsonFormat(shape = JsonFormat.Shape.OBJECT)
enum class Beskjed(val kode: String) {
Expand Down
2 changes: 2 additions & 0 deletions src/test/kotlin/no/nav/k9/los/KoinModules.kt
Original file line number Diff line number Diff line change
Expand Up @@ -458,12 +458,14 @@ fun buildAndTestConfig(dataSource: DataSource, pepClient: IPepClient = PepClient
single {
OppgaveApisTjeneste(
oppgaveTjeneste = get(),
oppgaveV1Repository = get(),
saksbehandlerRepository = get(),
reservasjonV3Tjeneste = get(),
oppgaveV3Repository = get(),
oppgaveV3RepositoryMedTxWrapper = get(),
transactionalManager = get(),
reservasjonV3DtoBuilder = get(),
reservasjonOversetter = get(),
)
}

Expand Down

0 comments on commit 81ac5f8

Please sign in to comment.