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