Skip to content

Commit

Permalink
Merge pull request #2590 from navikt/journalføring-2.0-dokumentpanel
Browse files Browse the repository at this point in the history
Journalføring 2.0 dokumentpanel
  • Loading branch information
ViktorGSolberg authored Oct 19, 2023
2 parents 14795a9 + ac053f1 commit 034551a
Show file tree
Hide file tree
Showing 10 changed files with 372 additions and 74 deletions.
33 changes: 29 additions & 4 deletions src/frontend/App/hooks/useJournalføringState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@ import { useApp } from '../context/AppContext';
import { Behandlingstype } from '../typer/behandlingstype';
import { UstrukturertDokumentasjonType } from '../../Komponenter/Journalføring/Standard/VelgUstrukturertDokumentasjonType';
import { EVilkårsbehandleBarnValg } from '../typer/vilkårsbehandleBarnValg';
import { DokumentTitler, IJournalpostResponse } from '../typer/journalføring';
import {
LogiskeVedleggPåDokument,
DokumentTitler,
IJournalpostResponse,
DokumentInfo,
} from '../typer/journalføring';
import { Journalføringsårsak } from '../../Komponenter/Journalføring/Felles/utils';
import { behandlingstemaTilStønadstype, Stønadstype } from '../typer/behandlingstema';
import { HentDokumentResponse, useHentDokument } from './useHentDokument';

export interface BehandlingRequest {
behandlingsId?: string;
Expand Down Expand Up @@ -36,6 +42,8 @@ export interface JournalføringStateRequest {
settBehandling: Dispatch<SetStateAction<BehandlingRequest | undefined>>;
dokumentTitler?: DokumentTitler;
settDokumentTitler: Dispatch<SetStateAction<DokumentTitler | undefined>>;
logiskeVedleggPåDokument?: LogiskeVedleggPåDokument;
settLogiskeVedleggPåDokument: Dispatch<SetStateAction<LogiskeVedleggPåDokument | undefined>>;
innsending: Ressurs<string>;
settInnsending: Dispatch<SetStateAction<Ressurs<string>>>;
fullførJournalføring: () => void;
Expand All @@ -51,12 +59,14 @@ export interface JournalføringStateRequest {
settJournalføringsårsak: Dispatch<SetStateAction<Journalføringsårsak>>;
stønadstype: Stønadstype | undefined;
settStønadstype: Dispatch<SetStateAction<Stønadstype | undefined>>;
valgtDokumentPanel: string;
settValgtDokumentPanel: Dispatch<SetStateAction<string>>;
hentDokumentResponse: HentDokumentResponse;
}

export const useJournalføringState = (
journalResponse: IJournalpostResponse,
oppgaveId: string,
journalpostId: string
oppgaveId: string
): JournalføringStateRequest => {
const utledJournalføringsårsak = () => {
if (journalResponse.harStrukturertSøknad) {
Expand All @@ -68,10 +78,17 @@ export const useJournalføringState = (
}
};

const utledFørsteDokument = (dokumenter: DokumentInfo[]) =>
dokumenter.length > 0 ? dokumenter[0].dokumentInfoId : '';

const { axiosRequest, innloggetSaksbehandler } = useApp();
const hentDokumentResponse = useHentDokument(journalResponse.journalpost);

const [fagsakId, settFagsakId] = useState<string>('');
const [behandling, settBehandling] = useState<BehandlingRequest>();
const [dokumentTitler, settDokumentTitler] = useState<DokumentTitler>();
const [logiskeVedleggPåDokument, settLogiskeVedleggPåDokument] =
useState<LogiskeVedleggPåDokument>(); // TODO: Disse må sendes med til backend for å bli satt
const [innsending, settInnsending] = useState<Ressurs<string>>(byggTomRessurs());
const [visBekreftelsesModal, settVisBekreftelsesModal] = useState<boolean>(false);
const [barnSomSkalFødes, settBarnSomSkalFødes] = useState<BarnSomSkalFødes[]>([]);
Expand All @@ -86,6 +103,9 @@ export const useJournalføringState = (
const [stønadstype, settStønadstype] = useState<Stønadstype | undefined>(
behandlingstemaTilStønadstype(journalResponse.journalpost.behandlingstema)
);
const [valgtDokumentPanel, settValgtDokumentPanel] = useState<string>(
utledFørsteDokument(journalResponse.journalpost.dokumenter)
);

useEffect(() => {
settBehandling(undefined);
Expand Down Expand Up @@ -113,7 +133,7 @@ export const useJournalføringState = (
settInnsending(byggHenterRessurs());
axiosRequest<string, JournalføringRequest>({
method: 'POST',
url: `/familie-ef-sak/api/journalpost/${journalpostId}/fullfor`,
url: `/familie-ef-sak/api/journalpost/${journalResponse.journalpost.journalpostId}/fullfor`,
data,
}).then((resp) => settInnsending(resp));
};
Expand All @@ -125,6 +145,8 @@ export const useJournalføringState = (
settBehandling,
dokumentTitler,
settDokumentTitler,
logiskeVedleggPåDokument,
settLogiskeVedleggPåDokument,
innsending,
settInnsending,
fullførJournalføring,
Expand All @@ -140,5 +162,8 @@ export const useJournalføringState = (
settJournalføringsårsak,
stønadstype,
settStønadstype,
valgtDokumentPanel,
settValgtDokumentPanel,
hentDokumentResponse,
};
};
1 change: 1 addition & 0 deletions src/frontend/App/typer/journalføring.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,4 @@ export interface BrukerInfo {
}

export type DokumentTitler = Record<string, string>;
export type LogiskeVedleggPåDokument = Record<string, string[]>;
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, { useState } from 'react';
import styled from 'styled-components';
import CreatableSelect from 'react-select/creatable';
import { dokumentTitler } from './utils';
import { dokumentTitlerMultiSelect } from './utils';
import { CSSObjectWithLabel, StylesConfig } from 'react-select';
import { Button } from '@navikt/ds-react';
import { ABlue500, ABlue800, ABorderStrong } from '@navikt/ds-tokens/dist/tokens';
Expand Down Expand Up @@ -58,7 +58,7 @@ const EndreDokumentTittel: React.FC<{
<CreatableSelect
styles={customStyles}
placeholder="Velg tittel"
options={dokumentTitler}
options={dokumentTitlerMultiSelect}
formatCreateLabel={(val: string) => `Opprett "${val}"`}
onChange={(value: unknown) => {
settNyttDokumentNavn((value as OptionType).value);
Expand Down
110 changes: 61 additions & 49 deletions src/frontend/Komponenter/Journalføring/Felles/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ import { Behandling, BehandlingResultat } from '../../../App/typer/fagsak';
import { Behandlingstype } from '../../../App/typer/behandlingstype';
import { BehandlingRequest } from '../../../App/hooks/useJournalføringState';
import { BehandlingKlageRequest } from '../../../App/hooks/useJournalføringKlageState';
import { ISelectOption, MultiValue, SingleValue } from '@navikt/familie-form-elements';

export const JOURNALPOST_QUERY_STRING = 'journalpostId';
export const OPPGAVEID_QUERY_STRING = 'oppgaveId';
export type MultiSelectValue = { label: string; value: string };

export const lagJournalføringKlageUrl = (
journalpostId: string,
Expand Down Expand Up @@ -37,55 +39,6 @@ export const utledKolonneTittel = (
return `${prefix}${type}${stønadstype}`;
};

export const dokumentTitler: { value: string; label: string }[] = [
{ value: 'Uttalelse tilbakekreving', label: 'Uttalelse tilbakekreving' },
{ value: 'Uttalelse', label: 'Uttalelse' },
{
value: 'Tilmelding til NAV som reell arbeidssøker ved krav om overgangsstønad',
label: "Tilmelding til NAV som reell arbeidssøker ved krav om overgangsstønad'",
},
{
value: 'Søknad om stønad til skolepenger - enslig mor eller far',
label: 'Søknad om stønad til skolepenger - enslig mor eller far',
},
{
value: 'Søknad om stønad til barnetilsyn - enslig mor eller far i arbeid',
label: 'Søknad om stønad til skolepenger - enslig mor eller far',
},
{
value: 'Søknad om overgangsstønad - enslig mor eller far',
label: 'Søknad om overgangsstønad - enslig mor eller far',
},
{ value: 'Stevning', label: 'Stevning' },
{ value: 'Skatteopplysninger', label: 'Skatteopplysninger' },
{ value: 'Rettsavgjørelse', label: 'Rettsavgjørelse' },
{ value: 'Refusjonskrav/faktura', label: 'Refusjonskrav/faktura' },
{ value: 'Oppholdstillatelse', label: 'Oppholdstillatelse' },
{ value: 'Merknader i ankesak', label: 'Merknader i ankesak' },
{ value: 'Medisinsk dokumentasjon', label: 'Medisinsk dokumentasjon' },
{ value: 'Krav om gjenopptak av ankesak', label: 'Krav om gjenopptak av ankesak' },
{ value: 'Klage/Anke', label: 'Klage/Anke' },
{ value: 'Klage på tilbakekreving', label: 'Klage på tilbakekreving' },
{ value: 'Inntektsopplysninger', label: 'Inntektsopplysninger' },
{ value: 'Grunnblankett', label: 'Grunnblankett' },
{ value: 'Fødselsmelding/Fødselsattest', label: 'Fødselsmelding/Fødselsattest' },
{ value: 'Forespørsel', label: 'Forespørsel' },
{ value: 'EØS-dokument', label: 'EØS-dokument' },
{ value: 'Erklæring samlivsbrudd', label: 'Erklæring samlivsbrudd' },
{
value: 'Enslig mor eller far som er arbeidssøker',
label: 'nslig mor eller far som er arbeidssøker',
},
{ value: 'Endring i sivilstand', label: 'Endring i sivilstand' },
{ value: 'Bekreftelse på utdanning / utgifter', label: 'Bekreftelse på utdanning / utgifter' },
{ value: 'Bekreftelse på tilsynsutgifter', label: 'Bekreftelse på tilsynsutgifter' },
{ value: 'Bekreftelse på termindato', label: 'Bekreftelse på termindato' },
{ value: 'Bekreftelse fra barnevernet', label: 'Bekreftelse fra barnevernet' },
{ value: 'Avtale / avgjørelse om samvær', label: 'Avtale / avgjørelse om samvær' },
{ value: 'Arbeidsforhold', label: 'Arbeidsforhold' },
{ value: 'Anke på tilbakekreving', label: 'Anke på tilbakekreving' },
];

export const utledRiktigBehandlingstype = (
tidligereBehandlinger: Behandling[]
): Behandlingstype => {
Expand All @@ -105,6 +58,65 @@ export const harValgtNyKlageBehandling = (
behandling: BehandlingKlageRequest | undefined
): boolean => behandling !== undefined && behandling.behandlingId === undefined;

const dokumentTitler: string[] = [
'Anke på tilbakekreving',
'Arbeidsforhold',
'Avtale / Avgjørelse om samvær',
'Bekreftelse fra barnevernet',
'Bekreftelse på termindato',
'Bekreftelse på tilsynsutgifter',
'Bekreftelse på utdanning / utgifter',
'Endring i sivilstand',
'Enslig mor eller far som er arbeidssøker',
'Eklæring om samlivsbrudd',
'EØS dokument',
'Forespørsel',
'Fødselsmelding/Fødselsattest',
'Grunnblankett',
'Inntektsopplysninger',
'Klage på tilbakekreving',
'Klage/Anke',
'Krav om gjenopptak av ankesak',
'Medisinsk dokumentasjon',
'Merknader i ankesak',
'Oppholdstillatelse',
'Refusjonskrav/faktura',
'Rettsavgjørelse',
'Skatteopplysninger',
'Stevning',
'Søknad om overgangsstønad',
'Søknad om skolepenger',
'Søknad om barnetilsyn',
'Tilmelding til NAV som reell arbeidssøker ved krav om overgangsstønad',
'Uttalelse',
'Uttalelse tilbakekreving',
];

export const dokumentTitlerMultiSelect: ISelectOption[] = dokumentTitler.map((tittel) => {
return { value: tittel, label: tittel };
});

export const mapDokumentTittelTilMultiselectValue = (tittel: string) => {
return { value: tittel, label: tittel };
};

export const mapLogiskeVedleggTilMultiselectValue = (logiskeVedlegg: string[]) => {
return logiskeVedlegg.map((vedlegg) => {
return { label: vedlegg, value: vedlegg };
});
};

export const mapMultiselectValueTilLogiskeVedlegg = (
values: MultiValue<MultiSelectValue> | SingleValue<MultiSelectValue>
) => {
if ((values as MultiValue<MultiSelectValue>).length !== undefined) {
return (values as MultiValue<MultiSelectValue>).map((value) => value.value);
} else {
const value = values as SingleValue<MultiSelectValue>;
return [value === null ? '' : value.value];
}
};

export enum Journalføringsårsak {
PAPIRSØKNAD = 'PAPIRSØKNAD',
ETTERSENDING = 'ETTERSENDING',
Expand Down
Loading

0 comments on commit 034551a

Please sign in to comment.