arnaucube
arnaucube/openEventsPlatformServerPublic Self-hosted repository
openEventsPlatformServer/controllers/eventController.js
controllers/eventController.jsRaw
  1var express = require("express");
  2var app = express();
  3var config = require('../config'); // get our config file
  4app.set('superSecret', config.secret); // secret variable
  5var mongoose = require('mongoose');
  6
  7var userModel = mongoose.model('userModel');
  8var eventModel = mongoose.model('eventModel');
  9
 10var pageSize=config.pageSize;
 11
 12exports.getAllEvents = function(req, res) {
 13	eventModel.find({
 14		date: {$gte: new Date()}//cal filtrar per type d'event, de si es alert o no
 15	})
 16	.lean()
 17    .populate('user', 'username img shortDescription')
 18	.sort('date')
 19    .limit(pageSize)
 20    .skip(pageSize * Number(req.query.page))
 21    .exec(function (err, events) {
 22        if (err) return res.send(500, err.message);
 23        res.status(200).jsonp(events);
 24    });
 25};
 26exports.getAllAlerts = function(req, res) {
 27	eventModel.find({
 28		date: {$gte: new Date()},
 29		type: "alert"
 30	})
 31	.lean()
 32    .populate('user', 'username img shortDescription')
 33	.sort('date')
 34    .limit(pageSize)
 35    .skip(pageSize * Number(req.query.page))
 36    .exec(function (err, events) {
 37        if (err) return res.send(500, err.message);
 38        res.status(200).jsonp(events);
 39    });
 40};
 41
 42exports.getEventById = function (req, res) {
 43    eventModel.findOne({_id: req.params.eventid})
 44    .lean()
 45    .populate('user', 'username img shortDescription')
 46    .exec(function (err, event) {
 47        if (err) return res.send(500, err.message);
 48        if (!event) {
 49            res.json({success: false, message: 'event not found.'});
 50        } else if (event) {
 51
 52            res.status(200).jsonp(event);
 53        }
 54    });
 55};
 56
 57
 58exports.addEvent = function(req, res) {
 59	userModel.findOne({'tokens.token': req.headers['x-access-token']})
 60	.exec(function(err, user){
 61		if (err) return res.send(500, err.message);
 62		if (!user) {
 63			console.log("user not found");
 64            res.json({success: false, message: 'User not found.'});
 65        } else if (user) {
 66			var event = new eventModel({
 67				title: req.body.title,
 68			    description:   req.body.description,
 69			    img:   req.body.img,
 70			    date:   req.body.date,
 71			    categories:   req.body.categories,
 72			    generateddate: Date(),
 73			    user:   user._id
 74			});
 75
 76			event.save(function(err, event) {
 77				if(err) return res.send(500, err.message);
 78
 79				user.events.push(event._id);
 80				user.save(function (err, user) {
 81                    if (err) return res.send(500, err.message);
 82					exports.getAllEvents(req, res);
 83                });
 84			});//end of event.save
 85		}
 86	});//end of usermodel.find
 87};
 88exports.addAlert = function(req, res) {
 89	userModel.findOne({'tokens.token': req.headers['x-access-token']})
 90	.exec(function(err, user){
 91		if (err) return res.send(500, err.message);
 92		if (!user) {
 93			console.log("user not found");
 94            res.json({success: false, message: 'User not found.'});
 95        } else if (user) {
 96			var event = new eventModel({
 97				title: req.body.title,
 98			    description:   req.body.description,
 99			    date:   req.body.date,
100			    generateddate: Date(),
101			    user:   user._id,
102				type: "alert"
103			});
104
105			event.save(function(err, event) {
106				if(err) return res.send(500, err.message);
107
108				user.events.push(event._id);
109				user.save(function (err, user) {
110                    if (err) return res.send(500, err.message);
111					exports.getAllEvents(req, res);
112                });
113			});//end of event.save
114		}
115	});//end of usermodel.find
116};
117exports.deleteEvent = function(req, res) {
118	userModel.findOne({'tokens.token': req.headers['x-access-token']})
119	.exec(function(err, user){
120		if (err) return res.send(500, err.message);
121		eventModel.findOne({
122			_id: req.params.eventid,
123			user: user._id
124		})
125		.exec(function(err, event) {
126			if (err) return res.send(500, err.message);
127			if(event.user.equals(user._id))
128			{
129				event.remove(function(err) {
130					if(err) return res.send(500, err.message);
131
132					console.log("deleted");
133					exports.getAllEvents(req, res);
134				});
135			}
136		});
137	});
138};//funciona, pero no esborra les referències dels users als events que s'esborren. Més endavant caldria fer-ho.
139
140/*
141un get events by following, que seria:
142s'envia un post /events/following
143amb la data:
144{
145  "following": ["user1", "user2", "user3"]
146}
147que bàsicament és una array amb els followings que tens
148això retorna els events d'aquests users que segueixes
149*/
150
151exports.getEventsByFollowingArray = function(req, res) {
152	eventModel.find({
153        date: {$gte: new Date()},
154        'username': req.body.users
155    })
156	.sort('date')
157    .limit(pageSize)
158    .skip(pageSize * Number(req.query.page))
159    .exec(function (err, events) {
160        if (err) return res.send(500, err.message);
161        res.status(200).jsonp(events);
162    });
163};
164
165/*
166un get events by categories, que seria:
167s'envia un get /events/category/:category
168això retorna els events d'aquests users que segueixes
169*/
170exports.getEventsByCategory = function(req, res) {
171	eventModel.find({
172        date: {$gte: new Date()},
173        'categories.name': req.params.category
174    })
175	.sort('date')
176    .limit(pageSize)
177    .skip(pageSize * Number(req.query.page))
178    .exec(function (err, events) {
179        if (err) return res.send(500, err.message);
180        res.status(200).jsonp(events);
181    });
182};