diff --git a/src/main/kotlin/no/nav/familie/klage/kabal/KabalKafkaListener.kt b/src/main/kotlin/no/nav/familie/klage/kabal/KabalKafkaListener.kt index 439fefdb..35d53aa8 100644 --- a/src/main/kotlin/no/nav/familie/klage/kabal/KabalKafkaListener.kt +++ b/src/main/kotlin/no/nav/familie/klage/kabal/KabalKafkaListener.kt @@ -99,14 +99,10 @@ data class BehandlingDetaljer( val ankeITrygderettenbehandlingOpprettet: AnkeITrygderettenbehandlingOpprettetDetaljer? = null, ) { - fun journalpostReferanser(): List { - return klagebehandlingAvsluttet?.journalpostReferanser ?: ankebehandlingAvsluttet?.journalpostReferanser ?: listOf() - } - - fun oppgaveTekst(): String { - return klagebehandlingAvsluttet?.oppgaveTekst() - ?: ankebehandlingOpprettet?.oppgaveTekst() - ?: ankebehandlingAvsluttet?.oppgaveTekst() + fun oppgaveTekst(saksbehandlersEnhet: String): String { + return klagebehandlingAvsluttet?.oppgaveTekst(saksbehandlersEnhet) + ?: ankebehandlingOpprettet?.oppgaveTekst(saksbehandlersEnhet) + ?: ankebehandlingAvsluttet?.oppgaveTekst(saksbehandlersEnhet) ?: "Ukjent" } } @@ -117,9 +113,10 @@ data class KlagebehandlingAvsluttetDetaljer( val journalpostReferanser: List, ) { - fun oppgaveTekst(): String { + fun oppgaveTekst(saksbehandlersEnhet: String): String { return "Hendelse fra klage av type klagebehandling avsluttet med utfall: $utfall mottatt. " + "Avsluttet tidspunkt: $avsluttet. " + + "Opprinnelig klagebehandling er behandlet av enhet: $saksbehandlersEnhet. " + "Journalpost referanser: ${journalpostReferanser.joinToString(", ")}" } } @@ -128,8 +125,9 @@ data class AnkebehandlingOpprettetDetaljer( val mottattKlageinstans: LocalDateTime, ) { - fun oppgaveTekst(): String { - return "Hendelse fra klage av type ankebehandling opprettet mottatt. Mottatt klageinstans: $mottattKlageinstans." + fun oppgaveTekst(saksbehandlersEnhet: String): String { + return "Hendelse fra klage av type ankebehandling opprettet mottatt. Mottatt klageinstans: $mottattKlageinstans. " + + "Opprinnelig klagebehandling er behandlet av enhet: $saksbehandlersEnhet." } } @@ -139,9 +137,10 @@ data class AnkebehandlingAvsluttetDetaljer( val journalpostReferanser: List, ) { - fun oppgaveTekst(): String { + fun oppgaveTekst(saksbehandlersEnhet: String): String { return "Hendelse fra klage av type ankebehandling avsluttet med utfall: $utfall mottatt. " + "Avsluttet tidspunkt: $avsluttet. " + + "Opprinnelig klagebehandling er behandlet av enhet: $saksbehandlersEnhet. " + "Journalpost referanser: ${journalpostReferanser.joinToString(", ")}" } } diff --git a/src/main/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventService.kt b/src/main/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventService.kt index cf6ccc11..b75fb0dd 100644 --- a/src/main/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventService.kt +++ b/src/main/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventService.kt @@ -6,6 +6,7 @@ import no.nav.familie.klage.behandling.domain.Behandling import no.nav.familie.klage.behandling.domain.StegType import no.nav.familie.klage.fagsak.FagsakRepository import no.nav.familie.klage.infrastruktur.config.DatabaseConfiguration.StringListWrapper +import no.nav.familie.klage.integrasjoner.FamilieIntegrasjonerClient import no.nav.familie.klage.kabal.BehandlingEvent import no.nav.familie.klage.kabal.BehandlingFeilregistrertTask import no.nav.familie.klage.kabal.KlageresultatRepository @@ -27,6 +28,7 @@ class BehandlingEventService( private val taskService: TaskService, private val klageresultatRepository: KlageresultatRepository, private val stegService: StegService, + private val integrasjonerClient: FamilieIntegrasjonerClient, ) { private val logger = LoggerFactory.getLogger(javaClass) @@ -88,23 +90,25 @@ class BehandlingEventService( } private fun behandleAnkeAvsluttet(behandling: Behandling, behandlingEvent: BehandlingEvent) { - opprettOppgaveTask(behandlingEvent, behandling) + opprettOppgaveTask(behandling, behandlingEvent) } private fun behandleKlageAvsluttet(behandling: Behandling, behandlingEvent: BehandlingEvent) { when (behandling.status) { BehandlingStatus.FERDIGSTILT -> logger.error("Mottatt event på ferdigstilt behandling $behandlingEvent - event kan være lest fra før") else -> { - opprettOppgaveTask(behandlingEvent, behandling) + opprettOppgaveTask(behandling, behandlingEvent) ferdigstillKlagebehandling(behandling) } } } - private fun opprettOppgaveTask(behandlingEvent: BehandlingEvent, behandling: Behandling) { + private fun opprettOppgaveTask(behandling: Behandling, behandlingEvent: BehandlingEvent) { val fagsakDomain = fagsakRepository.finnFagsakForBehandlingId(behandling.id) ?: error("Finner ikke fagsak for behandlingId: ${behandling.id}") - val oppgaveTekst = "${behandlingEvent.detaljer.oppgaveTekst()} Gjelder: ${fagsakDomain.stønadstype}" + val saksbehandlerIdent = behandling.sporbar.endret.endretAv + val saksbehandler = integrasjonerClient.hentSaksbehandlerInfo(saksbehandlerIdent) + val oppgaveTekst = "${behandlingEvent.detaljer.oppgaveTekst(saksbehandler.enhet)} Gjelder: ${fagsakDomain.stønadstype}" val klageBehandlingEksternId = UUID.fromString(behandlingEvent.kildeReferanse) val opprettOppgavePayload = OpprettOppgavePayload(klageBehandlingEksternId, oppgaveTekst, fagsakDomain.fagsystem, behandlingEvent.utfall()) val opprettOppgaveTask = OpprettKabalEventOppgaveTask.opprettTask(opprettOppgavePayload) diff --git a/src/test/kotlin/no/nav/familie/klage/infrastruktur/config/FamilieIntegrasjonerMock.kt b/src/test/kotlin/no/nav/familie/klage/infrastruktur/config/FamilieIntegrasjonerMock.kt index 84d89baf..d509c1f2 100644 --- a/src/test/kotlin/no/nav/familie/klage/infrastruktur/config/FamilieIntegrasjonerMock.kt +++ b/src/test/kotlin/no/nav/familie/klage/infrastruktur/config/FamilieIntegrasjonerMock.kt @@ -36,10 +36,12 @@ import no.nav.familie.kontrakter.felles.navkontor.NavKontorEnhet import no.nav.familie.kontrakter.felles.objectMapper import no.nav.familie.kontrakter.felles.oppgave.OppgaveResponse import no.nav.familie.kontrakter.felles.personopplysning.ADRESSEBESKYTTELSEGRADERING +import no.nav.familie.kontrakter.felles.saksbehandler.Saksbehandler import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Profile import org.springframework.stereotype.Component import java.time.LocalDateTime +import java.util.UUID import kotlin.math.absoluteValue import kotlin.random.Random @@ -50,6 +52,8 @@ class FamilieIntegrasjonerMock(integrasjonerConfig: IntegrasjonerConfig) { listOf( get(urlEqualTo(integrasjonerConfig.pingUri.path)) .willReturn(aResponse().withStatus(200)), + get(urlPathMatching("${integrasjonerConfig.saksbehandlerUri.path}/([A-Za-z0-9]*)")) + .willReturn(okJson(objectMapper.writeValueAsString(saksbehandler))), post(urlEqualTo(integrasjonerConfig.egenAnsattUri.path)) .willReturn(okJson(objectMapper.writeValueAsString(egenAnsatt))), post(urlEqualTo(integrasjonerConfig.tilgangRelasjonerUri.path)) @@ -278,5 +282,14 @@ class FamilieIntegrasjonerMock(integrasjonerConfig: IntegrasjonerConfig) { status = "Aktiv", ), ) + private val saksbehandler = Ressurs.success( + Saksbehandler( + azureId = UUID.randomUUID(), + navIdent = "Z999999", + fornavn = "Darth", + etternavn = "Vader", + enhet = "4405", + ), + ) } } diff --git a/src/test/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventServiceTest.kt b/src/test/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventServiceTest.kt index cec9ee7c..61fd2f7b 100644 --- a/src/test/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventServiceTest.kt +++ b/src/test/kotlin/no/nav/familie/klage/kabal/event/BehandlingEventServiceTest.kt @@ -8,6 +8,7 @@ import no.nav.familie.klage.behandling.BehandlingRepository import no.nav.familie.klage.behandling.StegService import no.nav.familie.klage.behandling.domain.StegType import no.nav.familie.klage.fagsak.FagsakRepository +import no.nav.familie.klage.integrasjoner.FamilieIntegrasjonerClient import no.nav.familie.klage.kabal.AnkeITrygderettenbehandlingOpprettetDetaljer import no.nav.familie.klage.kabal.AnkebehandlingOpprettetDetaljer import no.nav.familie.klage.kabal.BehandlingDetaljer @@ -22,6 +23,7 @@ import no.nav.familie.klage.testutil.DomainUtil import no.nav.familie.kontrakter.felles.klage.BehandlingEventType import no.nav.familie.kontrakter.felles.klage.BehandlingStatus import no.nav.familie.kontrakter.felles.klage.KlageinstansUtfall +import no.nav.familie.kontrakter.felles.saksbehandler.Saksbehandler import no.nav.familie.prosessering.domene.Task import no.nav.familie.prosessering.internal.TaskService import org.assertj.core.api.Assertions.assertThat @@ -37,6 +39,7 @@ internal class BehandlingEventServiceTest { private val taskService = mockk(relaxed = true) private val stegService = mockk(relaxed = true) private val klageresultatRepository = mockk(relaxed = true) + private val integrasjonerClient = mockk(relaxed = true) val behandlingEventService = BehandlingEventService( behandlingRepository = behandlingRepository, @@ -44,6 +47,7 @@ internal class BehandlingEventServiceTest { stegService = stegService, taskService = taskService, klageresultatRepository = klageresultatRepository, + integrasjonerClient = integrasjonerClient, ) val behandlingMedStatusVenter = DomainUtil.behandling(status = BehandlingStatus.VENTER) @@ -54,10 +58,11 @@ internal class BehandlingEventServiceTest { every { behandlingRepository.findByEksternBehandlingId(any()) } returns behandlingMedStatusVenter every { klageresultatRepository.insert(any()) } answers { firstArg() } every { klageresultatRepository.existsById(any()) } returns false + every { integrasjonerClient.hentSaksbehandlerInfo(any()) } returns saksbehandler } @Test - fun `Skal lage oppgave og ferdigstille behandling for klage som er ikke er ferdigstilt`() { + fun `Skal lage oppgave og ferdigstille behandling for klage som ikke er ferdigstilt`() { val behandlingEvent = lagBehandlingEvent() behandlingEventService.handleEvent(behandlingEvent) @@ -181,4 +186,6 @@ internal class BehandlingEventServiceTest { ), ) } + + private val saksbehandler = Saksbehandler(UUID.randomUUID(), "A123456", "Alfa", "Omega", "4415") }