gain.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const { Ticket } = require('../models/ticket.model');
  2. const { User } = require('../models/user.model');
  3. //consulter les gains
  4. exports.gain = async (req, res) => {
  5. try {
  6. // Vérifications initiales
  7. const userId = req.query.id;
  8. const ticketCode = req.body.code;
  9. if (!userId) {
  10. return res.status(400).json({ success: false, message: `Identifiant utilisateur introuvable` });
  11. }
  12. if (!ticketCode) {
  13. return res.status(400).json({ success: false, message: `Code introuvable` });
  14. }
  15. if (isNaN(ticketCode)) {
  16. return res.status(400).json({ success: false, message: `Votre code n'est pas un chiffre` });
  17. }
  18. if (ticketCode.toString().length !== 10) {
  19. return res.status(400).json({ success: false, message: `Votre code est différent de 10 chiffres` });
  20. }
  21. // Récupérer l'utilisateur
  22. const user = await User.findById(userId);
  23. if (!user) {
  24. return res.status(404).json({ success: false, message: `Utilisateur non trouvé` });
  25. }
  26. // Vérifier l'existence du ticket
  27. const ticket = await Ticket.findOne({ code: ticketCode });
  28. if (!ticket) {
  29. return res.status(400).json({ success: false, message: `Le code est erroné` });
  30. }
  31. // Vérifier si le ticket a déjà été utilisé
  32. if (ticket.isUsed) {
  33. return res.status(400).json({ success: false, message: `Le code a déjà été utilisé` });
  34. }
  35. // Mettre à jour le ticket
  36. ticket.isUsed = true;
  37. ticket.date_used = new Date();
  38. await ticket.save();
  39. // Ajouter le ticket à l'utilisateur et sauvegarder
  40. user.isGain = true;
  41. user.gains.push(ticket);
  42. await user.save();
  43. // Répondre avec le ticket mis à jour
  44. return res.status(200).json({ success: true, ticket });
  45. } catch (err) {
  46. console.error('Erreur dans le traitement du gain :', err.message);
  47. return res.status(500).json({ success: false, message: `Erreur dans le serveur` });
  48. }
  49. };