Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions react/src/dashboard/components/modals/ModalDuplicatesPicker.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ export default function ModalDuplicatesPicker({
hero_title = '',
hero_subtitle = '',
enableToggles = true,
label_on = '',
label_off = '',
label_on = 'Aanmaken',
label_off = 'Overslaan',
items,
onConfirm,
onCancel,
button_cancel = 'Annuleren',
button_none = 'Alles overslaan',
button_none = 'Alle overslaan',
button_all = 'Ja op alles',
button_confirm = 'Bevestigen',
}: {
Expand All @@ -36,8 +36,8 @@ export default function ModalDuplicatesPicker({
hero_title?: string;
hero_subtitle: string | Array<string>;
enableToggles: boolean;
label_on: string;
label_off: string;
label_on?: string;
label_off?: string;
items: Array<ItemProp>;
onConfirm: (data: { list: Array<ItemProp>; uids?: Array<string> }) => void;
onCancel: () => void;
Expand Down
2 changes: 0 additions & 2 deletions react/src/dashboard/components/modals/ModalPayoutsUpload.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,6 @@ export default function ModalPayoutsUpload({
hero_title={'Er zijn fouten opgetreden bij het importeren van de uitbetalingen'}
hero_subtitle={message}
enableToggles={false}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={items.map((item) => ({
_uid: uniqueId('rand_'),
label: `Rij: ${item[0]}: ${item[3] || item[2]['email'] || item[2]['bsn'] || ''} - ${item[1]}`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,6 @@ export default function ModalPrevalidationRequestsUpload({
hero_title={'Er zijn fouten opgetreden bij het importeren van de aanvragers'}
hero_subtitle={message}
enableToggles={false}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={items.map((item) => ({
value: `Rij: ${item[0]}: ${item[2]} - ${item[1]}`,
_uid: uniqueId('rand_'),
Expand Down
96 changes: 84 additions & 12 deletions react/src/dashboard/components/modals/ModalPrevalidationsUpload.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -223,8 +223,6 @@ export default function ModalPrevalidationsUpload({
hero_title={'Er zijn fouten opgetreden bij het importeren van de aanvragers'}
hero_subtitle={message}
enableToggles={false}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={items.map((item) => ({
value: `Rij: ${item[0]}: ${item[2]} - ${item[1]}`,
_uid: uniqueId('rand_'),
Expand Down Expand Up @@ -478,8 +476,6 @@ export default function ModalPrevalidationsUpload({
hero_title={title}
hero_subtitle={subtitle}
enableToggles={false}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={items}
onConfirm={() => {
setHideModal(false);
Expand Down Expand Up @@ -514,8 +510,6 @@ export default function ModalPrevalidationsUpload({
hero_subtitle={subtitle}
enableToggles={true}
label_on={'Aanpassen'}
label_off={'Overslaan'}
button_none={'Alles overslaan'}
button_all={'Pas alles aan'}
items={items}
onConfirm={({ list }) => {
Expand Down Expand Up @@ -766,6 +760,82 @@ export default function ModalPrevalidationsUpload({
],
);

const showDuplicateRows = useCallback(
(rows = []) => {
const message = [
`${rows.length} van ${data.length}`,
'rij(en) uit het bulkbestand zijn niet',
'geïmporteerd vanwege dubbele waarden.',
'Bekijk het bestand bij welke rij(en) het mis gaat.',
].join(' ');

pushDanger('Waarschuwing', message);
setHideModal(true);

openModal((modal) => (
<ModalDuplicatesPicker
modal={modal}
hero_title={'Er is een fout opgetreden bij het importeren van het bulkbestand'}
hero_subtitle={message}
enableToggles={false}
items={rows}
onConfirm={() => {
reset();
setHideModal(false);
}}
onCancel={() => {
reset();
setHideModal(false);
}}
/>
));
},
[data, openModal, pushDanger, reset],
);

const checkDuplicates = useCallback(() => {
return new Promise((resolve, reject) => {
const submitData: RowDataPropData[] = JSON.parse(JSON.stringify(data));
const keyMap = new Map();
const duplicates = [];

submitData.forEach((item, index) => {
const primary_key = item?.[fund.csv_primary_key];
const normalized_key = typeof primary_key === 'string' ? primary_key.toLowerCase() : primary_key;

if (!normalized_key) {
return;
}

if (!keyMap.has(normalized_key)) {
keyMap.set(normalized_key, [index]);
} else {
keyMap.get(normalized_key).push(index);
}
});

keyMap.forEach((indexes) => {
if (indexes.length > 1) {
indexes.forEach((i) => {
const originalValue = submitData[i]?.[fund.csv_primary_key];

duplicates.push({
value: `Rij: ${i + 1}: ${fund?.csv_primary_key} - ${originalValue}`,
_uid: uniqueId('rand_'),
});
});
}
});

if (duplicates.length) {
showDuplicateRows(duplicates);
reject();
}

resolve(true);
});
}, [data, fund?.csv_primary_key, showDuplicateRows]);

const submitCollectionCheck = useCallback(() => {
setCsvProgress(CSVProgress.uploading);
abortRef.current = false;
Expand Down Expand Up @@ -854,14 +924,16 @@ export default function ModalPrevalidationsUpload({
]);

const onConfirmUpload = useCallback(() => {
setCsvComparing(true);
checkDuplicates().then(() => {
setCsvComparing(true);

pushSuccess('Inladen...', 'Inladen van gegevens voor controle op dubbele waarden!', {
icon: 'download-outline',
});
pushSuccess('Inladen...', 'Inladen van gegevens voor controle op dubbele waarden!', {
icon: 'download-outline',
});

submitCollectionCheck();
}, [pushSuccess, submitCollectionCheck]);
submitCollectionCheck();
}, console.error);
}, [checkDuplicates, pushSuccess, submitCollectionCheck]);

const onDragEvent = useCallback((e: React.DragEvent, isDragOver: boolean) => {
e?.preventDefault();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,8 +196,6 @@ export default function ModalReservationUpload({
'Om de reserveringen alsnog aan te maken dient het bestand aangepast en opnieuw aangeboden te worden.',
]}
enableToggles={true}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={items.map((item) => ({
_uid: uniqueId('rand_'),
label: item[2]?.['number'] ? item[2]?.['number'] + ' - ' + item[1] : item[1],
Expand Down
4 changes: 0 additions & 4 deletions react/src/dashboard/components/modals/ModalVoucherCreate.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -248,8 +248,6 @@ export default function ModalVoucherCreate({
'Deze e-mailadressen bezitten al een tegoed van dit fonds.',
]}
enableToggles={true}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={items}
onConfirm={onConfirm}
onCancel={onCancel}
Expand All @@ -276,8 +274,6 @@ export default function ModalVoucherCreate({
'Deze burgerservicenummers bezitten al een tegoed van dit fonds.',
]}
enableToggles={true}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={items}
onConfirm={onConfirm}
onCancel={onCancel}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,6 @@ export default function ModalVoucherTransactionsUpload({
hero_title={'Transactie aanmaken mislukt!'}
hero_subtitle={[validation ? messageValidation : message]}
enableToggles={false}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={items.map((item) => ({
_uid: uniqueId('rand_'),
label: `Rij: ${item[0]}: ${item[2]['uid'] || ''} - ${item[1]}`,
Expand Down
11 changes: 0 additions & 11 deletions react/src/dashboard/components/modals/ModalVouchersUpload.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -305,11 +305,8 @@ export default function ModalVouchersUpload({
`Er zijn ${lowAmountOptions.length} tegoeden met een laag bedrag.`,
'Wilt u doorgaan?',
]}
button_none={'Alle overslaan'}
button_all={'Alle aanmaken'}
enableToggles={true}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={lowAmountOptions}
onConfirm={(data) => {
resolve(pickSelectedOrUnflagged(originalRows, data.uids, lowAmountOptionIds));
Expand Down Expand Up @@ -348,11 +345,8 @@ export default function ModalVouchersUpload({
`Weet u zeker dat u voor ${duplicateOptions.length} e-mailadres(sen) een extra tegoed wilt aanmaken?`,
'Deze e-mailadressen bezitten al een tegoed van dit fonds.',
]}
button_none={'Alle overslaan'}
button_all={'Alle aanmaken'}
enableToggles={true}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={duplicateOptions}
onConfirm={(data) => {
resolve(pickSelectedOrUnflagged(originalRows, data.uids, duplicateOptionIds));
Expand Down Expand Up @@ -393,10 +387,7 @@ export default function ModalVouchersUpload({
'Deze bsn(s) bezitten al een tegoed van dit fonds.',
]}
enableToggles={true}
button_none={'Alle overslaan'}
button_all={'Alle aanmaken'}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={bsnOptions}
onConfirm={(data) => {
resolve(pickSelectedOrUnflagged(originalRows, data.uids, bsnOptionIds));
Expand Down Expand Up @@ -614,8 +605,6 @@ export default function ModalVouchersUpload({
hero_title={'Er zijn fouten opgetreden bij het importeren van de tegoeden'}
hero_subtitle={message}
enableToggles={false}
label_on={'Aanmaken'}
label_off={'Overslaan'}
items={items.map((item) => ({
_uid: uniqueId('rand_'),
label: `Rij: ${item[0]}: ${item[2]['email'] || item[2]['bsn'] || ''} - ${item[1]}`,
Expand Down