feat(memberController, memberRoutes, MembersView): implement Click-TT player registration feature

- Added a new endpoint for Click-TT player registration in memberController, allowing submission of existing player applications.
- Integrated the new endpoint into memberRoutes for handling requests.
- Updated MembersView to include a button for initiating Click-TT registration, with user confirmation and loading state management.
- Enhanced UI feedback for registration status, improving user experience during the application process.
This commit is contained in:
Torsten Schulz (local)
2026-03-11 13:17:59 +01:00
parent 9c30cd181c
commit 08095ce22e
5 changed files with 443 additions and 3 deletions

View File

@@ -1,5 +1,6 @@
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 { devLog } from '../utils/logger.js';
@@ -207,6 +208,28 @@ const quickDeactivateMember = async (req, res) => {
}
};
const requestClickTtPlayerRegistration = async (req, res) => {
try {
const { clubId, memberId } = req.params;
const { authcode: userToken } = req.headers;
const userId = req.user?.id;
const result = await clickTtPlayerRegistrationService.submitExistingPlayerApplication({
userToken,
userId,
clubId,
memberId
});
res.status(200).json(result);
} catch (error) {
console.error('[requestClickTtPlayerRegistration] - Error:', error);
res.status(error.statusCode || error.status || 500).json({
success: false,
error: error.message || 'Click-TT-Antrag konnte nicht eingereicht werden',
trace: Array.isArray(error.trace) ? error.trace : []
});
}
};
const transferMembers = async (req, res) => {
try {
const { id: clubId } = req.params;
@@ -251,7 +274,8 @@ export {
quickUpdateTestMembership,
quickUpdateMemberFormHandedOver,
quickDeactivateMember,
requestClickTtPlayerRegistration,
deleteMemberImage,
setPrimaryMemberImage,
generateMemberGallery
};
};