Created
July 30, 2016 19:21
-
-
Save jonnadams/3cd0b4412b2299e9143f12463d2a3b2b to your computer and use it in GitHub Desktop.
Evently - Event Api Routes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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