gain.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const { Ticket } = require('../models/ticket.model');
  2. const { User } = require('../models/user.model');
  3. //consulter les gains
  4. exports.gain = async (req, res, next) => {
  5. try {
  6. // génère une exception
  7. if (!req.query.id) { throw new Error(`Identifiant utilisateur introuvable`) }
  8. if (!req.body.code) { throw new Error(`Code introuvable`) }
  9. if (isNaN(req.body.code)) { throw new Error(`Votre code n'est pas un chiffre`) }
  10. if (req.body.code.toString().length != 10) { throw new Error(`Votre code est différent de 10 chiffres`) }
  11. User.findById(req.query.id)
  12. .then((user) => {
  13. Ticket.findOne({ code: req.body.code })
  14. .then((ticket) => {
  15. if (ticket) {
  16. if (ticket.isUsed === false) {
  17. ticket.isUsed = true;
  18. ticket.date_used = new Date();
  19. res.send(ticket);
  20. ticket.save()
  21. .then((ticket) => {
  22. user.isGain = true;
  23. // user.gains.push(ticket);
  24. user.save()
  25. .then(() => res.status(200).send(ticket))
  26. .catch(() => res.status(500).json({ success: false, message: `Erreur dans le serveur` }))
  27. })
  28. .catch(() => res.status(500).json({ success: false, message: `Erreur dans le serveur` }))
  29. } else { res.status(400).json({ success: false, message: `Le code a déjà été utilisé` }) }
  30. } else { res.status(400).json({ success: false, message: `Le code est erroné` }) }
  31. })
  32. .catch(() => res.status(500).json({ success: false, message: `Erreur dans le serveur` }));
  33. return;
  34. })
  35. .catch(() => res.status(404).json({ success: false, message: `Utilisateur non trouvé` }))
  36. }
  37. catch (err) { res.status(400).json({ success: false, message: err.message }) }
  38. };