From bdc9eef7077e82f5886fac92c97ca1d5ce0a7fbb Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sun, 29 Mar 2026 14:49:04 +0200 Subject: [PATCH] Refactor saveMember function to improve duplicate member handling and streamline member updates. Enhance error messaging for non-existent members and ensure new members are added with default active status. --- server/utils/members.js | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/server/utils/members.js b/server/utils/members.js index ff88dfb..ec2821a 100644 --- a/server/utils/members.js +++ b/server/utils/members.js @@ -242,24 +242,28 @@ export async function saveMember(memberData) { const members = await readMembers() if (memberData.id) { - // Update existing + // Update existing manual member if present. + // If the ID belongs to a login-only member shown in the merged list, + // create a manual overlay with the same ID so editable fields can be stored. const index = members.findIndex(m => m.id === memberData.id) + const duplicate = findDuplicateMember( + members.filter(m => m.id !== memberData.id), + memberData.firstName, + memberData.lastName, + memberData.geburtsdatum + ) + + if (duplicate) { + throw new Error('Ein Mitglied mit diesem Namen und Geburtsdatum existiert bereits.') + } + if (index !== -1) { - // Check for duplicate (excluding current member) - const duplicate = findDuplicateMember( - members.filter(m => m.id !== memberData.id), - memberData.firstName, - memberData.lastName, - memberData.geburtsdatum - ) - - if (duplicate) { - throw new Error('Ein Mitglied mit diesem Namen und Geburtsdatum existiert bereits.') - } - members[index] = { ...members[index], ...memberData } } else { - throw new Error('Mitglied nicht gefunden') + members.push({ + ...memberData, + active: typeof memberData.active === 'boolean' ? memberData.active : true + }) } } else { // Add new - check for duplicate first