Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Utbedre tildel oppgave - preprod #2868

Merged
merged 7 commits into from
Aug 19, 2024
4 changes: 3 additions & 1 deletion src/frontend/App/hooks/useOppgave.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ import { useHentFagsak } from './useHentFagsak';
import { Stønadstype } from '../typer/behandlingstema';
import { lagJournalføringUrl } from '../../Komponenter/Journalføring/Felles/utils';
import { useNavigate } from 'react-router-dom';
import { EToast } from '../typer/toast';

interface OppgaveDto {
behandlingId: string;
gsakId: string;
}

export const useOppgave = (oppgave: IOppgave) => {
const { axiosRequest, innloggetSaksbehandler } = useApp();
const { axiosRequest, innloggetSaksbehandler, settToast } = useApp();
const navigate = useNavigate();
const [feilmelding, settFeilmelding] = useState<string>('');
const [laster, settLaster] = useState<boolean>(false);
Expand All @@ -30,6 +31,7 @@ export const useOppgave = (oppgave: IOppgave) => {
})
.then((res: RessursSuksess<string> | RessursFeilet) => {
if (res.status === RessursStatus.SUKSESS) {
settToast(EToast.TILDEL_OPPGAVE_VELlYKKET);
return Promise.resolve();
} else {
return Promise.reject(
Expand Down
2 changes: 2 additions & 0 deletions src/frontend/App/typer/toast.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export enum EToast {
BEHANDLING_SATT_PÅ_VENT = 'BEHANDLING_SATT_PÅ_VENT',
BEHANDLING_TATT_AV_VENT = 'BEHANDLING_TATT_AV_VENT',
JOURNALFØRING_VELLYKKET = 'JOURNALFØRING_VELLYKKET',
TILDEL_OPPGAVE_VELlYKKET = 'TILDEL_OPPGAVE_VELlYKKET',
}

export const toastTilTekst: Record<EToast, string> = {
Expand All @@ -30,4 +31,5 @@ export const toastTilTekst: Record<EToast, string> = {
BEHANDLING_SATT_PÅ_VENT: 'Oppgaven er oppdatert og behandlingen er satt på vent',
BEHANDLING_TATT_AV_VENT: 'Behandlingen er tatt av vent. Du er satt som ansvarlig saksbehandler',
JOURNALFØRING_VELLYKKET: 'Journalføring vellykket',
TILDEL_OPPGAVE_VELlYKKET: 'Oppgaven er tildelt',
};
6 changes: 6 additions & 0 deletions src/frontend/Felles/Toast/Toast.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ export const Toast: React.FC = () => {
<AlertSuccess>{toastTilTekst[toast]}</AlertSuccess>
</ContainerTopMiddle>
);
case EToast.TILDEL_OPPGAVE_VELlYKKET:
return (
<ContainerTopMiddle>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

<AlertSuccess>{toastTilTekst[toast]}</AlertSuccess>
</ContainerTopMiddle>
);
default:
return (
<ContainerTopRight>
Expand Down
46 changes: 34 additions & 12 deletions src/frontend/Komponenter/Behandling/Høyremeny/TildelOppgave.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useEffect } from 'react';
import React, { useEffect, useState } from 'react';
import { useHentOppgave } from '../../../App/hooks/useHentOppgave';
import { Alert, Button } from '@navikt/ds-react';
import { useOppgave } from '../../../App/hooks/useOppgave';
Expand All @@ -9,6 +9,8 @@ import { useApp } from '../../../App/context/AppContext';
import { useToggles } from '../../../App/context/TogglesContext';
import { ToggleName } from '../../../App/context/toggles';
import { Behandling, BehandlingResultat } from '../../../App/typer/fagsak';
import { useNavigate } from 'react-router-dom';
import { useBehandling } from '../../../App/context/BehandlingContext';

const Container = styled.div`
border: 1px solid ${ABorderSubtle};
Expand All @@ -24,9 +26,18 @@ const Container = styled.div`
const TildelOppgave: React.FC<{ behandling: Behandling }> = ({ behandling }) => {
const { id: behandlingId, resultat, opprettet } = behandling;
const { innloggetSaksbehandler } = useApp();
const { hentOppgave, oppgave, laster, feilmelding } = useHentOppgave(behandlingId);
const {
hentOppgave,
oppgave,
laster,
feilmelding: feilmeldingOppgave,
} = useHentOppgave(behandlingId);
const { settOppgaveTilSaksbehandler } = useOppgave(oppgave);
const { toggles } = useToggles();
const navigate = useNavigate();
const [harTildetOppgave, settHarTildetOppgave] = React.useState<boolean>(false);
const [feilmelding, settFeilmelding] = useState<string>('');
const { hentAnsvarligSaksbehandler } = useBehandling();

const erTilordnetOgInnloggetSaksbehandlerDenSamme =
oppgave?.tilordnetRessurs === innloggetSaksbehandler.navIdent;
Expand All @@ -35,21 +46,31 @@ const TildelOppgave: React.FC<{ behandling: Behandling }> = ({ behandling }) =>
resultat === BehandlingResultat.IKKE_SATT || resultat === BehandlingResultat.AVSLÅTT;

const handleTildelOppgave = () => {
settOppgaveTilSaksbehandler();
window.location.reload();
settFeilmelding('');
settOppgaveTilSaksbehandler()
.then(() => {
hentAnsvarligSaksbehandler.rerun();
settHarTildetOppgave(true);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hvorfor trengs denne? Burde ikke hentAnsvarligSaksbehandler.rerun() være nok?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Den er nødvendig fordi erTilordnetOgInnloggetSaksbehandlerDenSamme ikke blir oppdatert med engang - det finnes sikkert andre måter å gjøre det på, men syntes at denne var enklest.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Skjønner, tenkte ikke over den...

navigate(`/behandling/${behandlingId}/arsak-revurdering`);
})
.catch((error) => {
settFeilmelding(error.message);
});
};

const sjekkOmDetHarGåttMistTiSekunderSidenBehandlingBleOpprettet = (
const sjekkOmDetHarGåttMistEttMinuttSidenBehandlingenBleOpprettet = (
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hvorfor trenger vi denne sjekken?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Når en behandling har blitt opprettet tar det litt tid før ansvarlig saksbehandler blir satt - derfor er ikke sjekken med ansvarlig alltid nok.

opprettet: string
): boolean => {
const opprettetDate = new Date(opprettet);
const nå = new Date();
const tiSekunder = 10 * 1000;
return nå.getTime() - opprettetDate.getTime() > tiSekunder;
const ettMinutt = 60 * 1000;
return nå.getTime() - opprettetDate.getTime() > ettMinutt;
};

const erBehandlingOpprettetForMerEnnTiSekunderSiden =
sjekkOmDetHarGåttMistTiSekunderSidenBehandlingBleOpprettet(opprettet);
const erBehandlingOpprettetForMerEnnEttMinuttSiden =
sjekkOmDetHarGåttMistEttMinuttSidenBehandlingenBleOpprettet(opprettet);

const samletFeilmelding = feilmelding || feilmeldingOppgave;

useEffect(() => {
if (erBehandlingFortsattAktiv) {
Expand All @@ -58,11 +79,12 @@ const TildelOppgave: React.FC<{ behandling: Behandling }> = ({ behandling }) =>
}, [behandlingId, erBehandlingFortsattAktiv, hentOppgave]);

if (
harTildetOppgave ||
erIkkeTogglet ||
laster ||
erTilordnetOgInnloggetSaksbehandlerDenSamme ||
!erBehandlingFortsattAktiv ||
!erBehandlingOpprettetForMerEnnTiSekunderSiden
!erBehandlingOpprettetForMerEnnEttMinuttSiden
) {
return null;
}
Expand All @@ -73,9 +95,9 @@ const TildelOppgave: React.FC<{ behandling: Behandling }> = ({ behandling }) =>
<Button size="small" onClick={handleTildelOppgave}>
Tildel oppgave
</Button>
{feilmelding && (
{samletFeilmelding && (
<Alert size="small" variant={'error'}>
{feilmelding}
{samletFeilmelding}
</Alert>
)}
</Container>
Expand Down