From 7e53192ccd70bb0503263d184ca925f0989445fa Mon Sep 17 00:00:00 2001 From: arnaucode Date: Mon, 30 Jan 2017 12:41:34 +0100 Subject: [PATCH] decline join travel, and leave travel implemented --- controllers/travelController.js | 126 ++++++++++++++++++++++++++++++++ server.js | 4 + 2 files changed, 130 insertions(+) diff --git a/controllers/travelController.js b/controllers/travelController.js index 16df77a..1603508 100644 --- a/controllers/travelController.js +++ b/controllers/travelController.js @@ -229,6 +229,73 @@ exports.unJoin = function(req, res) { }); }; + +exports.declineJoin = 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.joinPetitions.splice(indexPetition, 1); + } + 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+" declines 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.acceptJoin = function(req, res) { userModel.findOne({'token': req.headers['x-access-token']}) .exec(function(err, userOwner){ @@ -297,6 +364,65 @@ exports.acceptJoin = function(req, res) { }); }; +exports.leave = function(req, res) { + userModel.findOne({'token': req.headers['x-access-token']}) + .exec(function(err, userLeaving){ + if (!userLeaving) { + res.json({success: false, message: 'userLeaving not found.'}); + } else if (userLeaving) { + travelModel.findOne({ + _id: req.params.travelid, + joins: userLeaving._id + }) + .exec(function(err, travel){ + if (err) return res.send(500, err.message); + if (!travel) { + res.json({success: false, message: 'can not unjoin this travel'}); + } else if (travel) { + for(var i=0; i