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};