From 623a63c29f848766d042d35f48e80faaf94c1dfa Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Wed, 5 Nov 2025 14:34:31 +0100 Subject: [PATCH] Implement member management enhancements; add bulk import functionality and duplicate checking based on geburtsdatum. Update API to support new fields and improve error handling for member data submissions. Refactor member-related components for better user experience and data validation. --- .output/nitro.json | 2 +- .output/public/_nuxt/builds/latest.json | 2 +- .output/server/chunks/_/members.mjs | 43 +- .output/server/chunks/_/members.mjs.map | 2 +- .../server/chunks/build/client.manifest.mjs | 24 +- .output/server/chunks/build/server.mjs | 36 +- .output/server/chunks/build/server.mjs.map | 2 +- .output/server/chunks/build/styles.mjs | 2 +- .output/server/chunks/nitro/nitro.mjs | 345 +++++------ .../chunks/routes/api/auth/login.post.mjs | 2 + .../chunks/routes/api/auth/login.post.mjs.map | 2 +- .../server/chunks/routes/api/members.post.mjs | 75 ++- .../chunks/routes/api/members.post.mjs.map | 2 +- .output/server/chunks/routes/renderer.mjs | 2 +- components/Navigation.vue | 545 +++++++++-------- pages/mitgliederbereich/api.vue | 549 ++++++++++++++++++ pages/mitgliederbereich/mitglieder.vue | 309 +++++++++- server/api/auth/login.post.js | 3 +- server/api/members.post.js | 82 ++- server/api/members/bulk.post.js | 192 ++++++ server/utils/members.js | 57 ++ 21 files changed, 1765 insertions(+), 513 deletions(-) create mode 100644 pages/mitgliederbereich/api.vue create mode 100644 server/api/members/bulk.post.js diff --git a/.output/nitro.json b/.output/nitro.json index 74bd4e8..1c52214 100644 --- a/.output/nitro.json +++ b/.output/nitro.json @@ -1,5 +1,5 @@ { - "date": "2025-11-05T12:46:44.995Z", + "date": "2025-11-05T13:24:50.100Z", "preset": "node-server", "framework": { "name": "nuxt", diff --git a/.output/public/_nuxt/builds/latest.json b/.output/public/_nuxt/builds/latest.json index f7f6ff6..0a06055 100644 --- a/.output/public/_nuxt/builds/latest.json +++ b/.output/public/_nuxt/builds/latest.json @@ -1 +1 @@ -{"id":"9438b35d-0d10-4203-a329-f7a1e287e2a1","timestamp":1762346796211} \ No newline at end of file +{"id":"8af76f9e-6e85-416c-9e2f-92c68e0dfd76","timestamp":1762349079882} \ No newline at end of file diff --git a/.output/server/chunks/_/members.mjs b/.output/server/chunks/_/members.mjs index 55ba343..4f55e49 100644 --- a/.output/server/chunks/_/members.mjs +++ b/.output/server/chunks/_/members.mjs @@ -72,16 +72,57 @@ async function writeMembers(members) { return false; } } +function normalizeDate(dateString) { + if (!dateString) return ""; + try { + const date = new Date(dateString); + if (isNaN(date.getTime())) return dateString.trim(); + return date.toISOString().split("T")[0]; + } catch (e) { + return dateString.trim(); + } +} +function findDuplicateMember(members, firstName, lastName, geburtsdatum) { + const normalizedFirstName = (firstName || "").trim().toLowerCase(); + const normalizedLastName = (lastName || "").trim().toLowerCase(); + const normalizedDate = normalizeDate(geburtsdatum); + return members.find((m) => { + const mFirstName = (m.firstName || "").trim().toLowerCase(); + const mLastName = (m.lastName || "").trim().toLowerCase(); + const mDate = normalizeDate(m.geburtsdatum); + return mFirstName === normalizedFirstName && mLastName === normalizedLastName && mDate === normalizedDate && mDate !== ""; + }); +} async function saveMember(memberData) { const members = await readMembers(); if (memberData.id) { const index = members.findIndex((m) => m.id === memberData.id); if (index !== -1) { + 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"); } } else { + if (memberData.firstName && memberData.lastName && memberData.geburtsdatum) { + const duplicate = findDuplicateMember( + members, + memberData.firstName, + memberData.lastName, + memberData.geburtsdatum + ); + if (duplicate) { + throw new Error("Ein Mitglied mit diesem Namen und Geburtsdatum existiert bereits."); + } + } const newMember = { ...memberData, id: randomUUID() @@ -99,5 +140,5 @@ async function deleteMember(id) { return true; } -export { deleteMember as d, readMembers as r, saveMember as s }; +export { deleteMember as d, normalizeDate as n, readMembers as r, saveMember as s, writeMembers as w }; //# sourceMappingURL=members.mjs.map diff --git a/.output/server/chunks/_/members.mjs.map b/.output/server/chunks/_/members.mjs.map index 3c614b6..214358a 100644 --- a/.output/server/chunks/_/members.mjs.map +++ b/.output/server/chunks/_/members.mjs.map @@ -1 +1 @@ -{"version":3,"file":"members.mjs","sources":["../../../../server/utils/members.js"],"sourcesContent":null,"names":["fs"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"members.mjs","sources":["../../../../server/utils/members.js"],"sourcesContent":null,"names":["fs"],"mappings":"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"} \ No newline at end of file diff --git a/.output/server/chunks/build/client.manifest.mjs b/.output/server/chunks/build/client.manifest.mjs index cc1d958..3d29731 100644 --- a/.output/server/chunks/build/client.manifest.mjs +++ b/.output/server/chunks/build/client.manifest.mjs @@ -296,7 +296,7 @@ const client_manifest = { "module": true, "prefetch": true, "preload": true, - "file": "oL_Xi1h-.js", + "file": "CxKxaas7.js", "name": "entry", "src": "node_modules/nuxt/dist/app/entry.js", "isEntry": true, @@ -306,14 +306,14 @@ const client_manifest = { "node_modules/nuxt/dist/app/components/error-500.vue" ], "css": [ - "entry.CYvTzE5H.css" + "entry.wEUbgGlA.css" ], "assets": [ "Harheimer TC.CKfYAfp1.svg" ] }, - "entry.CYvTzE5H.css": { - "file": "entry.CYvTzE5H.css", + "entry.wEUbgGlA.css": { + "file": "entry.wEUbgGlA.css", "resourceType": "style", "prefetch": true, "preload": true @@ -699,6 +699,20 @@ const client_manifest = { "_Qy3ajxTk.js" ] }, + "pages/mitgliederbereich/api.vue": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "file": "r4K7wPft.js", + "name": "api", + "src": "pages/mitgliederbereich/api.vue", + "isDynamicEntry": true, + "imports": [ + "_Qy3ajxTk.js", + "node_modules/nuxt/dist/app/entry.js" + ] + }, "pages/mitgliederbereich/index.vue": { "resourceType": "script", "module": true, @@ -721,7 +735,7 @@ const client_manifest = { "module": true, "prefetch": true, "preload": true, - "file": "CGzqx_GW.js", + "file": "BKaEDYu3.js", "name": "mitglieder", "src": "pages/mitgliederbereich/mitglieder.vue", "isDynamicEntry": true, diff --git a/.output/server/chunks/build/server.mjs b/.output/server/chunks/build/server.mjs index 8d30b1c..281ec21 100644 --- a/.output/server/chunks/build/server.mjs +++ b/.output/server/chunks/build/server.mjs @@ -397,6 +397,9 @@ const unhead_k2P3m_ZDyjlr2mMYnoDPwavjsDN8hBlk9cFai0bbopU = /* @__PURE__ */ defin function toArray(value) { return Array.isArray(value) ? value : [value]; } +const __nuxt_page_meta$8 = { + layout: "default" +}; const __nuxt_page_meta$7 = { layout: "default" }; @@ -430,7 +433,7 @@ const _routes = [ { name: "login", path: "/login", - meta: __nuxt_page_meta$7 || {}, + meta: __nuxt_page_meta$8 || {}, component: () => import('./login-P5Yg6Pmv.mjs') }, { @@ -466,7 +469,7 @@ const _routes = [ { name: "cms", path: "/cms", - meta: { ...__nuxt_page_meta$6 || {}, ...{ "middleware": "auth" } }, + meta: { ...__nuxt_page_meta$7 || {}, ...{ "middleware": "auth" } }, component: () => import('./index-CQoOFH9O.mjs') }, { @@ -503,7 +506,7 @@ const _routes = [ { name: "cms-termine", path: "/cms/termine", - meta: { ...__nuxt_page_meta$5 || {}, ...{ "middleware": "auth" } }, + meta: { ...__nuxt_page_meta$6 || {}, ...{ "middleware": "auth" } }, component: () => import('./termine-D0MhYqRR.mjs') }, { @@ -579,7 +582,7 @@ const _routes = [ { name: "cms-einstellungen", path: "/cms/einstellungen", - meta: { ...__nuxt_page_meta$4 || {}, ...{ "middleware": "auth" } }, + meta: { ...__nuxt_page_meta$5 || {}, ...{ "middleware": "auth" } }, component: () => import('./einstellungen-D4Ua-Zgq.mjs') }, { @@ -622,6 +625,12 @@ const _routes = [ path: "/mannschaften/jugend", component: () => import('./jugend-D2PYrcrQ.mjs') }, + { + name: "mitgliederbereich-api", + path: "/mitgliederbereich/api", + meta: { ...__nuxt_page_meta$4 || {}, ...{ "middleware": "auth" } }, + component: () => import('./api-2KvLR2u_.mjs') + }, { name: "mitgliederbereich-news", path: "/mitgliederbereich/news", @@ -665,7 +674,7 @@ const _routes = [ name: "mitgliederbereich-mitglieder", path: "/mitgliederbereich/mitglieder", meta: { ...__nuxt_page_meta || {}, ...{ "middleware": "auth" } }, - component: () => import('./mitglieder-BUT03wq4.mjs') + component: () => import('./mitglieder-yWh5DTR0.mjs') } ]; const ROUTE_KEY_PARENTHESES_RE = /(:\w+)\([^)]+\)/g; @@ -1930,6 +1939,23 @@ const _sfc_main$5 = { }), _: 1 }, _parent)); + _push(`
`); + _push(ssrRenderComponent(_component_NuxtLink, { + to: "/mitgliederbereich/api", + class: "px-2.5 py-1 text-xs text-gray-300 hover:text-white hover:bg-primary-700/50 rounded transition-all", + "active-class": "text-white bg-primary-600" + }, { + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(` API-Dokumentation `); + } else { + return [ + createTextVNode(" API-Dokumentation ") + ]; + } + }), + _: 1 + }, _parent)); if (isAdmin.value) { _push(`