mirror of
https://github.com/lukevella/rallly.git
synced 2025-06-05 04:02:21 +02:00
First Commit
This commit is contained in:
commit
2630cc237a
527 changed files with 104273 additions and 0 deletions
48
api/event/event.controller.js
Normal file
48
api/event/event.controller.js
Normal file
|
@ -0,0 +1,48 @@
|
|||
var express = require('express');
|
||||
var Event = require('./event.model');
|
||||
var debug = require('debug')('myapp');
|
||||
|
||||
exports.create = function(req, res){
|
||||
Event.create(req.body, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404);
|
||||
return res.json(event);
|
||||
});
|
||||
}
|
||||
|
||||
exports.show = function(req, res, next){
|
||||
Event.findById(req.params.id, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404);
|
||||
return res.json(event);
|
||||
});
|
||||
}
|
||||
|
||||
exports.createParticipant = function(req, res, next){
|
||||
var eventId = req.params.id;
|
||||
var participant = req.body;
|
||||
Event.findById(eventId, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.participants.push(participant);
|
||||
event.save(function(err, event){
|
||||
if (err) return next(err);
|
||||
res.json(event);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
exports.deleteParticipant = function(req, res, next){
|
||||
var eventId = req.params.id;
|
||||
var participantId = req.params.pid;
|
||||
Event.findById(eventId, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.participants.pull({ '_id' : participantId });
|
||||
event.save(function(err, event){
|
||||
res.json(event);
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
function handleError(res, err) {
|
||||
return res.status(500).send(err);
|
||||
}
|
59
api/event/event.model.js
Normal file
59
api/event/event.model.js
Normal file
|
@ -0,0 +1,59 @@
|
|||
var mongoose = require('mongoose');
|
||||
var Schema = mongoose.Schema;
|
||||
var debug = require('debug')('event.model');
|
||||
var ShortId = require('mongoose-shortid');
|
||||
|
||||
var EventSchema = new Schema({
|
||||
_id : ShortId,
|
||||
description : String,
|
||||
creator : {
|
||||
name : String,
|
||||
email : String
|
||||
},
|
||||
title : String,
|
||||
dates : [Date],
|
||||
emails : [String],
|
||||
participants : [{
|
||||
id : Schema.Types.ObjectId,
|
||||
name : String,
|
||||
dates : [Boolean]
|
||||
}],
|
||||
comments : [{
|
||||
id : Schema.Types.ObjectId,
|
||||
author : String,
|
||||
comment : String,
|
||||
}]
|
||||
});
|
||||
|
||||
var model = mongoose.model('Event', EventSchema);
|
||||
|
||||
model.schema
|
||||
.path('title')
|
||||
.required('You need to give your event a title');
|
||||
model.schema
|
||||
.path('creator.name')
|
||||
.required('You need to type in your name')
|
||||
model.schema
|
||||
.path('creator.email')
|
||||
.required('You need to type in your email')
|
||||
.validate(function(email) {
|
||||
debug("email: " + email);
|
||||
var emailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
|
||||
return emailRegex.test(email);
|
||||
}, 'You need to type in a valid email')
|
||||
model.schema
|
||||
.path('dates')
|
||||
.validate(function(dates){
|
||||
return dates.length
|
||||
}, 'You didn\'t select any dates');
|
||||
model.schema
|
||||
.path('participants')
|
||||
.validate(function(participants){
|
||||
for (var i = 0; i < participants.length; i++){
|
||||
if (!participants[i].name){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}, 'Participants must have a name')
|
||||
module.exports = model
|
11
api/event/index.js
Normal file
11
api/event/index.js
Normal file
|
@ -0,0 +1,11 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
var controller = require('./event.controller');
|
||||
var debug = require('debug')('api/event/index');
|
||||
/* GET home page. */
|
||||
|
||||
router.post('/', controller.create);
|
||||
router.get('/:id', controller.show);
|
||||
router.post('/:id/participant', controller.createParticipant);
|
||||
router.delete('/:id/participant/:pid', controller.deleteParticipant);
|
||||
module.exports = router;
|
Loading…
Add table
Add a link
Reference in a new issue