|
|
@ -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 |
|
|
|