Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge3 #13

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack --config webpack/webpack.dev.js",
"build": "webpack --config webpack/webpack.prod.js",
"dev-server": "node ./server/server"
"dev-server": "nodemon ./server/server"
},
"author": "Archana Bansal",
"contributors": [
Expand Down
4 changes: 2 additions & 2 deletions server/handler/admin.js → server/controller/admin.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const admin = {
const adminController = {
authorize: (req, res, next) => {
if (req.session.admin) {
res.redirect('/admin/dashboard')
Expand All @@ -15,4 +15,4 @@ const admin = {
}
}

module.exports = admin
module.exports = adminController
118 changes: 118 additions & 0 deletions server/controller/event.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
const uuid = require('uuid/v1')
const eventModel = require('../model/event')
const userModel = require('../model/user')

const eventController = {
create: (req, res) => {
const data = Object.assign(req.file, {destination: '/images/', name: req.file.filename})
const obj = Object.assign({}, req.body, {id: uuid(), image: data, attendees: [], comments: []})
eventModel.createEvent(obj).then(() => {
res.json(obj)
})
},

edit: (req, res) => {
eventModel.getEvent(req.body.id).then(({selectedEvent, selectedIndex}) => {
let image = selectedEvent.image
if (req.file) {
image = Object.assign(req.file, {destination: '/images/', name: req.file.filename})
}
const event = Object.assign(selectedEvent, req.body, {image})
return eventModel.addEventToIndex(selectedIndex, event)
}).then(() => {
res.json({id: req.body.id})
})
},

eventList: (req, res) => {
console.log('called eventList')
eventModel.getAllEvent().then((events) => {
const obj = events.map((event) => {
return JSON.parse(event)
})
res.json(obj)
})
},

eventDetails: (req, res) => {
eventModel.getAllEvent().then((events) => {
const obj = events.filter((event) => {
const eventObj = JSON.parse(event)
return eventObj.id === req.params.id
}).map((value) => JSON.parse(value))
res.json(obj)
})
},

attendee: {
saveAttendee: (req, res) => {
let event, index
eventModel.getEvent(req.body.eventId).then(({selectedEvent, selectedIndex}) => {
event = selectedEvent
index = selectedIndex
return req.body.profile
}).then((userInfo) => {
const attendee = event.attendees.filter(attendee => attendee.email === userInfo.email)[0]
if (attendee) {
return
}
event.attendees.push(userInfo)
return eventModel.addEventToIndex(index, event)
}).then(() => {
res.end()
}).catch(() => {
res.status(500).send()
})
},
deleteAttendee: (req, res) => {
eventModel.getEvent(req.body.eventId).then(({selectedEvent, selectedIndex}) => {
selectedEvent.attendees = selectedEvent.attendees.filter((attendee) => attendee.email !== req.body.profile.email)
return eventModel.addEventToIndex(selectedIndex, selectedEvent)
}).then(() => {
res.end()
}).catch(() => {
res.status(500).send()
})
}
},

comment: {
saveComment: (req, res) => {
let event, index
eventModel.getEvent(req.body.eventId).then(({selectedEvent, selectedIndex}) => {
event = selectedEvent
index = selectedIndex
return userModel.getUserProfile(req.body.email)
}).then((userInfo) => {
userInfo = JSON.parse(userInfo)
const obj = {
message: req.body.message,
dateTime: Date.now(),
commentId: uuid(),
...userInfo
}
event.comments.unshift(obj)
return eventModel.addEventToIndex(index, event)
}).then(() => {
res.end()
}).catch(() => {
res.status(500).send()
})
},
deleteComment: (req, res) => {
eventModel.getEvent(req.body.eventId).then(({selectedEvent, selectedIndex}) => {
selectedEvent.comments = selectedEvent.comments.filter((comment) => comment.commentId !== req.body.commentId)
return eventModel.addEventToIndex(selectedIndex, selectedEvent)
}).then(() => {
res.end()
}).catch(() => {
res.status(500).send()
})
}
},
upload: () => {
eventModel.fileUpload()
}
}

module.exports = eventController
10 changes: 5 additions & 5 deletions server/handler/user.js → server/controller/user.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const util = require('./utils')
const userModel = require('../model/user')

const user = {
const userController = {
login: (req, res) => {
util.saveUserInfo(req.body).then(() => {
userModel.saveUserInfo(req.body).then(() => {
res.status(200).send('success')
})
},
Expand All @@ -22,10 +22,10 @@ const user = {
req.session.admin = ''
}
const email = req.body.email
util.getUserProfile(email).then((obj) => {
userModel.getUserProfile(email).then((obj) => {
res.json(JSON.parse(obj))
})
}
}

module.exports = user
module.exports = userController
36 changes: 0 additions & 36 deletions server/handler/attendee.js

This file was deleted.

39 changes: 0 additions & 39 deletions server/handler/comment.js

This file was deleted.

45 changes: 0 additions & 45 deletions server/handler/event.js

This file was deleted.

24 changes: 16 additions & 8 deletions server/handler/utils.js → server/model/event.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
const Redis = require('../redis')
const multer = require('multer')

const util = {
const storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, '../../build/images')
},
filename: function (req, file, callback) {
callback(null, Date.now() + '_' + file.originalname)
}
})

const upload = multer({ storage })

const eventModel = {
getEvent: (eventId) => {
let selectedIndex = -1
let selectedEvent
Expand All @@ -20,10 +32,6 @@ const util = {
return Redis.lset('events', index, JSON.stringify(event))
},

getUserProfile: (email) => {
return Redis.hget('users', email)
},

createEvent: (obj) => {
return Redis.lpush('events', JSON.stringify(obj))
},
Expand All @@ -32,9 +40,9 @@ const util = {
return Redis.lrange('events', 0, -1)
},

saveUserInfo: ({email, name, id, image, aboutme, display}) => {
return Redis.hmset('users', email, JSON.stringify({email, name, id, image, aboutme, display}))
fileUpload: () => {
return upload.single('file')
}
}

module.exports = util
module.exports = eventModel
16 changes: 16 additions & 0 deletions server/model/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const Redis = require('../redis')

const userModel = {
getUserProfile: (email) => {
return Redis.hget('users', email)
},
saveUserInfo: ({ email, name, id, image, aboutme, display }) => {
return Redis.hmset(
'users',
email,
JSON.stringify({ email, name, id, image, aboutme, display })
)
}
}

module.exports = userModel
12 changes: 12 additions & 0 deletions server/routes/admin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
const express = require('express')
const router = express.Router()

const adminController = require('../controller/admin')

router.get('/', adminController.authorize)

router.get('/create', adminController.authenticate)

router.get('/dashboard', adminController.authenticate)

module.exports = router
30 changes: 30 additions & 0 deletions server/routes/event.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const express = require('express')
const router = express.Router()

const eventController = require('../controller/event')

// API call to get list of events
router.get('/', eventController.eventList)

// API call to create an event
router.post('/', eventController.upload, eventController.create)

// API call to edit an event
router.put('/', eventController.upload, eventController.edit)

// API call to get details of a particular event
router.get('/:id', eventController.eventDetails)

// API call to save an attendee for a particular event
router.post('/attendee', eventController.attendee.saveAttendee)

// API call to remove an attendee for a particular event
router.post('/attendee/cancel', eventController.attendee.deleteAttendee)

// API call to save a comment for a particular event
router.post('/comment', eventController.comment.saveComment)

// API call to delete a comment for a particular event
router.delete('/comment', eventController.comment.deleteComment)

module.exports = router
Loading