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