Browse Source

decline join travel, and leave travel implemented

master
arnaucode 7 years ago
parent
commit
7e53192ccd
2 changed files with 130 additions and 0 deletions
  1. +126
    -0
      controllers/travelController.js
  2. +4
    -0
      server.js

+ 126
- 0
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<travel.joinPetitions.length; i++)
{
if(travel.joinPetitions[i].equals(req.body.userid))
{
indexPetition=JSON.parse(JSON.stringify(i));
}
}
if(indexPetition>-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) { exports.acceptJoin = function(req, res) {
userModel.findOne({'token': req.headers['x-access-token']}) userModel.findOne({'token': req.headers['x-access-token']})
.exec(function(err, userOwner){ .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<travel.joins.length; i++)
{
if(travel.joins[i].equals(userLeaving._id))
{
travel.joins.splice(i, 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: travel.user})
.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: "leave",
message: "user "+userLeaving.username+" leaves your travel "+travel.title,
date: new Date(),
icon: 'leave.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
});
}
});
}
});
};
exports.getTravelsByUserId = function(req, res) { exports.getTravelsByUserId = function(req, res) {
travelModel.find({ travelModel.find({
user: req.params.userid user: req.params.userid

+ 4
- 0
server.js

@ -126,8 +126,12 @@ apiRoutes.route('/travels/join/:travelid')
.post(travelCtrl.addJoinPetition); .post(travelCtrl.addJoinPetition);
apiRoutes.route('/travels/unjoin/:travelid') apiRoutes.route('/travels/unjoin/:travelid')
.post(travelCtrl.unJoin); .post(travelCtrl.unJoin);
apiRoutes.route('/travels/leave/:travelid')
.post(travelCtrl.leave);
apiRoutes.route('/travels/byuser/id/:userid') apiRoutes.route('/travels/byuser/id/:userid')
.get(travelCtrl.getTravelsByUserId); .get(travelCtrl.getTravelsByUserId);
apiRoutes.route('/travels/declineJoin/:travelid')
.post(travelCtrl.declineJoin);
apiRoutes.route('/travels/acceptJoin/:travelid') apiRoutes.route('/travels/acceptJoin/:travelid')
.post(travelCtrl.acceptJoin); .post(travelCtrl.acceptJoin);
//FINS AQUÏ COMPROVAT //FINS AQUÏ COMPROVAT

Loading…
Cancel
Save