Start work on challenges + games server side
[vchess.git] / server / routes / challenges.js
index 174cf45..663072f 100644 (file)
@@ -3,26 +3,35 @@
 let router = require("express").Router();
 const access = require("../utils/access");
 const ChallengeModel = require("../models/Challenge");
+const UserModel = require("../models/User"); //for name check
 
-router.post("/challenges/:vid([0-9]+)", access.logged, access.ajax, (req,res) => {
-       const vid = req.params["vid"];
-       const chall = {
-               uid: req.userId,
-               vid: vid,
-               fen: req.body["fen"],
-               mainTime: req.body["mainTime"],
-               increment: req.body["increment"],
-               nbPlayers: req.body["nbPlayers"],
-               players: req.body["players"],
-       };
-       const error = ChallengeModel.checkChallenge(chall);
-       ChallengeModel.create(chall, (err,lastId) => {
+router.post("/challenges", access.logged, access.ajax, (req,res) => {
+       const error = ChallengeModel.checkChallenge(req.body.chall);
+  // TODO: treat "to" field separately (search users by name)
+  // --> replace "to" by an array of uid (in chall), then call:
+       const from = req.userId;
+//     let to = !!req.body.to ? ObjectID(req.body.to) : undefined;
+//     let nameTo = !!req.body.nameTo ? req.body.nameTo : undefined;
+//     let vid = ObjectID(req.body.vid);
+//     if (!to && !!nameTo)
+//     {
+//             UserModel.getByName(nameTo, (err,user) => {
+//                     access.checkRequest(res, err, user, "Opponent not found", () => {
+//                             createChallenge(vid, from, user._id, res);
+//                     });
+//             });
+//     }
+//     else if (!!to)
+//             createChallenge(vid, from, to, res);
+//     else
+//             createChallenge(vid, from, undefined, res); //automatch
+       ChallengeModel.create(req.body.chall, (err,lastId) => {
                res.json(err || {cid: lastId["rowid"]});
        });
 });
 
 //// index
-//router.get("/challengesbyplayer", access.logged, access.ajax, (req,res) => {
+//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"]);
@@ -42,28 +51,6 @@ router.post("/challenges/:vid([0-9]+)", access.logged, access.ajax, (req,res) =>
 //     });
 //}
 //
-//// from[, to][,nameTo]
-//router.post("/challenges", access.logged, access.ajax, (req,res) => {
-//     if (req.body.from != req.user._id)
-//             return res.json({errmsg: "Identity usurpation"});
-//     let from = ObjectID(req.body.from);
-//     let to = !!req.body.to ? ObjectID(req.body.to) : undefined;
-//     let nameTo = !!req.body.nameTo ? req.body.nameTo : undefined;
-//     let vid = ObjectID(req.body.vid);
-//     if (!to && !!nameTo)
-//     {
-//             UserModel.getByName(nameTo, (err,user) => {
-//                     access.checkRequest(res, err, user, "Opponent not found", () => {
-//                             createChallenge(vid, from, user._id, res);
-//                     });
-//             });
-//     }
-//     else if (!!to)
-//             createChallenge(vid, from, to, res);
-//     else
-//             createChallenge(vid, from, undefined, res); //automatch
-//});
-//
 //router.delete("/challenges", access.logged, access.ajax, (req,res) => {
 //     let cid = ObjectID(req.query.cid);
 //     ChallengeModel.getById(cid, (err,chall) => {