Drop 'WillPlay' table (no multiplayers games)
[vchess.git] / server / routes / challenges.js
1 // AJAX methods to get, create, update or delete a challenge
2
3 let router = require("express").Router();
4 const access = require("../utils/access");
5 const ChallengeModel = require("../models/Challenge");
6 const UserModel = require("../models/User"); //for name check
7
8 router.get("/challenges", (req,res) => {
9 ChallengeModel.getByUser(req.query["uid"], (err,challenges) => {
10 res.json(err || {challenges:challenges});
11 });
12 });
13
14 router.post("/challenges", access.logged, access.ajax, (req,res) => {
15 const error = ChallengeModel.checkChallenge(req.body.chall);
16 if (!!error)
17 return res.json({errmsg:error});
18 let challenge =
19 {
20 fen: req.body.chall.fen,
21 timeControl: req.body.chall.timeControl,
22 vid: req.body.chall.vid,
23 uid: req.userId,
24 to: req.body.chall.to, //string: user name (may be empty)
25 };
26 const insertChallenge = () => {
27 ChallengeModel.create(challenge, (err) => {
28 if (!!err)
29 return res.json(err);
30 });
31 };
32 if (!!req.body.chall.to)
33 {
34 UserModel.getOne("name", challenge.to, (err,user) => {
35 if (!!err || !user)
36 return res.json(err | {errmsg: "Typo in player name"});
37 challenge.to = user.id; //ready now to insert challenge
38 });
39 insertChallenge();
40 }
41 else
42 insertChallenge();
43 });
44
45 function launchGame(cid, uid)
46 {
47 // TODO: gather challenge infos
48 // Then create game, and remove challenge
49 }
50
51 //// index
52 //router.get("/challenges", access.logged, access.ajax, (req,res) => {
53 // if (req.query["uid"] != req.user._id)
54 // return res.json({errmsg: "Not your challenges"});
55 // let uid = ObjectID(req.query["uid"]);
56 // ChallengeModel.getByPlayer(uid, (err, challengeArray) => {
57 // res.json(err || {challenges: challengeArray});
58 // });
59 //});
60 //
61 //function createChallenge(vid, from, to, res)
62 //{
63 // ChallengeModel.create(vid, from, to, (err, chall) => {
64 // res.json(err || {
65 // // A challenge can be sent using only name, thus 'to' is returned
66 // to: chall.to,
67 // cid: chall._id
68 // });
69 // });
70 //}
71
72 router.delete("/challenges", access.logged, access.ajax, (req,res) => {
73 const cid = req.query.id;
74 ChallengeModel.remove(cid, req.userId, err => {
75 res.json(err || {});
76 });
77 });
78
79 module.exports = router;