Browse Source

travel accept join petition implemented

master
arnaucode 7 years ago
parent
commit
711ee931ec
2 changed files with 71 additions and 0 deletions
  1. +69
    -0
      controllers/travelController.js
  2. +2
    -0
      server.js

+ 69
- 0
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<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
});
};
exports.getTravelsByUserId = function(req, res) {
travelModel.find({
user: req.params.userid

+ 2
- 0
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')

Loading…
Cancel
Save