diff options
| author | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-27 00:03:48 +0000 |
|---|---|---|
| committer | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-27 00:03:48 +0000 |
| commit | 714368c049f8749ed22c6d1d07bb3adc783dc349 (patch) | |
| tree | 8952248ebf3f85b141ef0d18ecf6a1becdc8b89b /routes | |
| parent | 8beb37ed67b5f2fa0f9aa85499a8f11b39c9d067 (diff) | |
| parent | b65166302f5296165da115ed96ce112433157a2d (diff) | |
Merge branch 'master' of https://github.com/HumairAK/solutions_repo
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/index.js | 155 | ||||
| -rw-r--r-- | routes/user.js | 27 |
2 files changed, 104 insertions, 78 deletions
diff --git a/routes/index.js b/routes/index.js index 347c91a..f8292fc 100644 --- a/routes/index.js +++ b/routes/index.js @@ -2,10 +2,8 @@ var dbFile = require("../node_simple.js"); var express = require('express'); var router = express.Router(); var csrf = require('csurf'); // Cross-Site Request Forgery prevention - var csrfProtection = csrf(); router.use(csrfProtection); // router is protected - // Remove later var passport_file = require('../config/passport.js'); var bcrypt = require('bcrypt-nodejs'); @@ -13,9 +11,10 @@ var bcrypt = require('bcrypt-nodejs'); /* Render/GET homepage. */ router.get('/', function(req, res, next) { //addFirstAdmin(); - res.render('index'); + res.render('index', {csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors}); req.session.errors = null; req.session.success = null; + req.session.messages = null; }); @@ -59,33 +58,57 @@ router.get('/user_solutions', function(req, res, next) { title: 'Thry of Computation' } ] */ + +router.get('/exams/', function(req,res,next){ + req.checkParams('id','Course code should be between 6').notEmpty().withMessage('Course code required').isLength({min: 6, max: 6}); + var errors = req.validationErrors(); + if (errors){ + req.session.errors = errors; + req.session.success = false; + res.redirect('/'); + } +}); + router.get('/exams/:id', function(req, res, next) { - var minExamInfoArray = []; - dbFile.get_all_exams(req.params.id, function (exams) { - if (exams.length == 0){ - console.log("Nothing was found"); - } - else { - //console.log(exams); - //only pass over the information that is necessary for the exams page - for (var i = 0; i<exams.length;i++){ - - var getInstructors = exams[i].instructors.join(", "); - var minExamInfo = { courseCode:exams[i].course_code, - year:exams[i].year, - term:toProperCase(exams[i].term), - instructors: getInstructors, - type:toProperCase(exams[i].type) + " Examination", - title:exams[i].title, - id:exams[i]._id, - questionCount : exams[i].questions_count - }; - //console.log(minExamInfo); - minExamInfoArray.push(minExamInfo); + + req.checkParams('id','Course code should be between 6 characters').notEmpty().withMessage('Course code required').isLength({min: 6, max: 6}); + + var errors = req.validationErrors(); + if (errors){ + console.log("id " + errors); + req.session.errors = errors; + req.session.success = false; + res.redirect('/'); + }else{ + + var minExamInfoArray = []; + dbFile.get_all_exams(req.params.id, function (exams) { + if (exams.length == 0){ + console.log("Nothing was found"); } - } - res.render('exams', {query: req.params.id, result: minExamInfoArray}); - }); + else { + //console.log(exams); + //only pass over the information that is necessary for the exams page + for (var i = 0; i<exams.length;i++){ + + var getInstructors = exams[i].instructors.join(", "); + var minExamInfo = { courseCode:exams[i].course_code, + year:exams[i].year, + term:toProperCase(exams[i].term), + instructors: getInstructors, + type:toProperCase(exams[i].type) + " Examination", + title:exams[i].title, + id:exams[i]._id, + questionCount : exams[i].questions_count + }; + //console.log(minExamInfo); + minExamInfoArray.push(minExamInfo); + } + } + res.render('exams', {query: req.params.id, result: minExamInfoArray}); + }); + + } }); /* Render user search page based on query */ @@ -93,11 +116,9 @@ router.get('/user/:query', function(req,res,next){ var query = req.params.query; // Need to validate query - dbFile.search_users(query, function(success, result){ if(success){ - console.log(result); - res.render('user_search', {users : result, query : query}); + res.render('user_search', {users : result, query : query, resultCount: result.length}); req.session.messages = null; }else{ console.log(result); @@ -132,45 +153,45 @@ router.get('/search/:type', function(req, res, next) { * comments = number of comments*/ router.get('/questions/:exam_id', function (req,res) { var examID = req.params.exam_id; - console.log(examID); dbFile.get_exam_byID(examID, function(success, error, exam){ - /* [ - { q_id: 1, question: 'this is q1' }, - { q_id: 2, question: 'this is q2' } - ] - */ - var qList = exam.questions_list; - - // Add comments/solutions - dbFile.get_exam_info_by_ID(examID, function (questionsInfo) { - qList.forEach(function(question){ - question.count = 0; - question.comments = 0; - - // Find q_id in questionsInfo, update comment/solutions count - questionsInfo.forEach(function(q){ - if (question.q_id == q._id){ - question.count += q.count; - question.comments += q.comments; - } + if(success && exam){ + var qList = exam.questions_list; + // Add comments/solutions + dbFile.get_exam_info_by_ID(examID, function (questionsInfo) { + qList.forEach(function(question){ + question.count = 0; + question.comments = 0; + + // Find q_id in questionsInfo, update comment/solutions count + questionsInfo.forEach(function(q){ + if (question.q_id == q._id){ + question.count += q.count; + question.comments += q.comments; + } + }); }); + + var examInfo = { + id : exam._id, + courseCode : exam.course_code, + term : toProperCase(exam.term), + type : toProperCase(exam.type), + year : exam.year, + instructors : exam.instructors.join(), + uploadDate : exam.upload_date, + uploader : exam.uploaded_by, + pageCount : exam.page_count, + questionCount : exam.questions_count + }; + res.render('questions', {query: qList, examInfo: examInfo}); }); + }else{ + req.session.messages = {error : "Could not find exam."}; + res.redirect('/'); + } + - var examInfo = { - id : exam._id, - courseCode : exam.course_code, - term : toProperCase(exam.term), - type : toProperCase(exam.type), - year : exam.year, - instructors : exam.instructors.join(), - uploadDate : exam.upload_date, - uploader : exam.uploaded_by, - pageCount : exam.page_count, - questionCount : exam.questions_count - }; - res.render('questions', {query: qList, examInfo: examInfo}); - }); }); }); @@ -220,10 +241,6 @@ router.get('/solutions/:exam_id/:q_num', function (req, res) { }); }); -router.post('/add_solutions/submit', function (req, res) { - //TODO: get the form information for the solutions -}); - /**** Helpers ****/ function addFirstAdmin() { diff --git a/routes/user.js b/routes/user.js index c9bbebe..5ddd4b8 100644 --- a/routes/user.js +++ b/routes/user.js @@ -312,20 +312,29 @@ router.post('/comment/submit/:examID/:qID/:solID', function(req, res, next){ } }); -router.post('/solution/vote/:examID/:qID/:solID', loggedIn, function(req, res, next){ +router.post('/solution/vote/:examID/:qID/:solID', function(req, res, next){ var vote = req.body.vote; var examID = req.params.examID; var qID = req.params.qID; var solutionID = req.params.solID; - dbFile.vote_solution(solutionID, vote, function(voteCounted, statusMsg){ - if(voteCounted){ - console.log("Success!"); - }else{ - console.log("Action failed!"); - } - console.log(statusMsg); // Change to display message above + + if(req.isAuthenticated()){ + dbFile.vote_solution(solutionID, vote, function(voteCounted, statusMsg){ + if(voteCounted){ + res.redirect('/solutions/' + examID + '/' + qID); + }else{ + req.session.messages = {error : statusMsg}; + res.redirect('/solutions/' + examID + '/' + qID); + } + }); + } else { //User not logged in + var message = "Must be logged in to Vote!"; + req.session.messages = {error : message}; res.redirect('/solutions/' + examID + '/' + qID); - }); + } + + + }); |
