| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- const { Ticket } = require('../models/ticket.model');
- const { User } = require('../models/user.model');
- //consulter les gains
- exports.gain = async (req, res) => {
- try {
- // Vérifications initiales
- const userId = req.query.id;
- const ticketCode = req.body.code;
-
- if (!userId) {
- return res.status(400).json({ success: false, message: `Identifiant utilisateur introuvable` });
- }
-
- if (!ticketCode) {
- return res.status(400).json({ success: false, message: `Code introuvable` });
- }
-
- if (isNaN(ticketCode)) {
- return res.status(400).json({ success: false, message: `Votre code n'est pas un chiffre` });
- }
-
- if (ticketCode.toString().length !== 10) {
- return res.status(400).json({ success: false, message: `Votre code est différent de 10 chiffres` });
- }
-
- // Récupérer l'utilisateur
- const user = await User.findById(userId);
- if (!user) {
- return res.status(404).json({ success: false, message: `Utilisateur non trouvé` });
- }
-
- // Vérifier l'existence du ticket
- const ticket = await Ticket.findOne({ code: ticketCode });
- if (!ticket) {
- return res.status(400).json({ success: false, message: `Le code est erroné` });
- }
-
- // Vérifier si le ticket a déjà été utilisé
- if (ticket.isUsed) {
- return res.status(400).json({ success: false, message: `Le code a déjà été utilisé` });
- }
-
- // Mettre à jour le ticket
- ticket.isUsed = true;
- ticket.date_used = new Date();
- await ticket.save();
-
- // Ajouter le ticket à l'utilisateur et sauvegarder
- user.isGain = true;
- user.gains.push(ticket);
- await user.save();
-
- // Répondre avec le ticket mis à jour
- return res.status(200).json({ success: true, ticket });
- } catch (err) {
- console.error('Erreur dans le traitement du gain :', err.message);
- return res.status(500).json({ success: false, message: `Erreur dans le serveur` });
- }
- };
-
|