Skip to content

Commit

Permalink
Påbegynt ungdomsytelse (#6626)
Browse files Browse the repository at this point in the history
* init

* Rydding

* Rydding

* Legger til manglende tekst

* lazy load av pakke
  • Loading branch information
hallvardastark authored Sep 25, 2024
1 parent af5a55c commit 3ae1360
Show file tree
Hide file tree
Showing 25 changed files with 1,254 additions and 9 deletions.
2 changes: 2 additions & 0 deletions packages/behandling-ungdomsytelse/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export { default } from './src/BehandlingUngdomsytelseIndex';
export * from './src/types';
25 changes: 25 additions & 0 deletions packages/behandling-ungdomsytelse/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "@k9-sak-web/behandling-ungdomsytelse",
"version": "1.0.0",
"module": "index.ts",
"license": "MIT",
"private": true,
"dependencies": {
"@fpsak-frontend/kodeverk": "1.0.0",
"@fpsak-frontend/prosess-saksopplysninger": "1.0.0",
"@fpsak-frontend/prosess-tilkjent-ytelse": "1.0.0",
"@fpsak-frontend/prosess-vedtak": "1.0.0",
"@fpsak-frontend/shared-components": "1.0.0",
"@fpsak-frontend/utils": "1.0.0",
"@k9-sak-web/behandling-felles": "1.0.0",
"@k9-sak-web/konstanter": "1.0.0",
"@k9-sak-web/prosess-vilkar-soknadsfrist": "1.0.0",
"@k9-sak-web/rest-api": "1.0.0",
"@k9-sak-web/rest-api-hooks": "1.0.0",
"@k9-sak-web/sak-app": "1.0.0",
"@k9-sak-web/types": "1.0.0",
"axios": "1.7.7",
"react": "18.3.1",
"react-intl": "6.6.8"
}
}
169 changes: 169 additions & 0 deletions packages/behandling-ungdomsytelse/src/BehandlingUngdomsytelseIndex.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
import { useCallback, useEffect, useState } from 'react';

import { LoadingPanel } from '@fpsak-frontend/shared-components';
import { ReduxFormStateCleaner, Rettigheter, useSetBehandlingVedEndring } from '@k9-sak-web/behandling-felles';
import { RestApiState, useRestApiErrorDispatcher } from '@k9-sak-web/rest-api-hooks';
import {
ArbeidsgiverOpplysningerWrapper,
Behandling,
Fagsak,
FagsakPerson,
FeatureToggles,
KodeverkMedNavn,
} from '@k9-sak-web/types';

import UngdomsytelsePaneler from './components/UngdomsytelsePaneler';
import {
UngdomsytelseBehandlingApiKeys,
requestUngdomsytelseApi,
restApiUngdomsytelseHooks,
} from './data/ungdomsytelseBehandlingApi';
import { FetchedData } from './types';

const ungdomsytelseData = [
{ key: UngdomsytelseBehandlingApiKeys.AKSJONSPUNKTER },
{ key: UngdomsytelseBehandlingApiKeys.VILKAR },
{ key: UngdomsytelseBehandlingApiKeys.PERSONOPPLYSNINGER },
{ key: UngdomsytelseBehandlingApiKeys.SOKNAD },
{ key: UngdomsytelseBehandlingApiKeys.BEREGNINGSRESULTAT_UTBETALING },
{ key: UngdomsytelseBehandlingApiKeys.BEREGNINGSGRUNNLAG },
{ key: UngdomsytelseBehandlingApiKeys.SIMULERING_RESULTAT },
];

interface OwnProps {
behandlingId: number;
fagsak: Fagsak;
fagsakPerson: FagsakPerson;
rettigheter: Rettigheter;
oppdaterProsessStegOgFaktaPanelIUrl: (punktnavn?: string, faktanavn?: string) => void;
valgtProsessSteg?: string;
valgtFaktaSteg?: string;
oppdaterBehandlingVersjon: (versjon: number) => void;
behandlingEventHandler: {
setHandler: (events: { [key: string]: (params: any) => Promise<any> }) => void;
clear: () => void;
};
opneSokeside: () => void;
featureToggles: FeatureToggles;
kodeverk?: { [key: string]: KodeverkMedNavn[] };
arbeidsgiverOpplysninger?: ArbeidsgiverOpplysningerWrapper;
setRequestPendingMessage: (message: string) => void;
}

const BehandlingUngdomsytelseIndex = ({
behandlingEventHandler,
behandlingId,
oppdaterBehandlingVersjon,
kodeverk,
fagsak,
fagsakPerson,
rettigheter,
oppdaterProsessStegOgFaktaPanelIUrl,
valgtProsessSteg,
opneSokeside,
valgtFaktaSteg,
arbeidsgiverOpplysninger,
setRequestPendingMessage,
featureToggles,
}: OwnProps) => {
const [nyOgForrigeBehandling, setBehandlinger] = useState<{ current?: Behandling; previous?: Behandling }>({
current: undefined,
previous: undefined,
});
const behandling = nyOgForrigeBehandling.current;
const forrigeBehandling = nyOgForrigeBehandling.previous;

const setBehandling = useCallback(nyBehandling => {
requestUngdomsytelseApi.resetCache();
requestUngdomsytelseApi.setLinks(nyBehandling.links);
setBehandlinger(prevState => ({ current: nyBehandling, previous: prevState.current }));
}, []);

const {
startRequest: hentBehandling,
data: behandlingRes,
state: behandlingState,
} = restApiUngdomsytelseHooks.useRestApiRunner<Behandling>(UngdomsytelseBehandlingApiKeys.BEHANDLING_UU);
useSetBehandlingVedEndring(behandlingRes, setBehandling);

const { addErrorMessage } = useRestApiErrorDispatcher();

const { startRequest: nyBehandlendeEnhet } = restApiUngdomsytelseHooks.useRestApiRunner(
UngdomsytelseBehandlingApiKeys.BEHANDLING_NY_BEHANDLENDE_ENHET,
);
const { startRequest: settBehandlingPaVent } = restApiUngdomsytelseHooks.useRestApiRunner(
UngdomsytelseBehandlingApiKeys.BEHANDLING_ON_HOLD,
);
const { startRequest: taBehandlingAvVent } = restApiUngdomsytelseHooks.useRestApiRunner<Behandling>(
UngdomsytelseBehandlingApiKeys.RESUME_BEHANDLING,
);
const { startRequest: henleggBehandling } = restApiUngdomsytelseHooks.useRestApiRunner(
UngdomsytelseBehandlingApiKeys.HENLEGG_BEHANDLING,
);
const { startRequest: settPaVent } = restApiUngdomsytelseHooks.useRestApiRunner(
UngdomsytelseBehandlingApiKeys.UPDATE_ON_HOLD,
);
const { startRequest: lagreRisikoklassifiseringAksjonspunkt } = restApiUngdomsytelseHooks.useRestApiRunner(
UngdomsytelseBehandlingApiKeys.SAVE_AKSJONSPUNKT,
);

useEffect(() => {
behandlingEventHandler.setHandler({
endreBehandlendeEnhet: params => nyBehandlendeEnhet(params).then(() => hentBehandling({ behandlingId }, true)),
settBehandlingPaVent: params => settBehandlingPaVent(params).then(() => hentBehandling({ behandlingId }, true)),
taBehandlingAvVent: params =>
taBehandlingAvVent(params).then(behandlingResTaAvVent => setBehandling(behandlingResTaAvVent)),
henleggBehandling: params => henleggBehandling(params),
lagreRisikoklassifiseringAksjonspunkt: params => lagreRisikoklassifiseringAksjonspunkt(params),
});

requestUngdomsytelseApi.setRequestPendingHandler(setRequestPendingMessage);
requestUngdomsytelseApi.setAddErrorMessageHandler(addErrorMessage);

hentBehandling({ behandlingId }, false);

return () => {
behandlingEventHandler.clear();
};
}, []);

const { data, state } = restApiUngdomsytelseHooks.useMultipleRestApi<FetchedData>(ungdomsytelseData, {
keepData: true,
updateTriggers: [behandling?.versjon],
suspendRequest: !behandling,
});

const harIkkeHentetBehandlingsdata = state === RestApiState.LOADING || state === RestApiState.NOT_STARTED;
if (!behandling || (harIkkeHentetBehandlingsdata && data === undefined) || state === RestApiState.ERROR) {
return <LoadingPanel />;
}

return (
<>
<ReduxFormStateCleaner
behandlingId={behandling.id}
behandlingVersjon={harIkkeHentetBehandlingsdata ? forrigeBehandling.versjon : behandling.versjon}
/>
<UngdomsytelsePaneler
behandling={harIkkeHentetBehandlingsdata ? forrigeBehandling : behandling}
fetchedData={data}
fagsak={fagsak}
fagsakPerson={fagsakPerson}
alleKodeverk={kodeverk}
rettigheter={rettigheter}
valgtProsessSteg={valgtProsessSteg}
valgtFaktaSteg={valgtFaktaSteg}
oppdaterProsessStegOgFaktaPanelIUrl={oppdaterProsessStegOgFaktaPanelIUrl}
oppdaterBehandlingVersjon={oppdaterBehandlingVersjon}
settPaVent={settPaVent}
opneSokeside={opneSokeside}
hasFetchError={behandlingState === RestApiState.ERROR}
setBehandling={setBehandling}
arbeidsgiverOpplysningerPerId={arbeidsgiverOpplysninger ? arbeidsgiverOpplysninger.arbeidsgivere : {}}
featureToggles={featureToggles}
/>
</>
);
};

export default BehandlingUngdomsytelseIndex;
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import { BehandlingPaVent, Rettigheter, SettPaVentParams } from '@k9-sak-web/behandling-felles';
import {
ArbeidsgiverOpplysningerPerId,
Behandling,
Fagsak,
FagsakPerson,
FeatureToggles,
KodeverkMedNavn,
} from '@k9-sak-web/types';
import FetchedData from '../types/FetchedData';
import UngdomsytelseProsess from './UngdomsytelseProsess';

interface OwnProps {
fetchedData: FetchedData;
fagsak: Fagsak;
fagsakPerson: FagsakPerson;
behandling: Behandling;
alleKodeverk: { [key: string]: KodeverkMedNavn[] };
rettigheter: Rettigheter;
valgtProsessSteg?: string;
valgtFaktaSteg?: string;
oppdaterProsessStegOgFaktaPanelIUrl: (punktnavn?: string, faktanavn?: string) => void;
oppdaterBehandlingVersjon: (versjon: number) => void;
settPaVent: (params: SettPaVentParams) => Promise<any>;
opneSokeside: () => void;
hasFetchError: boolean;
setBehandling: (behandling: Behandling) => void;
arbeidsgiverOpplysningerPerId: ArbeidsgiverOpplysningerPerId;
featureToggles: FeatureToggles;
}

const UngdomsytelsePaneler = ({
fetchedData,
fagsak,
fagsakPerson,
behandling,
alleKodeverk,
rettigheter,
valgtProsessSteg,
oppdaterProsessStegOgFaktaPanelIUrl,
valgtFaktaSteg,
oppdaterBehandlingVersjon,
settPaVent,
opneSokeside,
hasFetchError,
setBehandling,
arbeidsgiverOpplysningerPerId,
featureToggles,
}: OwnProps) => {
return (
<>
<BehandlingPaVent
behandling={behandling}
aksjonspunkter={fetchedData?.aksjonspunkter}
kodeverk={alleKodeverk}
settPaVent={settPaVent}
/>

<UngdomsytelseProsess
data={fetchedData}
fagsak={fagsak}
fagsakPerson={fagsakPerson}
behandling={behandling}
alleKodeverk={alleKodeverk}
rettigheter={rettigheter}
valgtProsessSteg={valgtProsessSteg}
valgtFaktaSteg={valgtFaktaSteg}
oppdaterProsessStegOgFaktaPanelIUrl={oppdaterProsessStegOgFaktaPanelIUrl}
oppdaterBehandlingVersjon={oppdaterBehandlingVersjon}
opneSokeside={opneSokeside}
hasFetchError={hasFetchError}
setBehandling={setBehandling}
arbeidsgiverOpplysningerPerId={arbeidsgiverOpplysningerPerId}
featureToggles={featureToggles}
/>
</>
);
};

export default UngdomsytelsePaneler;
Loading

0 comments on commit 3ae1360

Please sign in to comment.