Skip to content

Commit d547f47

Browse files
committed
Clean up forsteside
1 parent ec72500 commit d547f47

File tree

5 files changed

+293
-223
lines changed

5 files changed

+293
-223
lines changed

packages/shared-components/src/pages/prepare-letter/PrepareLetterPage.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import LoadingComponent from '../../components/loading/LoadingComponent';
1313
import { useAppConfig } from '../../context/config/configContext';
1414
import { useLanguages } from '../../context/languages';
1515
import { scrollToAndSetFocus } from '../../util/focus-management/focus-management';
16-
import { getVedleggsFelterSomSkalSendes } from '../../util/forsteside/forsteside';
16+
import { getAttachments } from '../../util/forsteside/forstesideUtils';
1717
import makeStyles from '../../util/styles/jss/jss';
1818

1919
const compareEnheter = (enhetA, enhetB) => enhetA.navn.localeCompare(enhetB.navn, 'nb');
@@ -80,7 +80,7 @@ export function PrepareLetterPage({ form, submission, translations, formUrl }: P
8080
return <LoadingComponent />;
8181
}
8282

83-
const attachments = getVedleggsFelterSomSkalSendes(submission.data, form);
83+
const attachments = getAttachments(submission.data, form);
8484
const hasAttachments = attachments.length > 0;
8585

8686
return (
Original file line numberDiff line numberDiff line change
@@ -1,234 +1,39 @@
1+
import { ForstesideRequestBody, Mottaksadresse, SubmissionDefault } from '@navikt/skjemadigitalisering-shared-domain';
12
import {
2-
ForstesideRequestBody,
3-
KjentBruker,
4-
Mottaksadresse,
5-
MottaksadresseData,
6-
NavFormType,
7-
navFormUtils,
8-
SubmissionAttachmentValue,
9-
SubmissionData,
10-
UkjentBruker,
11-
} from '@navikt/skjemadigitalisering-shared-domain';
12-
13-
type BrukerInfo = KjentBruker | UkjentBruker;
14-
15-
const adressLine = (text, prefix?) => {
16-
if (text) {
17-
return prefix ? `${prefix} ${text}, ` : `${text}, `;
18-
}
19-
return '';
20-
};
21-
22-
export function genererPersonalia(fnrEllerDnr?: string, adresse?: Adresse): BrukerInfo {
23-
if (fnrEllerDnr) {
24-
return {
25-
bruker: {
26-
brukerId: fnrEllerDnr,
27-
brukerType: 'PERSON',
28-
},
29-
};
30-
} else if (adresse) {
31-
return {
32-
ukjentBrukerPersoninfo:
33-
adressLine(adresse.navn) +
34-
adressLine(adresse.co, 'c/o') +
35-
adressLine(adresse.postboksEier, 'c/o') +
36-
adressLine(adresse.adresse) +
37-
adressLine(adresse.bygning) +
38-
(adresse.postnr || '') +
39-
(adresse.sted ? ` ${adressLine(adresse.sted)}` : '') +
40-
adressLine(adresse.region) +
41-
(adresse.land ? `${adresse.land}.` : ''),
42-
};
43-
} else {
44-
throw Error('User needs to submit either fodselsNummer or address');
45-
}
46-
}
47-
48-
export function genererSkjemaTittel(skjemaTittel, skjemanummer) {
49-
return `${skjemanummer} ${skjemaTittel}`;
50-
}
51-
52-
export function getVedleggsFelterSomSkalSendes(submissionData: SubmissionData, form: NavFormType) {
53-
return navFormUtils
54-
.flattenComponents(form.components)
55-
.filter((component) => component.properties && !!component.properties.vedleggskode)
56-
.filter(
57-
(component) =>
58-
submissionData[component.key] === 'leggerVedNaa' ||
59-
(submissionData[component.key] as SubmissionAttachmentValue)?.key === 'leggerVedNaa',
60-
);
61-
}
62-
63-
export function genererVedleggsListe(form: NavFormType, submissionData: SubmissionData): string[] {
64-
return getVedleggsFelterSomSkalSendes(submissionData, form).map((component) => component.properties!.vedleggstittel!);
65-
}
66-
67-
export function genererDokumentlisteFoersteside(
68-
skjemaTittel: string,
69-
skjemanummer: string,
70-
form: NavFormType,
71-
submissionData: SubmissionData,
72-
) {
73-
return [
74-
genererSkjemaTittel(skjemaTittel, skjemanummer),
75-
...getVedleggsFelterSomSkalSendes(submissionData, form).map((component) => component.label),
76-
];
77-
}
78-
79-
interface NorskVegadresse {
80-
coSoker: string;
81-
vegadresseSoker: string;
82-
postnrSoker: string;
83-
poststedSoker: string;
84-
}
85-
86-
interface NorskPostboksAdresse {
87-
coSoker: string;
88-
postboksNrSoker: string;
89-
postnrSoker: string;
90-
poststedSoker: string;
91-
}
92-
93-
interface UtenlandskAdresse {
94-
coSoker: string;
95-
postboksNrSoker: string;
96-
bygningSoker: string;
97-
postkodeSoker: string;
98-
poststedSoker: string;
99-
landSoker: string;
100-
regionSoker: string;
101-
}
102-
103-
type Submission = {
104-
fornavnSoker: string;
105-
etternavnSoker: string;
106-
coSoker?: string;
107-
postnummerSoker?: string;
108-
postnrSoker?: string;
109-
utenlandskPostkodeSoker?: string;
110-
poststedSoker: string;
111-
landSoker?: string;
112-
gateadresseSoker?: string;
113-
norskVegadresse?: NorskVegadresse;
114-
norskPostboksadresse?: NorskPostboksAdresse;
115-
utenlandskAdresse?: UtenlandskAdresse;
116-
};
117-
118-
type Adresse = {
119-
navn: string;
120-
co?: string;
121-
postboksEier?: string;
122-
adresse?: string;
123-
bygning?: string;
124-
postnr?: string;
125-
sted: string;
126-
region?: string;
127-
land?: string;
128-
};
129-
130-
export function genererAdresse(submission: Submission): Adresse {
131-
const {
132-
fornavnSoker,
133-
etternavnSoker,
134-
coSoker,
135-
gateadresseSoker,
136-
poststedSoker,
137-
postnummerSoker,
138-
postnrSoker,
139-
landSoker,
140-
utenlandskPostkodeSoker,
141-
norskVegadresse,
142-
norskPostboksadresse,
143-
utenlandskAdresse,
144-
} = submission;
145-
return {
146-
navn: fornavnSoker || etternavnSoker ? `${fornavnSoker} ${etternavnSoker}` : '',
147-
co: (norskVegadresse && norskVegadresse.coSoker) || (utenlandskAdresse && utenlandskAdresse.coSoker) || coSoker,
148-
postboksEier: norskPostboksadresse && norskPostboksadresse.coSoker,
149-
adresse:
150-
(norskVegadresse && norskVegadresse.vegadresseSoker) ||
151-
(norskPostboksadresse &&
152-
norskPostboksadresse.postboksNrSoker &&
153-
`Postboks ${norskPostboksadresse.postboksNrSoker}`) ||
154-
(utenlandskAdresse && utenlandskAdresse.postboksNrSoker) ||
155-
gateadresseSoker,
156-
bygning: utenlandskAdresse && utenlandskAdresse.bygningSoker,
157-
postnr:
158-
(norskVegadresse && norskVegadresse.postnrSoker) ||
159-
(norskPostboksadresse && norskPostboksadresse.postnrSoker) ||
160-
(utenlandskAdresse && utenlandskAdresse.postkodeSoker) ||
161-
postnrSoker ||
162-
utenlandskPostkodeSoker ||
163-
postnummerSoker,
164-
sted:
165-
(norskVegadresse && norskVegadresse.poststedSoker) ||
166-
(norskPostboksadresse && norskPostboksadresse.poststedSoker) ||
167-
(utenlandskAdresse && utenlandskAdresse.poststedSoker) ||
168-
poststedSoker,
169-
region: utenlandskAdresse && utenlandskAdresse.regionSoker,
170-
land:
171-
landSoker ||
172-
(utenlandskAdresse && utenlandskAdresse.landSoker) ||
173-
((norskVegadresse || norskPostboksadresse) && 'Norge'),
174-
};
175-
}
176-
177-
const parseLanguage = (language) => {
178-
switch (language) {
179-
case 'nn-NO':
180-
return 'NN';
181-
case 'nb-NO':
182-
return 'NB';
183-
case 'en':
184-
default:
185-
return 'EN';
186-
}
187-
};
188-
189-
export function genererMottaksadresse(
190-
mottaksadresseId: string | undefined,
191-
mottaksadresser: Mottaksadresse[],
192-
enhetNummer?: string,
193-
): { adresse: MottaksadresseData } | { enhetsnummer?: string; netsPostboks: string } {
194-
if (mottaksadresseId) {
195-
const mottaksadresse = mottaksadresser.find((a) => a._id === mottaksadresseId);
196-
if (mottaksadresse) {
197-
return { adresse: { ...mottaksadresse.data } };
198-
}
199-
}
200-
if (enhetNummer) {
201-
return {
202-
enhetsnummer: enhetNummer,
203-
netsPostboks: '1400',
204-
};
205-
}
206-
return { netsPostboks: '1400' };
207-
}
208-
209-
export function genererFoerstesideData(
3+
getAttachmentLabels,
4+
getAttachmentTitles,
5+
getRecipients,
6+
getTitle,
7+
getUserData,
8+
parseLanguage,
9+
} from './forstesideUtils';
10+
11+
const genererFoerstesideData = (
21012
form,
211-
submission,
13+
submission: SubmissionDefault,
21214
language = 'nb-NO',
213-
mottaksadresser: Mottaksadresse[] = [],
214-
enhetNummer?: string,
215-
): ForstesideRequestBody {
15+
recipients: Mottaksadresse[] = [],
16+
unitNumber?: string,
17+
): ForstesideRequestBody => {
21618
const {
21719
properties: { skjemanummer, tema, mottaksadresseId },
21820
title,
21921
} = form;
220-
const { fodselsnummerDNummerSoker } = submission;
221-
const adresse = genererAdresse(submission);
22+
23+
const formTitle = getTitle(title, skjemanummer);
24+
22225
return {
223-
...genererPersonalia(fodselsnummerDNummerSoker, adresse),
26+
...getUserData(submission),
22427
foerstesidetype: 'SKJEMA',
22528
navSkjemaId: skjemanummer,
22629
spraakkode: parseLanguage(language),
227-
overskriftstittel: genererSkjemaTittel(title, skjemanummer),
228-
arkivtittel: genererSkjemaTittel(title, skjemanummer),
30+
overskriftstittel: formTitle,
31+
arkivtittel: formTitle,
22932
tema,
230-
vedleggsliste: genererVedleggsListe(form, submission),
231-
dokumentlisteFoersteside: genererDokumentlisteFoersteside(title, skjemanummer, form, submission),
232-
...genererMottaksadresse(mottaksadresseId, mottaksadresser, enhetNummer),
33+
vedleggsliste: getAttachmentTitles(form, submission),
34+
dokumentlisteFoersteside: [formTitle, ...getAttachmentLabels(form, submission)],
35+
...getRecipients(mottaksadresseId, recipients, unitNumber),
23336
};
234-
}
37+
};
38+
39+
export { genererFoerstesideData };

0 commit comments

Comments
 (0)