From 509f0610162158bc5a764fb7c35eeb3188e6fbee Mon Sep 17 00:00:00 2001 From: arnaucode Date: Tue, 21 Feb 2017 09:44:42 +0100 Subject: [PATCH] alert system implemented --- controllers/eventController.js | 49 +++++++++++++++++++++++++++++++++- models/alertModel.js | 28 ------------------- models/eventModel.js | 3 ++- server.js | 4 +++ 4 files changed, 54 insertions(+), 30 deletions(-) delete mode 100644 models/alertModel.js diff --git a/controllers/eventController.js b/controllers/eventController.js index f88e9eb..c8e5825 100644 --- a/controllers/eventController.js +++ b/controllers/eventController.js @@ -10,7 +10,24 @@ var eventModel = mongoose.model('eventModel'); var pageSize=config.pageSize; exports.getAllEvents = function(req, res) { - eventModel.find({date: {$gte: new Date()}}) + eventModel.find({ + date: {$gte: new Date()}//cal filtrar per type d'event, de si es alert o no + }) + .lean() + .populate('user', 'username img shortDescription') + .sort('date') + .limit(pageSize) + .skip(pageSize * Number(req.query.page)) + .exec(function (err, events) { + if (err) return res.send(500, err.message); + res.status(200).jsonp(events); + }); +}; +exports.getAllAlerts = function(req, res) { + eventModel.find({ + date: {$gte: new Date()}, + type: "alert" + }) .lean() .populate('user', 'username img shortDescription') .sort('date') @@ -21,6 +38,7 @@ exports.getAllEvents = function(req, res) { res.status(200).jsonp(events); }); }; + exports.getEventById = function (req, res) { eventModel.findOne({_id: req.params.eventid}) .lean() @@ -67,6 +85,35 @@ exports.addEvent = function(req, res) { } });//end of usermodel.find }; +exports.addAlert = function(req, res) { + userModel.findOne({'tokens.token': req.headers['x-access-token']}) + .exec(function(err, user){ + if (err) return res.send(500, err.message); + if (!user) { + console.log("user not found"); + res.json({success: false, message: 'User not found.'}); + } else if (user) { + var event = new eventModel({ + title: req.body.title, + description: req.body.description, + date: req.body.date, + generateddate: Date(), + user: user._id, + type: "alert" + }); + + event.save(function(err, event) { + if(err) return res.send(500, err.message); + + user.events.push(event._id); + user.save(function (err, user) { + if (err) return res.send(500, err.message); + exports.getAllEvents(req, res); + }); + });//end of event.save + } + });//end of usermodel.find +}; exports.deleteEvent = function(req, res) { userModel.findOne({'tokens.token': req.headers['x-access-token']}) .exec(function(err, user){ diff --git a/models/alertModel.js b/models/alertModel.js deleted file mode 100644 index db50f9c..0000000 --- a/models/alertModel.js +++ /dev/null @@ -1,28 +0,0 @@ -var mongoose = require('mongoose'), - Schema = mongoose.Schema; - -var mongooseUniqueValidator = require('mongoose-unique-validator'); - -var alertSchema = new Schema({ - title: { type: String }, - description: { type: String }, - img: { type: String }, - date: { type: Date }, - location:{ - direction: { type: String }, - city: { type: String }, - district: { type: String }, - geo: { - lat: {type: Number}, - long: {type: Number}, - name: { type: String } - } - }, - user: { - type: mongoose.Schema.Types.ObjectId, - ref: 'userModel' - } -}); - -alertSchema.plugin(mongooseUniqueValidator); -module.exports = mongoose.model('alertModel', alertSchema); diff --git a/models/eventModel.js b/models/eventModel.js index fd4857e..a46a8a7 100644 --- a/models/eventModel.js +++ b/models/eventModel.js @@ -25,7 +25,8 @@ var eventSchema = new Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: 'userModel' - } + }, + type: {type: String} }); eventSchema.plugin(mongooseUniqueValidator); diff --git a/server.js b/server.js index 490014b..529ae38 100644 --- a/server.js +++ b/server.js @@ -59,6 +59,8 @@ apiRoutes.route('/users/id/:userid') apiRoutes.route('/events') .get(eventCtrl.getAllEvents); +apiRoutes.route('/alerts') + .get(eventCtrl.getAllAlerts); apiRoutes.route('/events/id/:eventid') .get(eventCtrl.getEventById); apiRoutes.route('/events/following') @@ -100,6 +102,8 @@ apiRoutes.use(function(req, res, next) { apiRoutes.route('/events') .post(eventCtrl.addEvent); +apiRoutes.route('/alerts') + .post(eventCtrl.addAlert); apiRoutes.route('/events/id/:eventid') .delete(eventCtrl.deleteEvent);