diff --git a/.nais/fyllut/config.yaml b/.nais/fyllut/config.yaml index 201b1b431..068fb037f 100644 --- a/.nais/fyllut/config.yaml +++ b/.nais/fyllut/config.yaml @@ -101,6 +101,8 @@ spec: value: {{pdl-token-scope-cluster}} - name: AMPLITUDE_API_ENDPOINT value: "https://amplitude.nav.no/collect-auto" + - name: FORMS_API_URL + value: {{forms-api-url}}{{^forms-api-url}}http://forms-api.fyllut-sendinn{{/forms-api-url}} {{#each environmentVars}} - name: {{this.name}} value: {{this.value}} diff --git a/.nais/fyllut/dev-delingslenke.yaml b/.nais/fyllut/dev-delingslenke.yaml index d799ddd37..d1760bf3b 100644 --- a/.nais/fyllut/dev-delingslenke.yaml +++ b/.nais/fyllut/dev-delingslenke.yaml @@ -10,6 +10,7 @@ skjemabygging-proxy-client-id: 95170319-b4d7-4190-8271-118ed19bafbf skjemabygging-proxy-url: https://skjemabygging-proxy.dev-fss-pub.nais.io send-inn-token-x-client-id: dev-gcp:team-soknad:innsending-api send-inn-host: http://innsending-api.team-soknad +forms-api-url: https://forms-api.nav.no kodeverk: url: https://kodeverk-api.nav.no scope: dev-gcp.team-rocket.kodeverk-api @@ -49,3 +50,4 @@ accessPolicy: - host: skjemabygging-proxy.dev-fss-pub.nais.io - host: formio-api.intern.dev.nav.no - host: kodeverk-api.nav.no + - host: forms-api.nav.no diff --git a/.nais/fyllut/dev.yaml b/.nais/fyllut/dev.yaml index 35d1f712c..f9d5dd64d 100644 --- a/.nais/fyllut/dev.yaml +++ b/.nais/fyllut/dev.yaml @@ -37,6 +37,9 @@ accessPolicy: - application: nav-dekoratoren namespace: personbruker cluster: dev-gcp + - application: forms-api + namespace: fyllut-sendinn + cluster: dev-gcp external: - host: skjemabygging-proxy.dev-fss-pub.nais.io - host: formio-api.intern.dev.nav.no diff --git a/.nais/fyllut/preprod-alt.yaml b/.nais/fyllut/preprod-alt.yaml index c32644731..c0c6e5ce7 100644 --- a/.nais/fyllut/preprod-alt.yaml +++ b/.nais/fyllut/preprod-alt.yaml @@ -44,6 +44,9 @@ accessPolicy: - application: nav-dekoratoren namespace: personbruker cluster: dev-gcp + - application: forms-api + namespace: fyllut-sendinn + cluster: dev-gcp external: - host: skjemabygging-proxy.dev-fss-pub.nais.io - host: formio-api.intern.dev.nav.no diff --git a/.nais/fyllut/preprod.yaml b/.nais/fyllut/preprod.yaml index 48c1ac789..c807ea709 100644 --- a/.nais/fyllut/preprod.yaml +++ b/.nais/fyllut/preprod.yaml @@ -45,6 +45,9 @@ accessPolicy: - application: nav-dekoratoren namespace: personbruker cluster: dev-gcp + - application: forms-api + namespace: fyllut-sendinn + cluster: dev-gcp external: - host: skjemabygging-proxy.dev-fss-pub.nais.io - host: formio-api.intern.dev.nav.no diff --git a/.nais/fyllut/prod.yaml b/.nais/fyllut/prod.yaml index decba58a9..8f00fc36d 100644 --- a/.nais/fyllut/prod.yaml +++ b/.nais/fyllut/prod.yaml @@ -42,6 +42,9 @@ accessPolicy: - application: kodeverk-api namespace: team-rocket cluster: prod-gcp + - application: forms-api + namespace: fyllut-sendinn + cluster: prod-gcp external: - host: skjemabygging-proxy.prod-fss-pub.nais.io - host: formio-api.intern.nav.no diff --git a/packages/bygger/cypress/e2e/diff.spec.cy.ts b/packages/bygger/cypress/e2e/diff.spec.cy.ts index 8f89bfa38..0d6be739b 100644 --- a/packages/bygger/cypress/e2e/diff.spec.cy.ts +++ b/packages/bygger/cypress/e2e/diff.spec.cy.ts @@ -5,7 +5,7 @@ describe('Diff', () => { cy.intercept('GET', '/api/published-forms/dif123456', { fixture: 'form123456-published.json' }).as( 'getPublishedForm', ); - cy.intercept('GET', '/mottaksadresse/submission', { fixture: 'mottakadresse.json' }).as('getMottakAdresse'); + cy.intercept('GET', '/api/recipients', { fixture: 'recipients.json' }).as('getRecipients'); cy.intercept('GET', /language\/submission?.*/, { fixture: 'globalTranslations.json' }).as('getTranslations'); cy.intercept('GET', '/api/temakoder', { fixture: 'temakoder.json' }).as('getTemaKoder'); }); @@ -16,7 +16,7 @@ describe('Diff', () => { cy.wait('@getConfig'); cy.wait('@getForm'); cy.wait('@getPublishedForm'); - cy.wait('@getMottakAdresse'); + cy.wait('@getRecipients'); cy.wait('@getTemaKoder'); cy.wait('@getTranslations'); }); diff --git a/packages/bygger/cypress/e2e/form-builder.spec.cy.ts b/packages/bygger/cypress/e2e/form-builder.spec.cy.ts index 73dd36cda..2294d1d3e 100644 --- a/packages/bygger/cypress/e2e/form-builder.spec.cy.ts +++ b/packages/bygger/cypress/e2e/form-builder.spec.cy.ts @@ -5,7 +5,6 @@ describe('Form Builder', () => { beforeEach(() => { cy.intercept('GET', '/api/config', { fixture: 'config.json' }).as('getConfig'); cy.intercept('GET', /language\/submission?.*/, { fixture: 'globalTranslations.json' }).as('getTranslations'); - cy.intercept('GET', '/mottaksadresse/submission', { fixture: 'mottakadresse.json' }).as('getMottakAdresse'); cy.intercept('GET', '/api/temakoder', { fixture: 'temakoder.json' }).as('getTemaKoder'); }); diff --git a/packages/bygger/cypress/e2e/settings.spec.cy.ts b/packages/bygger/cypress/e2e/settings.spec.cy.ts index fac229e8c..cbf0f45ab 100644 --- a/packages/bygger/cypress/e2e/settings.spec.cy.ts +++ b/packages/bygger/cypress/e2e/settings.spec.cy.ts @@ -22,7 +22,7 @@ describe('FormSettingsPage', () => { fixture: 'getForm.json', }).as('getForm'); cy.intercept('GET', '/api/published-forms/*', { statusCode: 404 }).as('getPublishedForm'); - cy.intercept('GET', '/mottaksadresse/submission', { fixture: 'mottakadresse.json' }).as('getMottakAdresse'); + cy.intercept('GET', '/api/recipients', { fixture: 'recipients.json' }).as('getRecipients'); cy.intercept('GET', /language\/submission?.*/, { fixture: 'globalTranslations.json' }).as('getTranslations'); cy.intercept('GET', '/api/temakoder', { fixture: 'temakoder.json' }).as('getTemaKoder'); cy.visit('forms/cypresssettings/settings'); diff --git a/packages/bygger/cypress/fixtures/recipients.json b/packages/bygger/cypress/fixtures/recipients.json new file mode 100644 index 000000000..bcc813e7c --- /dev/null +++ b/packages/bygger/cypress/fixtures/recipients.json @@ -0,0 +1,123 @@ +[ + { + "recipientId": "6173f82ea9a3430003fac933", + "name": "NAV Skanning sykmelding del A ", + "poBoxAddress": "Postboks 1411 Sentrum ", + "postalCode": "0109", + "postalName": "Oslo", + "createdAt": "2021-10-23T13:55:26.568+02:00", + "createdBy": "IMPORT", + "changedAt": "2021-10-25T19:14:21.371+02:00", + "changedBy": "IMPORT" + }, + { + "recipientId": "6177bea68e0d00000370f2ef", + "name": "NAV Pensjon", + "poBoxAddress": "Postboks 6600 Etterstad", + "postalCode": "0607", + "postalName": "Oslo", + "createdAt": "2021-10-26T10:39:02.454+02:00", + "createdBy": "IMPORT", + "changedAt": "2021-10-26T10:39:02.455+02:00", + "changedBy": "IMPORT" + }, + { + "recipientId": "61af4b3a1127300003cb8d31", + "name": "NAV Familie- og pensjonsytelser Oslo 2", + "poBoxAddress": "Postboks 6600 Etterstad", + "postalCode": "0607", + "postalName": "Oslo", + "createdAt": "2021-12-07T12:53:30.409+01:00", + "createdBy": "IMPORT", + "changedAt": "2021-12-07T12:53:30.41+01:00", + "changedBy": "IMPORT" + }, + { + "recipientId": "61c09f91ec962a0003c65014", + "name": "NAV Skanning bidrag", + "poBoxAddress": "PB 6215 Etterstad", + "postalCode": "0603", + "postalName": "Oslo", + "createdAt": "2021-12-20T16:21:53.673+01:00", + "createdBy": "IMPORT", + "changedAt": "2021-12-20T16:21:53.685+01:00", + "changedBy": "IMPORT" + }, + { + "recipientId": "6246de1afd03d2caeeda2825", + "name": "NAV Arbeid og ytelser lønnsgaranti", + "poBoxAddress": "Postboks 6683 St. Olavs Plass", + "postalCode": "0129", + "postalName": "Oslo", + "createdAt": "2022-04-01T13:12:26.434+02:00", + "createdBy": "IMPORT", + "changedAt": "2022-04-01T13:12:26.438+02:00", + "changedBy": "IMPORT" + }, + { + "recipientId": "62bc3f3f4a6e0d0bbc83bf30", + "name": "NAV Økonomi pensjon", + "poBoxAddress": "Postboks 6600 Etterstad", + "postalCode": "0607", + "postalName": "Oslo", + "createdAt": "2022-06-29T14:02:07.432+02:00", + "createdBy": "IMPORT", + "changedAt": "2022-06-29T14:02:07.433+02:00", + "changedBy": "IMPORT" + }, + { + "recipientId": "6536331ef0f518e1e5cf0a30", + "name": "NAV skanning", + "poBoxAddress": "Postboks 1402", + "postalCode": "0109", + "postalName": "Oslo", + "createdAt": "2023-10-23T10:47:26.101+02:00", + "createdBy": "IMPORT", + "changedAt": "2023-10-23T10:47:26.103+02:00", + "changedBy": "IMPORT" + }, + { + "recipientId": "65aa418f3ad9b63ae4a0d5a9", + "name": "NAV Registerforvaltning - Tipsmottaket", + "poBoxAddress": "Postboks 4330", + "postalCode": "2308", + "postalName": "Hamar", + "createdAt": "2024-01-19T10:31:59.353+01:00", + "createdBy": "IMPORT", + "changedAt": "2024-01-19T10:31:59.355+01:00", + "changedBy": "IMPORT" + }, + { + "recipientId": "6173f7e7a9a3430003fac931", + "name": "NAV Økonomi Stønad", + "poBoxAddress": "Postboks 354", + "postalCode": "8601", + "postalName": "MO I RANA", + "createdAt": "2021-10-23T13:54:15.537+02:00", + "createdBy": "IMPORT", + "changedAt": "2024-10-16T12:18:09.155434+02:00", + "changedBy": "Lars Olav Torvik" + }, + { + "recipientId": "90ead851-04e1-4f64-83e7-2e45a93a649d", + "name": "NAV Test 3", + "poBoxAddress": "Postboks 3", + "postalCode": "0591", + "postalName": "Oslo", + "createdAt": "2024-10-10T21:10:51.218632+02:00", + "createdBy": "Ann Katrin Gagnat", + "changedAt": "2024-10-16T13:51:04.336741+02:00", + "changedBy": "Ann Katrin Gagnat" + }, + { + "recipientId": "6177c7998e0d00000370f2f1", + "name": "NAV Registerforvaltning 2", + "poBoxAddress": "Tipsmottaket", + "postalCode": "2308", + "postalName": "Hamar", + "createdAt": "2021-10-26T11:17:13.075+02:00", + "createdBy": "IMPORT", + "changedAt": "2024-10-18T10:29:09.889821+02:00", + "changedBy": "Ann Katrin Gagnat" + } +] diff --git a/packages/bygger/src/AuthenticatedApp.jsx b/packages/bygger/src/AuthenticatedApp.jsx index d4b9f8dce..8b91253d0 100644 --- a/packages/bygger/src/AuthenticatedApp.jsx +++ b/packages/bygger/src/AuthenticatedApp.jsx @@ -4,7 +4,6 @@ import { FormsRouter } from './Forms'; import ImportFormsPage from './import/ImportFormsPage'; import BulkPublishPage from './migration/BulkPublishPage'; import MigrationRouter from './migration/MigrationRouter'; -import MottaksadresserPage from './mottaksadresser/MottaksadresserPage'; import RecipientsPage from './recipients/RecipientsPage'; import ReportsPage from './reports/ReportsPage'; import TranslationsRouter from './translations/TranslationsRouter'; @@ -16,7 +15,6 @@ function AuthenticatedApp({ serverURL, formio }) { } /> } /> } /> - } /> } /> } /> } /> diff --git a/packages/bygger/src/Forms/settings/FormSettingsPage.tsx b/packages/bygger/src/Forms/settings/FormSettingsPage.tsx index 684c27194..9e0b461a8 100644 --- a/packages/bygger/src/Forms/settings/FormSettingsPage.tsx +++ b/packages/bygger/src/Forms/settings/FormSettingsPage.tsx @@ -8,6 +8,7 @@ import RowLayout from '../../components/layout/RowLayout'; import Title from '../../components/layout/Title'; import TitleRowLayout from '../../components/layout/TitleRowLayout'; import { useForm } from '../../context/form/FormContext'; +import RecipientsProvider from '../../context/recipients/RecipientsContext'; import PublishModalComponents from '../publish/PublishModalComponents'; import FormSettingsSidebar from './FormSettingsSidebar'; @@ -67,7 +68,9 @@ export function FormSettingsPage({ form }: FormSettingsPageProps) { /> } > - + + + { +vi.mock('../../context/recipients/RecipientsContext', () => { return { - default: () => ({ - ready: true, - mottaksadresser: mockMottaksadresser, - errorMessage: undefined, + useRecipients: () => ({ + isReady: true, + recipients: mockRecipients, }), }; }); diff --git a/packages/bygger/src/components/FormMetaDataEditor/fields/AddressFields.tsx b/packages/bygger/src/components/FormMetaDataEditor/fields/AddressFields.tsx index b2a333d4a..5e9bf97c5 100644 --- a/packages/bygger/src/components/FormMetaDataEditor/fields/AddressFields.tsx +++ b/packages/bygger/src/components/FormMetaDataEditor/fields/AddressFields.tsx @@ -1,7 +1,7 @@ -import { Alert, Link, Select } from '@navikt/ds-react'; -import { MottaksadresseData, NavFormSettingsDiff, NavFormType } from '@navikt/skjemadigitalisering-shared-domain'; +import { Link, Select } from '@navikt/ds-react'; +import { NavFormSettingsDiff, NavFormType, Recipient } from '@navikt/skjemadigitalisering-shared-domain'; import { Link as ReactRouterLink } from 'react-router-dom'; -import useMottaksadresser from '../../../hooks/useMottaksadresser'; +import { useRecipients } from '../../../context/recipients/RecipientsContext'; import LabelWithDiff from '../LabelWithDiff'; import { UpdateFormFunction } from '../utils/utils'; @@ -15,17 +15,10 @@ const AddressFields = ({ onChange, diff, form }: AddressFieldsProps) => { const innsending = form.properties.innsending || 'PAPIR_OG_DIGITAL'; const mottaksadresseId = form.properties.mottaksadresseId; const isLockedForm = form.properties.isLockedForm; - const { mottaksadresser, ready: isMottaksAdresserReady, errorMessage: mottaksadresseError } = useMottaksadresser(); + const { isReady: isMottaksAdresserReady, recipients } = useRecipients(); - const toAddressString = (address: MottaksadresseData) => { - const linjer = [address.adresselinje1]; - if (address.adresselinje2) { - linjer.push(address.adresselinje2); - } - if (address.adresselinje3) { - linjer.push(address.adresselinje3); - } - return `${linjer.join(', ')}, ${address.postnummer} ${address.poststed}`; + const toAddressString = (recipient: Recipient) => { + return `${recipient.name}, ${recipient.poBoxAddress}, ${recipient.postalCode} ${recipient.postalName}`; }; return ( @@ -53,21 +46,16 @@ const AddressFields = ({ onChange, diff, form }: AddressFieldsProps) => { - {mottaksadresser.map((adresse) => ( - ))} - {mottaksadresseError && ( - - {mottaksadresseError} - - )} )}
- + Rediger mottaksadresser
diff --git a/packages/bygger/src/components/Navbar/components/AdminMenu.tsx b/packages/bygger/src/components/Navbar/components/AdminMenu.tsx index 0bd7604d2..ea6b18845 100644 --- a/packages/bygger/src/components/Navbar/components/AdminMenu.tsx +++ b/packages/bygger/src/components/Navbar/components/AdminMenu.tsx @@ -1,5 +1,5 @@ import { System } from '@navikt/ds-icons'; -import { Dropdown, InternalHeader, Tag } from '@navikt/ds-react'; +import { Dropdown, InternalHeader } from '@navikt/ds-react'; import useUnsavedChangesModal from '../../../hooks/useUnsavedChangesModal'; import { AdminMenuLink } from './AdminMenuLink'; @@ -32,18 +32,10 @@ const AdminMenu = ({ showImport = false }) => { Bulkpublisering - - - Rediger mottaksadresser - - Mottakere - - Beta - diff --git a/packages/bygger/src/fakeBackend/mock-recipients.ts b/packages/bygger/src/fakeBackend/mock-recipients.ts new file mode 100644 index 000000000..a91d6e124 --- /dev/null +++ b/packages/bygger/src/fakeBackend/mock-recipients.ts @@ -0,0 +1,20 @@ +import { Recipient } from '@navikt/skjemadigitalisering-shared-domain'; + +const recipients: Recipient[] = [ + { + recipientId: '1', + name: 'NAV alternativ skanning', + poBoxAddress: 'Postboks 3', + postalCode: '0591', + postalName: 'Oslo', + }, + { + recipientId: '2', + name: 'NAV skanning Molde', + poBoxAddress: 'Storgata 1', + postalCode: '6400', + postalName: 'Molde', + }, +]; + +export default recipients; diff --git a/packages/bygger/src/hooks/useFormioTranslations.ts b/packages/bygger/src/hooks/useFormioTranslations.ts index 0a81b4203..e9f7599d3 100644 --- a/packages/bygger/src/hooks/useFormioTranslations.ts +++ b/packages/bygger/src/hooks/useFormioTranslations.ts @@ -114,7 +114,7 @@ export const useFormioTranslations = (serverURL, formio) => { 'Publiseringen inneholdt ingen endringer og ble avsluttet (nytt bygg av Fyllut ble ikke trigget)', ); } - } catch (error) { + } catch (_error) { feedbackEmit.error('Publisering feilet'); } }, @@ -409,7 +409,7 @@ export const useFormioTranslations = (serverURL, formio) => { `Globale oversettelser for ${languagesInNorwegian[languageCode]} er kopiert fra produksjon.`, ); return Promise.resolve(); - } catch (err) { + } catch (_err) { feedbackEmit.error( `Feil oppstod ved forsøk på å kopiere globale oversettelser for ${languagesInNorwegian[languageCode]} fra produksjon.`, ); diff --git a/packages/bygger/src/hooks/useFormsApiRecipients.ts b/packages/bygger/src/hooks/useFormsApiRecipients.ts index 3172aadd0..de60f3f58 100644 --- a/packages/bygger/src/hooks/useFormsApiRecipients.ts +++ b/packages/bygger/src/hooks/useFormsApiRecipients.ts @@ -1,5 +1,5 @@ -import { http as baseHttp, useAppConfig } from '@navikt/skjemadigitalisering-shared-components'; -import { Recipient } from '@navikt/skjemadigitalisering-shared-domain'; +import { http as baseHttp, NavFormioJs, useAppConfig } from '@navikt/skjemadigitalisering-shared-components'; +import { NavFormType, Recipient } from '@navikt/skjemadigitalisering-shared-domain'; import { useFeedbackEmit } from '../context/notifications/FeedbackContext'; const useFormsApiRecipients = () => { @@ -46,6 +46,12 @@ const useFormsApiRecipients = () => { const deleteRecipient = async (recipientId: string): Promise => { try { + const forms = await getFormsWithMottaksadresse(recipientId); + if (forms.length > 0) { + const skjemanummerliste = forms.map((form) => form.properties.skjemanummer).join(', '); + feedbackEmit.error(`Mottakeren brukes i følgende skjema: ${skjemanummerliste}`); + return; + } return await http.delete(`${baseUrl}/${recipientId}`); } catch (error) { const message = (error as Error)?.message; @@ -53,6 +59,17 @@ const useFormsApiRecipients = () => { } }; + // Verify that no form refers to the recipient before deleting it. This check should be done in the Forms API when + // form definitions are moved there too. + const getFormsWithMottaksadresse = async (recipientId: string): Promise => { + return fetch( + `${NavFormioJs.Formio.getProjectUrl()}/form?type=form&tags=nav-skjema&limit=1000&properties.mottaksadresseId=${recipientId}`, + { + method: 'GET', + }, + ).then((forms) => forms.json()); + }; + return { getAll, post, diff --git a/packages/bygger/src/mottaksadresser/MottaksadresseEditor.tsx b/packages/bygger/src/mottaksadresser/MottaksadresseEditor.tsx deleted file mode 100644 index a8d457299..000000000 --- a/packages/bygger/src/mottaksadresser/MottaksadresseEditor.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { Button, Heading, Panel } from '@navikt/ds-react'; -import { AppConfigProvider, makeStyles, NavForm, NavFormioJs } from '@navikt/skjemadigitalisering-shared-components'; -import { Mottaksadresse } from '@navikt/skjemadigitalisering-shared-domain'; -import cloneDeep from 'lodash.clonedeep'; -import { useState } from 'react'; -import Column from '../components/layout/Column'; - -const useStyles = makeStyles({ - panel: { - display: 'flex', - }, - panelContentMain: { - flexGrow: 1, - }, -}); - -interface Props { - mottaksadresse?: Mottaksadresse; - onSubmitDone: () => void; - onEdit?: () => void; - onCancel: () => void; - onFormReady: () => void; - deleteMottaksadresse?: (mottaksadresseId: string) => Promise; - editMode: boolean; - loadingForm: boolean; -} - -const MottaksadresseEditor = ({ - mottaksadresse, - editMode, - onEdit = () => {}, - onCancel, - deleteMottaksadresse, - onFormReady, - onSubmitDone, - loadingForm, -}: Props) => { - const styles = useStyles(); - const [deleting, setDeleting] = useState(false); - - const onDelete = () => { - if (deleteMottaksadresse && mottaksadresse) { - setDeleting(true); - deleteMottaksadresse(mottaksadresse._id).catch(() => setDeleting(false)); - } - }; - - return ( - -
- {editMode && ( - <> - {!mottaksadresse && ( - - Ny mottaksadresse - - )} - - - - - )} - {(!editMode || loadingForm) && mottaksadresse && ( -
- - {mottaksadresse.data.adresselinje1} - -
{mottaksadresse.data.adresselinje2}
-
{mottaksadresse.data.adresselinje3}
-
- {mottaksadresse.data.postnummer} {mottaksadresse.data.poststed} -
- {mottaksadresse.data.temakoder &&
Tema: {mottaksadresse.data.temakoder}
} -
- )} -
- {(!editMode || loadingForm) && mottaksadresse && ( - - )} - {!mottaksadresse && loadingForm &&
Laster skjema...
} -
-
- - {editMode && !loadingForm && ( - <> - {!!mottaksadresse && deleteMottaksadresse && ( - - )} - - - )} - -
- ); -}; - -export default MottaksadresseEditor; diff --git a/packages/bygger/src/mottaksadresser/MottaksadresserListe.test.tsx b/packages/bygger/src/mottaksadresser/MottaksadresserListe.test.tsx deleted file mode 100644 index 4e0ee42fb..000000000 --- a/packages/bygger/src/mottaksadresser/MottaksadresserListe.test.tsx +++ /dev/null @@ -1,147 +0,0 @@ -import { NavFormioJs } from '@navikt/skjemadigitalisering-shared-components'; -import { render, screen, waitFor, waitForElementToBeRemoved, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import mockMottaksadresser from '../../example_data/mottaksadresser.json'; -import createMockImplementation, { DEFAULT_PROJECT_URL } from '../../test/backendMockImplementation'; -import MottaksadresserListe from './MottaksadresserListe'; - -describe('MottaksadresseListe', () => { - let windowSpy, formioSpy, globalFetchSpy; - - beforeAll(() => { - NavFormioJs.Formio.setProjectUrl(DEFAULT_PROJECT_URL); - windowSpy = vi.spyOn(window, 'scrollTo'); - windowSpy.mockImplementation(() => {}); - formioSpy = vi.spyOn(NavFormioJs.Formio, 'fetch'); - formioSpy.mockImplementation(createMockImplementation()); - globalFetchSpy = vi.spyOn(global, 'fetch'); - globalFetchSpy.mockImplementation(createMockImplementation()); - }); - - afterAll(() => { - windowSpy.mockRestore(); - }); - - afterEach(() => { - formioSpy.mockClear(); - globalFetchSpy.mockClear(); - }); - - const renderMottaksadresseListe = async () => { - render(); - await waitForElementToBeRemoved(() => screen.queryByText('Laster mottaksadresser...')); - }; - - it('Rendrer alle mottaksadresser', async () => { - await renderMottaksadresseListe(); - mockMottaksadresser.forEach((adresse) => { - expect(screen.queryByRole('heading', { name: adresse.data.adresselinje1 })).toBeTruthy(); - }); - }); - - it('Lagrer endring av postnummer', async () => { - await renderMottaksadresseListe(); - const adresse = mockMottaksadresser[0]; - const panel = screen.getByTestId(`mottaksadressepanel-${adresse._id}`); - const endreKnapp = await within(panel).getByRole('button', { name: 'Endre' }); - expect(endreKnapp).toBeTruthy(); - await userEvent.click(endreKnapp); - - const postnummerInput = await screen.findByLabelText('Postnummer'); - expect(postnummerInput).toBeTruthy(); - await userEvent.clear(postnummerInput); - await userEvent.type(postnummerInput, '1234'); - - const saveButton = await within(panel).findByRole('button', { name: 'Lagre' }); - await waitFor(() => userEvent.click(saveButton)); - - expect(formioSpy).toHaveBeenCalledTimes(2); - expect(formioSpy).toHaveBeenNthCalledWith( - 2, - `${DEFAULT_PROJECT_URL}/mottaksadresse/submission/${adresse._id}`, - expect.objectContaining({ method: 'PUT' }), - ); - - expect(await within(panel).findByRole('button', { name: 'Endre' })).toBeTruthy(); - }); - - it('Lagrer ny mottaksadresse', async () => { - await renderMottaksadresseListe(); - const leggTilNyKnapp = screen.getByRole('button', { name: 'Legg til ny' }); - expect(leggTilNyKnapp).toBeTruthy(); - await userEvent.click(leggTilNyKnapp); - - const panel = await screen.findByTestId('mottaksadressepanel-new'); - - await userEvent.type(screen.getByLabelText('Adresselinje1', { exact: false }), 'TEST skanning'); - await userEvent.type(screen.getByLabelText('Adresselinje2', { exact: false }), 'Postboks 3'); - await userEvent.type(screen.getByLabelText('Postnummer', { exact: false }), '1500'); - await userEvent.type(screen.getByLabelText('Poststed', { exact: false }), 'Dalen'); - - const saveButton = await within(panel).findByRole('button', { name: 'Lagre' }); - await waitFor(() => userEvent.click(saveButton)); - - expect(formioSpy).toHaveBeenCalledTimes(2); - expect(formioSpy).toHaveBeenNthCalledWith( - 2, - `${DEFAULT_PROJECT_URL}/mottaksadresse/submission`, - expect.objectContaining({ method: 'POST' }), - ); - - const data = JSON.parse(formioSpy.mock.calls[1][1].body).data; - expect(data.adresselinje1).toBe('TEST skanning'); - expect(data.adresselinje2).toBe('Postboks 3'); - expect(data.postnummer).toBe('1500'); - expect(data.poststed).toBe('Dalen'); - }); - - it('Lagrer ikke ny mottaksadresse når poststed ikke er oppgitt', async () => { - await renderMottaksadresseListe(); - await userEvent.click(screen.getByRole('button', { name: 'Legg til ny' })); - - const panel = await screen.findByTestId('mottaksadressepanel-new'); - - await userEvent.type(screen.getByLabelText('Adresselinje1', { exact: false }), 'TEST skanning'); - await userEvent.type(screen.getByLabelText('Adresselinje2', { exact: false }), 'Postboks 3'); - await userEvent.type(screen.getByLabelText('Postnummer', { exact: false }), '1500'); - - // Ignore console.log from formio that logs the components when error. - vi.spyOn(console, 'log').mockImplementation(() => {}); - - await userEvent.click(await within(panel).findByRole('button', { name: 'Lagre' })); - expect(await screen.findAllByText('Du må fylle ut: Poststed', { exact: false })).toHaveLength(2); - }); - - it('Avbryter endring av mottaksadresser', async () => { - await renderMottaksadresseListe(); - const adresse = mockMottaksadresser[1]; - const panel = screen.getByTestId(`mottaksadressepanel-${adresse._id}`); - await userEvent.click(await within(panel).getByRole('button', { name: 'Endre' })); - - const adresselinje1Input = await screen.findByLabelText('Adresselinje1'); - expect(adresselinje1Input).toBeTruthy(); - await userEvent.clear(adresselinje1Input); - await userEvent.type(adresselinje1Input, 'Skogen'); - await userEvent.click(await within(panel).findByRole('button', { name: 'Avbryt' })); - - expect(await within(panel).findByRole('button', { name: 'Endre' })).toBeTruthy(); - expect(await within(panel).findByRole('heading', { name: adresse.data.adresselinje1 })).toBeTruthy(); - }); - - it('Sletter mottaksadresse', async () => { - await renderMottaksadresseListe(); - const adresse = mockMottaksadresser[2]; - const panel = screen.getByTestId(`mottaksadressepanel-${adresse._id}`); - await userEvent.click(await within(panel).findByRole('button', { name: 'Endre' })); - - const slettKnapp = await within(panel).findByRole('button', { name: 'Slett' }); - await waitFor(() => userEvent.click(slettKnapp)); - - expect(globalFetchSpy).toHaveBeenCalledTimes(4); - expect(globalFetchSpy).toHaveBeenNthCalledWith( - 3, - `${DEFAULT_PROJECT_URL}/mottaksadresse/submission/${adresse._id}`, - expect.objectContaining({ method: 'DELETE' }), - ); - }); -}); diff --git a/packages/bygger/src/mottaksadresser/MottaksadresserListe.tsx b/packages/bygger/src/mottaksadresser/MottaksadresserListe.tsx deleted file mode 100644 index f48663fbf..000000000 --- a/packages/bygger/src/mottaksadresser/MottaksadresserListe.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { Alert, Button, VStack } from '@navikt/ds-react'; -import { useState } from 'react'; -import RowLayout from '../components/layout/RowLayout'; -import SidebarLayout from '../components/layout/SidebarLayout'; -import UserFeedback from '../components/UserFeedback'; -import useMottaksadresser from '../hooks/useMottaksadresser'; -import MottaksadresseEditor from './MottaksadresseEditor'; - -const MottaksadresserListe = () => { - const { mottaksadresser, ready, errorMessage, loadMottaksadresser, deleteMottaksadresse, publishMottaksadresser } = - useMottaksadresser(); - const [editAddressId, setEditAddressId] = useState(undefined); - const [loadingForm, setLoadingForm] = useState(false); - const [publishing, setPublishing] = useState(false); - - const onSubmitDone = () => { - setEditAddressId(undefined); - loadMottaksadresser(); - }; - - const editMottaksadresse = (id) => { - setLoadingForm(true); - setEditAddressId(id); - }; - - const clearEditAddressId = () => { - setEditAddressId(undefined); - }; - - const onPublish = () => { - setPublishing(true); - publishMottaksadresser().finally(() => setPublishing(false)); - }; - - return ( - - - - - - - - } - > -
- {!ready && 'Laster mottaksadresser...'} - {errorMessage && {errorMessage}} - {editAddressId === 'new' && ( - setLoadingForm(false)} - loadingForm={loadingForm} - editMode - /> - )} - - {mottaksadresser.map((entity) => ( - editMottaksadresse(entity._id)} - onCancel={clearEditAddressId} - onFormReady={() => setLoadingForm(false)} - onSubmitDone={onSubmitDone} - deleteMottaksadresse={deleteMottaksadresse} - loadingForm={editAddressId === entity._id && loadingForm} - /> - ))} - -
-
- ); -}; - -export default MottaksadresserListe; diff --git a/packages/bygger/src/mottaksadresser/MottaksadresserPage.test.tsx b/packages/bygger/src/mottaksadresser/MottaksadresserPage.test.tsx deleted file mode 100644 index c2bd84f5f..000000000 --- a/packages/bygger/src/mottaksadresser/MottaksadresserPage.test.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { AppConfigProvider } from '@navikt/skjemadigitalisering-shared-components'; -import { render, screen } from '@testing-library/react'; -import { MemoryRouter } from 'react-router-dom'; -import featureToggles from '../../test/featureToggles'; -import MottaksadresserPage from './MottaksadresserPage'; - -vi.mock('./MottaksadresserListe', () => { - return { - default: () =>
mottaksadresserliste
, - }; -}); - -describe('MottaksadressePage', () => { - it('rendrer siden med overskrift', async () => { - render( - - - - - , - ); - expect(await screen.findByRole('heading', { name: 'Mottaksadresser' })).toBeTruthy(); - }); -}); diff --git a/packages/bygger/src/mottaksadresser/MottaksadresserPage.tsx b/packages/bygger/src/mottaksadresser/MottaksadresserPage.tsx deleted file mode 100644 index 1d0c5a236..000000000 --- a/packages/bygger/src/mottaksadresser/MottaksadresserPage.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { AppLayout } from '../components/AppLayout'; -import Title from '../components/layout/Title'; -import TitleRowLayout from '../components/layout/TitleRowLayout'; -import MottaksadresserListe from './MottaksadresserListe'; - -const MottaksadresserPage = () => { - return ( - - - Mottaksadresser - - - - - ); -}; - -export default MottaksadresserPage; diff --git a/packages/fyllut-backend/src/config/config.ts b/packages/fyllut-backend/src/config/config.ts index 826dbe642..e7f9914bc 100644 --- a/packages/fyllut-backend/src/config/config.ts +++ b/packages/fyllut-backend/src/config/config.ts @@ -113,6 +113,7 @@ const localDevelopmentConfig: DefaultConfig = { }, amplitude, frontendLoggerConfig, + formsApiUrl: process.env.FORMS_API_URL || 'https://forms-api.intern.dev.nav.no', }; const defaultConfig: DefaultConfig = { @@ -138,6 +139,7 @@ const defaultConfig: DefaultConfig = { idporten, amplitude, frontendLoggerConfig, + formsApiUrl: process.env.FORMS_API_URL!, }; const config: ConfigType = { diff --git a/packages/fyllut-backend/src/config/types.d.ts b/packages/fyllut-backend/src/config/types.d.ts index 963e8c842..8281a23c4 100644 --- a/packages/fyllut-backend/src/config/types.d.ts +++ b/packages/fyllut-backend/src/config/types.d.ts @@ -59,6 +59,7 @@ export type DefaultConfig = { noDecorator?: boolean; amplitude: AmplitudeConfig; frontendLoggerConfig: FrontendLoggerConfigType; + formsApiUrl: string; }; export type ConfigType = DefaultConfig & { diff --git a/packages/fyllut-backend/src/routers/api/forsteside.test.ts b/packages/fyllut-backend/src/routers/api/forsteside.test.ts index 434bf5a7d..1b62ca17c 100644 --- a/packages/fyllut-backend/src/routers/api/forsteside.test.ts +++ b/packages/fyllut-backend/src/routers/api/forsteside.test.ts @@ -59,15 +59,6 @@ describe('[endpoint] forsteside', () => { }); describe('validateForstesideRequest', () => { - it('Find address if no address and theme is set on existing address', async () => { - const body = await validateForstesideRequest({ - tema: 'HJE', - } as ForstesideRequestBody); - - expect(body.netsPostboks).toBeUndefined(); - expect(body.adresse).toBeDefined(); - }); - it('If theme is set not on existing address, use default netsPostboks', async () => { const body = await validateForstesideRequest({ tema: 'HJR', diff --git a/packages/fyllut-backend/src/routers/api/forsteside.ts b/packages/fyllut-backend/src/routers/api/forsteside.ts index 439b51a55..beea03eae 100644 --- a/packages/fyllut-backend/src/routers/api/forsteside.ts +++ b/packages/fyllut-backend/src/routers/api/forsteside.ts @@ -1,11 +1,10 @@ -import { ForstesideRequestBody, Mottaksadresse } from '@navikt/skjemadigitalisering-shared-domain'; +import { ForstesideRequestBody } from '@navikt/skjemadigitalisering-shared-domain'; import { NextFunction, Request, Response } from 'express'; import correlator from 'express-correlation-id'; import fetch, { BodyInit, HeadersInit } from 'node-fetch'; import { config } from '../../config/config'; import { logger } from '../../logger'; import { responseToError } from '../../utils/errorHandling.js'; -import { loadMottaksadresser } from './mottaksadresser'; const { skjemabyggingProxyUrl } = config; @@ -24,27 +23,6 @@ const forsteside = { }; const validateForstesideRequest = async (forsteside: ForstesideRequestBody) => { - if (forsteside.tema && !forsteside.adresse) { - const mottaksadresser: Mottaksadresse[] = await loadMottaksadresser(); - const addresses = mottaksadresser - .map((mottaksadresse) => mottaksadresse.data) - .filter((mottaksadresseData) => mottaksadresseData.temakoder?.includes(forsteside.tema)); - - if (addresses.length > 0) { - forsteside.adresse = { - adresselinje1: addresses[0].adresselinje1, - adresselinje2: addresses[0].adresselinje2, - adresselinje3: addresses[0].adresselinje3, - postnummer: addresses[0].postnummer, - poststed: addresses[0].poststed, - }; - - if (addresses.length > 1) { - logger.warn(`Multiple addresses setup with theme: ${forsteside.tema}`); - } - } - } - if (!forsteside.adresse && !forsteside.netsPostboks) { forsteside.netsPostboks = '1400'; } diff --git a/packages/fyllut-backend/src/routers/api/index.js b/packages/fyllut-backend/src/routers/api/index.js index 5d7cebb1c..39397335f 100644 --- a/packages/fyllut-backend/src/routers/api/index.js +++ b/packages/fyllut-backend/src/routers/api/index.js @@ -17,6 +17,7 @@ import globalTranslations from './global-translations.js'; import log from './log'; import mottaksadresser from './mottaksadresser.js'; import pdl from './pdl'; +import recipients from './recipients'; import sendInnSoknad from './send-inn-soknad'; import sendInnUtfyltSoknad from './send-inn-utfylt-soknad'; import activities from './send-inn/activities/send-inn-activities'; @@ -38,6 +39,7 @@ apiRouter.post('/foersteside', azureSkjemabyggingProxy, forsteside.post); apiRouter.get('/global-translations/:languageCode', tryCatch(globalTranslations.get)); apiRouter.get('/translations/:form', tryCatch(translations.get)); apiRouter.get('/mottaksadresser', tryCatch(mottaksadresser.get)); +apiRouter.get('/recipients', tryCatch(recipients.get)); apiRouter.get('/send-inn/aktive-opprettede-soknader/:skjemanummer', tokenxSendInn, tryCatch(activeTasks.get)); apiRouter.get('/send-inn/soknad/:innsendingsId', tokenxSendInn, sendInnSoknad.get); apiRouter.delete('/send-inn/soknad/:innsendingsId', tokenxSendInn, sendInnSoknad.delete); diff --git a/packages/fyllut-backend/src/routers/api/recipients.ts b/packages/fyllut-backend/src/routers/api/recipients.ts new file mode 100644 index 000000000..259501bc9 --- /dev/null +++ b/packages/fyllut-backend/src/routers/api/recipients.ts @@ -0,0 +1,22 @@ +import { Request, Response } from 'express'; +import correlator from 'express-correlation-id'; +import fetch from 'node-fetch'; +import { config } from '../../config/config'; +import { responseToError } from '../../utils/errorHandling'; + +const recipients = { + get: async (_req: Request, res: Response) => { + const response = await fetch(`${config.formsApiUrl}/v1/recipients`, { + method: 'GET', + headers: { + 'x-correlation-id': correlator.getId() as string, + }, + }); + if (response.ok) { + return res.json(await response.json()); + } + throw await responseToError(response, 'Failed to fetch recipients'); + }, +}; + +export default recipients; diff --git a/packages/shared-components/src/api/mottaksadresser/fetchMottaksadresser.ts b/packages/shared-components/src/api/mottaksadresser/fetchMottaksadresser.ts deleted file mode 100644 index 8888fd4c0..000000000 --- a/packages/shared-components/src/api/mottaksadresser/fetchMottaksadresser.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Mottaksadresse } from '@navikt/skjemadigitalisering-shared-domain'; - -export async function fetchMottaksadresser(baseUrl = ''): Promise { - return await fetch(`${baseUrl}/mottaksadresser`).then((response) => { - if (response.ok) { - return response.json(); - } - return []; - }); -} diff --git a/packages/shared-components/src/api/recipients/fetchRecipients.ts b/packages/shared-components/src/api/recipients/fetchRecipients.ts new file mode 100644 index 000000000..4f6d7f06c --- /dev/null +++ b/packages/shared-components/src/api/recipients/fetchRecipients.ts @@ -0,0 +1,10 @@ +import { Recipient } from '@navikt/skjemadigitalisering-shared-domain'; + +export async function fetchRecipients(baseUrl = ''): Promise { + return await fetch(`${baseUrl}/api/recipients`).then((response) => { + if (response.ok) { + return response.json(); + } + return []; + }); +} diff --git a/packages/shared-components/src/components/letter/download/LetterDownload.tsx b/packages/shared-components/src/components/letter/download/LetterDownload.tsx index 82bae9f69..8b3d5a7fa 100644 --- a/packages/shared-components/src/components/letter/download/LetterDownload.tsx +++ b/packages/shared-components/src/components/letter/download/LetterDownload.tsx @@ -1,7 +1,7 @@ import { BodyShort, Button, Heading } from '@navikt/ds-react'; import { Enhet, NavFormType, TEXTS } from '@navikt/skjemadigitalisering-shared-domain'; import { useEffect, useState } from 'react'; -import { fetchMottaksadresser } from '../../../api/mottaksadresser/fetchMottaksadresser'; +import { fetchRecipients } from '../../../api/recipients/fetchRecipients'; import { useAmplitude } from '../../../context/amplitude'; import { useLanguages } from '../../../context/languages'; import { genererFoerstesideData } from '../../../util/forsteside/forsteside'; @@ -21,8 +21,8 @@ class CorrelationIdError extends Error { } async function lastNedFoersteside(form, submission, fyllutBaseURL, language, enhetNummer) { - const mottaksadresser = enhetNummer ? [] : await fetchMottaksadresser(fyllutBaseURL); - const body = genererFoerstesideData(form, submission.data, language, mottaksadresser, enhetNummer); + const recipients = enhetNummer ? [] : await fetchRecipients(fyllutBaseURL); + const body = genererFoerstesideData(form, submission.data, language, recipients, enhetNummer); return fetch(`${fyllutBaseURL}/api/foersteside`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, diff --git a/packages/shared-components/src/pages/prepare-letter/PrepareLetterPage.test.tsx b/packages/shared-components/src/pages/prepare-letter/PrepareLetterPage.test.tsx index 1e716dff9..9d36cde35 100644 --- a/packages/shared-components/src/pages/prepare-letter/PrepareLetterPage.test.tsx +++ b/packages/shared-components/src/pages/prepare-letter/PrepareLetterPage.test.tsx @@ -114,7 +114,7 @@ describe('PrepareLetterPage', () => { //@ts-expect-error fetchMock.mockImplementation((url) => { const urlString = url as string; - if (urlString.endsWith('/mottaksadresser')) { + if (urlString.endsWith('/recipients')) { return Promise.resolve(new Response(JSON.stringify([]), RESPONSE_HEADERS)); } if (urlString.endsWith('/api/foersteside')) { diff --git a/packages/shared-components/src/util/forsteside/forsteside.test.ts b/packages/shared-components/src/util/forsteside/forsteside.test.ts index b2694ae4c..48325ce29 100644 --- a/packages/shared-components/src/util/forsteside/forsteside.test.ts +++ b/packages/shared-components/src/util/forsteside/forsteside.test.ts @@ -1,8 +1,8 @@ import { Component, ForstesideRequestBody, - Mottaksadresse, NavFormType, + Recipient, SubmissionData, SubmissionYourInformation, } from '@navikt/skjemadigitalisering-shared-domain'; @@ -345,24 +345,20 @@ describe('forsteside', () => { it('finds and returns the correct mottaksadresse when mottaksadresseId and mottaksadresser is provided', () => { expect( getRecipients('002', [ - { _id: '001', data: { adresselinje1: 'Gate 1', postnummer: '0001', poststed: 'By' } }, + { recipientId: '001', name: 'Gate 1', poBoxAddress: 'PB 123', postalCode: '0001', postalName: 'By' }, { - _id: '002', - data: { - adresselinje1: 'Gate 2', - adresselinje2: 'postboks 2', - adresselinje3: 'c/o', - postnummer: '0002', - poststed: 'By', - }, + recipientId: '002', + name: 'Gate 2', + poBoxAddress: 'postboks 2', + postalCode: '0002', + postalName: 'By', }, - { _id: '003', data: { adresselinje1: 'Gate 3', postnummer: '0003', poststed: 'By' } }, - ] as Mottaksadresse[]), + { recipientId: '003', name: 'Gate 3', poBoxAddress: 'PB 321', postalCode: '0003', postalName: 'By' }, + ] as Recipient[]), ).toStrictEqual({ adresse: { adresselinje1: 'Gate 2', adresselinje2: 'postboks 2', - adresselinje3: 'c/o', postnummer: '0002', poststed: 'By', }, @@ -372,8 +368,8 @@ describe('forsteside', () => { it("returns default netsPostboks if mottaksadresseId doesn't match any of the provided mottaksadresse", () => { expect( getRecipients('123', [ - { _id: '001', data: { adresselinje1: 'Gate 1', postnummer: '0001', poststed: 'By' } }, - ] as Mottaksadresse[]), + { recipientId: '001', name: 'Gate 1', poBoxAddress: 'PB 1', postalCode: '0001', postalName: 'By' }, + ] as Recipient[]), ).toStrictEqual({ netsPostboks: '1400' }); }); diff --git a/packages/shared-components/src/util/forsteside/forsteside.ts b/packages/shared-components/src/util/forsteside/forsteside.ts index bb9ac5665..5e5b2b369 100644 --- a/packages/shared-components/src/util/forsteside/forsteside.ts +++ b/packages/shared-components/src/util/forsteside/forsteside.ts @@ -1,7 +1,7 @@ import { ForstesideRequestBody, - Mottaksadresse, NavFormType, + Recipient, SubmissionData, } from '@navikt/skjemadigitalisering-shared-domain'; import { @@ -17,7 +17,7 @@ const genererFoerstesideData = ( form: NavFormType, submission: SubmissionData, language = 'nb-NO', - recipients: Mottaksadresse[] = [], + recipients: Recipient[] = [], unitNumber?: string, ): ForstesideRequestBody => { const { diff --git a/packages/shared-components/src/util/forsteside/forstesideUtils.ts b/packages/shared-components/src/util/forsteside/forstesideUtils.ts index 7d206462a..3d81d5b22 100644 --- a/packages/shared-components/src/util/forsteside/forstesideUtils.ts +++ b/packages/shared-components/src/util/forsteside/forstesideUtils.ts @@ -1,9 +1,9 @@ import { + ForstesideRecipientAddress, KjentBruker, - Mottaksadresse, - MottaksadresseData, NavFormType, navFormUtils, + Recipient, SubmissionAttachmentValue, SubmissionData, SubmissionYourInformation, @@ -106,13 +106,20 @@ const parseLanguage = (language: string) => { const getRecipients = ( id?: string, - recipients?: Mottaksadresse[], + recipients?: Recipient[], unitNumber?: string, -): { adresse: MottaksadresseData } | { enhetsnummer?: string; netsPostboks: string } => { +): { adresse: ForstesideRecipientAddress } | { enhetsnummer?: string; netsPostboks: string } => { if (id && recipients) { - const recipient = recipients.find((a) => a._id === id); + const recipient = recipients.find((r) => r.recipientId === id); if (recipient) { - return { adresse: { ...recipient.data } }; + return { + adresse: { + adresselinje1: recipient.name, + adresselinje2: recipient.poBoxAddress, + postnummer: recipient.postalCode, + poststed: recipient.postalName, + }, + }; } } if (unitNumber) { diff --git a/packages/shared-domain/src/forsteside/index.ts b/packages/shared-domain/src/forsteside/index.ts index fc443dcf8..8182841bf 100644 --- a/packages/shared-domain/src/forsteside/index.ts +++ b/packages/shared-domain/src/forsteside/index.ts @@ -1,5 +1,3 @@ -import { MottaksadresseData } from '../mottaksadresse'; - type ForstesideType = 'SKJEMA' | 'ETTERSENDELSE'; interface Bruker { @@ -25,8 +23,16 @@ export interface ForstesideRequestBody { vedleggsliste: string[]; dokumentlisteFoersteside: string[]; netsPostboks?: string; - adresse?: MottaksadresseData; + adresse?: ForstesideRecipientAddress; bruker?: Bruker; ukjentBrukerPersoninfo?: string; enhetsnummer?: string; } + +export interface ForstesideRecipientAddress { + adresselinje1: string; + adresselinje2?: string; + adresselinje3?: string; + postnummer: string; + poststed: string; +} diff --git a/packages/shared-domain/src/index.ts b/packages/shared-domain/src/index.ts index ba307ec88..b64680969 100644 --- a/packages/shared-domain/src/index.ts +++ b/packages/shared-domain/src/index.ts @@ -41,7 +41,7 @@ import { SubmissionMethod, UsageContext, } from './form'; -import { ForstesideRequestBody, KjentBruker, UkjentBruker } from './forsteside'; +import { ForstesideRecipientAddress, ForstesideRequestBody, KjentBruker, UkjentBruker } from './forsteside'; import languagesUtil from './languages/languagesUtil'; import type { FormioTranslation, @@ -184,6 +184,7 @@ export type { FormioTranslationMap, FormioTranslationPayload, FormsResponseForm, + ForstesideRecipientAddress, ForstesideRequestBody, FrontendLoggerConfigType, FyllutState,