Skip to content

Commit

Permalink
Fiks opprettelse av oppfølgingsoppgaver
Browse files Browse the repository at this point in the history
  • Loading branch information
sebassonav committed Feb 25, 2025
1 parent a220125 commit 81affcf
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -257,12 +257,18 @@ internal fun Route.aktivitetspliktRoutes(
}
}
}

get("oppgaver-sak") {
logger.info("Henter oppfølgingsoppgaver for $sakId")
val oppfoelgingsoppgaver = inTransaction { aktivitetspliktOppgaveService.hentOppfoelgingsoppgaver(sakId) }
call.respond(oppfoelgingsoppgaver)
}

post("/opprett") {
val request = call.receive<OpprettOppfoelgingsoppgave>()
aktivitetspliktOppgaveService.opprettOppfoelgingsoppgave(request)
}

route("oppgave-oppfoelging") {
post {
kunSystembruker {
Expand Down Expand Up @@ -292,10 +298,6 @@ internal fun Route.aktivitetspliktRoutes(
}

route("/api/aktivitetsplikt/oppgave") {
post("/opprett") {
val request = call.receive<OpprettOppfoelgingsoppgave>()
aktivitetspliktOppgaveService.opprettOppfoelgingsoppgave(request)
}
route("/{${OPPGAVEID_CALL_PARAMETER}}") {
get {
val oppgaveOgVurdering =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
import { isSuccess, mapResult, mapSuccess, Result } from '~shared/api/apiUtils'
import { isFailure, isPending, isSuccess, mapResult, mapSuccess, Result } from '~shared/api/apiUtils'
import { SakMedBehandlinger } from '~components/person/typer'
import React, { ReactNode, useEffect } from 'react'
import { BodyShort, Box, Button, Heading, Label, VStack } from '@navikt/ds-react'
import { BodyShort, Box, Button, Heading, Label, Tag, VStack } from '@navikt/ds-react'
import { useApiCall } from '~shared/hooks/useApiCall'
import { hentAktivitspliktVurderingForSak, hentOppfoelgingsoppgaver } from '~shared/api/aktivitetsplikt'
import {
hentAktivitspliktVurderingForSak,
hentOppfoelgingsoppgaver,
opprettOppfoelgingsoppgave,
} from '~shared/api/aktivitetsplikt'
import Spinner from '~shared/Spinner'
import { ApiErrorAlert } from '~ErrorBoundary'
import { ApiErrorAlert, ApiWarningAlert } from '~ErrorBoundary'
import { AktivitetspliktTidslinje } from '~components/behandling/aktivitetsplikt/AktivitetspliktTidslinje'
import { hentFamilieOpplysninger } from '~shared/api/pdltjenester'
import { Familiemedlem } from '~shared/types/familieOpplysninger'
Expand All @@ -14,9 +18,11 @@ import { AktivitetspliktStatusTagOgGyldig } from '~shared/tags/AktivitetspliktSt
import {
AktivitetspliktOppfoelgingsOppgave,
AktivitetspliktOppfoelgingsOppgaver,
AktivitetspliktOppgaveVurderingType,
harVurdering,
} from '~shared/types/Aktivitetsplikt'
import { Oppgavetype } from '~shared/types/oppgave'
import { CheckmarkIcon } from '@navikt/aksel-icons'

export const velgDoedsdato = (avdoede: Familiemedlem[] | []): Date => {
if (avdoede.length === 0) return new Date()
Expand All @@ -39,7 +45,9 @@ export const AktivitetspliktSakoversikt = ({
)
const [familieOpplysningerResult, familieOpplysningerFetch] = useApiCall(hentFamilieOpplysninger)

const [hentRes, hentOppfoelgingsoppgaverForSak] = useApiCall(hentOppfoelgingsoppgaver)
const [oppfoelgingsOppgaver, hentOppfoelgingsoppgaverForSak] = useApiCall(hentOppfoelgingsoppgaver)

const [svaropprettOppgave, opprettOppfoelgingsoppgaveReq] = useApiCall(opprettOppfoelgingsoppgave)

useEffect(() => {
if (isSuccess(sakResult)) {
Expand All @@ -49,6 +57,18 @@ export const AktivitetspliktSakoversikt = ({
}
}, [sakResult])

if (isFailure(sakResult)) {
return (
<Box padding="8">
{sakResult.error.status === 404 ? (
<ApiWarningAlert>Kan ikke hente aktivitetsplikt: {sakResult.error.detail}</ApiWarningAlert>
) : (
<ApiErrorAlert>{sakResult.error.detail || 'Feil ved henting av sak'}</ApiErrorAlert>
)}
</Box>
)
}

return (
<Box padding="8" maxWidth="70rem">
{mapResult(hentAktivitetspliktVurderingForSakResult, {
Expand Down Expand Up @@ -86,25 +106,52 @@ export const AktivitetspliktSakoversikt = ({
),
})}

<Box>
{mapResult(hentRes, {
pending: <Spinner label="Henter oppfølgingsoppgave status for sak" />,
error: (error) => (
<ApiErrorAlert>{error.detail || 'Kunne ikke oppfølgingsoppgave status for sak'}</ApiErrorAlert>
),
success: (oppgaver) => (
<>
{!oppfoelging12mndErFerdigstilt(oppgaver) &&
kanOppretteOppgaveAvType(oppgaver, Oppgavetype.AKTIVITETSPLIKT) && (
<Button>Opprett 6 månderers oppfølgingsoppgave</Button>
)}
{kanOppretteOppgaveAvType(oppgaver, Oppgavetype.AKTIVITETSPLIKT_12MND) &&
har6MndVurdering(oppgaver, Oppgavetype.AKTIVITETSPLIKT) && (
<Button>Opprett 12 månderers oppfølgingsoppgave</Button>
<Box padding="8" maxWidth="70rem">
{mapSuccess(sakResult, (data) =>
mapResult(oppfoelgingsOppgaver, {
pending: <Spinner label="Henter oppfølgingsoppgave status for sak" />,
error: (error) => (
<ApiErrorAlert>{error.detail || 'Kunne ikke oppfølgingsoppgave status for sak'}</ApiErrorAlert>
),
success: (oppgaver) => (
<>
{!oppfoelging12mndErFerdigstilt(oppgaver) &&
kanOppretteOppgaveAvType(oppgaver, Oppgavetype.AKTIVITETSPLIKT) && (
<Button
loading={isPending(svaropprettOppgave)}
onClick={() =>
opprettOppfoelgingsoppgaveReq({
sakId: data.sak.id,
vurderingType: AktivitetspliktOppgaveVurderingType.SEKS_MAANEDER,
})
}
>
Opprett 6 månderers oppfølgingsoppgave
</Button>
)}
{kanOppretteOppgaveAvType(oppgaver, Oppgavetype.AKTIVITETSPLIKT_12MND) &&
har6MndVurdering(oppgaver, Oppgavetype.AKTIVITETSPLIKT) && (
<Button
loading={isPending(svaropprettOppgave)}
onClick={() =>
opprettOppfoelgingsoppgaveReq({
sakId: data.sak.id,
vurderingType: AktivitetspliktOppgaveVurderingType.SEKS_MAANEDER,
})
}
>
Opprett 12 månderers oppfølgingsoppgave
</Button>
)}
{isSuccess(svaropprettOppgave) && (
<Tag variant="success">
<CheckmarkIcon aria-hidden /> Oppgaven ble opprettet
</Tag>
)}
</>
),
})}
</>
),
})
)}
</Box>
</Box>
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {
AktivitetspliktOppfoelgingsOppgave,
AktivitetspliktOppfolging,
AktivitetspliktOppgaveVurdering,
AktivitetspliktOppgaveVurderingType,
IAktivitetHendelse,
IAktivitetPeriode,
IAktivitetPerioderOgHendelser,
Expand Down Expand Up @@ -89,6 +90,15 @@ export const hentOppfoelgingsoppgaver = async (args: {
}): Promise<ApiResponse<AktivitetspliktOppfoelgingsOppgave[]>> =>
apiClient.get(`/sak/${args.sakId}/aktivitetsplikt/oppgaver-sak`)

export const opprettOppfoelgingsoppgave = async (args: {
sakId: number
vurderingType: AktivitetspliktOppgaveVurderingType
}) =>
apiClient.post(`/sak/${args.sakId}/aktivitetsplikt/opprett`, {
sakId: args.sakId,
type: args.vurderingType,
})

export const redigerAktivitetsgradForOppgave = async (args: {
sakId: number
oppgaveId: string
Expand Down

0 comments on commit 81affcf

Please sign in to comment.