Skip to content

Instantly share code, notes, and snippets.

@jonnadams
Created July 30, 2016 19:21
Show Gist options
  • Save jonnadams/3cd0b4412b2299e9143f12463d2a3b2b to your computer and use it in GitHub Desktop.
Save jonnadams/3cd0b4412b2299e9143f12463d2a3b2b to your computer and use it in GitHub Desktop.
Evently - Event Api Routes
/**
* Evently Api Event Routes.
*/
'use strict';
var _ = require('lodash'),
auth = require('../auth'),
async = require('async'),
config = require('../config'),
Event = require('./event.model');
module.exports = function(app, express) {
var eventRouter = express.Router();
eventRouter.route('/event')
.get(function(req, res){
Event.find(function(err, events) {
if (err) {
return res.send(err);
}
res.json({success: true, events:events});
});
})
.post(auth({roles:['admin']}), function(req, res){
var event = new Event({
title: req.body.title,
dates: req.body.dates,
description: req.body.description,
category: req.body.category,
});
event.save(function(err){
if (err) {
return res.send(err);
} else {
res.json({
success: true,
message: 'Event created!',
event: event
});
}
});
});
eventRouter.route('/event/:eventid')
// Get a single event.
.get(function (req, res) {
var eventid = req.params.eventid;
Event.findById(eventid, function (err, event) {
if (event) {
return res.json({success:true, event: event});
}
return res.json({success: false, message: 'Event cannot be found.'});
});
})
// Update single Event.
.put(auth({roles:['admin']}), function(req, res) {
async.waterfall([
function (callback) {
var eventid = req.params.eventid;
var body = req.body;
return callback(null, eventid, body);
},
findEvent,
updateEvent,
function(event, callback) {
// Save the event.
event.save(function(err) {
if (err) {
return callback({success: false, message: 'Event cannot be updated.'});
}
return callback(null, event);
});
},
], function(err, event){
if (err) {
return res.status(401).json(err);
}
return res.json({success: true, event: event, message: 'Event updated.'});
});
})
// Delete single event.
.delete(auth({roles:['admin']}), function(req, res) {
async.waterfall([
function (callback) {
var eventid = req.params.eventid;
return callback(null, eventid, null);
},
findEvent,
deleteEvent,
], function(err){
if (err) {
return res.json(err);
}
return res.json({success: true, message: 'Event deleted.'});
});
});
function findEvent(eventid, body, callback) {
Event.findById(eventid, function (err, event) {
if (event) {
return callback(null, event, body);
}
return callback({success: false, message: 'Event cannot be found.'});
});
}
function updateEvent(event, body, callback) {
_.forEach(body, function(value, key) {
event[key] = value;
});
return callback(null, event);
}
function deleteEvent(event, body, callback) {
event.remove(function(err, data) {
if (err) {
return callback({success: false, message: 'Event cannot be deleted.'});
}
return callback(null);
});
}
return eventRouter;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment