Skip to content

Commit

Permalink
EY-4348 Hent trygdetid fra pesys (#6656)
Browse files Browse the repository at this point in the history
* EY-4348 Hent trygdetid fra pesys

* Fjern springapi!

* Riktig typenavn

* periode kilde som string da det er mange i pesys vi ikke har

* Riktig mapping for kilde

* bare sett pesys

* Godta tom respons

* Eget endepunkt for å opprette trygdetid fra pesys

* Ikke støtt henting fra pesys hvis det ikke er førstegangsbehandling eller tidligere familiepleier eller det er ukjent avødd

* Behandling kan endre

* Fjerne gammel morro

* Prøv å hente default ved å hente trygdetider fra pesys for å bevare gui visning

* Sjekk om bruker har ytelse i PESYS først før man kan prøve å hente trygdetider fra dem

* Fjern logging

* Endre til å hente ytelse på dødsdato for avdød

* Rydd opp

* Logg response

* Håndter tom ap men 200

* ignore at contenttype mangler

* Håndter response 200 bedre

* Bare returnerer null

* Legg knapp bak featuretoggle

* Fjern logging

* Disse snek seg tilbake igjen :O

* Nitpicks

* Sjekk først om person har trygdetidsgrunnlag for å kunne vise knapp

* Riktig tekst

* Mini fiks

* Reduser typeinfo for henting

* Logg error om vi får trygdetid for begge ytelsene fra pesys

* Naming
  • Loading branch information
sebassonav authored Dec 20, 2024
1 parent 64018e2 commit 4ce2fe7
Show file tree
Hide file tree
Showing 11 changed files with 288 additions and 85 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
import React, { useEffect, useState } from 'react'
import { useApiCall } from '~shared/hooks/useApiCall'
import { hentTrygdetider, ITrygdetid, opprettTrygdetider } from '~shared/api/trygdetid'
import {
hentTrygdetider,
ITrygdetid,
opprettTrygdetider,
hentOgLeggInnTrygdetidsGrunnlagForUfoeretrygdOgAlderspensjon,
sjekkOmAvdoedHarTrygdetidsgrunnlagIPesys,
} from '~shared/api/trygdetid'
import Spinner from '~shared/Spinner'
import { Alert, BodyShort, Box, Heading, Tabs, VStack } from '@navikt/ds-react'
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 { 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 @@ -41,8 +47,13 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
const dispatch = useAppDispatch()

const kopierTrygdetidsgrunnlagEnabled = useFeaturetoggle(FeatureToggle.kopier_trygdetidsgrunnlag)
const kanHenteTrygdetidFraPesys = useFeaturetoggle(FeatureToggle.trygdetid_fra_pesys)
const [hentTrygdetidRequest, fetchTrygdetid] = useApiCall(hentTrygdetider)
const [opprettTrygdetidRequest, requestOpprettTrygdetid] = useApiCall(opprettTrygdetider)
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 @@ -97,19 +108,22 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
})
}

const hentTrygdetidFraPesys = () => {
hentPesysTT(behandling.id, (trygdetider: ITrygdetid[]) => {
oppdaterTrygdetider(trygdetider)
})
}

useEffect(() => {
if (!behandling?.id) {
setBehandlingsIdMangler(true)
throw new Error('Mangler behandlingsid')
}

fetchTrygdetider(behandling.id)
}, [])

useEffect(() => {
fetchAlleLand(null, (landListe: ILand[]) => {
setLandListe(sorterLand(landListe))
})
sjekkOmAvdoedHarTTIPesysHent(behandling.id)
}, [])

if (harPilotTrygdetid) {
Expand Down Expand Up @@ -142,7 +156,39 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
)}
<VStack gap="12">
{skalViseTrygdeavtale(behandling) && <TrygdeAvtale redigerbar={redigerbar} />}

{kanHenteTrygdetidFraPesys && (
<>
{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>
Her kan du hente trygdetid registrert i avdødes uføretrygd eller alderspensjon.
</BodyShort>
<Button onClick={hentTrygdetidFraPesys} loading={isPending(hentTTPesysStatus)}>
Hent
</Button>
</Box>
{isFailure(hentTTPesysStatus) && (
<Alert variant="warning">Kunne ikke hente trygdetid fra Pesys</Alert>
)}
{isPending(hentTTPesysStatus) && <Spinner label="Henter trygdetid i Pesys" />}
</>
)}
</>
)
}
)}
</>
)}
{landListe && (
<>
{trygdetider.length == 1 && (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,39 +1,21 @@
import { apiClient, ApiResponse } from '~shared/api/apiClient'
import { JaNei } from '~shared/types/ISvar'

export const hentTrygdetidUfoeretrygdOgAlderspensjon = async (
fnr: string
): Promise<ApiResponse<TrygdetidsperioderPesys>> =>
apiClient.post('trygdetid_v2/pesys/grunnlag', { foedselsnummer: fnr })

export interface TrygdetidsperioderPesys {
ufoeretrygd: TrygdetidsperiodeListe
alderspensjon: TrygdetidsperiodeListe
}

export interface TrygdetidsperiodeListe {
trygdetidsGrunnlagListe?: TrygdetidPeriodePesys[]
}

export interface TrygdetidPeriodePesys {
isoCountryCode: string // ISO 3166-1 alpha-3 code feks: "NOR" "SWE"
fra: string //TODO: eller date? kommer i steg 2 da vi dette skal brukes i frontend
til: string
poengInnAar?: boolean
poengUtAar?: boolean
prorata?: boolean
kilde: {
tidspunkt: string
type: string
}
}

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

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

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
7 changes: 7 additions & 0 deletions apps/etterlatte-saksbehandling-ui/client/src/useUnleash.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,19 @@ export const enum FeatureToggle {
pensjon_etterlatte_klage_delvis_omgjoering = 'pensjon-etterlatte.klage-delvis-omgjoering',
pensjon_etterlatte_kan_opprette_vedtak_avvist_klage = 'pensjon-etterlatte.kan-opprette-vedtak-avvist-klage',
pensjon_etterlatte_oppdater_ident_paa_sak = 'pensjon-etterlatte.oppdater-ident-paa-sak',
trygdetid_fra_pesys = 'trygdetid-fra-pesys',
}

export interface Toggle {
togglename: FeatureToggle
enabled: boolean
}

const trygdetid_fra_pesys: Toggle = {
togglename: FeatureToggle.trygdetid_fra_pesys,
enabled: false,
}

const sanksjon: Toggle = { togglename: FeatureToggle.sanksjon, enabled: false }
const aktivitetsplikt_ny_vurdering: Toggle = {
togglename: FeatureToggle.aktivitetsplikt_ny_vurdering,
Expand Down Expand Up @@ -71,6 +77,7 @@ const pensjon_etterlatte_oppdater_ident_paa_sak: Toggle = {
}

export const unleashStartState: Record<string, Toggle> = {
[FeatureToggle.trygdetid_fra_pesys]: trygdetid_fra_pesys,
[FeatureToggle.sanksjon]: sanksjon,
[FeatureToggle.aktivitetsplikt_ny_vurdering]: aktivitetsplikt_ny_vurdering,
[FeatureToggle.validere_aarsintnekt_neste_aar]: validere_aarsintnekt_neste_aar,
Expand Down
2 changes: 1 addition & 1 deletion apps/etterlatte-trygdetid/.nais/dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ spec:
- name: ETTERLATTE_GRUNNLAG_CLIENT_ID
value: dev-gcp.etterlatte.etterlatte-grunnlag
- name: PEN_URL
value: https://pensjon-pen-q2.dev-fss-pub.nais.io/pen/springapi
value: https://pensjon-pen-q2.dev-fss-pub.nais.io/pen
- name: PEN_CLIENT_ID
value: ddd52335-cfe8-4ee9-9e68-416a5ab26efa
envFrom:
Expand Down
2 changes: 1 addition & 1 deletion apps/etterlatte-trygdetid/.nais/prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ spec:
- name: ETTERLATTE_GRUNNLAG_CLIENT_ID
value: prod-gcp.etterlatte.etterlatte-grunnlag
- name: PEN_URL
value: https://pensjon-pen.prod-fss-pub.nais.io/pen/springapi
value: https://pensjon-pen.prod-fss-pub.nais.io/pen
- name: PEN_CLIENT_ID
value: 53eaf67f-d7b2-46e9-8ffe-3da7cf0ac955
envFrom:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import no.nav.etterlatte.libs.ktor.route.BEHANDLINGID_CALL_PARAMETER
import no.nav.etterlatte.libs.ktor.route.behandlingId
import no.nav.etterlatte.libs.ktor.route.uuid
import no.nav.etterlatte.libs.ktor.route.withBehandlingId
import no.nav.etterlatte.libs.ktor.route.withFoedselsnummer
import no.nav.etterlatte.libs.ktor.route.withUuidParam
import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo
import no.nav.etterlatte.libs.ktor.token.Systembruker
Expand Down Expand Up @@ -60,16 +59,6 @@ fun Route.trygdetid(
behandlingKlient: BehandlingKlient,
) {
route("/api/trygdetid_v2") {
post("/pesys") {
withFoedselsnummer(behandlingKlient, skrivetilgang = false) { fnr ->
call.respond(
trygdetidService.hentTrygdetidsgrunnlagUforeOgAlderspensjon(
fnr = fnr.value,
brukerTokenInfo = brukerTokenInfo,
),
)
}
}
route("/{$BEHANDLINGID_CALL_PARAMETER}") {
get {
withBehandlingId(behandlingKlient) {
Expand All @@ -95,6 +84,32 @@ fun Route.trygdetid(
}
}

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() },
)
}
}
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)
}
}
}

post("oppdater-opplysningsgrunnlag") {
withBehandlingId(behandlingKlient, skrivetilgang = true) {
logger.info("Oppdaterer opplysningsgrunnlag på trygdetider for behandling $behandlingId")
Expand Down
Loading

0 comments on commit 4ce2fe7

Please sign in to comment.