From 76ee9ee742a15b47d3ca22f7f9fc9c6b0f9b66da Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 3 Nov 2025 12:36:13 +0100 Subject: [PATCH] Refactor memberController and memberService to include memberFormHandedOver field and improve parameter handling Updated memberController to handle the showAll parameter more effectively and added memberFormHandedOver to the setClubMember method in memberService. Enhanced Member model to include memberFormHandedOver field with appropriate defaults. Updated MembersView to reflect changes in the UI, allowing for better member data management and visibility. --- backend/controllers/memberController.js | 12 +++++------- backend/models/Member.js | 15 ++++++++------- backend/services/memberService.js | 4 +++- frontend/src/views/MembersView.vue | 10 +++++++++- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/backend/controllers/memberController.js b/backend/controllers/memberController.js index 04759b3..53cc7d0 100644 --- a/backend/controllers/memberController.js +++ b/backend/controllers/memberController.js @@ -4,10 +4,8 @@ import { devLog } from '../utils/logger.js'; const getClubMembers = async(req, res) => { try { const { authcode: userToken } = req.headers; - const { id: clubId, showAll } = req.params; - if (showAll === null) { - showAll = false; - } + const { id: clubId } = req.params; + const showAll = req.params.showAll ?? 'false'; res.status(200).json(await MemberService.getClubMembers(userToken, clubId, showAll)); } catch(error) { res.status(500).json({ error: 'systemerror' }); @@ -27,12 +25,12 @@ const getWaitingApprovals = async(req, res) => { const setClubMembers = async (req, res) => { try { - const { id: memberId, firstname: firstName, lastname: lastName, street, city, birthdate, phone, email, active, - testMembership, picsInInternetAllowed, gender, ttr, qttr } = req.body; + const { id: memberId, firstname: firstName, lastname: lastName, street, city, birthdate, phone, email, active, + testMembership, picsInInternetAllowed, gender, ttr, qttr, memberFormHandedOver } = req.body; const { id: clubId } = req.params; const { authcode: userToken } = req.headers; const addResult = await MemberService.setClubMember(userToken, clubId, memberId, firstName, lastName, street, city, birthdate, - phone, email, active, testMembership, picsInInternetAllowed, gender, ttr, qttr); + phone, email, active, testMembership, picsInInternetAllowed, gender, ttr, qttr, memberFormHandedOver); res.status(addResult.status || 500).json(addResult.response); } catch (error) { console.error('[setClubMembers] - Error:', error); diff --git a/backend/models/Member.js b/backend/models/Member.js index 7ca45ba..6db2f73 100644 --- a/backend/models/Member.js +++ b/backend/models/Member.js @@ -138,6 +138,13 @@ const Member = sequelize.define('Member', { allowNull: true, defaultValue: null }, + memberFormHandedOver: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: false, + field: 'member_form_handed_over', + comment: 'Mitgliedsformular ausgehändigt' + }, myTischtennisPlayerId: { type: DataTypes.STRING, allowNull: true, @@ -157,13 +164,7 @@ const Member = sequelize.define('Member', { member.save(); }, } -}, - { - underscored: true, - tableName: 'log', - timestamps: true - } -); +}); Member.belongsTo(Club, { as: 'club' }); Club.hasMany(Member, { as: 'members' }); diff --git a/backend/services/memberService.js b/backend/services/memberService.js index 49c18bd..913846b 100644 --- a/backend/services/memberService.js +++ b/backend/services/memberService.js @@ -48,7 +48,7 @@ class MemberService { } async setClubMember(userToken, clubId, memberId, firstName, lastName, street, city, birthdate, phone, email, active = true, testMembership = false, - picsInInternetAllowed = false, gender = 'unknown', ttr = null, qttr = null) { + picsInInternetAllowed = false, gender = 'unknown', ttr = null, qttr = null, memberFormHandedOver = false) { try { await checkAccess(userToken, clubId); let member = null; @@ -69,6 +69,7 @@ class MemberService { if (gender) member.gender = gender; if (ttr !== undefined) member.ttr = ttr; if (qttr !== undefined) member.qttr = qttr; + member.memberFormHandedOver = !!memberFormHandedOver; await member.save(); } else { await Member.create({ @@ -86,6 +87,7 @@ class MemberService { gender: gender || 'unknown', ttr: ttr, qttr: qttr, + memberFormHandedOver: !!memberFormHandedOver, }); } return { diff --git a/frontend/src/views/MembersView.vue b/frontend/src/views/MembersView.vue index b4e66c1..1fc3a81 100644 --- a/frontend/src/views/MembersView.vue +++ b/frontend/src/views/MembersView.vue @@ -56,6 +56,7 @@ +
Vorschau des MitgliedsbildesName, Vorname TTR / QTTR Adresse + Mitgliedsformular Geburtsdatum Telefon-Nr. Email-Adresse @@ -121,7 +123,7 @@