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