forked from EphecLLN/Dev-Web-2023
-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathcontroller.team.js
More file actions
149 lines (113 loc) · 4.04 KB
/
controller.team.js
File metadata and controls
149 lines (113 loc) · 4.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
import Team from "../models/team.model.js";
import {User} from "../models/user.model.js";
export const getTeams = async (req, res) => {
try{
const teams = await Team.find({});
res.status(200).json({success: true, data: teams})
}catch (error){
console.error("erreur de récupération teams:" , error.message);
res.status(500).json({success: false, message: "erreur récupération data"});
}
}
export const creationTeams = async (req, res) => {
const team = req.body;
try {
// Vérifie si une équipe avec le même nom existe déjà
const existingTeam = await Team.findOne({ nom: team.nom });
if (existingTeam) {
return res.status(400).json({
success: false,
message: "Une équipe avec ce nom existe déjà."
});
}
// Sinon, on peut créer la nouvelle équipe
const newTeam = new Team(team);
await newTeam.save();
res.status(201).json({ success: true, data: newTeam });
} catch (error) {
console.error("Erreur de création d'une team:", error.message);
res.status(500).json({ success: false, message: "Erreur serveur" });
}
}
export const joinTeam = async (req, res) => {
const { id } = req.params;
const { playerId } = req.body;
try {
const team = await Team.findById(id);
if (!team) return res.status(404).json({ success: false, message: "Team introuvable" });
// Ajouter le joueur (évite les doublons)
if (!team.joueurs.includes(playerId)) {
team.joueurs.push(playerId);
await team.save();
}
res.status(200).json({ success: true, message: "Joueur ajouté à l'équipe" });
} catch (err) {
console.error(err.message);
res.status(500).json({ success: false, message: "Erreur serveur" });
}
}
export const deleteTeam = async (req, res) => {
const {id} = req.params;
try{
const team =await Team.findById(id);
if(!team) return res.status(404).json({success: false, message: "Team introuvable"});
await User.updateMany(
{ _id: { $in: team.joueurs } },
{ $set: { droit: "" } }
);
await team.deleteOne();
res.status(200).json({ success: true, message: "Joueur ajouté à l'équipe" });
} catch (err) {
console.error(err.message);
res.status(500).json({ success: false, message: "Erreur serveur" });
}
}
// PATCH /api/teams/:id/update
export const updateTeam = async (req, res) => {
const { id } = req.params;
const { nom, logo, joueurs } = req.body;
try {
const team = await Team.findById(id);
if (!team) {
return res.status(404).json({ success: false, message: "Équipe introuvable" });
}
if (nom) team.nom = nom;
if (logo) team.logo = logo;
if (joueurs) {
if (joueurs.length > 5) {
return res.status(400).json({ success: false, message: "Une équipe ne peut pas avoir plus de 5 joueurs." });
}
// Vérifier unicité
const uniqueJoueurs = [...new Set(joueurs.map(id => id.toString()))];
if (uniqueJoueurs.length !== joueurs.length) {
return res.status(400).json({ success: false, message: "Un joueur ne peut apparaître qu'une seule fois." });
}
team.joueurs = joueurs;
}
await team.save();
res.status(200).json({ success: true, message: "Équipe mise à jour", data: team });
} catch (err) {
console.error(err);
res.status(500).json({ success: false, message: "Erreur serveur" });
}
};
export const getTeamById = async (req, res) => {
const { id } = req.params;
try {
const team = await Team.findById(id)
.populate({
path: 'joueurs',
populate: {
path: 'ecole_id',
select: 'nom'
}
});
if (!team) {
return res.status(404).json({ success: false, message: "Équipe introuvable" });
}
res.status(200).json({ success: true, data: team });
} catch (err) {
console.error(err.message);
res.status(500).json({ success: false, message: "Erreur serveur" });
}
};