You are on page 1of 2

const express = require('express')

const bodyparser = require('body-parser');


const mongoose = require('mongoose');
const authenticate = require('../authenticate');
const Quiz = require('../models/quiz');

const quizRouter = express.Router();

quizRouter
.get('/',authenticate.verifyUser, (req, res, next) => {
Quiz.find({}).populate('questions')
.then((quiz) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(quiz);
}, (err) => next(err))
.catch((err) => next(err));
})
.post('/', authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next)
=> {
Quiz.create(req.body)
.then((quiz) => {
console.log('Quiz Created ', quiz);
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(quiz);
}, (err) => next(err))
.catch((err) => next(err));

})

.put('/', authenticate.verifyUser, (req, res, next) => {


res.statusCode = 403;
res.end('PUT operation not supported on /quizzes');
})
.delete('/', authenticate.verifyUser, authenticate.verifyAdmin, (req, res,
next) => {
Quiz.deleteMany({})
.then((resp) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res, json(resp)
}, (err) => next(err))
.catch((err) => next(err))
})

.get('/:quizId', (req, res, next) => {


Quiz.findById(req.params.quizId).populate('questions')
.then((quiz) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(quiz);
}, (err) => next(err))
.catch((err) => next(err));
})
.post('/:quizId', authenticate.verifyUser, (req, res, next) => {
res.statusCode = 403;
res.end('POST operation not supported on /quizzes/' + req.params.quizId);
})
.put('/:quizId', authenticate.verifyUser, authenticate.verifyAdmin, (req, res,
next) => {
Quiz.findByIdAndUpdate(req.params.quizId, { $set: req.body }, { new:
true })
.then((quiz) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(quiz);
}, (err) => next(err))
.catch((err) => next(err));
})
.delete('/:quizId', authenticate.verifyUser, authenticate.verifyAdmin, (req,
res, next) => {
Quiz.findByIdAndRemove(req.params.quizId)
.then((resp) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(resp);
}, (err) => next(err))
.catch((err) => next(err));
});

module.exports = quizRouter;

You might also like