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` }); } };