some enhancements for tournaments

This commit is contained in:
Torsten Schulz
2025-07-15 18:06:07 +02:00
parent f29185dd33
commit 69b4302e23
7 changed files with 646 additions and 492 deletions

View File

@@ -1,29 +1,33 @@
// controllers/tournamentController.js
import tournamentService from "../services/tournamentService.js";
// 1. Alle Turniere eines Vereins
export const getTournaments = async (req, res) => {
const { authcode: token } = req.headers;
const clubId = req.params.clubId;
const { clubId } = req.params;
try {
const tournaments = await tournamentService.getTournaments(token, clubId);
res.status(200).json(tournaments);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
};
// 2. Neues Turnier anlegen
export const addTournament = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentName, date } = req.body;
try {
const tournament = await tournamentService.addTournament(token, clubId, tournamentName, date);
res.status(200).json(tournament);
res.status(201).json(tournament);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
}
};
// 3. Teilnehmer hinzufügen
export const addParticipant = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId, participant: participantId } = req.body;
@@ -32,11 +36,12 @@ export const addParticipant = async (req, res) => {
const participants = await tournamentService.getParticipants(token, clubId, tournamentId);
res.status(200).json(participants);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
}
};
// 4. Teilnehmerliste abrufen
export const getParticipants = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId } = req.body;
@@ -44,33 +49,38 @@ export const getParticipants = async (req, res) => {
const participants = await tournamentService.getParticipants(token, clubId, tournamentId);
res.status(200).json(participants);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
}
};
// 5. Turniermodus (Gruppen/K.O.) setzen
export const setModus = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId, type, numberOfGroups } = req.body;
try {
await tournamentService.setModus(token, clubId, tournamentId, type, numberOfGroups);
res.sendStatus(204);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
}
};
// 6. Gruppen-Strukturen anlegen (leere Gruppen)
export const createGroups = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId } = req.body;
try {
await tournamentService.createGroups(token, clubId, tournamentId);
res.sendStatus(204);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
}
};
// 7. Teilnehmer zufällig auf Gruppen verteilen & Gruppenspiele anlegen
export const fillGroups = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId } = req.body;
@@ -78,11 +88,12 @@ export const fillGroups = async (req, res) => {
const updatedMembers = await tournamentService.fillGroups(token, clubId, tournamentId);
res.status(200).json(updatedMembers);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
}
};
// 8. Gruppen mit ihren Teilnehmern abfragen
export const getGroups = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId } = req.query;
@@ -90,11 +101,12 @@ export const getGroups = async (req, res) => {
const groups = await tournamentService.getGroupsWithParticipants(token, clubId, tournamentId);
res.status(200).json(groups);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
};
// 9. Einzelnes Turnier abrufen
export const getTournament = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId } = req.params;
@@ -102,11 +114,12 @@ export const getTournament = async (req, res) => {
const tournament = await tournamentService.getTournament(token, clubId, tournamentId);
res.status(200).json(tournament);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
}
};
// 10. Alle Spiele eines Turniers abfragen
export const getTournamentMatches = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId } = req.params;
@@ -114,15 +127,15 @@ export const getTournamentMatches = async (req, res) => {
const matches = await tournamentService.getTournamentMatches(token, clubId, tournamentId);
res.status(200).json(matches);
} catch (error) {
console.log(error);
console.error(error);
res.status(500).json({ error: error.message });
}
}
};
// 11. Satz-Ergebnis speichern
export const addMatchResult = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId, matchId, set, result } = req.body;
try {
await tournamentService.addMatchResult(token, clubId, tournamentId, matchId, set, result);
res.status(200).json({ message: "Result added successfully" });
@@ -132,15 +145,28 @@ export const addMatchResult = async (req, res) => {
}
};
// 12. Spiel abschließen (Endergebnis ermitteln)
export const finishMatch = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId, matchId } = req.body;
try {
await tournamentService.finishMatch(token, clubId, tournamentId, matchId);
res.status(200).json({ message: "Match finished successfully" });
} catch (error) {
} catch (error) {
console.error(error);
res.status(500).json({ error: error.message });
}
}
};
export const startKnockout = async (req, res) => {
const { authcode: token } = req.headers;
const { clubId, tournamentId } = req.body;
try {
await tournamentService.startKnockout(token, clubId, tournamentId);
res.status(200).json({ message: 'K.O.-Runde erfolgreich gestartet' });
} catch (error) {
console.error('Error in startKnockout:', error);
res.status(500).json({ error: error.message });
}
};