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