| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- const { Tirage } = require('../models/tirage.model');
- const { User } = require('../models/user.model');
- const moment = require('moment');
- moment().format();
- // date de tirage au sort
- exports.postDateTirage = async (req, res, next) => {
- const tirage = new Tirage({
- tirage_date: req.body.date,
- });
- const valid_date = moment(req.body.date, moment.ISO_8601, true).isValid();
- if (req.body.date) {
- if (valid_date === true) {
- exist_tirage = await Tirage.countDocuments();
- if (exist_tirage === 0) {
- tirage.save().then(
- () => {
- res.status(201).json({
- success: true,
- date: req.body.date,
- message: `Date enregistré avec succès`
- });
- }
- ).catch((err) => { res.status(500).json({ success: false, message: err.message }) });
- } else {
- res.status(400).json({ success: false, message: `La date est déjà définie` });
- }
- } else {
- res.status(400).json({ success: false, message: `Date invalide` });
- }
- }
- else {
- res.status(400).json({ success: false, message: `Date introuvable` });
- }
- };
- //tirage au sort
- exports.getTirage = async (req, res, next) => {
- db_tirage = await Tirage.findOne()
- date_now = new Date();
- if (db_tirage !== null) {
- if (db_tirage.isExecuted === false) {
- if (db_tirage.tirage_date && date_now.getFullYear() === new Date(db_tirage.tirage_date).getFullYear()
- && date_now.getMonth() === new Date(db_tirage.tirage_date).getMonth()
- && date_now.getDate() === new Date(db_tirage.tirage_date).getDate()) {
- // exec tirage au sort
- User.countDocuments({ isActive: true, role: "client" }).exec(function (err, count) {
- if (count !== 0) {
- var random = Math.floor(Math.random() * count);
- User.findOne().skip(random).exec(
- function (err, result) {
- db_tirage.nb_users = count;
- db_tirage.random_user = random;
- db_tirage.isExecuted = true;
- db_tirage.executed_date = new Date();
- db_tirage.winner = result;
- db_tirage.save().then(
- () => {
- res.status(200).json({
- success: true,
- db_tirage
- });
- }
- ).catch(
- (error) => {
- res.status(400).json({
- error
- });
- }
- );
- });
- } else {
- res.json({
- success: false,
- count: "users not exists",
- })
- }
- })
- } else {
- res.json({
- success: false,
- message: 'La date choisi ne correspond pas a la date du tirage au sort',
- })
- }
- } else {
- res.json({
- success: false,
- message: "Le tirage a été déja effectué",
- })
- }
- }
- else {
- res.json({
- success: false,
- message: "La date n'est pas encore choisi",
- })
- }
- };
- //get winner of tirage
- exports.getWinnerTirage = async (req, res, next) => {
- count_tirage = await Tirage.countDocuments();
- tirage = await Tirage.findOne();
- if (count_tirage === 0) {
- res.status(404).json({
- success: false,
- message: `le tirage au sort n'est pas encore effectué`
- });
- }
- else {
- res.status(200).json(tirage);
- }
- };
|