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