Skip to content

Commit

Permalink
Sjekk først om person har trygdetidsgrunnlag for å kunne vise knapp
Browse files Browse the repository at this point in the history
  • Loading branch information
sebassonav committed Dec 20, 2024
1 parent f6c3047 commit 171a27b
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@ 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'
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'
Expand Down Expand Up @@ -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<ITrygdetid[]>([])
const [landListe, setLandListe] = useState<ILand[]>()
Expand Down Expand Up @@ -119,6 +123,7 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
fetchAlleLand(null, (landListe: ILand[]) => {
setLandListe(sorterLand(landListe))
})
sjekkOmAvdoedHarTTIPesysHent(behandling.id)
}, [])

if (harPilotTrygdetid) {
Expand Down Expand Up @@ -153,13 +158,31 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
{skalViseTrygdeavtale(behandling) && <TrygdeAvtale redigerbar={redigerbar} />}
{kanHenteTrygdetidFraPesys && (
<>
<Box maxWidth="fit-content">
<Button onClick={hentTrygdetidFraPesys}>
Hent trygdetid fra Pesys for uføretrygd eller alderspensjon for avdød
</Button>
</Box>
{isFailure(hentTTPesysStatus) && <Alert variant="warning">Kunne ikke hente trygdetid fra Pesys</Alert>}
{isPending(hentTTPesysStatus) && <Spinner label="Henter trygdetid i Pesys" />}
{mapApiResult(
sjekkOmAvodedHarTTIPesysStatus,
<Spinner label="Sjekker om avdøed har trygdetidsgrunnlag i Pesys" />,
() => (
<Alert variant="warning">Kunne ikke sjekke trygdetidsgrunnag i Pesys</Alert>
),
(harTrygdetidsgrunnlagIPesys) => {
return (
<>
{harTrygdetidsgrunnlagIPesys && (
<>
<Box maxWidth="fit-content">
<BodyShort>Hent trygdetid fra Pesys for uføretrygd eller alderspensjon for avdød</BodyShort>
<Button onClick={hentTrygdetidFraPesys}>Hent</Button>
</Box>
{isFailure(hentTTPesysStatus) && (
<Alert variant="warning">Kunne ikke hente trygdetid fra Pesys</Alert>
)}
{isPending(hentTTPesysStatus) && <Spinner label="Henter trygdetid i Pesys" />}
</>
)}
</>
)
}
)}
</>
)}
{landListe && (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,15 @@ export const hentTrygdetider = async (behandlingId: string): Promise<ApiResponse
export const opprettTrygdetider = async (behandlingId: string): Promise<ApiResponse<ITrygdetid[]>> =>
apiClient.post(`/trygdetid_v2/${behandlingId}`, {})

export const hentTrygdetidForUfoeretrygdOgAlderspensjon = async (
export const hentOgLeggInnTrygdetidsGrunnlagForUfoeretrygdOgAlderspensjon = async (
behandlingId: string
): Promise<ApiResponse<ITrygdetid[]>> => apiClient.post(`trygdetid_v2/${behandlingId}/pesys`, {})

export const sjekkOmAvdoedHarTrygdetidsgrunnlagIPesys = async (
behandlingId: string
): Promise<ApiResponse<ITrygdetid[]>> =>
apiClient.get(`trygdetid_v2/${behandlingId}/pesys/sjekk-pesys-trygdetidsgrunnlag`)

export const overstyrTrygdetid = async (overstyring: ITrygdetidOverstyring): Promise<ApiResponse<ITrygdetid>> =>
apiClient.post(`/trygdetid_v2/${overstyring.behandlingId}/overstyr`, { ...overstyring })

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ interface TrygdetidService {
brukerTokenInfo: BrukerTokenInfo,
): List<Trygdetid>

suspend fun harTrygdetidsgrunnlagIPesysForApOgUfoere(
behandlingId: UUID,
brukerTokenInfo: BrukerTokenInfo,
): Boolean

suspend fun leggInnTrygdetidsgrunnlagFraPesys(
behandlingId: UUID,
brukerTokenInfo: BrukerTokenInfo,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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)
Expand All @@ -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<TrygdetidGrunnlag> {
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 {
Expand Down

0 comments on commit 171a27b

Please sign in to comment.