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 @@ +