diff --git a/src/main/kotlin/no/nav/familie/ef/sak/oppgave/LoggOppgaveMetadataTask.kt b/src/main/kotlin/no/nav/familie/ef/sak/oppgave/LoggOppgaveMetadataTask.kt new file mode 100644 index 0000000000..828f07286b --- /dev/null +++ b/src/main/kotlin/no/nav/familie/ef/sak/oppgave/LoggOppgaveMetadataTask.kt @@ -0,0 +1,51 @@ +package no.nav.familie.ef.sak.oppgave + +import no.nav.familie.kontrakter.felles.oppgave.Oppgave +import no.nav.familie.prosessering.AsyncTaskStep +import no.nav.familie.prosessering.TaskStepBeskrivelse +import no.nav.familie.prosessering.domene.Task +import org.slf4j.LoggerFactory +import org.springframework.stereotype.Service +import java.util.* + +@Service +@TaskStepBeskrivelse( + taskStepType = LoggOppgaveMetadataTask.TYPE, + maxAntallFeil = 1, + settTilManuellOppfølgning = true, + beskrivelse = "Finn og logg metadata for oppgave knyttet til behandling", +) +class LoggOppgaveMetadataTask( + private val tilordnetRessursService: TilordnetRessursService, +) : AsyncTaskStep { + + private val logger = LoggerFactory.getLogger(javaClass) + private val secureLogger = LoggerFactory.getLogger("secureLogger") + + override fun doTask(task: Task) { + logger.info("Henter oppgave for behandling ${task.payload}") + val oppgave = tilordnetRessursService.hentIkkeFerdigstiltOppgaveForBehandling(UUID.fromString(task.payload)) + + when (oppgave) { + null -> logger.info("Fant ikke oppgave for behandling ${task.payload}") + else -> secureLogger.info("Oppgave hentet for behandling ${task.payload}: ${oppgave.toLogString()}") + } + } + + companion object { + + const val TYPE = "loggOppgaveMetadataTask" + fun opprettTask(behandlingId: UUID): Task { + return Task( + TYPE, + behandlingId.toString(), + Properties(), + ) + } + } +} + +// Uten beskrivelse, bnr, identer, aktørid og metadata +fun Oppgave.toLogString(): String { + return "Oppgave(aktivDato=$aktivDato, behandlesAvApplikasjon=$behandlesAvApplikasjon, behandlingstema=$behandlingstema, behandlingstype=$behandlingstype, endretAv=$endretAv, endretAvEnhetsnr=$endretAvEnhetsnr, endretTidspunkt=$endretTidspunkt, ferdigstiltTidspunkt=$ferdigstiltTidspunkt, fristFerdigstillelse=$fristFerdigstillelse, id=$id, journalpostId=$journalpostId, journalpostkilde=$journalpostkilde, mappeId=$mappeId, oppgavetype=$oppgavetype, opprettetAv=$opprettetAv, opprettetAvEnhetsnr=$opprettetAvEnhetsnr, opprettetTidspunkt=$opprettetTidspunkt, orgnr=$orgnr, prioritet=$prioritet, saksreferanse=$saksreferanse, samhandlernr=$samhandlernr, status=$status, tema=$tema, temagruppe=$temagruppe, tildeltEnhetsnr=$tildeltEnhetsnr, tilordnetRessurs=$tilordnetRessurs, versjon=$versjon)" +} diff --git a/src/main/kotlin/no/nav/familie/ef/sak/oppgave/OppgaveController.kt b/src/main/kotlin/no/nav/familie/ef/sak/oppgave/OppgaveController.kt index 28a3b350ac..cc43eb37b5 100644 --- a/src/main/kotlin/no/nav/familie/ef/sak/oppgave/OppgaveController.kt +++ b/src/main/kotlin/no/nav/familie/ef/sak/oppgave/OppgaveController.kt @@ -125,6 +125,10 @@ class OppgaveController( behandlingId, setOf(Oppgavetype.BehandleSak, Oppgavetype.BehandleUnderkjentVedtak, Oppgavetype.GodkjenneVedtak), ) + when (oppgave) { + null -> logger.warn("Finner ikke oppgave for behandlingId=$behandlingId") + } + return Ressurs.success(tilordnetRessursService.utledAnsvarligSaksbehandlerForOppgave(oppgave)) } diff --git a/src/main/kotlin/no/nav/familie/ef/sak/oppgave/OppgaveforvaltningsController.kt b/src/main/kotlin/no/nav/familie/ef/sak/oppgave/OppgaveforvaltningsController.kt new file mode 100644 index 0000000000..b4bae43623 --- /dev/null +++ b/src/main/kotlin/no/nav/familie/ef/sak/oppgave/OppgaveforvaltningsController.kt @@ -0,0 +1,31 @@ +package no.nav.familie.ef.sak.oppgave + +import no.nav.familie.ef.sak.infrastruktur.exception.feilHvisIkke +import no.nav.familie.ef.sak.infrastruktur.featuretoggle.FeatureToggleService +import no.nav.familie.ef.sak.infrastruktur.featuretoggle.Toggle +import no.nav.familie.ef.sak.infrastruktur.sikkerhet.SikkerhetContext +import no.nav.familie.prosessering.internal.TaskService +import no.nav.security.token.support.core.api.ProtectedWithClaims +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import java.util.UUID + +@RestController +@RequestMapping("/api/oppgave/forvaltning/") +@ProtectedWithClaims(issuer = "azuread") +class OppgaveforvaltningsController( + private val taskService: TaskService, + private val featureToggleService: FeatureToggleService, +) { + @PostMapping("behandling/{behandlingId}") + fun loggOppgavemetadataFor(@PathVariable behandlingId: UUID) { + feilHvisIkke(erUtviklerMedVeilderrolle()) { "Kan kun kjøres av utvikler med veilederrolle" } + val task = LoggOppgaveMetadataTask.opprettTask(behandlingId) + taskService.save(task) + } + + private fun erUtviklerMedVeilderrolle(): Boolean = + SikkerhetContext.erSaksbehandler() && featureToggleService.isEnabled(Toggle.UTVIKLER_MED_VEILEDERRROLLE) +}