From 42d17334a8915bb8f5e7c605a38dac56462499b1 Mon Sep 17 00:00:00 2001 From: Waref Haque Date: Fri, 22 Jul 2016 16:58:59 -0400 Subject: solutions given the exam_id and the questions number --- routes/index.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/routes/index.js b/routes/index.js index a0a66d0..1b00f41 100644 --- a/routes/index.js +++ b/routes/index.js @@ -145,7 +145,33 @@ router.get('/questions/:exam_id', function (req,res) { }); }); - +/*GET the solutions for a given exam given the question number and the exam_id*/ +/*EXPECTED DATA GIVEN BELOW: +array of solutions: +* solutions = [ { + * _id: "354ff71ed078933079d6467e" + * exam_id: "578a44ff71ed097fc3079d6e" + * q_id: 1 (int) + * text: "answer" + * votes: 1 (int) + * comments: [{}.{}] (just going to be string for now i think) + * } + * { + * _id: ... + * exam_id: .. + * q_id: ... + * text: .. + * votes: .. + * comments: .. + * + * } + * ]*/ +router.get('/solutions/:exam_id/:q_num', function (req, res) { + dbFile.get_all_solutions(req.params.exam_id,req.params.q_num,function (solutions) { + res.render('solutions', {query: solutions}); + console.log(solutions); + }); +}); /**** Helpers ****/ -- cgit v1.2.3 From 1da28e930df1438fee1528c4dbb2c024fc3824e7 Mon Sep 17 00:00:00 2001 From: Waref Haque Date: Fri, 22 Jul 2016 17:41:07 -0400 Subject: add solutions --- routes/index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/routes/index.js b/routes/index.js index 1b00f41..97291a7 100644 --- a/routes/index.js +++ b/routes/index.js @@ -173,6 +173,14 @@ router.get('/solutions/:exam_id/:q_num', function (req, res) { }); }); +router.get('/add_solution',function (req, res) { + redirect('/add_solutions_page'); +}); + + +router.post('/add_solutions/submit', function (req, res) { + //TODO: get the form information for the solutions +}) /**** Helpers ****/ function getExamsForCourseCode(courseCode) { -- cgit v1.2.3 From fef388a0479b36c13ac286db65eadc756b5b197b Mon Sep 17 00:00:00 2001 From: HumairAK Date: Fri, 22 Jul 2016 17:42:38 -0400 Subject: moved admin route data into admin.js --- app.js | 3 ++- routes/admin.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ routes/index.js | 55 ------------------------------------------------ routes/user.js | 1 - 4 files changed, 67 insertions(+), 57 deletions(-) create mode 100644 routes/admin.js diff --git a/app.js b/app.js index a96a932..9e96a9f 100644 --- a/app.js +++ b/app.js @@ -13,6 +13,7 @@ var flash = require('connect-flash'); var routes = require('./routes/index'); var userRoutes = require('./routes/user'); +var adminRoutes = require('./routes/admin'); var app = express(); // Templating engine, we are using handlebars @@ -40,7 +41,6 @@ require('./config/passport'); // simply need to load it /*LOADS ALL STATIC FILES FROM THE DIRECTORY __dirname*/ app.use(express.static(__dirname)); - // Needed to style the header based on the whether the user is signed in or not // Gives errors for admin - need to figure out app.use(function(req, res, next) { @@ -50,6 +50,7 @@ app.use(function(req, res, next) { // Allows us to customize express routing // in a separate file. +app.use('/admin', adminRoutes); app.use('/user', userRoutes); app.use('/', routes); diff --git a/routes/admin.js b/routes/admin.js new file mode 100644 index 0000000..c5cbcb4 --- /dev/null +++ b/routes/admin.js @@ -0,0 +1,65 @@ +var express = require('express'); +var router = express.Router(); +var csrf = require('csurf'); // Cross-Site Request Forgery prevention +var passport = require('passport'); + +var csrfProtection = csrf(); +router.use(csrfProtection); // router is protected + +router.get('/', function(req,res){ + res.render('admin', {csrfToken: req.csrfToken()}); +}); + +/* Adds exam from front-end */ +router.post('/update/exam', function(req,res){ + var course_code = req.body.course_code, + year = req.body.year, + type = req.body.type, + term = req.body.term, + instructors = parseStringArray(req.body.instructors), + page_count = req.body.page_count, + questions_count = req.body.questions_count, + questions_list = parseStringArray(req.body.questions_list), + upload_date = req.body.upload_date, + uploaded_by = req.body.uploaded_by; + + var fields = [ + course_code, // String + year, // Int + type, // String; Needs to be added to database code + term, // String + instructors, // Array of strings + page_count, // Int + questions_count, // Int + upload_date, // String + uploaded_by]; // String + + dbFile.add_exam(fields, questions_list, function(examAdded, statusMessage){ + if(examAdded){ + console.log("Success!"); + }else{ + console.log("Failed!"); + } + console.log(statusMessage); + }); + res.redirect('/'); +}); + +/* Adds course from front-end */ +router.post('/update/course', function(req,res){ + var course_code = req.body.course_code, + title = req.body.title; + + dbFile.add_course(course_code, title, function(courseAdded, statusMessage){ + if(courseAdded){ + console.log("Success!"); + }else{ + console.log("Failure!"); + } + console.log("Status message: " + statusMessage) + }); + res.redirect('/'); +}); + +module.exports = router; + diff --git a/routes/index.js b/routes/index.js index a0a66d0..0b59988 100644 --- a/routes/index.js +++ b/routes/index.js @@ -24,60 +24,6 @@ router.get('/questions', function(req, res, next) { res.render('questions'); }); -router.get('/admin', function(req,res){ - res.render('admin', {csrfToken: req.csrfToken()}); -}); - -/* Adds exam from front-end */ -router.post('/admin/update/exam', function(req,res){ - var course_code = req.body.course_code, - year = req.body.year, - type = req.body.type, - term = req.body.term, - instructors = parseStringArray(req.body.instructors), - page_count = req.body.page_count, - questions_count = req.body.questions_count, - questions_list = parseStringArray(req.body.questions_list), - upload_date = req.body.upload_date, - uploaded_by = req.body.uploaded_by; - - var fields = [ - course_code, // String - year, // Int - type, // String; Needs to be added to database code - term, // String - instructors, // Array of strings - page_count, // Int - questions_count, // Int - upload_date, // String - uploaded_by]; // String - - dbFile.add_exam(fields, questions_list, function(examAdded, statusMessage){ - if(examAdded){ - console.log("Success!"); - }else{ - console.log("Failed!"); - } - console.log(statusMessage); - }); - res.redirect('/admin'); -}); - -/* Adds course from front-end */ -router.post('/admin/update/course', function(req,res){ - var course_code = req.body.course_code, - title = req.body.title; - - dbFile.add_course(course_code, title, function(courseAdded, statusMessage){ - if(courseAdded){ - console.log("Success!"); - }else{ - console.log("Failure!"); - } - console.log("Status message: " + statusMessage) - }); - res.redirect('/admin'); -}); //EXAMPLE EXPECTED DATA GIVEN BELOW: /*[ {courseCode: 'CSC240', @@ -146,7 +92,6 @@ router.get('/questions/:exam_id', function (req,res) { }); - /**** Helpers ****/ function getExamsForCourseCode(courseCode) { diff --git a/routes/user.js b/routes/user.js index a8e90bb..ac7d761 100644 --- a/routes/user.js +++ b/routes/user.js @@ -98,7 +98,6 @@ router.post('/signin', loggedOut, function(req, res, next) { module.exports = router; - function loggedIn(req, res, next) { if (req.isAuthenticated()) { return next(); -- cgit v1.2.3