feat: implement user linking for members and update database schema for user associations
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 53s
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 53s
This commit is contained in:
@@ -2,6 +2,8 @@ import MemberService from "../services/memberService.js";
|
||||
import MemberTransferService from "../services/memberTransferService.js";
|
||||
import clickTtPlayerRegistrationService from "../services/clickTtPlayerRegistrationService.js";
|
||||
import { emitMemberChanged } from '../services/socketService.js';
|
||||
import Member from '../models/Member.js';
|
||||
import UserClub from '../models/UserClub.js';
|
||||
|
||||
import { devLog } from '../utils/logger.js';
|
||||
const getClubMembers = async(req, res) => {
|
||||
@@ -351,6 +353,28 @@ const transferMembers = async (req, res) => {
|
||||
}
|
||||
};
|
||||
|
||||
const linkMemberUser = async (req, res) => {
|
||||
try {
|
||||
const clubId = Number(req.params.clubId);
|
||||
const memberId = Number(req.params.memberId);
|
||||
const userId = Number(req.body?.userId);
|
||||
if (!clubId || !memberId || !userId) return res.status(400).json({ error: 'Mitglied, Verein und Benutzer sind erforderlich.' });
|
||||
const [member, clubUser, existing] = await Promise.all([
|
||||
Member.findOne({ where: { id: memberId, clubId } }),
|
||||
UserClub.findOne({ where: { clubId, userId, approved: true } }),
|
||||
Member.findOne({ where: { userId } }),
|
||||
]);
|
||||
if (!member || !clubUser) return res.status(404).json({ error: 'Mitglied oder freigegebener Vereinsbenutzer wurde nicht gefunden.' });
|
||||
if (existing && Number(existing.id) !== memberId) return res.status(409).json({ error: 'Dieses Benutzerkonto ist bereits einem Mitglied zugeordnet.' });
|
||||
await member.update({ userId });
|
||||
emitMemberChanged(clubId);
|
||||
res.json({ memberId, userId });
|
||||
} catch (error) {
|
||||
console.error('[linkMemberUser] - Error:', error);
|
||||
res.status(500).json({ error: 'Mitglied konnte nicht verknüpft werden.' });
|
||||
}
|
||||
};
|
||||
|
||||
export {
|
||||
getClubMembers,
|
||||
getWaitingApprovals,
|
||||
@@ -372,5 +396,6 @@ export {
|
||||
requestClickTtPlayerRegistration,
|
||||
deleteMemberImage,
|
||||
setPrimaryMemberImage,
|
||||
generateMemberGallery
|
||||
generateMemberGallery,
|
||||
linkMemberUser
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user