diff --git a/components/pageComponents/standard/Vedlegg/Vedlegg.test.tsx b/components/pageComponents/standard/Vedlegg/Vedlegg.test.tsx index 33321b49..1f5536e7 100644 --- a/components/pageComponents/standard/Vedlegg/Vedlegg.test.tsx +++ b/components/pageComponents/standard/Vedlegg/Vedlegg.test.tsx @@ -72,7 +72,6 @@ const soknadContextInitial: SoknadContextState = { ], }, requiredVedlegg, - søknadUrl: undefined, }; describe('Vedlegg', () => { diff --git a/context/soknadcontext/soknadContext.tsx b/context/soknadcontext/soknadContext.tsx index 07b09786..61c2286e 100644 --- a/context/soknadcontext/soknadContext.tsx +++ b/context/soknadcontext/soknadContext.tsx @@ -11,7 +11,6 @@ export interface SoknadContextState { søknad?: Soknad; lagretStepList?: Array; requiredVedlegg: RequiredVedlegg[]; - søknadUrl?: string; sistLagret?: string; } @@ -20,7 +19,6 @@ export const soknadContextInititalState: SoknadContextState = { version: SOKNAD_VERSION, søknad: undefined, requiredVedlegg: [], - søknadUrl: undefined, type: SøknadType.STANDARD, }; diff --git a/hooks/useDebounceLagreSoknad.tsx b/hooks/useDebounceLagreSoknad.tsx index f876abb2..a68d9802 100644 --- a/hooks/useDebounceLagreSoknad.tsx +++ b/hooks/useDebounceLagreSoknad.tsx @@ -4,6 +4,7 @@ import { useCallback } from 'react'; import { formatDateTime } from 'utils/date'; import { setSistLagret, useAppStateContext } from 'context/appStateContext'; import { SoknadContextState } from 'context/soknadcontext/soknadContext'; +import { søknadVedleggStateTilFilArray } from 'utils/vedlegg'; export function useDebounceLagreSoknad() { const { appStateDispatch } = useAppStateContext(); @@ -19,8 +20,8 @@ export function useDebounceLagreSoknad() { lagretStepList: stepList, sistLagret: formatDateTime(new Date()), }; - const res = await fetchPOST(`/aap/soknad/api/mellomlagring/lagre`, payload); - if (res.ok) setSistLagret(formatDateTime(new Date()), appStateDispatch); + const res = await mellomLagreSøknad(payload); + if (res?.ok) setSistLagret(formatDateTime(new Date()), appStateDispatch); } const debouncedLagre = () => { @@ -32,3 +33,12 @@ export function useDebounceLagreSoknad() { }; return useCallback(debouncedLagre(), []); } +export async function mellomLagreSøknad(contextState: SoknadContextState) { + if (contextState.søknad) { + const vedlegg = søknadVedleggStateTilFilArray(contextState.søknad); + return await fetchPOST(`/aap/soknad/api/mellomlagring/lagre`, { + soknad: contextState, + vedlegg, + }); + } +} diff --git a/pages/api/innsending/soknadinnsending.ts b/pages/api/innsending/soknadinnsending.ts index c7a86517..b5fff598 100644 --- a/pages/api/innsending/soknadinnsending.ts +++ b/pages/api/innsending/soknadinnsending.ts @@ -20,6 +20,7 @@ import { SOKNAD_VERSION } from 'context/soknadcontext/soknadContext'; import { deleteCache } from 'mock/mellomlagringsCache'; import { simpleTokenXProxy } from 'lib/utils/api/simpleTokenXProxy'; import { IncomingMessage } from 'http'; +import { søknadVedleggStateTilFilArray } from 'utils/vedlegg'; // TODO: Sjekke om vi må generere pdf på samme språk som bruker har valgt når de fyller ut søknaden function getIntl() { @@ -73,21 +74,7 @@ const handler = beskyttetApi(async (req: NextApiRequest, res: NextApiResponse) = søknad: Soknad; requiredVedlegg: RequiredVedlegg[]; }; - - const filer: Fil[] = Object.keys(søknad.vedlegg ?? {}) - .map((key) => { - const vedleggArray = søknad?.vedlegg?.[key]; - const filerArray: Fil[] = - vedleggArray?.map((vedlegg) => { - return { - id: vedlegg.vedleggId, - tittel: mapVedleggTypeTilVedleggTekst(key), - }; - }) ?? []; - - return filerArray; - }) - .flat(); + const filer: Fil[] = søknadVedleggStateTilFilArray(søknad); const etterspurtDokumentasjon = requiredVedlegg?.map((vedlegg) => vedlegg.type); @@ -122,27 +109,6 @@ const handler = beskyttetApi(async (req: NextApiRequest, res: NextApiResponse) = } }); -function mapVedleggTypeTilVedleggTekst(vedleggType: AttachmentType): string { - switch (vedleggType) { - case 'LØNN_OG_ANDRE_GODER': - return 'Dokumentasjon om lønn og andre goder'; - case 'OMSORGSSTØNAD': - return 'Dokumentasjon om omsorgsstønad'; - case 'UTLANDSSTØNAD': - return 'Dokumentasjon om utenlandsstønad'; - case 'SYKESTIPEND': - return 'Dokumentasjon om sykestipend'; - case 'LÅN': - return 'Dokumentasjon om lån'; - case 'AVBRUTT_STUDIE': - return 'Dokumentasjon om avbrutt studie'; - case 'ANNET': - return 'Annen dokumentasjon'; - default: - return 'Dokumentasjon om barn eller fosterbarn'; - } -} - export const sendSoknadViaAapInnsending = async ( innsending: SoknadInnsendingRequestBody, req: IncomingMessage, diff --git a/pages/api/mellomlagring/lagre.ts b/pages/api/mellomlagring/lagre.ts index 10449548..b0aa4814 100644 --- a/pages/api/mellomlagring/lagre.ts +++ b/pages/api/mellomlagring/lagre.ts @@ -34,7 +34,7 @@ export const mellomlagreSøknad = async (data: object, req: IncomingMessage) => if (isMock()) return await lagreCache(JSON.stringify(data)); try { const result = await simpleTokenXProxy({ - url: `${process.env.INNSENDING_URL}/mellomlagring/søknad`, + url: `${process.env.INNSENDING_URL}/mellomlagring/søknad/v2`, method: 'POST', audience: process.env.INNSENDING_AUDIENCE!, body: data, diff --git a/pages/index.tsx b/pages/index.tsx index 5cb48e2f..6bdc4461 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -3,7 +3,6 @@ import React, { useEffect, useRef, useState } from 'react'; import { useRouter } from 'next/router'; import { GetServerSidePropsResult, NextPageContext } from 'next/types'; import { beskyttetSide } from 'auth/beskyttetSide'; -import { fetchPOST } from 'api/fetch'; import { StepType } from 'components/StepWizard/Step'; import { logSkjemaStartetEvent } from 'utils/amplitude'; import metrics from 'utils/metrics'; @@ -13,6 +12,7 @@ import { hentMellomlagring } from 'pages/api/mellomlagring/les'; import { isFunctionalTest } from 'utils/environments'; import { logError, logInfo } from '@navikt/aap-felles-utils'; import { Person, getPerson } from 'pages/api/oppslagapi/person'; +import { mellomLagreSøknad } from 'hooks/useDebounceLagreSoknad'; interface PageProps { person: Person; @@ -54,13 +54,15 @@ const Introduksjon = ({ person }: PageProps) => { setIsLoading(true); setHasError(false); logSkjemaStartetEvent(); - const result = await fetchPOST('/aap/soknad/api/mellomlagring/lagre', { + const initState: SoknadContextState = { version: SOKNAD_VERSION, - søknad: {}, + søknad: { vedlegg: {} }, lagretStepList: defaultStepList, - }); + requiredVedlegg: [], + }; + const result = await mellomLagreSøknad(initState); - if (!result.ok) { + if (!result?.ok) { setIsLoading(false); setHasError(true); } else { diff --git a/utils/vedlegg.ts b/utils/vedlegg.ts new file mode 100644 index 00000000..093ea4f9 --- /dev/null +++ b/utils/vedlegg.ts @@ -0,0 +1,44 @@ +import { Soknad } from 'types/Soknad'; +import { AttachmentType } from 'types/SoknadContext'; + +export interface Fil { + id: string; + tittel: string; +} +export const søknadVedleggStateTilFilArray = (søknad: Soknad) => { + const filer: Fil[] = Object.keys(søknad.vedlegg ?? {}) + .map((key) => { + const vedleggArray = søknad?.vedlegg?.[key]; + const filerArray: Fil[] = + vedleggArray?.map((vedlegg) => { + return { + id: vedlegg.vedleggId, + tittel: mapVedleggTypeTilVedleggTekst(key), + }; + }) ?? []; + + return filerArray; + }) + .flat(); + return filer; +}; +function mapVedleggTypeTilVedleggTekst(vedleggType: AttachmentType): string { + switch (vedleggType) { + case 'LØNN_OG_ANDRE_GODER': + return 'Dokumentasjon om lønn og andre goder'; + case 'OMSORGSSTØNAD': + return 'Dokumentasjon om omsorgsstønad'; + case 'UTLANDSSTØNAD': + return 'Dokumentasjon om utenlandsstønad'; + case 'SYKESTIPEND': + return 'Dokumentasjon om sykestipend'; + case 'LÅN': + return 'Dokumentasjon om lån'; + case 'AVBRUTT_STUDIE': + return 'Dokumentasjon om avbrutt studie'; + case 'ANNET': + return 'Annen dokumentasjon'; + default: + return 'Dokumentasjon om barn eller fosterbarn'; + } +}