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