Skip to content

Commit

Permalink
Merge pull request #1889 from navikt/sjekker-om-eps-har-sak
Browse files Browse the repository at this point in the history
kan sjekke om eps har sak for en gitt brukers sak
  • Loading branch information
RamziAbuQassim authored Aug 26, 2024
2 parents bdeb406 + 3f50bba commit a419177
Show file tree
Hide file tree
Showing 12 changed files with 89 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,22 @@ internal class SakPostgresRepo(
}
}

override fun hentSakInfo(fnr: Fnr): SakInfo? {
return dbMetrics.timeQuery("hentSakInfoForFnr") {
sessionFactory.withSession { session ->
"""
SELECT
id, saksnummer, fnr, type
FROM sak
WHERE fnr = :fnr
""".trimIndent().hent(
mapOf("fnr" to fnr),
session,
) { row -> row.toSakInfo() }
}
}
}

private fun Row.toSakInfo(): SakInfo {
return SakInfo(
sakId = uuid("id"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,21 @@ internal class SakPostgresRepoTest {
}
}

@Test
fun `henter sakinfo for et gitt fnr`() {
withMigratedDb { dataSource ->
val testDataHelper = TestDataHelper(dataSource)
val repo = testDataHelper.sakRepo
val (sak) = testDataHelper.persisterSøknadsbehandlingIverksatt()
val hentetSakInfo = repo.hentSakInfo(sak.fnr)

hentetSakInfo?.fnr shouldBe sak.fnr
hentetSakInfo?.sakId shouldBe sak.id
hentetSakInfo?.saksnummer shouldBe sak.saksnummer
hentetSakInfo?.type shouldBe sak.type
}
}

@Test
fun `Henter alle restanser for alle saker`() {
withMigratedDb { dataSource ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ interface SakRepo {
fun hentSak(hendelseId: HendelseId): Sak?
fun hentSakInfoForIdenter(personidenter: NonEmptyList<String>): SakInfo?
fun hentSakInfo(sakId: UUID): SakInfo?
fun hentSakInfo(fnr: Fnr): SakInfo?
fun opprettSak(sak: NySak)
fun hentÅpneBehandlinger(): List<Behandlingssammendrag>
fun hentFerdigeBehandlinger(): List<Behandlingssammendrag>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ interface SakService {
fun oppdaterFødselsnummer(command: OppdaterFødselsnummerPåSakCommand): Either<KunneIkkeOppdatereFødselsnummer, Sak>

fun hentSakIdSaksnummerOgFnrForAlleSaker(): List<SakInfo>
fun hentEpsSaksIderForBrukersSak(sakId: UUID): List<UUID>
}

data object FantIkkeSak
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,12 @@ class SakServiceImpl(
return sakRepo.hentSakIdSaksnummerOgFnrForAlleSaker()
}

override fun hentEpsSaksIderForBrukersSak(sakId: UUID): List<UUID> {
val sak = sakRepo.hentSak(sakId) ?: throw IllegalArgumentException("Fant ikke sak med id $sakId")
val fnrs = sak.vedtakstidslinje()?.flatMap { it.grunnlagsdata.eps } ?: emptyList()
return fnrs.mapNotNull { sakRepo.hentSakInfo(it)?.sakId }
}

private fun sakTilBegrensetSakInfo(sak: Sak?): BegrensetSakinfo {
if (sak == null) {
return BegrensetSakinfo(false, null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import no.nav.su.se.bakover.common.domain.sak.Behandlingssammendrag
import no.nav.su.se.bakover.common.domain.sak.SakInfo
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.journal.JournalpostId
import no.nav.su.se.bakover.common.person.Fnr
import no.nav.su.se.bakover.common.tid.periode.år
import no.nav.su.se.bakover.domain.Sak
import no.nav.su.se.bakover.domain.brev.command.FritekstDokumentCommand
Expand All @@ -29,7 +30,10 @@ import no.nav.su.se.bakover.test.argThat
import no.nav.su.se.bakover.test.dokumentUtenMetadataInformasjonAnnet
import no.nav.su.se.bakover.test.fixedClock
import no.nav.su.se.bakover.test.fixedTidspunkt
import no.nav.su.se.bakover.test.fullstendigMedEPSUnder67UførFlyktning
import no.nav.su.se.bakover.test.generer
import no.nav.su.se.bakover.test.getOrFail
import no.nav.su.se.bakover.test.iverksattSøknadsbehandling
import no.nav.su.se.bakover.test.nySøknadsbehandlingMedStønadsperiode
import no.nav.su.se.bakover.test.opprettetRevurdering
import no.nav.su.se.bakover.test.revurderingTilAttestering
Expand All @@ -40,6 +44,7 @@ import no.nav.su.se.bakover.test.søknad.nySakMedjournalførtSøknadOgOppgave
import no.nav.su.se.bakover.test.søknadsbehandlingTilAttesteringInnvilget
import no.nav.su.se.bakover.test.søknadsbehandlingUnderkjentInnvilget
import no.nav.su.se.bakover.test.tikkendeFixedClock
import no.nav.su.se.bakover.test.vilkår.formuevilkårMedEps0Innvilget
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import org.mockito.kotlin.any
Expand Down Expand Up @@ -417,7 +422,7 @@ internal class SakServiceImplTest {
SakServiceImpl(sakRepo, fixedClock, mock(), mock(), queryJournalpostClient, mock())
.hentAlleJournalposter(sak.id).shouldBeRight()

verify(sakRepo).hentSakInfo(argThat { it shouldBe sak.id })
verify(sakRepo).hentSakInfo(argThat<UUID> { it shouldBe sak.id })
verify(queryJournalpostClient).hentJournalposterFor(argThat { it shouldBe sak.saksnummer }, eq(50))
}

Expand All @@ -432,6 +437,27 @@ internal class SakServiceImplTest {
SakServiceImpl(sakRepo, fixedClock, mock(), mock(), mock(), mock())
.hentAlleJournalposter(sak.id)
}
verify(sakRepo).hentSakInfo(argThat { it shouldBe sak.id })
verify(sakRepo).hentSakInfo(argThat<UUID> { it shouldBe sak.id })
}

@Test
fun `henter saksIder for eps`() {
val (epsSak) = nySakMedjournalførtSøknadOgOppgave(sakId = UUID.randomUUID(), fnr = Fnr.generer())
val brukersSak = iverksattSøknadsbehandling(
customVilkår = listOf(formuevilkårMedEps0Innvilget(epsFnr = epsSak.fnr)),
customGrunnlag = listOf(fullstendigMedEPSUnder67UførFlyktning(fnr = epsSak.fnr)),
).first
val sakRepo: SakRepo = mock {
on { hentSak(any<UUID>()) } doReturn brukersSak
on { hentSakInfo(any<Fnr>()) } doReturn epsSak.info()
}
SakServiceImpl(
sakRepo,
fixedClock,
mock(),
mock(),
mock(),
mock(),
).hentEpsSaksIderForBrukersSak(brukersSak.id) shouldBe listOf(epsSak.id)
}
}
3 changes: 2 additions & 1 deletion test-common/src/main/kotlin/BosituasjonTestData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,13 @@ fun fullstendigMedEPSUnder67UførFlyktning(
id: UUID = UUID.randomUUID(),
opprettet: Tidspunkt = fixedTidspunkt,
periode: Periode = stønadsperiode2021.periode,
fnr: Fnr = Fnr.generer(),
): Bosituasjon.Fullstendig.EktefellePartnerSamboer.Under67.UførFlyktning =
Bosituasjon.Fullstendig.EktefellePartnerSamboer.Under67.UførFlyktning(
id = id,
opprettet = opprettet,
periode = periode,
fnr = Fnr.generer(),
fnr = fnr,
)

fun fullstendigMedEPSUnder67IkkeUførFlyktning(
Expand Down
3 changes: 2 additions & 1 deletion test-common/src/main/kotlin/vilkår/FormueVilkårTestData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package no.nav.su.se.bakover.test.vilkår

import arrow.core.NonEmptyList
import arrow.core.nonEmptyListOf
import no.nav.su.se.bakover.common.person.Fnr
import no.nav.su.se.bakover.common.tid.Tidspunkt
import no.nav.su.se.bakover.common.tid.periode.Periode
import no.nav.su.se.bakover.common.tid.periode.år
import no.nav.su.se.bakover.test.bosituasjongrunnlagEnslig
import no.nav.su.se.bakover.test.create
import no.nav.su.se.bakover.test.createFromGrunnlag
import no.nav.su.se.bakover.test.empty
import no.nav.su.se.bakover.test.epsFnr
import no.nav.su.se.bakover.test.fixedTidspunkt
import no.nav.su.se.bakover.test.formuegrenserFactoryTestPåDato
import no.nav.su.se.bakover.test.grunnlag.formueGrunnlagMedEps0Innvilget
Expand Down Expand Up @@ -66,6 +66,7 @@ fun formuevilkårUtenEps0Innvilget(
fun formuevilkårMedEps0Innvilget(
opprettet: Tidspunkt = fixedTidspunkt,
periode: Periode = år(2021),
epsFnr: Fnr = no.nav.su.se.bakover.test.epsFnr,
bosituasjon: NonEmptyList<Bosituasjon.Fullstendig.EktefellePartnerSamboer> = nonEmptyListOf(
Bosituasjon.Fullstendig.EktefellePartnerSamboer.Under67.UførFlyktning(
id = UUID.randomUUID(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ class OpprettOppgaverForInstitusjonsoppholdshendelserTest {
)
verify(oppgaveHendelseRepo).hentForSak(argThat { it shouldBe sak.id }, anyOrNull())
verify(institusjonsoppholdHendelseRepo).hentForSak(argThat { it shouldBe sak.id })
verify(sakRepo).hentSakInfo(argThat { it shouldBe sak.id })
verify(sakRepo).hentSakInfo(argThat<UUID> { it shouldBe sak.id })
testMocks.verifyNoMoreInteractions()
}

Expand Down Expand Up @@ -136,7 +136,7 @@ class OpprettOppgaverForInstitusjonsoppholdshendelserTest {
)
verify(oppgaveHendelseRepo).hentForSak(argThat { it shouldBe sak.id }, anyOrNull())
verify(institusjonsoppholdHendelseRepo).hentForSak(argThat { it shouldBe sak.id })
verify(sakRepo).hentSakInfo(argThat { it shouldBe sak.id })
verify(sakRepo).hentSakInfo(argThat<UUID> { it shouldBe sak.id })

verify(oppgaveService).opprettOppgaveMedSystembruker(
argThat {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ data class Grunnlagsdata private constructor(
val fradragsgrunnlag: List<Fradragsgrunnlag>,
val bosituasjon: List<Bosituasjon>,
) {
/**
* Distincte fnr for eps i bosituasjonen.
*/
val eps: List<Fnr> = bosituasjon.mapNotNull { it.eps }.distinct().sortedBy { it.toString() }

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,15 @@ internal fun Route.sakRoutes(
}
}
}

get("$SAK_PATH/{sakId}/epsSak") {
authorize(Brukerrolle.Saksbehandler, Brukerrolle.Attestant) {
call.withSakId {
val sakIder = sakService.hentEpsSaksIderForBrukersSak(it)
call.svar(Resultat.json(OK, serialize(sakIder)))
}
}
}
}

fun KunneIkkeOppretteDokument.tilResultat(): Resultat = when (this) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,10 @@ open class AccessCheckProxy(
}

override fun hentSakIdSaksnummerOgFnrForAlleSaker() = kastKanKunKallesFraAnnenService()
override fun hentEpsSaksIderForBrukersSak(sakId: UUID): List<UUID> {
assertHarTilgangTilSak(sakId)
return services.sak.hentEpsSaksIderForBrukersSak(sakId)
}

override fun opprettSak(sak: NySak) {
assertHarTilgangTilPerson(sak.fnr)
Expand Down

0 comments on commit a419177

Please sign in to comment.