diff --git a/apps/etterlatte-saksbehandling-ui/client/src/components/behandling/trygdetid/Trygdetid.tsx b/apps/etterlatte-saksbehandling-ui/client/src/components/behandling/trygdetid/Trygdetid.tsx index 2519d822cd..60e8e24798 100644 --- a/apps/etterlatte-saksbehandling-ui/client/src/components/behandling/trygdetid/Trygdetid.tsx +++ b/apps/etterlatte-saksbehandling-ui/client/src/components/behandling/trygdetid/Trygdetid.tsx @@ -4,7 +4,8 @@ import { hentTrygdetider, ITrygdetid, opprettTrygdetider, - hentTrygdetidForUfoeretrygdOgAlderspensjon, + hentOgLeggInnTrygdetidsGrunnlagForUfoeretrygdOgAlderspensjon, + sjekkOmAvdoedHarTrygdetidsgrunnlagIPesys, } from '~shared/api/trygdetid' import Spinner from '~shared/Spinner' import { Alert, BodyShort, Box, Button, Heading, Tabs, VStack } from '@navikt/ds-react' @@ -12,7 +13,7 @@ import { TrygdeAvtale } from './avtaler/TrygdeAvtale' import { IBehandlingStatus, IBehandlingsType } from '~shared/types/IDetaljertBehandling' import { IBehandlingReducer, oppdaterBehandlingsstatus } from '~store/reducers/BehandlingReducer' import { useAppDispatch } from '~store/Store' -import { isFailure, isPending } from '~shared/api/apiUtils' +import { isFailure, isPending, mapApiResult } from '~shared/api/apiUtils' import { isFailureHandler } from '~shared/api/IsFailureHandler' import { behandlingErIverksatt } from '~components/behandling/felles/utils' import { VedtakResultat } from '~components/behandling/useVedtaksResultat' @@ -49,7 +50,10 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti const kanHenteTrygdetidFraPesys = useFeaturetoggle(FeatureToggle.trygdetid_fra_pesys) const [hentTrygdetidRequest, fetchTrygdetid] = useApiCall(hentTrygdetider) const [opprettTrygdetidRequest, requestOpprettTrygdetid] = useApiCall(opprettTrygdetider) - const [hentTTPesysStatus, hentPesysTT] = useApiCall(hentTrygdetidForUfoeretrygdOgAlderspensjon) + const [hentTTPesysStatus, hentPesysTT] = useApiCall(hentOgLeggInnTrygdetidsGrunnlagForUfoeretrygdOgAlderspensjon) + const [sjekkOmAvodedHarTTIPesysStatus, sjekkOmAvdoedHarTTIPesysHent] = useApiCall( + sjekkOmAvdoedHarTrygdetidsgrunnlagIPesys + ) const [hentAlleLandRequest, fetchAlleLand] = useApiCall(hentAlleLand) const [trygdetider, setTrygdetider] = useState([]) const [landListe, setLandListe] = useState() @@ -119,6 +123,7 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti fetchAlleLand(null, (landListe: ILand[]) => { setLandListe(sorterLand(landListe)) }) + sjekkOmAvdoedHarTTIPesysHent(behandling.id) }, []) if (harPilotTrygdetid) { @@ -153,13 +158,31 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti {skalViseTrygdeavtale(behandling) && } {kanHenteTrygdetidFraPesys && ( <> - - - - {isFailure(hentTTPesysStatus) && Kunne ikke hente trygdetid fra Pesys} - {isPending(hentTTPesysStatus) && } + {mapApiResult( + sjekkOmAvodedHarTTIPesysStatus, + , + () => ( + Kunne ikke sjekke trygdetidsgrunnag i Pesys + ), + (harTrygdetidsgrunnlagIPesys) => { + return ( + <> + {harTrygdetidsgrunnlagIPesys && ( + <> + + Hent trygdetid fra Pesys for uføretrygd eller alderspensjon for avdød + + + {isFailure(hentTTPesysStatus) && ( + Kunne ikke hente trygdetid fra Pesys + )} + {isPending(hentTTPesysStatus) && } + + )} + + ) + } + )} )} {landListe && ( diff --git a/apps/etterlatte-saksbehandling-ui/client/src/shared/api/trygdetid.ts b/apps/etterlatte-saksbehandling-ui/client/src/shared/api/trygdetid.ts index cccd7928d8..0b8031837d 100644 --- a/apps/etterlatte-saksbehandling-ui/client/src/shared/api/trygdetid.ts +++ b/apps/etterlatte-saksbehandling-ui/client/src/shared/api/trygdetid.ts @@ -7,10 +7,15 @@ export const hentTrygdetider = async (behandlingId: string): Promise> => apiClient.post(`/trygdetid_v2/${behandlingId}`, {}) -export const hentTrygdetidForUfoeretrygdOgAlderspensjon = async ( +export const hentOgLeggInnTrygdetidsGrunnlagForUfoeretrygdOgAlderspensjon = async ( behandlingId: string ): Promise> => apiClient.post(`trygdetid_v2/${behandlingId}/pesys`, {}) +export const sjekkOmAvdoedHarTrygdetidsgrunnlagIPesys = async ( + behandlingId: string +): Promise> => + apiClient.get(`trygdetid_v2/${behandlingId}/pesys/sjekk-pesys-trygdetidsgrunnlag`) + export const overstyrTrygdetid = async (overstyring: ITrygdetidOverstyring): Promise> => apiClient.post(`/trygdetid_v2/${overstyring.behandlingId}/overstyr`, { ...overstyring }) diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRoutes.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRoutes.kt index ba777bb17a..a495e765f2 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRoutes.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidRoutes.kt @@ -84,16 +84,29 @@ fun Route.trygdetid( } } - post("/pesys") { - withBehandlingId(behandlingKlient, skrivetilgang = true) { - logger.info("Oppretter trygdetid(er) fra pesys for behandling $behandlingId") + route("pesys") { + post { + withBehandlingId(behandlingKlient, skrivetilgang = true) { + logger.info("Oppretter trygdetid(er) fra pesys for behandling $behandlingId") - trygdetidService.leggInnTrygdetidsgrunnlagFraPesys(behandlingId, brukerTokenInfo) - call.respond( - trygdetidService - .hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) - .map { it.toDto() }, - ) + trygdetidService.leggInnTrygdetidsgrunnlagFraPesys(behandlingId, brukerTokenInfo) + call.respond( + trygdetidService + .hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) + .map { it.toDto() }, + ) + } + } + get("/sjekk-pesys-trygdetidsgrunnlag") { + withBehandlingId(behandlingKlient, skrivetilgang = true) { + logger.info("Sjekker om avdød for behandling $behandlingId har trygdetidsgrunnlag i Pesys for AP og Uføre") + val harTrygdetidsgrunnlagIPesys = + trygdetidService.harTrygdetidsgrunnlagIPesysForApOgUfoere( + behandlingId, + brukerTokenInfo, + ) + call.respond(harTrygdetidsgrunnlagIPesys) + } } } diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt index c1b6af6ab7..871915809e 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt @@ -66,6 +66,11 @@ interface TrygdetidService { brukerTokenInfo: BrukerTokenInfo, ): List + suspend fun harTrygdetidsgrunnlagIPesysForApOgUfoere( + behandlingId: UUID, + brukerTokenInfo: BrukerTokenInfo, + ): Boolean + suspend fun leggInnTrygdetidsgrunnlagFraPesys( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, @@ -326,6 +331,30 @@ class TrygdetidServiceImpl( logger.info("Opprettet ${it.size} trygdetider for behandling=${behandling.id}") } + override suspend fun harTrygdetidsgrunnlagIPesysForApOgUfoere( + behandlingId: UUID, + brukerTokenInfo: BrukerTokenInfo, + ): Boolean { + val avdoede = grunnlagKlient.hentGrunnlag(behandlingId, brukerTokenInfo).hentAvdoede() + val perioderIPesys = + avdoede + .map { avdoed -> + val fnr = + requireNotNull(avdoed.hentFoedselsnummer()?.verdi?.value) { + "Kunne ikke hente identifikator for avdød til trygdetid i " + + "behandlingen med id=$behandlingId" + } + + Pair(fnr, avdoed) + }.map { avdoedMedFnr -> + val trygdetidForUfoereOgAlderspensjon = pesysKlient.hentTrygdetidsgrunnlag(avdoedMedFnr, brukerTokenInfo) + trygdetidForUfoereOgAlderspensjon + }.map { + mapTrygdetidsgrunnlagFraPesys(it) + } + return perioderIPesys.flatten().isNotEmpty() + } + override suspend fun leggInnTrygdetidsgrunnlagFraPesys( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, @@ -366,7 +395,8 @@ class TrygdetidServiceImpl( val trygdetidForUfoereOgAlderspensjon = pesysKlient.hentTrygdetidsgrunnlag(avdoedMedFnr, brukerTokenInfo) - val opprettetTrygdetidMedPesysTrygdetid = populerTrygdetidFraPesys(hentTrygdetid, trygdetidForUfoereOgAlderspensjon) + val opprettetTrygdetidMedPesysTrygdetid = + populerTrygdetidsGrunnlagFraPesys(hentTrygdetid, trygdetidForUfoereOgAlderspensjon) trygdetidRepository.oppdaterTrygdetid(opprettetTrygdetidMedPesysTrygdetid) val oppdatertTrygdetid = opprettFremtidigTrygdetidForAvdoed(opprettetTrygdetidMedPesysTrygdetid, avdoedMedFnr.second, brukerTokenInfo) @@ -375,21 +405,28 @@ class TrygdetidServiceImpl( } } - private fun populerTrygdetidFraPesys( + private fun populerTrygdetidsGrunnlagFraPesys( trygdetid: Trygdetid, - pesystt: TrygdetidsgrunnlagUfoeretrygdOgAlderspensjon, + pesysTrygdetidsgrunnlag: TrygdetidsgrunnlagUfoeretrygdOgAlderspensjon, ): Trygdetid { + mapTrygdetidsgrunnlagFraPesys(pesysTrygdetidsgrunnlag) + + return trygdetid.copy(trygdetidGrunnlag = mapTrygdetidsgrunnlagFraPesys(pesysTrygdetidsgrunnlag)) + } + + private fun mapTrygdetidsgrunnlagFraPesys( + pesysTrygdetidsgrunnlag: TrygdetidsgrunnlagUfoeretrygdOgAlderspensjon, + ): List { val mappedAlderspensjonTt = - pesystt.trygdetidAlderspensjon?.trygdetidsgrunnlagListe?.trygdetidsgrunnlagListe?.map { + pesysTrygdetidsgrunnlag.trygdetidAlderspensjon?.trygdetidsgrunnlagListe?.trygdetidsgrunnlagListe?.map { mapPesysTrygdetidsgrunnlag(it) } ?: emptyList() val mappedUfoeretrygdTt = - pesystt.trygdetidUfoeretrygdpensjon?.trygdetidsgrunnlagListe?.trygdetidsgrunnlagListe?.map { + pesysTrygdetidsgrunnlag.trygdetidUfoeretrygdpensjon?.trygdetidsgrunnlagListe?.trygdetidsgrunnlagListe?.map { mapPesysTrygdetidsgrunnlag(it) } ?: emptyList() - - return trygdetid.copy(trygdetidGrunnlag = mappedAlderspensjonTt + mappedUfoeretrygdTt) + return mappedAlderspensjonTt + mappedUfoeretrygdTt } private fun mapPesysTrygdetidsgrunnlag(tt: Trygdetidsgrunnlag): TrygdetidGrunnlag {