129 lines
3.7 KiB
JavaScript
129 lines
3.7 KiB
JavaScript
|
const { QueryTypes } = require("sequelize");
|
||
|
|
||
|
const config = require("../config/main.js");
|
||
|
|
||
|
const tool = require("../tools/main");
|
||
|
const toolError = require("../tools/error");
|
||
|
|
||
|
const userCtrl=require("./user");
|
||
|
|
||
|
const txt = require("../lang/"+config.adminLang+"/pause");
|
||
|
const txtGeneral = require("../lang/"+config.adminLang+"/general");
|
||
|
|
||
|
exports.create = async (req, res, next) =>
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
const db = require("../models/index");
|
||
|
const connectedUser=req.connectedUser;
|
||
|
req.body.SubscriptionId=connectedUser.Subscription.id;
|
||
|
await db["Pause"].create({ ...req.body });
|
||
|
userCtrl.creaUserJson(connectedUser.User.id);
|
||
|
res.status(201).json({ message: txt.createdOkMessage });
|
||
|
next();
|
||
|
}
|
||
|
catch(e)
|
||
|
{
|
||
|
const returnAPI=toolError.returnSequelize(e);
|
||
|
if(returnAPI.messages)
|
||
|
{
|
||
|
res.status(returnAPI.status).json({ errors : returnAPI.messages });
|
||
|
next();
|
||
|
}
|
||
|
else
|
||
|
next(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
exports.modify = async (req, res, next) =>
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
const db = require("../models/index");
|
||
|
const connectedUser=req.connectedUser;
|
||
|
if(!checkPauseIsOk(req.params.id, connectedUser))
|
||
|
res.status(404).json({ errors: txtGeneral.serverError });
|
||
|
else
|
||
|
{
|
||
|
await db["Pause"].update({ ...req.body }, { where: { id : req.params.id } , fields: ["name", "startingAt", "endingAt"], limit:1 }),
|
||
|
userCtrl.creaUserJson(connectedUser.User.id);
|
||
|
res.status(201).json({ message: txt.updatedOkMessage });
|
||
|
}
|
||
|
next();
|
||
|
}
|
||
|
catch(e)
|
||
|
{
|
||
|
const returnAPI=toolError.returnSequelize(e);
|
||
|
if(returnAPI.length!==0)
|
||
|
{
|
||
|
res.status(returnAPI.status).json({ errors : returnAPI.messages });
|
||
|
next();
|
||
|
}
|
||
|
else
|
||
|
next(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
exports.delete = async (req, res, next) =>
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
const db = require("../models/index");
|
||
|
const connectedUser=req.connectedUser;
|
||
|
if(!checkPauseIsOk(req.params.id, connectedUser))
|
||
|
res.status(404).json({ errors: txtGeneral.serverError });
|
||
|
else
|
||
|
{
|
||
|
await db["Pause"].destroy({ where: { id : req.params.id }, limit:1 });
|
||
|
userCtrl.creaUserJson(connectedUser.User.id);
|
||
|
res.status(200).json({ message: txt.deletedOkMessage });
|
||
|
}
|
||
|
next();
|
||
|
}
|
||
|
catch(e)
|
||
|
{
|
||
|
next(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Cron
|
||
|
exports.deleteOldPauses= async(req, res, next) =>
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
const db = require("../models/index");
|
||
|
// on laisse deux jours de rab pour les décalages horaires & co
|
||
|
const userPauses=await db.sequelize.query("SELECT DISTINCT `Subscriptions`.`UserId` FROM `Subscriptions` INNER JOIN `Pauses` ON `Subscriptions`.`id`=`Pauses`.`SubscriptionId` WHERE ADDDATE(`endingAt`, 2) < NOW()", { type: QueryTypes.SELECT });
|
||
|
if(userPauses.length!==0)
|
||
|
{
|
||
|
await db.sequelize.query("DELETE FROM `Pauses` WHERE ADDDATE(`endingAt`, 2) < NOW()");
|
||
|
for(i in userPauses)
|
||
|
await userCtrl.creaUserJson(userPauses[i].UserId);
|
||
|
}
|
||
|
res.status(200).json(true);
|
||
|
next();
|
||
|
}
|
||
|
catch(e)
|
||
|
{
|
||
|
next(e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// FONCTIONS UTILITAIRES
|
||
|
|
||
|
// Vérifie si la période de pause appartient bien à cet utilisateur
|
||
|
const checkPauseIsOk = (idPause, user) =>
|
||
|
{
|
||
|
if(!user.Pauses)
|
||
|
return false;
|
||
|
let PauseIsOk=false, i=0;
|
||
|
while (!PauseIsOk && user.Pauses[i])
|
||
|
{
|
||
|
if(user.Pauses[i].id == idPause)// ! n'ont pas forcément le même type
|
||
|
PauseIsOk=true;
|
||
|
else
|
||
|
i++;
|
||
|
}
|
||
|
return PauseIsOk;
|
||
|
}
|