arnaucube
arnaucube/openEventsPlatformServerPublic Self-hosted repository
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 img shortDescription')
 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 shortDescription')
 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};