diff --git a/components/pageComponents/standard/Oppsummering/SoknadUtenVedleggModal.tsx b/components/pageComponents/standard/Oppsummering/SoknadUtenVedleggModal.tsx
new file mode 100644
index 00000000..4ec6cbde
--- /dev/null
+++ b/components/pageComponents/standard/Oppsummering/SoknadUtenVedleggModal.tsx
@@ -0,0 +1,36 @@
+import { BodyLong, Button, Heading, Modal } from '@navikt/ds-react';
+
+export const SoknadUtenVedleggModal = ({
+ showModal,
+ onSendSoknad,
+ onClose,
+}: {
+ showModal: boolean;
+ onSendSoknad: () => void;
+ onClose: () => void;
+}) => {
+ return (
+
+
+
+ Klarte ikke sende inn søknad med vedlegg
+
+
+
+
+ Vi klarte ikke sende inn søknaden din med vedlegg. Du kan prøve å sende inn søknaden uten
+ vedlegg, eller prøve igjen senere.
+
+ Du kan alltid ettersende vedlegg til søknaden din senere.
+
+
+
+
+
+
+ );
+};
diff --git a/pages/[step].tsx b/pages/[step].tsx
index ac42db98..9390b5b3 100644
--- a/pages/[step].tsx
+++ b/pages/[step].tsx
@@ -5,7 +5,7 @@ import { completeAndGoToNextStep, goToPreviousStep, setStepList } from 'context/
import { useStepWizard } from 'hooks/StepWizardHook';
import { useDebounceLagreSoknad } from 'hooks/useDebounceLagreSoknad';
import { StepWizard } from 'components/StepWizard';
-import { Soknad } from 'types/Soknad';
+import { Soknad, SoknadVedlegg } from 'types/Soknad';
import { fetchPOST } from 'api/fetch';
import { StepNames } from './index';
import StartDato from 'components/pageComponents/standard/StartDato/StartDato';
@@ -31,6 +31,7 @@ import { useSoknad } from 'hooks/SoknadHook';
import {
addBarnIfMissing,
addFastlegeIfMissing,
+ deleteVedlegg,
setSoknadStateFraProps,
} from 'context/soknadcontext/actions';
import { getKrr, KrrKontaktInfo } from 'pages/api/oppslag/krr';
@@ -42,6 +43,8 @@ import { parse } from 'date-fns';
import { Fastlege, getFastlege } from 'pages/api/oppslag/fastlege';
import { migrerMellomlagretBehandler } from 'lib/utils/migrerMellomlagretBehandler';
import { getPerson, Person } from 'pages/api/oppslagapi/person';
+import { SoknadUtenVedleggModal } from 'components/pageComponents/standard/Oppsummering/SoknadUtenVedleggModal';
+import { isDev, isMock } from 'utils/environments';
interface PageProps {
mellomlagretSøknad: SoknadContextState;
@@ -60,6 +63,7 @@ const Steps = ({ person, mellomlagretSøknad, kontaktinformasjon, barn, fastlege
const debouncedLagre = useDebounceLagreSoknad();
const [showFetchErrorMessage, setShowFetchErrorMessage] = useState(false);
+ const [showVedleggErrorMessage, setShowVedleggErrorMessage] = useState(false);
const submitErrorMessageRef = useRef(null);
useEffect(() => {
@@ -98,6 +102,7 @@ const Steps = ({ person, mellomlagretSøknad, kontaktinformasjon, barn, fastlege
const submitSoknad = async () => {
if (currentStep?.name === StepNames.OPPSUMMERING) {
setShowFetchErrorMessage(false);
+ setShowVedleggErrorMessage(false);
const postResponse = await postSøknadMedAAPInnsending(
søknadState.søknad,
@@ -117,6 +122,8 @@ const Steps = ({ person, mellomlagretSøknad, kontaktinformasjon, barn, fastlege
router.push('kvittering');
return true;
+ } else if (postResponse?.status === 412) {
+ setShowVedleggErrorMessage(true);
} else {
setShowFetchErrorMessage(true);
}
@@ -126,6 +133,16 @@ const Steps = ({ person, mellomlagretSøknad, kontaktinformasjon, barn, fastlege
return false;
};
+ const removeAllVedleggFromSoknadAndSubmit = () => {
+ const alleVedlegg = søknadState?.søknad?.vedlegg;
+ Object.keys(alleVedlegg ?? {}).forEach((key) => {
+ const vedlegg = alleVedlegg?.[key];
+ vedlegg?.forEach((vedlegg) => {
+ deleteVedlegg(søknadDispatch, vedlegg, key);
+ });
+ });
+ };
+
const postSøknadMedAAPInnsending = async (søknad?: Soknad, requiredVedlegg?: RequiredVedlegg[]) =>
fetchPOST('/aap/soknad/api/innsending/soknadinnsending/', {
søknad,
@@ -186,6 +203,16 @@ const Steps = ({ person, mellomlagretSøknad, kontaktinformasjon, barn, fastlege
)}
)}
+ {
+ removeAllVedleggFromSoknadAndSubmit();
+ setShowVedleggErrorMessage(false);
+ }}
+ onClose={() => {
+ setShowVedleggErrorMessage(false);
+ }}
+ />
)}
>
diff --git a/pages/api/innsending/soknadinnsending.ts b/pages/api/innsending/soknadinnsending.ts
index b5fff598..99f2f8bd 100644
--- a/pages/api/innsending/soknadinnsending.ts
+++ b/pages/api/innsending/soknadinnsending.ts
@@ -2,7 +2,7 @@ import { beskyttetApi } from 'auth/beskyttetApi';
import { logError, tokenXApiProxy } from '@navikt/aap-felles-utils';
import { NextApiRequest, NextApiResponse } from 'next';
import metrics from 'utils/metrics';
-import { ErrorMedStatus } from 'auth/ErrorMedStatus';
+import { ErrorMedStatus } from 'lib/utils/api/ErrorMedStatus';
import { isFunctionalTest, isMock } from 'utils/environments';
import { createIntl } from 'react-intl';
import { flattenMessages, messages } from 'utils/message';
@@ -117,7 +117,11 @@ export const sendSoknadViaAapInnsending = async (
return 'Vi har mottat søknaden din.';
}
if (isMock()) {
- await deleteCache();
+ try {
+ await deleteCache();
+ } catch (e) {
+ console.error(e);
+ }
return 'Vi har mottat søknaden din.';
}
try {
@@ -131,6 +135,9 @@ export const sendSoknadViaAapInnsending = async (
return søknad;
} catch (error) {
logError('Noe gikk galt ved innsending av søknad', error);
+ if (error instanceof ErrorMedStatus) {
+ throw error;
+ }
throw new Error('Error sending søknad via aap-innsending');
}
};