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..42a527ba 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,17 @@ const Steps = ({ person, mellomlagretSøknad, kontaktinformasjon, barn, fastlege return false; }; + const removeAllVedleggFromSoknadAndSubmit = async () => { + const alleVedlegg = søknadState?.søknad?.vedlegg; + Object.keys(alleVedlegg ?? {}).forEach((key) => { + const vedlegg = alleVedlegg?.[key]; + vedlegg?.forEach((vedlegg) => { + deleteVedlegg(søknadDispatch, vedlegg, key); + }); + }); + await submitSoknad(); + }; + const postSøknadMedAAPInnsending = async (søknad?: Soknad, requiredVedlegg?: RequiredVedlegg[]) => fetchPOST('/aap/soknad/api/innsending/soknadinnsending/', { søknad, @@ -186,6 +204,16 @@ const Steps = ({ person, mellomlagretSøknad, kontaktinformasjon, barn, fastlege )} )} + { + setShowVedleggErrorMessage(false); + removeAllVedleggFromSoknadAndSubmit(); + }} + onClose={() => { + setShowVedleggErrorMessage(false); + }} + /> )} @@ -234,6 +262,19 @@ export const getServerSideProps = beskyttetSide( mellomlagretSøknad = migrerMellomlagretBehandler(mellomlagretSøknad); } + if ((isDev() || isMock()) && mellomlagretSøknad) { + mellomlagretSøknad = { + ...mellomlagretSøknad, + søknad: { + ...mellomlagretSøknad?.søknad, + vedlegg: { + ...mellomlagretSøknad?.søknad?.vedlegg, + ANNET: [{ vedleggId: '1', name: 'test.pdf', size: 2, type: 'application/pdf' }], + }, + }, + }; + } + let barn: Barn[] = []; try { barn = await getBarn(bearerToken); diff --git a/pages/api/innsending/soknadinnsending.ts b/pages/api/innsending/soknadinnsending.ts index b5fff598..b5203c08 100644 --- a/pages/api/innsending/soknadinnsending.ts +++ b/pages/api/innsending/soknadinnsending.ts @@ -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 {