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.
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 56s
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 56s
This commit is contained in:
@@ -242,24 +242,28 @@ export async function saveMember(memberData) {
|
|||||||
const members = await readMembers()
|
const members = await readMembers()
|
||||||
|
|
||||||
if (memberData.id) {
|
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 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) {
|
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 }
|
members[index] = { ...members[index], ...memberData }
|
||||||
} else {
|
} else {
|
||||||
throw new Error('Mitglied nicht gefunden')
|
members.push({
|
||||||
|
...memberData,
|
||||||
|
active: typeof memberData.active === 'boolean' ? memberData.active : true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Add new - check for duplicate first
|
// Add new - check for duplicate first
|
||||||
|
|||||||
Reference in New Issue
Block a user