From 711ee931ec30a044ab0c709f961b1cd43fce26fe Mon Sep 17 00:00:00 2001 From: arnaucode Date: Sun, 29 Jan 2017 18:20:16 +0100 Subject: [PATCH] travel accept join petition implemented --- controllers/travelController.js | 69 +++++++++++++++++++++++++++++++++ server.js | 2 + 2 files changed, 71 insertions(+) diff --git a/controllers/travelController.js b/controllers/travelController.js index 72260d8..16df77a 100644 --- a/controllers/travelController.js +++ b/controllers/travelController.js @@ -22,6 +22,7 @@ exports.getTravelById = function (req, res) { .lean() .populate('user', 'username avatar telegram phone') .populate('joins', 'username avatar') + .populate('joinPetitions', 'username avatar') .populate('comments', 'comment user') .exec(function (err, travel) { if (err) return res.send(500, err.message); @@ -228,6 +229,74 @@ exports.unJoin = function(req, res) { }); }; +exports.acceptJoin = function(req, res) { + userModel.findOne({'token': req.headers['x-access-token']}) + .exec(function(err, userOwner){ + if (err) return res.send(500, err.message); + if (!userOwner) { + res.json({success: false, message: 'User not found.'}); + } else if (userOwner) { + travelModel.findOne({ + _id: req.params.travelid, + user: userOwner._id, + joinPetitions: req.body.userid + }) + .exec(function(err, travel){ + if (err) return res.send(500, err.message); + if (!travel) { + res.json({success: false, message: 'travel not found. You can not join a travel if you have created it, or if you have already joined'}); + } else if (travel) { + var indexPetition=-1; + for(var i=0; i-1) + { + travel.joins.push(JSON.parse(JSON.stringify(travel.joinPetitions[indexPetition]))); + travel.joinPetitions.splice(indexPetition, 1); + console.log(travel); + } + travel.save(function(err, travel) { + if(err) return res.send(500, err.message); + + //start saving notification, get user owner of travel + userModel.findOne({_id: req.body.userid}) + .exec(function(err, user){ + if (err) return res.send(500, err.message); + if (!user) { + res.json({success: false, message: 'User not found.'}); + } else if (user) { + //notification + var notification = new notificationModel({ + concept: "travel", + message: "user "+userOwner.username+" accepts your petition for "+travel.title, + date: new Date(), + icon: 'travel.png', + link: "travels/" + travel._id + }); + notification.save(function(err, notification) { + if (err) return res.send(500, err.message); + user.notifications.push(notification._id); + user.save(function(err, user) { + if (err) return res.send(500, err.message); + + console.log("notification saved"); + exports.getTravelById(req, res); + }); + }); + } + });//end saving notification + });//end of travel save + }//end of else if travel + }); + }//end of else if user + }); +}; + exports.getTravelsByUserId = function(req, res) { travelModel.find({ user: req.params.userid diff --git a/server.js b/server.js index 8f70bd8..621a865 100755 --- a/server.js +++ b/server.js @@ -128,6 +128,8 @@ apiRoutes.route('/travels/unjoin/:travelid') .post(travelCtrl.unJoin); apiRoutes.route('/travels/byuser/id/:userid') .get(travelCtrl.getTravelsByUserId); +apiRoutes.route('/travels/acceptJoin/:travelid') + .post(travelCtrl.acceptJoin); //FINS AQUƏ COMPROVAT apiRoutes.route('/travels/comment/:travelid')