diff --git a/package.json b/package.json index 8a02ceb..9091e97 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,9 @@ "dotenv": "^6.0.0", "express": "^4.16.3", "express-session": "^1.15.6", + "fast-csv": "^2.4.1", "hbs": "^4.0.1", + "json2csv": "^4.1.5", "jsonwebtoken": "^8.3.0", "lodash": "^4.17.10", "mongodb": "^3.0.10", diff --git a/server/models/registration.js b/server/models/registration.js new file mode 100644 index 0000000..acb0ea8 --- /dev/null +++ b/server/models/registration.js @@ -0,0 +1,34 @@ +const mongoose = require('mongoose') + +var RegistrationSchema = new mongoose.Schema({ + name: { + type: String, + required: true + }, + email: { + type: String, + required: true + }, + number: { + type: String, + required: true + }, + admno: { + type: String, + required: true + }, + branch: { + type: String + }, + applyfor: { + type: String + }, + eventId: { + type: String, + required: true + } +}) + +var Registration = mongoose.model('Registration', RegistrationSchema) + +module.exports = {Registration} diff --git a/server/routes.js b/server/routes.js index ac4a577..8d6bc9d 100644 --- a/server/routes.js +++ b/server/routes.js @@ -1,13 +1,16 @@ require('./db/mongoose') const {Event} = require('./models/event') +const {Registration} = require('./models/registration') const _pick = require('lodash/pick') -require('request') +const request = require('request') const {ObjectId} = require('mongodb') const {sendNotification} = require('./onesignal/create') const {deleteNotification} = require('./onesignal/cancel') const {User} = require('./models/user') const {authenticate} = require('./middleware/authenticate') const {authenticateLogout} = require('./middleware/authenticate-logout') +const Json2csvParser = require('json2csv').Parser +var fs = require('fs') module.exports = app => { app.get('/', async (req, res) => { @@ -97,6 +100,55 @@ module.exports = app => { } }) + app.post('/events/:id/register', async (req, res) => { + const id = req.params.id + + if (!ObjectId.isValid(id)) { + return res.status(400).send() + } + + const body = _pick(req.body, ['name', 'email', 'number', 'admno', 'branch', 'applyfor']) + + let event1 = await Event.findById({ + _id: id + }) + if (event1) { + body.eventId = event1._id + var register = new Registration(body) + register.save() + res.status(200).send(register) + } else { + res.status(400).send() + } + }) + + app.get('/events/:id/csv', async (req, res) => { + const id = req.params.id + + if (!ObjectId.isValid(id)) { + return res.status(400).send() + } + + // var register = await Registration.find({eventId: id}) + // console.log(register); + + // if (req.user.username === event1.creator) { + Registration.find({eventId: id}, function (err, data) { + if (err) { res.json(err) } else { + var fields = ['_id', 'name', 'email', 'number', 'admno', 'branch', 'applyfor', 'eventId'] + const json2csvParser = new Json2csvParser({ fields }) + const csv = json2csvParser.parse(data) + var path = `${__dirname}/public/csv/${id}.csv` + fs.writeFile(path, csv, function (err, data) { + if (err) { throw err } else { + res.download(path) // This is what you need + } + }) + } + }) + + // } + }) // DELETE EVENT ROUTE app.delete('/events/:id', authenticate, async (req, res) => { @@ -191,8 +243,6 @@ module.exports = app => { password: `${req.body.password}` } - var request = require('request') - request.post( 'http://yashasingh.tech:8085/api/profiles/login/', { json: true,