eventController --> getAllEvents, getEventById, getEventsByCAtegory, addEvent
arnaucode idoctnef@openmailbox.org
Sat, 11 Feb 2017 18:41:40 +0100
7 files changed,
130 insertions(+),
17 deletions(-)
M
config.js
→
config.js
@@ -3,6 +3,7 @@ /*'secret': process.env.SECRET,// production version
'database': process.env.MONGO_DSN,*/ 'secret': 'secretfortoken',// local version 'database': 'mongodb://localhost/openeventsplatform', - "port" : process.env.PORT || 3000 + "port" : process.env.PORT || 3000, + "pageSize": 20 };
A
controllers/eventController.js
@@ -0,0 +1,98 @@
+var express = require("express"); +var app = express(); +var config = require('../config'); // get our config file +app.set('superSecret', config.secret); // secret variable +var mongoose = require('mongoose'); + +var userModel = mongoose.model('userModel'); +var eventModel = mongoose.model('eventModel'); + +var pageSize=config.pageSize; + +exports.getAllEvents = function(req, res) { + eventModel.find({date: {$gte: new Date()}}) + .sort('date') + .limit(pageSize) + .skip(pageSize * Number(req.query.page)) + .exec(function (err, events) { + if (err) return res.send(500, err.message); + res.status(200).jsonp(events); + }); +}; +exports.getEventById = function (req, res) { + eventModel.findOne({_id: req.params.eventid}) + .lean() + .populate('user', 'username avatar telegram phone') + .exec(function (err, event) { + if (err) return res.send(500, err.message); + if (!event) { + res.json({success: false, message: 'event not found.'}); + } else if (event) { + + res.status(200).jsonp(event); + } + }); +}; + + +exports.addEvent = function(req, res) { + userModel.findOne({'tokens.token': req.headers['x-access-token']}) + .exec(function(err, user){ + if (err) return res.send(500, err.message); + if (!user) { + console.log("user not found"); + res.json({success: false, message: 'User not found.'}); + } else if (user) { + var event = new eventModel({ + title: req.body.title, + description: req.body.description, + img: req.body.img, + date: req.body.date, + categories: req.body.categories, + generateddate: Date(), + user: user._id + }); + + event.save(function(err, event) { + if(err) return res.send(500, err.message); + + user.events.push(event._id); + user.save(function (err, user) { + if (err) return res.send(500, err.message); + exports.getAllEvents(req, res); + }); + });//end of event.save + } + });//end of usermodel.find +}; + + +/* +un get events by following, que seria: +s'envia un post /events/following +amb la data: +{ + users: ['user1', 'user4', 'user8'] +} +que bàsicament és una array amb els followings que tens +això retorna els events d'aquests users que segueixes +*/ + +/* +un get events by categories, que seria: +s'envia un get /events/category/:category +això retorna els events d'aquests users que segueixes +*/ +exports.getEventsByCategory = function(req, res) { + eventModel.find({ + date: {$gte: new Date()}, + 'categories.name': req.params.category + }) + .sort('date') + .limit(pageSize) + .skip(pageSize * Number(req.query.page)) + .exec(function (err, events) { + if (err) return res.send(500, err.message); + res.status(200).jsonp(events); + }); +};
M
controllers/userController.js
→
controllers/userController.js
@@ -8,6 +8,8 @@ var mongoose = require('mongoose');
var userModel = mongoose.model('userModel'); +var pageSize = config.pageSize; + exports.signup = function (req, res) { var user = new userModel({ username: req.body.username,@@ -91,7 +93,7 @@
exports.getAllUsers = function(req, res) { userModel.find() .limit(Number(req.query.pageSize)) - .skip(Number(req.query.pageSize) * Number(req.query.page)) + .skip(pageSize * Number(req.query.page)) .exec(function (err, users) { if (err) return res.send(500, err.message); res.status(200).jsonp(users);
M
models/alertModel.js
→
models/alertModel.js
@@ -15,7 +15,7 @@ district: { type: String },
geolocation: { lat: {type: Number}, long: {type: Number}, - name: { type: String, required: true } + name: { type: String } } }, user: {
M
models/eventModel.js
→
models/eventModel.js
@@ -4,10 +4,11 @@
var mongooseUniqueValidator = require('mongoose-unique-validator'); var eventSchema = new Schema({ - title: { type: String }, - description: { type: String }, + title: { type: String, required: true }, + description: { type: String, required: true }, img: { type: String }, - date: { type: Date }, + generateddate: { type: Date, required: true }, + date: { type: Date, required: true }, categories: [{ name: {type: String} }],@@ -18,7 +19,7 @@ district: { type: String },
geolocation: { lat: {type: Number}, long: {type: Number}, - name: { type: String, required: true } + name: { type: String} } }, user: {
M
models/userModel.js
→
models/userModel.js
@@ -8,16 +8,16 @@ username: { type: String, required: true, unique: true },
email: { type: String, required: true }, password: { type: String, required: true, select: false }, tokens: [{ - userAgent: {type: String}, + userAgent: {type: String, select: false}, token: {type: String, select: false}, - os: {type: String}, - browser: {type: String}, - device: {type: String}, - os_version: {type: String}, - browser_version: {type: String}, - ip: {type: String}, - lastLogin: {type: Date}, - birthdate: {type: Date}, + os: {type: String, select: false}, + browser: {type: String, select: false}, + device: {type: String, select: false}, + os_version: {type: String, select: false}, + browser_version: {type: String, select: false}, + ip: {type: String, select: false}, + lastLogin: {type: Date, select: false}, + birthdate: {type: Date, select: false}, }], description: { type: String }, img: { type: String, default: "https://assets-cdn.github.com/images/modules/logos_page/GitHub-Mark.png" },
M
server.js
→
server.js
@@ -31,7 +31,7 @@
var userMdl = require('./models/userModel')(app, mongoose); var userCtrl = require('./controllers/userController'); var eventMdl = require('./models/eventModel')(app, mongoose); -//var eventCtrl = require('./controllers/eventController'); +var eventCtrl = require('./controllers/eventController'); var alertMdl = require('./models/alertModel')(app, mongoose); //var alertCtrl = require('./controllers/alertController');@@ -57,6 +57,13 @@ .get(userCtrl.getAllUsers);
apiRoutes.route('/users/id/:userid') .get(userCtrl.getUserById); +apiRoutes.route('/events') + .get(eventCtrl.getAllEvents); +apiRoutes.route('/events/id/:eventid') + .get(eventCtrl.getEventById); +apiRoutes.route('/events/category/:category') + .get(eventCtrl.getEventsByCategory); + // route middleware to verify a token apiRoutes.use(function(req, res, next) { // check header or url parameters or post parameters for token@@ -87,6 +94,10 @@ });
} }); //fi verificació de token + + +apiRoutes.route('/events') + .post(eventCtrl.addEvent); app.use('/api', apiRoutes); // end of API routes -------------------------------------