arnaucube
arnaucube/commonroutesServerPublic Self-hosted repository
travel accept join petition implemented
arnaucode idoctnef@openmailbox.org
Sun, 29 Jan 2017 18:20:16 +0100
commit

711ee931ec30a044ab0c709f961b1cd43fce26fe

parent

2c3a12f1ad1a38876774e1a71ff1bfb44d83cc1a

2 files changed, 71 insertions(+), 0 deletions(-)

jump to
M controllers/travelController.js → controllers/travelController.js

@@ -22,6 +22,7 @@ travelModel.findOne({_id: req.params.travelid})

.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);

@@ -225,6 +226,74 @@ }

}); } + }); +}; + +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<travel.joinPetitions.length; i++) + { + if(travel.joinPetitions[i].equals(req.body.userid)) + { + indexPetition=JSON.parse(JSON.stringify(i)); + } + } + if(indexPetition>-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 }); };
M server.js → 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')