Skip to content

Commit

Permalink
EY-4348 Bedre plassering av hent trygdetidsperioder fra pesys (#6810)
Browse files Browse the repository at this point in the history
* EY-4348 Bedre plassering av hent trygdetidsperioder fra pesys

* EY-4348 Spesifiser kilde om det er Alderspensjon eller Uføretrygd

* Upds glemte subtyeps

* Leif er på jobb

* random

* Kom igjen intellij

* Fiks random kildetest

* oppdater feilmelding

* Fiks typo
  • Loading branch information
sebassonav authored Jan 21, 2025
1 parent abf5989 commit 2a409fb
Show file tree
Hide file tree
Showing 7 changed files with 159 additions and 86 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -637,8 +637,10 @@ private fun Grunnlagsopplysning.Kilde.tilGenerellKilde() =
tidspunkt = this.tidspunkt,
detalj = this.ident,
)
is Grunnlagsopplysning.UkjentInnsender -> GenerellKilde(this.type, this.tidspunkt, detalj = null)
is Grunnlagsopplysning.Gjenny -> GenerellKilde(this.type, this.tidspunkt, detalj = null)
is Grunnlagsopplysning.UkjentInnsender -> GenerellKilde(this.type, tidspunkt = this.tidspunkt, detalj = null)
is Grunnlagsopplysning.Gjenny -> GenerellKilde(this.type, tidspunkt = this.tidspunkt, detalj = null)
is Grunnlagsopplysning.Alderspensjon -> GenerellKilde(this.type, tidspunkt = this.tidspunkt, detalj = null)
is Grunnlagsopplysning.Ufoeretrygd -> GenerellKilde(this.type, tidspunkt = this.tidspunkt, detalj = null)
}

data class GrunnlagsopplysningerPersonPdl(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,13 @@ interface Props {
virkningstidspunktEtterNyRegelDato: boolean
landListe: ILand[]
fetchTrygdetider: (behandlingId: string) => void
setTrygdetider: (trygdetider: ITrygdetid[]) => void
}

export const EnkelPersonTrygdetid = (props: Props) => {
const dispatch = useAppDispatch()
const { redigerbar, behandling, virkningstidspunktEtterNyRegelDato, landListe, fetchTrygdetider } = props
const { redigerbar, behandling, virkningstidspunktEtterNyRegelDato, landListe, fetchTrygdetider, setTrygdetider } =
props
const [trygdetid, setTrygdetid] = useState<ITrygdetid | undefined>()
const [overstyrTrygdetidRequest, requestOverstyrTrygdetid] = useApiCall(overstyrTrygdetid)
const [oppdaterYrkesskadeRequest, requestOppdaterYrkesskade] = useApiCall(setTrygdetidYrkesskade)
Expand Down Expand Up @@ -107,6 +109,8 @@ export const EnkelPersonTrygdetid = (props: Props) => {
trygdetidGrunnlagType={ITrygdetidGrunnlagType.FAKTISK}
landListe={landListe}
redigerbar={redigerbar}
behandling={behandling}
setTrygdetider={setTrygdetider}
/>

<TrygdetidPerioder
Expand All @@ -115,6 +119,8 @@ export const EnkelPersonTrygdetid = (props: Props) => {
trygdetidGrunnlagType={ITrygdetidGrunnlagType.FREMTIDIG}
landListe={landListe.filter((land) => land.isoLandkode == 'NOR')}
redigerbar={redigerbar}
behandling={behandling}
setTrygdetider={setTrygdetider}
/>

<OverstyrtTrygdetid
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
import React, { useEffect, useState } from 'react'
import { useApiCall } from '~shared/hooks/useApiCall'
import {
hentTrygdetider,
ITrygdetid,
opprettTrygdetider,
hentOgLeggInnTrygdetidsGrunnlagForUfoeretrygdOgAlderspensjon,
sjekkOmAvdoedHarTrygdetidsgrunnlagIPesys,
} from '~shared/api/trygdetid'
import { hentTrygdetider, ITrygdetid, opprettTrygdetider } from '~shared/api/trygdetid'
import Spinner from '~shared/Spinner'
import { Alert, BodyShort, Box, Button, Heading, Tabs, VStack } from '@navikt/ds-react'
import { Alert, BodyShort, Box, 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, mapResult } from '~shared/api/apiUtils'
import { isPending } 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 @@ -47,15 +41,8 @@ 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, hentOgOppdaterDataFraPesys] = 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 @@ -110,12 +97,6 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
})
}

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

useEffect(() => {
if (!behandling?.id) {
setBehandlingsIdMangler(true)
Expand All @@ -126,11 +107,6 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
setLandListe(sorterLand(landListe))
})
}, [])
useEffect(() => {
if (kanHenteTrygdetidFraPesys) {
sjekkOmAvdoedHarTTIPesysHent(behandling.id)
}
}, [kanHenteTrygdetidFraPesys])

if (harPilotTrygdetid) {
return (
Expand Down Expand Up @@ -160,39 +136,8 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
mapNavn={mapNavn}
/>
)}
<VStack gap="12">
<VStack gap="11">
{skalViseTrygdeavtale(behandling) && <TrygdeAvtale redigerbar={redigerbar} />}
{kanHenteTrygdetidFraPesys && (
<>
{mapResult(sjekkOmAvodedHarTTIPesysStatus, {
initial: null,
pending: <Spinner label="Sjekker om avdøde har trygdetidsgrunnlag i Pesys" />,
error: () => <Alert variant="warning">Kunne ikke sjekke trygdetidsgrunnag i Pesys</Alert>,
success: (harTrygdetidsgrunnlagIPesys) => {
return (
<>
{harTrygdetidsgrunnlagIPesys && (
<>
<Box maxWidth="fit-content">
<BodyShort>
Her kan du hente trygdetid registrert i avdødes uføretrygd eller alderspensjon.
</BodyShort>
<Button onClick={oppdaterTrygdetidMedPesysData} 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 All @@ -203,6 +148,7 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
landListe={landListe}
virkningstidspunktEtterNyRegelDato={virkningstidspunktEtterNyRegelDato}
fetchTrygdetider={fetchTrygdetider}
setTrygdetider={setTrygdetider}
/>
)}
{trygdetider.length > 1 && (
Expand All @@ -227,6 +173,7 @@ export const Trygdetid = ({ redigerbar, behandling, vedtaksresultat, virkningsti
landListe={landListe}
virkningstidspunktEtterNyRegelDato={virkningstidspunktEtterNyRegelDato}
fetchTrygdetider={fetchTrygdetider}
setTrygdetider={setTrygdetider}
/>
</Box>
</Tabs.Panel>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import React, { useState } from 'react'
import { ITrygdetid, ITrygdetidGrunnlagType, slettTrygdetidsgrunnlag } from '~shared/api/trygdetid'
import React, { useEffect, useState } from 'react'
import {
hentOgLeggInnTrygdetidsGrunnlagForUfoeretrygdOgAlderspensjon,
ITrygdetid,
ITrygdetidGrunnlagType,
sjekkOmAvdoedHarTrygdetidsgrunnlagIPesys,
slettTrygdetidsgrunnlag,
} from '~shared/api/trygdetid'
import { useApiCall } from '~shared/hooks/useApiCall'
import { Button, Heading, HStack, VStack } from '@navikt/ds-react'
import { Alert, BodyShort, Box, Button, Heading, HStack, VStack } from '@navikt/ds-react'
import { CalendarIcon, PlusIcon } from '@navikt/aksel-icons'
import { formaterEnumTilLesbarString } from '~utils/formatering/formatering'
import {
Expand All @@ -12,13 +18,21 @@ import { TrygdetidPerioderTable } from '~components/behandling/trygdetid/trygdet
import { isFailureHandler } from '~shared/api/IsFailureHandler'
import { TrygdetidGrunnlag } from '~components/behandling/trygdetid/TrygdetidGrunnlag'
import { ILand } from '~utils/kodeverk'
import { isFailure, isPending, mapResult } from '~shared/api/apiUtils'
import Spinner from '~shared/Spinner'
import { FeatureToggle, useFeaturetoggle } from '~useUnleash'
import { IBehandlingReducer, oppdaterBehandlingsstatus } from '~store/reducers/BehandlingReducer'
import { IBehandlingStatus } from '~shared/types/IDetaljertBehandling'
import { useAppDispatch } from '~store/Store'

interface Props {
trygdetid: ITrygdetid
oppdaterTrygdetid: (trygdetid: ITrygdetid) => void
trygdetidGrunnlagType: ITrygdetidGrunnlagType
landListe: ILand[]
redigerbar: boolean
behandling: IBehandlingReducer
setTrygdetider: (trygdetider: ITrygdetid[]) => void
}

export const TrygdetidPerioder = ({
Expand All @@ -27,10 +41,34 @@ export const TrygdetidPerioder = ({
oppdaterTrygdetid,
trygdetidGrunnlagType,
landListe,
behandling,
setTrygdetider,
}: Props) => {
const [slettTrygdetidResult, slettTrygdetidsgrunnlagRequest] = useApiCall(slettTrygdetidsgrunnlag)

const dispatch = useAppDispatch()
const [visLeggTilTrygdetidPeriode, setVisLeggTilTrygdetidPeriode] = useState<boolean>(false)
const kanHenteTrygdetidFraPesys = useFeaturetoggle(FeatureToggle.trygdetid_fra_pesys)
const [sjekkOmAvodedHarTTIPesysStatus, sjekkOmAvdoedHarTTIPesysHent] = useApiCall(
sjekkOmAvdoedHarTrygdetidsgrunnlagIPesys
)
useEffect(() => {
if (kanHenteTrygdetidFraPesys) {
sjekkOmAvdoedHarTTIPesysHent(behandling.id)
}
}, [kanHenteTrygdetidFraPesys])
const [hentTTPesysStatus, hentOgOppdaterDataFraPesys] = useApiCall(
hentOgLeggInnTrygdetidsGrunnlagForUfoeretrygdOgAlderspensjon
)
const oppdaterTrygdetider = (trygdetid: ITrygdetid[]) => {
setTrygdetider(trygdetid)
dispatch(oppdaterBehandlingsstatus(IBehandlingStatus.TRYGDETID_OPPDATERT))
}

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

const trygdetidPerioder = trygdetid.trygdetidGrunnlag
.filter((trygdetid) => trygdetid.type === trygdetidGrunnlagType)
Expand All @@ -52,18 +90,15 @@ export const TrygdetidPerioder = ({
)
}

const faktiskTrygdetid = trygdetidGrunnlagType === ITrygdetidGrunnlagType.FAKTISK
return (
<VStack gap="4">
<HStack gap="2" align="center">
<CalendarIcon aria-hidden height="1.5rem" width="1.5rem" />
<Heading size="small">{formaterEnumTilLesbarString(trygdetidGrunnlagType)} trygdetid</Heading>
</HStack>

{trygdetidGrunnlagType === ITrygdetidGrunnlagType.FAKTISK ? (
<FaktiskTrygdetidHjelpeTekst />
) : (
<FremtidigTrygdetidHjelpeTekst />
)}
{faktiskTrygdetid ? <FaktiskTrygdetidHjelpeTekst /> : <FremtidigTrygdetidHjelpeTekst />}

<TrygdetidPerioderTable
trygdetidId={trygdetid.id}
Expand Down Expand Up @@ -104,6 +139,45 @@ export const TrygdetidPerioder = ({
</Button>
</div>
)}
{kanLeggeTilNyPeriode && faktiskTrygdetid && (
<>
{kanHenteTrygdetidFraPesys && (
<>
{mapResult(sjekkOmAvodedHarTTIPesysStatus, {
initial: null,
pending: <Spinner label="Sjekker om avdøede har trygdetidsgrunnlag i Pesys" />,
error: () => <Alert variant="warning">Kunne ikke sjekke trygdetidsgrunnag i Pesys</Alert>,
success: (harTrygdetidsgrunnlagIPesys) => {
return (
<>
{harTrygdetidsgrunnlagIPesys && (
<>
<Box maxWidth="fit-content">
<BodyShort>
Avdøed har trygdetidsgrunnlag registrert på uføretrygd eller alderspensjon.
</BodyShort>
<Button
size="small"
onClick={oppdaterTrygdetidMedPesysData}
loading={isPending(hentTTPesysStatus)}
>
Legg inn trygdetidsgrunnlag fra pesys
</Button>
</Box>
{isFailure(hentTTPesysStatus) && (
<Alert variant="warning">Kunne ikke hente trygdetid fra Pesys</Alert>
)}
{isPending(hentTTPesysStatus) && <Spinner label="Henter trygdetid i Pesys" />}
</>
)}
</>
)
},
})}
</>
)}
</>
)}
</VStack>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private inline val PipelineContext<*, ApplicationCall>.trygdetidId: UUID
get() =
try {
this.call.uuid(TRYGDETIDID_CALL_PARAMETER)
} catch (e: Exception) {
} catch (_: Exception) {
throw UgyldigForespoerselException(
"MANGLER_TRYGDETID_ID",
"Kunne ikke lese ut parameteret trygdetidId",
Expand Down Expand Up @@ -426,8 +426,20 @@ private fun TrygdetidGrunnlag.toDto(): TrygdetidGrunnlagDto =
tidspunkt = kilde.tidspunkt.toString(),
ident = kilde.type,
)
is Grunnlagsopplysning.Ufoeretrygd ->
TrygdetidGrunnlagKildeDto(
tidspunkt = kilde.tidspunkt.toString(),
ident = kilde.type,
)
is Grunnlagsopplysning.Alderspensjon ->
TrygdetidGrunnlagKildeDto(
tidspunkt = kilde.tidspunkt.toString(),
ident = kilde.type,
)

else -> throw UnsupportedOperationException("Kilde for trygdetid maa vaere saksbehandler eller pesys")
else -> throw UnsupportedOperationException(
"Kilde for trygdetid maa vaere saksbehandler, Ufoeretrygd, Alderspensjon eller pesys, var $kilde",
)
},
begrunnelse = begrunnelse,
poengInnAar = poengInnAar,
Expand Down
Loading

0 comments on commit 2a409fb

Please sign in to comment.