mirror of
https://github.com/arnaucube/commonroutesServer.git
synced 2026-02-28 05:26:42 +01:00
implementing notification system
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
//File: controllers/travelController.js
|
//File: controllers/travelController.js
|
||||||
var mongoose = require('mongoose');
|
var mongoose = require('mongoose');
|
||||||
var userModel = mongoose.model('userModel');
|
var userModel = mongoose.model('userModel');
|
||||||
|
var notificationModel = mongoose.model('notificationModel');
|
||||||
var travelModel = mongoose.model('travelModel');
|
var travelModel = mongoose.model('travelModel');
|
||||||
var commentModel = mongoose.model('commentModel');
|
var commentModel = mongoose.model('commentModel');
|
||||||
|
|
||||||
@@ -8,28 +9,28 @@ var commentModel = mongoose.model('commentModel');
|
|||||||
exports.getAllTravels = function(req, res) {
|
exports.getAllTravels = function(req, res) {
|
||||||
//get travels with futures dates ($gte - greater than and equal than)
|
//get travels with futures dates ($gte - greater than and equal than)
|
||||||
travelModel.find({date: {$gte: new Date()}})
|
travelModel.find({date: {$gte: new Date()}})
|
||||||
.limit(Number(req.query.pageSize))
|
.limit(Number(req.query.pageSize))
|
||||||
.skip(Number(req.query.pageSize) * Number(req.query.page))
|
.skip(Number(req.query.pageSize) * Number(req.query.page))
|
||||||
.exec(function (err, travels) {
|
.exec(function (err, travels) {
|
||||||
if (err) return res.send(500, err.message);
|
if (err) return res.send(500, err.message);
|
||||||
res.status(200).jsonp(travels);
|
res.status(200).jsonp(travels);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.getTravelById = function (req, res) {
|
exports.getTravelById = function (req, res) {
|
||||||
travelModel.findOne({_id: req.params.travelid})
|
travelModel.findOne({_id: req.params.travelid})
|
||||||
.lean()
|
.lean()
|
||||||
.populate('joins', 'username avatar')
|
.populate('joins', 'username avatar')
|
||||||
.populate('comments', 'comment user')
|
.populate('comments', 'comment user')
|
||||||
.exec(function (err, travel) {
|
.exec(function (err, travel) {
|
||||||
if (err) return res.send(500, err.message);
|
if (err) return res.send(500, err.message);
|
||||||
if (!travel) {
|
if (!travel) {
|
||||||
res.json({success: false, message: 'travel not found.'});
|
res.json({success: false, message: 'travel not found.'});
|
||||||
} else if (travel) {
|
} else if (travel) {
|
||||||
|
|
||||||
res.status(200).jsonp(travel);
|
res.status(200).jsonp(travel);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.addTravel = function(req, res) {
|
exports.addTravel = function(req, res) {
|
||||||
@@ -141,19 +142,22 @@ exports.addJoinPetition = function(req, res) {
|
|||||||
res.json({success: false, message: 'User not found.'});
|
res.json({success: false, message: 'User not found.'});
|
||||||
} else if (user) {
|
} else if (user) {
|
||||||
//notification
|
//notification
|
||||||
var notification = {
|
var notification = new notificationModel({
|
||||||
type: "join",
|
type: "join",
|
||||||
message: "user "+userJoining.username+" joins your travel "+travel.title,
|
message: "user "+userJoining.username+" joins your travel "+travel.title,
|
||||||
date: new Date(),
|
date: new Date(),
|
||||||
icon: 'join.png',
|
icon: 'join.png',
|
||||||
link: ""
|
link: ""
|
||||||
};
|
});
|
||||||
user.notifications.push(notification);
|
notification.save(function(err, notification) {
|
||||||
user.save(function(err, user) {
|
|
||||||
if (err) return res.send(500, err.message);
|
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");
|
console.log("notification saved");
|
||||||
exports.getTravelById(req, res);
|
exports.getTravelById(req, res);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});//end saving notification
|
});//end saving notification
|
||||||
@@ -197,43 +201,22 @@ exports.unJoin = function(req, res) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.getJoinsByTravelId = function(req, res) {
|
exports.getTravelsByUserId = function(req, res) {
|
||||||
joinModel.find({
|
travelModel.find({
|
||||||
travelId: req.params.travelId
|
user: req.params.userid
|
||||||
}, function(err, joins) {
|
})
|
||||||
|
.lean()
|
||||||
|
.populate('joins', 'username avatar')
|
||||||
|
.populate('comments', 'comment user')
|
||||||
|
.exec(function (err, travels) {
|
||||||
|
if (err) return res.send(500, err.message);
|
||||||
|
if (!travels) {
|
||||||
|
res.json({success: false, message: 'travel not found.'});
|
||||||
|
} else if (travels) {
|
||||||
|
|
||||||
if (err) throw err;
|
res.status(200).jsonp(travels);
|
||||||
|
}
|
||||||
if (!joins) {
|
});
|
||||||
res.json({ success: false, message: 'no joins for travelId' });
|
|
||||||
} else if (joins) {
|
|
||||||
// return the information including token as JSON
|
|
||||||
res.jsonp(joins);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.findAllTravelsFromUsername = function(req, res) {
|
|
||||||
travelModel.find({
|
|
||||||
owner: req.params.username,
|
|
||||||
date: {$gte: new Date()}
|
|
||||||
}, function(err, travels) {
|
|
||||||
|
|
||||||
if (err) throw err;
|
|
||||||
|
|
||||||
if (!travels) {
|
|
||||||
res.json({ success: false, message: 'no travels for user' });
|
|
||||||
} else if (travels) {
|
|
||||||
console.log(travels);
|
|
||||||
// return the information including token as JSON
|
|
||||||
res.jsonp(travels);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
//File: controllers/userController.js
|
//File: controllers/userController.js
|
||||||
var mongoose = require('mongoose');
|
var mongoose = require('mongoose');
|
||||||
var userModel = mongoose.model('userModel');
|
var userModel = mongoose.model('userModel');
|
||||||
|
var notificationModel = mongoose.model('notificationModel');
|
||||||
|
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
|||||||
21
models/notificationModel.js
Normal file
21
models/notificationModel.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
var mongoose = require('mongoose'),
|
||||||
|
Schema = mongoose.Schema;
|
||||||
|
|
||||||
|
var mongooseUniqueValidator = require('mongoose-unique-validator');
|
||||||
|
|
||||||
|
|
||||||
|
var notificationSchema = new Schema({
|
||||||
|
user: {
|
||||||
|
type: mongoose.Schema.Types.ObjectId,
|
||||||
|
ref: 'userModel'
|
||||||
|
},
|
||||||
|
state: {type: String, default: "pendent"},//viewed, pendent
|
||||||
|
message: {type: String},
|
||||||
|
link: {type: String},//aquí oju, a la app i a la web calen links diferents, però ho podem fer posant sempre a la app i a la web el prefix del link (#!/app) o (#/app/), i després afegint-hi la pàgina on volem enviar el routing, per exemple (dashboard)
|
||||||
|
icon: {type: String},
|
||||||
|
date: {type: Date},
|
||||||
|
dateviewed: {type: Date}
|
||||||
|
})
|
||||||
|
|
||||||
|
notificationSchema.plugin(mongooseUniqueValidator);
|
||||||
|
module.exports = mongoose.model('notificationModel', notificationSchema);
|
||||||
@@ -33,12 +33,8 @@ var userSchema = new Schema({
|
|||||||
ref: 'travelModel'
|
ref: 'travelModel'
|
||||||
}],
|
}],
|
||||||
notifications: [{
|
notifications: [{
|
||||||
state: {type: String, default: "pendent"},//viewed, pendent
|
type: mongoose.Schema.Types.ObjectId,
|
||||||
message: {type: String},
|
ref: 'notificationModel'
|
||||||
link: {type: String},//aquí oju, a la app i a la web calen links diferents, però ho podem fer posant sempre a la app i a la web el prefix del link (#!/app) o (#/app/), i després afegint-hi la pàgina on volem enviar el routing, per exemple (dashboard)
|
|
||||||
icon: {type: String},
|
|
||||||
date: {type: Date},
|
|
||||||
dateviewed: {type: Date}
|
|
||||||
}]
|
}]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
10
server.js
10
server.js
@@ -29,10 +29,10 @@ app.use(morgan('dev'));
|
|||||||
|
|
||||||
// Import Models and controllers
|
// Import Models and controllers
|
||||||
var userMdl = require('./models/userModel')(app, mongoose);
|
var userMdl = require('./models/userModel')(app, mongoose);
|
||||||
var userCtrl = require('./controllers/userController');
|
var notificationMdl = require('./models/notificationModel')(app, mongoose);
|
||||||
|
|
||||||
var travelMdl = require('./models/travelModel')(app, mongoose);
|
var travelMdl = require('./models/travelModel')(app, mongoose);
|
||||||
var commentMdl = require('./models/commentModel')(app, mongoose);
|
var commentMdl = require('./models/commentModel')(app, mongoose);
|
||||||
|
var userCtrl = require('./controllers/userController');
|
||||||
var travelCtrl = require('./controllers/travelController');
|
var travelCtrl = require('./controllers/travelController');
|
||||||
|
|
||||||
/*// Example Route
|
/*// Example Route
|
||||||
@@ -61,11 +61,11 @@ apiRoutes.route('/signup')
|
|||||||
.post(userCtrl.signup);
|
.post(userCtrl.signup);
|
||||||
apiRoutes.route('/users')
|
apiRoutes.route('/users')
|
||||||
.get(userCtrl.getAllUsers);
|
.get(userCtrl.getAllUsers);
|
||||||
apiRoutes.route('/users/getById/:userid')
|
apiRoutes.route('/users/getByUserId/:userid')
|
||||||
.get(userCtrl.getUserById);
|
.get(userCtrl.getUserById);
|
||||||
apiRoutes.route('/travels')
|
apiRoutes.route('/travels')
|
||||||
.get(travelCtrl.getAllTravels);
|
.get(travelCtrl.getAllTravels);
|
||||||
apiRoutes.route('/travels/getById/:travelid')
|
apiRoutes.route('/travels/getByTravelId/:travelid')
|
||||||
.get(travelCtrl.getTravelById);
|
.get(travelCtrl.getTravelById);
|
||||||
|
|
||||||
|
|
||||||
@@ -120,6 +120,8 @@ apiRoutes.route('/travels/join/:travelid')
|
|||||||
.get(travelCtrl.addJoinPetition);
|
.get(travelCtrl.addJoinPetition);
|
||||||
apiRoutes.route('/travels/unjoin/:travelid')
|
apiRoutes.route('/travels/unjoin/:travelid')
|
||||||
.get(travelCtrl.unJoin);
|
.get(travelCtrl.unJoin);
|
||||||
|
apiRoutes.route('/travels/getByUserId/:userid')
|
||||||
|
.get(travelCtrl.getTravelsByUserId);
|
||||||
//FINS AQUÏ COMPROVAT
|
//FINS AQUÏ COMPROVAT
|
||||||
|
|
||||||
apiRoutes.route('/travels/comment/:travelid')
|
apiRoutes.route('/travels/comment/:travelid')
|
||||||
|
|||||||
Reference in New Issue
Block a user