X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=server%2Froutes%2Fchallenges.js;h=680a69fd766311c3feb219b4cca411944673fcb8;hb=51145f8c0e0595f195e26827e932306eb0083c10;hp=99f055fc7893675049c09d3503a2846837be141b;hpb=36093ebabecde5a86451a4600babbecc971887c0;p=vchess.git diff --git a/server/routes/challenges.js b/server/routes/challenges.js index 99f055fc..680a69fd 100644 --- a/server/routes/challenges.js +++ b/server/routes/challenges.js @@ -1,79 +1,64 @@ -// AJAX methods to get, create, update or delete a challenge - let router = require("express").Router(); const access = require("../utils/access"); const ChallengeModel = require("../models/Challenge"); const UserModel = require("../models/User"); //for name check - -router.delete("/testtest", access.ajax, (req,res) => { - console.log("passag"); - ChallengeModel.testfunc(); -}); +const params = require("../config/parameters"); router.post("/challenges", access.logged, access.ajax, (req,res) => { - const error = ChallengeModel.checkChallenge(req.body.chall); - if (!!error) - return res.json({errmsg:error}); - const challenge = + if (ChallengeModel.checkChallenge(req.body.chall)) { - fen: req.body.chall.fen, - timeControl: req.body.chall.timeControl, - vid: req.body.chall.vid, - uid: req.userId, - nbPlayers: req.body.chall.to.length, - }; - ChallengeModel.create(challenge, (err,lastId) => { - if (!!err) - return res.json(err); - if (!!req.body.chall.to[0]) + let challenge = + { + fen: req.body.chall.fen, + cadence: req.body.chall.cadence, + randomness: req.body.chall.randomness, + vid: req.body.chall.vid, + uid: req.userId, + to: req.body.chall.to, //string: user name (may be empty) + }; + const insertChallenge = () => { + ChallengeModel.create(challenge, (err,ret) => { + res.json(err || {cid:ret.cid}); + }); + }; + if (req.body.chall.to) { - UserModel.getByName(req.body.chall.to, (err,users) => { - if (!!err) - return res.json(err); - if (users.length < req.body.chall.to.length) - return res.json({errmsg: "Typo in player(s) name(s)"}); - ChallengeModel.initializeWillPlay( - users.map(u => u.id), - lastId["rowid"], - (err) => { - if (!!err) - return res.json(err); - res.json({cid: lastId["rowid"]}); - } - ); + UserModel.getOne("name", challenge.to, (err,user) => { + if (err || !user) + res.json(err || {errmsg: "Typo in player name"}); + else + { + challenge.to = user.id; //ready now to insert challenge + insertChallenge(); + if (user.notify) + UserModel.notify( + user, + "New challenge: " + params.siteURL + "/#/?disp=corr"); + } }); } else - res.json({cid: lastId["rowid"]}); - }); + insertChallenge(); + } }); -//// index -//router.get("/challenges", access.logged, access.ajax, (req,res) => { -// if (req.query["uid"] != req.user._id) -// return res.json({errmsg: "Not your challenges"}); -// let uid = ObjectID(req.query["uid"]); -// ChallengeModel.getByPlayer(uid, (err, challengeArray) => { -// res.json(err || {challenges: challengeArray}); -// }); -//}); -// -//function createChallenge(vid, from, to, res) -//{ -// ChallengeModel.create(vid, from, to, (err, chall) => { -// res.json(err || { -// // A challenge can be sent using only name, thus 'to' is returned -// to: chall.to, -// cid: chall._id -// }); -// }); -//} +router.get("/challenges", access.ajax, (req,res) => { + const uid = req.query.uid; + if (uid.match(/^[0-9]+$/)) + { + ChallengeModel.getByUser(uid, (err,challenges) => { + res.json(err || {challenges:challenges}); + }); + } +}); router.delete("/challenges", access.logged, access.ajax, (req,res) => { - const cid = req.query.cid; - ChallengeModel.remove(cid, req.userId, err => { - res.json(err || {}); - }); + const cid = req.query.id; + if (cid.match(/^[0-9]+$/)) + { + ChallengeModel.safeRemove(cid, req.userId); + res.json({}); + } }); module.exports = router;