Skip to content

Commit

Permalink
beregnOgsimuler skal fungere på samme måte som før vi la inn utsettel…
Browse files Browse the repository at this point in the history
…se av tilbakekreving
  • Loading branch information
RamziAbuQassim committed Mar 14, 2024
1 parent ca8c006 commit b610507
Showing 1 changed file with 69 additions and 54 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import * as RemoteData from '@devexperts/remote-data-ts';
import { Alert, Button, HelpText } from '@navikt/ds-react';
import { useState } from 'react';
import { Alert, Button } from '@navikt/ds-react';
import { pipe } from 'fp-ts/lib/function';
import { useEffect } from 'react';
import { useNavigate } from 'react-router-dom';

import { BeregnOgSimuler } from '~src/api/revurderingApi';
import ApiErrorAlert from '~src/components/apiErrorAlert/ApiErrorAlert';
import { Seksjon } from '~src/components/framdriftsindikator/Framdriftsindikator';
import SpinnerMedTekst from '~src/components/henterInnhold/SpinnerMedTekst';
import Beregningblokk from '~src/components/oppsummering/oppsummeringAvRevurdering/beregningblokk/Beregningblokk';
import * as RevurderingActions from '~src/features/revurdering/revurderingActions';
import { useAsyncActionCreator } from '~src/lib/hooks';
Expand Down Expand Up @@ -37,7 +39,6 @@ const RevurderingBeregnOgSimuler = (props: {
const navigate = useNavigate();
const { formatMessage } = useI18n({ messages });
const forrigeUrl = props.seksjoner[1].linjer.at(-1)?.url;
const [needsBeregning, setNeedsBeregning] = useState(false);
const [beregnOgSimulerStatus, beregnOgSimuler] = useAsyncActionCreator(RevurderingActions.beregnOgSimuler);

const beregningStatus = harBeregninger(props.informasjonsRevurdering)
Expand All @@ -48,6 +49,15 @@ const RevurderingBeregnOgSimuler = (props: {
})
: beregnOgSimulerStatus;

useEffect(() => {
if (RemoteData.isInitial(beregningStatus)) {
beregnOgSimuler({
sakId: props.informasjonsRevurdering.sakId,
revurderingId: props.informasjonsRevurdering.id,
});
}
}, [props.informasjonsRevurdering.id]);

const getNesteUrl = (beregnetOgSimulertRevurdering: InformasjonsRevurdering) => {
if (erRevurderingTilbakekrevingsbehandling(beregnetOgSimulertRevurdering)) {
return Routes.revurderingSeksjonSteg.createURL({
Expand All @@ -66,60 +76,65 @@ const RevurderingBeregnOgSimuler = (props: {
}
};

const handleBeregnOgSimuler = () => {
beregnOgSimuler({
sakId: props.informasjonsRevurdering.sakId,
revurderingId: props.informasjonsRevurdering.id,
});
};

const handleSubmit = () => {
if (!RemoteData.isSuccess(beregningStatus)) {
setNeedsBeregning(true);
return;
}
navigate(getNesteUrl(beregningStatus.value.revurdering));
};

return (
<form className={styles.container} onSubmit={handleSubmit}>
<HelpText className={styles.helpText}>{formatMessage('beregnOgSimuler.helpText')}</HelpText>
<div className={styles.container}>
{pipe(
beregningStatus,
RemoteData.fold3(
() => <SpinnerMedTekst text={formatMessage('beregnOgSimuler.beregner')} />,
(err) => (
<div className={styles.content}>
<ApiErrorAlert error={err} />
<Button variant="secondary" onClick={() => navigate(forrigeUrl!)}>
{formatMessage('knapp.tilbake')}
</Button>
</div>
),
(res) => (
<div className={styles.successContainer}>
{harSimulering(res.revurdering) &&
simuleringenInneholderFeilutbetaling(res.revurdering.simulering) && (
<Alert variant={'warning'}>
{formatMessage('simulering.feilutbetaling.alert')}
</Alert>
)}
<Beregningblokk revurdering={res.revurdering} />
{res.feilmeldinger.length > 0 && <UtfallSomIkkeStøttes feilmeldinger={res.feilmeldinger} />}
{res.varselmeldinger.length > 0 && (
<UtfallSomIkkeStøttes feilmeldinger={res.varselmeldinger} infoMelding />
)}

{RemoteData.isSuccess(beregningStatus) && (
<div className={styles.successContainer}>
{harSimulering(beregningStatus.value.revurdering) &&
simuleringenInneholderFeilutbetaling(beregningStatus.value.revurdering.simulering) && (
<Alert variant={'warning'}>{formatMessage('simulering.feilutbetaling.alert')}</Alert>
)}
<Beregningblokk revurdering={beregningStatus.value.revurdering} />
{beregningStatus.value.feilmeldinger.length > 0 && (
<UtfallSomIkkeStøttes feilmeldinger={beregningStatus.value.feilmeldinger} />
)}
{beregningStatus.value.varselmeldinger.length > 0 && (
<UtfallSomIkkeStøttes feilmeldinger={beregningStatus.value.varselmeldinger} infoMelding />
)}
</div>
)}

<div className={styles.beregnKnappContainer}>
<Button
variant="secondary"
type="button"
loading={RemoteData.isPending(beregnOgSimulerStatus)}
onClick={() => handleBeregnOgSimuler()}
>
{formatMessage('beregnOgSimuler.ny')}
</Button>
{needsBeregning && (
<div>
<Alert variant="warning">{formatMessage('alert.advarsel.kjørBeregningFørst')}</Alert>
</div>
)}
{RemoteData.isFailure(beregnOgSimulerStatus) && <ApiErrorAlert error={beregnOgSimulerStatus.error} />}
</div>
<Button
variant="secondary"
loading={RemoteData.isPending(beregnOgSimulerStatus)}
onClick={() =>
beregnOgSimuler({
sakId: props.informasjonsRevurdering.sakId,
revurderingId: props.informasjonsRevurdering.id,
})
}
>
{formatMessage('beregnOgSimuler.ny')}
</Button>

<Navigasjonsknapper tilbake={{ url: forrigeUrl }} />
</form>
<Navigasjonsknapper
neste={{
onClick: () =>
navigate(
getNesteUrl(
RemoteData.isSuccess(beregnOgSimulerStatus)
? beregnOgSimulerStatus.value.revurdering
: props.informasjonsRevurdering,
),
),
}}
tilbake={{ url: forrigeUrl }}
/>
</div>
),
),
)}
</div>
);
};

Expand Down

0 comments on commit b610507

Please sign in to comment.