Remove test instructions, fix CORS for DELETE method
[vchess.git] / server / routes / challenges.js
CommitLineData
ab4f4bf2 1// AJAX methods to get, create, update or delete a challenge
582df349 2
ab4f4bf2
BA
3let router = require("express").Router();
4const access = require("../utils/access");
5const ChallengeModel = require("../models/Challenge");
052d17ea 6const UserModel = require("../models/User"); //for name check
8d7e2786 7
052d17ea 8router.post("/challenges", access.logged, access.ajax, (req,res) => {
1f49533d
BA
9 const error = ChallengeModel.checkChallenge(req.body.chall);
10 if (!!error)
11 return res.json({errmsg:error});
12 const challenge =
13 {
14 fen: req.body.chall.fen,
15 timeControl: req.body.chall.timeControl,
16 vid: req.body.chall.vid,
17 uid: req.userId,
18 nbPlayers: req.body.chall.to.length,
19 };
20 ChallengeModel.create(challenge, (err,lastId) => {
21 if (!!err)
22 return res.json(err);
23 if (!!req.body.chall.to[0])
24 {
25 UserModel.getByName(req.body.chall.to, (err,users) => {
26 if (!!err)
27 return res.json(err);
28 if (users.length < req.body.chall.to.length)
29 return res.json({errmsg: "Typo in player(s) name(s)"});
30 ChallengeModel.initializeWillPlay(
31 users.map(u => u.id),
32 lastId["rowid"],
33 (err) => {
34 if (!!err)
35 return res.json(err);
36 res.json({cid: lastId["rowid"]});
37 }
38 );
39 });
40 }
41 else
42 res.json({cid: lastId["rowid"]});
43 });
8d7e2786
BA
44});
45
ab4f4bf2 46//// index
f4f4c03c 47//router.get("/challenges", access.logged, access.ajax, (req,res) => {
1f49533d
BA
48// if (req.query["uid"] != req.user._id)
49// return res.json({errmsg: "Not your challenges"});
50// let uid = ObjectID(req.query["uid"]);
51// ChallengeModel.getByPlayer(uid, (err, challengeArray) => {
52// res.json(err || {challenges: challengeArray});
53// });
ab4f4bf2
BA
54//});
55//
56//function createChallenge(vid, from, to, res)
57//{
1f49533d
BA
58// ChallengeModel.create(vid, from, to, (err, chall) => {
59// res.json(err || {
60// // A challenge can be sent using only name, thus 'to' is returned
61// to: chall.to,
62// cid: chall._id
63// });
64// });
ab4f4bf2 65//}
1f49533d
BA
66
67router.delete("/challenges", access.logged, access.ajax, (req,res) => {
77fd7298 68 const cid = req.query.id;
1f49533d
BA
69 ChallengeModel.remove(cid, req.userId, err => {
70 res.json(err || {});
71 });
72});
8d7e2786
BA
73
74module.exports = router;