diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacade.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacade.kt index 54d19b68d6c..f5ef68e7bd6 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacade.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacade.kt @@ -80,7 +80,7 @@ class BrevdataFacade( val systemkilde = behandling?.kilde ?: Vedtaksloesning.GJENNY // Dette kan være en pesys-sak val spraak = overstyrSpraak ?: grunnlag.mapSpraak() - val forenkletVedtak = vedtakOgRevurderingsaarsak(vedtak, sak, saksbehandlerIdent, attestantIdent) + val forenkletVedtak = vedtakOgRevurderingsaarsak(vedtak, sak, saksbehandlerIdent, attestantIdent, brukerTokenInfo) GenerellBrevData( sak = sak, @@ -94,11 +94,12 @@ class BrevdataFacade( ) } - private fun vedtakOgRevurderingsaarsak( + private suspend fun vedtakOgRevurderingsaarsak( vedtak: VedtakDto?, sak: Sak, saksbehandlerIdent: String, attestantIdent: String?, + bruker: BrukerTokenInfo, ): Pair = when (vedtak?.type) { VedtakType.INNVILGELSE, @@ -118,6 +119,12 @@ class BrevdataFacade( vedtak.vedtakFattet?.tidspunkt?.toNorskLocalDate(), virkningstidspunkt = vedtakInnhold.virkningstidspunkt, revurderingInfo = vedtakInnhold.behandling.revurderingInfo, + klage = + if (vedtakInnhold.behandling.revurderingsaarsak == Revurderingaarsak.OMGJOERING_ETTER_KLAGE) { + behandlingService.hentKlageForBehandling(vedtakInnhold.behandling.id, sak.id, bruker) + } else { + null + }, ), vedtakInnhold.behandling.revurderingsaarsak, ) diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingKlient.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingKlient.kt index 8f2d36813a4..33d48168f22 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingKlient.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingKlient.kt @@ -132,6 +132,17 @@ class BehandlingKlient( errorMessage = { "Kunne ikke hente klage med id=$klageId" }, brukerTokenInfo = brukerTokenInfo, ) + + internal suspend fun hentKlagerForSak( + sakId: Long, + brukerTokenInfo: BrukerTokenInfo, + ): List = + get( + url = "$resourceUrl/api/klage/sak/$sakId", + onSuccess = { deserialize(it.response!!.toString()) }, + errorMessage = { "Kunne ikke hente klager for sak=$sakId" }, + brukerTokenInfo = brukerTokenInfo, + ) } class BehandlingKlientException( diff --git a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingService.kt b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingService.kt index cc481b316dc..e83b5f01868 100644 --- a/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingService.kt +++ b/apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingService.kt @@ -1,6 +1,7 @@ package no.nav.etterlatte.brev.hentinformasjon.behandling import no.nav.etterlatte.brev.behandlingklient.BehandlingKlient +import no.nav.etterlatte.libs.common.behandling.Klage import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import java.util.UUID @@ -41,4 +42,19 @@ class BehandlingService( sakId: Long, brukerTokenInfo: BrukerTokenInfo, ) = behandlingKlient.hentSisteIverksatteBehandling(sakId, brukerTokenInfo) + + suspend fun hentKlageForBehandling( + behandlingId: UUID, + sakId: Long, + bruker: BrukerTokenInfo, + ): Klage? { + val hentKlagerForSak = behandlingKlient.hentKlagerForSak(sakId, bruker) + return hentKlagerForSak.firstOrNull { + it.formkrav + ?.formkrav + ?.vedtaketKlagenGjelder + ?.behandlingId + ?.let { UUID.fromString(it) } == behandlingId + } + } } diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacadeImplTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacadeImplTest.kt index a24083a2056..84a192af48c 100644 --- a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacadeImplTest.kt +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/BrevdataFacadeImplTest.kt @@ -16,7 +16,6 @@ import no.nav.etterlatte.brev.hentinformasjon.beregning.BeregningService import no.nav.etterlatte.brev.hentinformasjon.grunnlag.GrunnlagService import no.nav.etterlatte.brev.hentinformasjon.trygdetid.TrygdetidService import no.nav.etterlatte.brev.hentinformasjon.vedtaksvurdering.VedtaksvurderingService -import no.nav.etterlatte.brev.hentinformasjon.vilkaarsvurdering.VilkaarsvurderingService import no.nav.etterlatte.brev.model.Spraak import no.nav.etterlatte.brev.model.tilbakekreving.tilbakekreving import no.nav.etterlatte.ktor.token.simpleSaksbehandler @@ -61,7 +60,6 @@ internal class BrevdataFacadeImplTest { private val beregningService = mockk() private val behandlingService = mockk() private val trygdetidService = mockk() - private val vilkaarsvurderingService = mockk() private val service = BrevdataFacade( diff --git a/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingServiceTest.kt b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingServiceTest.kt new file mode 100644 index 00000000000..56977318037 --- /dev/null +++ b/apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/hentinformasjon/behandling/BehandlingServiceTest.kt @@ -0,0 +1,80 @@ +package no.nav.etterlatte.brev.hentinformasjon.behandling + +import io.mockk.coEvery +import io.mockk.mockk +import kotlinx.coroutines.runBlocking +import no.nav.etterlatte.brev.behandlingklient.BehandlingKlient +import no.nav.etterlatte.ktor.token.simpleSaksbehandler +import no.nav.etterlatte.libs.common.behandling.Formkrav +import no.nav.etterlatte.libs.common.behandling.FormkravMedBeslutter +import no.nav.etterlatte.libs.common.behandling.JaNei +import no.nav.etterlatte.libs.common.behandling.Klage +import no.nav.etterlatte.libs.common.behandling.KlageStatus +import no.nav.etterlatte.libs.common.behandling.SakType +import no.nav.etterlatte.libs.common.behandling.VedtaketKlagenGjelder +import no.nav.etterlatte.libs.common.grunnlag.Grunnlagsopplysning +import no.nav.etterlatte.libs.common.sak.Sak +import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt +import no.nav.etterlatte.libs.common.vedtak.VedtakType +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test +import java.time.ZonedDateTime +import java.util.UUID + +class BehandlingServiceTest { + @Test + fun `kan hente og deserialisere klager`() { + val behandlingId = UUID.randomUUID() + val klagePaaDenneBehandlinga = klage(behandlingId, 1L) + val klient = + mockk().also { + coEvery { it.hentKlagerForSak(1L, any()) } returns + listOf( + klagePaaDenneBehandlinga, + klage(UUID.randomUUID(), 2L), + ) + } + val service = BehandlingService(klient) + runBlocking { + val klage = service.hentKlageForBehandling(behandlingId, 1L, simpleSaksbehandler()) + assertEquals(klagePaaDenneBehandlinga, klage) + } + } + + private fun klage( + behandlingId: UUID, + sakId: Long, + ): Klage = + Klage( + behandlingId, + Sak("ident", SakType.BARNEPENSJON, sakId, "einheit"), + Tidspunkt.now(), + KlageStatus.OPPRETTET, + kabalResultat = null, + kabalStatus = null, + formkrav = + FormkravMedBeslutter( + Formkrav( + vedtaketKlagenGjelder = + VedtaketKlagenGjelder( + id = UUID.randomUUID().toString(), + behandlingId = behandlingId.toString(), + datoAttestert = ZonedDateTime.now(), + vedtakType = VedtakType.ENDRING, + ), + erKlagerPartISaken = JaNei.JA, + erKlagenSignert = JaNei.JA, + gjelderKlagenNoeKonkretIVedtaket = JaNei.JA, + erKlagenFramsattInnenFrist = JaNei.JA, + erFormkraveneOppfylt = JaNei.JA, + begrunnelse = "klage", + ), + saksbehandler = Grunnlagsopplysning.automatiskSaksbehandler, + ), + innkommendeDokument = null, + resultat = null, + utfall = null, + aarsakTilAvbrytelse = null, + initieltUtfall = null, + ) +}