Skip to content

Commit

Permalink
Oppretter manuell Journalføring-oppgave dersom bruker er null på jour…
Browse files Browse the repository at this point in the history
…nalpost (#1173)

* Dersom bruker er null oppretter vi manuell Journalføring-oppgave med en gang og returnerer

* Ktlint

* Opprettet AbstractJournalhendelseRutingTask for å håndtere felles logikk for BA og KS

* Justeringer etter tilbakemelding
  • Loading branch information
bragejahren authored Sep 20, 2024
1 parent 3df19d5 commit 4951787
Show file tree
Hide file tree
Showing 5 changed files with 166 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package no.nav.familie.baks.mottak.task

import no.nav.familie.prosessering.AsyncTaskStep
import no.nav.familie.prosessering.domene.Task
import no.nav.familie.prosessering.internal.TaskService

abstract class AbstractJournalhendelseRutingTask(
private val taskService: TaskService,
) : AsyncTaskStep {
fun opprettJournalføringOppgaveTask(
sakssystemMarkering: String,
task: Task,
) {
Task(
type = OpprettJournalføringOppgaveTask.TASK_STEP_TYPE,
payload = sakssystemMarkering,
properties = task.metadata,
).apply { taskService.save(this) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import no.nav.familie.baks.mottak.journalføring.JournalpostBrukerService
import no.nav.familie.kontrakter.ba.infotrygd.InfotrygdSøkResponse
import no.nav.familie.kontrakter.felles.Tema
import no.nav.familie.kontrakter.felles.personopplysning.FORELDERBARNRELASJONROLLE
import no.nav.familie.prosessering.AsyncTaskStep
import no.nav.familie.prosessering.TaskStepBeskrivelse
import no.nav.familie.prosessering.domene.Task
import no.nav.familie.prosessering.internal.TaskService
Expand All @@ -49,7 +48,7 @@ class JournalhendelseBarnetrygdRutingTask(
private val unleashNextMedContextService: UnleashNextMedContextService,
private val automatiskJournalføringBarnetrygdService: AutomatiskJournalføringBarnetrygdService,
private val journalpostBrukerService: JournalpostBrukerService,
) : AsyncTaskStep {
) : AbstractJournalhendelseRutingTask(taskService) {
private val tema = Tema.BAR
private val sakssystemMarkeringCounter = mutableMapOf<String, Counter>()

Expand All @@ -58,7 +57,16 @@ class JournalhendelseBarnetrygdRutingTask(
override fun doTask(task: Task) {
val journalpost = journalpostClient.hentJournalpost(task.metadata["journalpostId"] as String)
val brukersIdent = task.metadata["personIdent"] as String?
val personIdent by lazy { journalpostBrukerService.tilPersonIdent(journalpost.bruker!!, tema) }

if (journalpost.bruker == null) {
opprettJournalføringOppgaveTask(
sakssystemMarkering = "Ingen bruker er satt på journalpost. Kan ikke utlede om bruker har sak i Infotrygd eller BA-sak.",
task = task,
)
return
}

val personIdent = journalpostBrukerService.tilPersonIdent(journalpost.bruker, tema)
val fagsakId = baSakClient.hentFagsaknummerPåPersonident(personIdent)

val (baSak, infotrygdSak) = brukersIdent?.run { søkEtterSakIBaSakOgInfotrygd(this) } ?: Pair(null, null)
Expand Down Expand Up @@ -87,11 +95,7 @@ class JournalhendelseBarnetrygdRutingTask(
},
).apply { taskService.save(this) }
} else {
Task(
type = OpprettJournalføringOppgaveTask.TASK_STEP_TYPE,
payload = sakssystemMarkering,
properties = task.metadata,
).apply { taskService.save(this) }
opprettJournalføringOppgaveTask(sakssystemMarkering = sakssystemMarkering, task = task)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import no.nav.familie.baks.mottak.journalføring.AutomatiskJournalføringKontant
import no.nav.familie.baks.mottak.journalføring.JournalpostBrukerService
import no.nav.familie.kontrakter.felles.Tema
import no.nav.familie.kontrakter.felles.personopplysning.FORELDERBARNRELASJONROLLE
import no.nav.familie.prosessering.AsyncTaskStep
import no.nav.familie.prosessering.TaskStepBeskrivelse
import no.nav.familie.prosessering.domene.Task
import no.nav.familie.prosessering.internal.TaskService
Expand All @@ -34,15 +33,24 @@ class JournalhendelseKontantstøtteRutingTask(
private val journalpostClient: JournalpostClient,
private val automatiskJournalføringKontantstøtteService: AutomatiskJournalføringKontantstøtteService,
private val journalpostBrukerService: JournalpostBrukerService,
) : AsyncTaskStep {
) : AbstractJournalhendelseRutingTask(taskService) {
private val tema = Tema.KON
private val sakssystemMarkeringCounter = mutableMapOf<String, Counter>()

private val log: Logger = LoggerFactory.getLogger(JournalhendelseKontantstøtteRutingTask::class.java)

override fun doTask(task: Task) {
val journalpost = journalpostClient.hentJournalpost(task.metadata["journalpostId"] as String)
val brukersIdent = journalpostBrukerService.tilPersonIdent(journalpost.bruker!!, tema)

if (journalpost.bruker == null) {
opprettJournalføringOppgaveTask(
sakssystemMarkering = "Ingen bruker er satt på journalpost. Kan ikke utlede om bruker har sak i Infotrygd eller KS-sak.",
task = task,
)
return
}

val brukersIdent = journalpostBrukerService.tilPersonIdent(journalpost.bruker, tema)
val fagsakId = ksSakClient.hentFagsaknummerPåPersonident(brukersIdent)

val harLøpendeSakIInfotrygd = harLøpendeSakIInfotrygd(brukersIdent)
Expand All @@ -69,11 +77,7 @@ class JournalhendelseKontantstøtteRutingTask(
},
).apply { taskService.save(this) }
} else {
Task(
type = OpprettJournalføringOppgaveTask.TASK_STEP_TYPE,
payload = sakssystemMarkering,
properties = task.metadata,
).apply { taskService.save(this) }
opprettJournalføringOppgaveTask(sakssystemMarkering = sakssystemMarkering, task = task)
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package no.nav.familie.baks.mottak.task

import io.mockk.every
import io.mockk.mockk
import io.mockk.slot
import io.mockk.verify
import no.nav.familie.baks.mottak.config.featureToggle.UnleashNextMedContextService
import no.nav.familie.baks.mottak.integrasjoner.BaSakClient
import no.nav.familie.baks.mottak.integrasjoner.InfotrygdBarnetrygdClient
import no.nav.familie.baks.mottak.integrasjoner.Journalpost
import no.nav.familie.baks.mottak.integrasjoner.JournalpostClient
import no.nav.familie.baks.mottak.integrasjoner.Journalposttype
import no.nav.familie.baks.mottak.integrasjoner.Journalstatus
import no.nav.familie.baks.mottak.integrasjoner.PdlClient
import no.nav.familie.baks.mottak.journalføring.AutomatiskJournalføringBarnetrygdService
import no.nav.familie.baks.mottak.journalføring.JournalpostBrukerService
import no.nav.familie.kontrakter.felles.Tema
import no.nav.familie.prosessering.domene.Task
import no.nav.familie.prosessering.internal.TaskService
import org.junit.jupiter.api.Test
import java.util.Properties
import kotlin.test.assertEquals

class JournalhendelseBarnetrygdRutingTaskTest {
private val pdlClient: PdlClient = mockk()
private val baSakClient: BaSakClient = mockk()
private val infotrygdBarnetrygdClient: InfotrygdBarnetrygdClient = mockk()
private val taskService: TaskService = mockk()
private val journalpostClient: JournalpostClient = mockk()
private val unleashNextMedContextService: UnleashNextMedContextService = mockk()
private val automatiskJournalføringBarnetrygdService: AutomatiskJournalføringBarnetrygdService = mockk()
private val journalpostBrukerService: JournalpostBrukerService = mockk()

private val journalhendelseBarnetrygdRutingTask: JournalhendelseBarnetrygdRutingTask =
JournalhendelseBarnetrygdRutingTask(
pdlClient = pdlClient,
baSakClient = baSakClient,
infotrygdBarnetrygdClient = infotrygdBarnetrygdClient,
taskService = taskService,
journalpostClient = journalpostClient,
unleashNextMedContextService = unleashNextMedContextService,
automatiskJournalføringBarnetrygdService = automatiskJournalføringBarnetrygdService,
journalpostBrukerService = journalpostBrukerService,
)

@Test
fun `doTask - skal opprette journalføring-oppgave dersom bruker er null på journalpost`() {
// Arrange
val journalpostId = "1"
val taskSlot = slot<Task>()

every { journalpostClient.hentJournalpost(journalpostId) } returns
Journalpost(
journalpostId = journalpostId,
journalposttype = Journalposttype.I,
journalstatus = Journalstatus.MOTTATT,
bruker = null,
)

every { taskService.save(capture(taskSlot)) } returns mockk()

// Act
journalhendelseBarnetrygdRutingTask.doTask(
Task(
type = JournalhendelseKontantstøtteRutingTask.TASK_STEP_TYPE,
payload = "SKAN_IM",
properties =
Properties().apply {
this["journalpostId"] = journalpostId
this["fagsakId"] = "123"
this["tema"] = Tema.BAR.name
},
),
)

// Assert
val opprettetTask = taskSlot.captured

verify(exactly = 1) { taskService.save(any()) }
assertEquals(OpprettJournalføringOppgaveTask.TASK_STEP_TYPE, opprettetTask.type)
assertEquals("Ingen bruker er satt på journalpost. Kan ikke utlede om bruker har sak i Infotrygd eller BA-sak.", opprettetTask.payload)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.familie.baks.mottak.task
import io.mockk.every
import io.mockk.mockk
import io.mockk.slot
import io.mockk.verify
import no.nav.familie.baks.mottak.config.featureToggle.FeatureToggleConfig
import no.nav.familie.baks.mottak.config.featureToggle.UnleashNextMedContextService
import no.nav.familie.baks.mottak.domene.personopplysning.Person
Expand Down Expand Up @@ -221,6 +222,44 @@ class JournalhendelseKontantstøtteRutingTaskTest {
assertEquals("", taskSlot.captured.payload)
}

@Test
fun `doTask - skal opprette journalføring-oppgave dersom bruker er null på journalpost`() {
// Arrange
val journalpostId = "1"
val taskSlot = slot<Task>()

every { journalpostClient.hentJournalpost(journalpostId) } returns
Journalpost(
journalpostId = journalpostId,
journalposttype = Journalposttype.I,
journalstatus = Journalstatus.MOTTATT,
bruker = null,
)

every { taskService.save(capture(taskSlot)) } returns mockk()

// Act
journalhendelseKontantstøtteRutingTask.doTask(
Task(
type = JournalhendelseKontantstøtteRutingTask.TASK_STEP_TYPE,
payload = "SKAN_IM",
properties =
Properties().apply {
this["journalpostId"] = journalpostId
this["fagsakId"] = "123"
this["tema"] = Tema.KON.name
},
),
)

// Assert
val opprettetTask = taskSlot.captured

verify(exactly = 1) { taskService.save(any()) }
assertEquals(OpprettJournalføringOppgaveTask.TASK_STEP_TYPE, opprettetTask.type)
assertEquals("Ingen bruker er satt på journalpost. Kan ikke utlede om bruker har sak i Infotrygd eller KS-sak.", opprettetTask.payload)
}

private fun setupPDLMocks() {
every { pdlClient.hentPersonMedRelasjoner(any(), any()) } returns
Person(
Expand Down

0 comments on commit 4951787

Please sign in to comment.