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