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