diff options
| author | HumairAK <humair88@hotmail.com> | 2016-07-26 07:43:08 +0000 |
|---|---|---|
| committer | HumairAK <humair88@hotmail.com> | 2016-07-26 07:43:08 +0000 |
| commit | 3983edb2518acd91f991ad5fc6308bcaf46700f5 (patch) | |
| tree | a81da7c47c8f9d0b853d478c619baadcf35d8237 /routes | |
| parent | f016bdbc35b7efa44bd63413bde09433ea916c59 (diff) | |
| parent | a345cf13d3b952ef0d427b61475f5cf722b3cbb0 (diff) | |
Merge branch 'master' of https://github.com/HumairAK/solutions_repo
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/index.js | 80 | ||||
| -rw-r--r-- | routes/user.js | 93 |
2 files changed, 119 insertions, 54 deletions
diff --git a/routes/index.js b/routes/index.js index 220f08d..cb91765 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,7 +11,7 @@ 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; @@ -59,33 +57,58 @@ 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){ + console.log(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,7 +116,6 @@ 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){ res.render('user_search', {users : result, query : query, resultCount: result.length}); diff --git a/routes/user.js b/routes/user.js index dcf4c19..39ffbf1 100644 --- a/routes/user.js +++ b/routes/user.js @@ -18,10 +18,12 @@ router.get('/logout', loggedIn, function (req, res, next) { /* Render/GET user_profile page */ router.get('/user_profile', loggedIn, isUser, function(req, res, next) { + req.session.messages = null; var comments = []; var inbox = []; + var error = null; function getComments() { return new Promise(function(resolve, reject) { dbFile.retrieve_userComments_history(req.user.user_name, function (success, object) { @@ -44,9 +46,11 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) { resolve(1); } else if (object.length){ + req.user.comments = object.length; comments = object; resolve(1); } else { + req.user.comments = object.length; resolve(1); } @@ -59,6 +63,13 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) { dbFile.checkMailbox(req.user.user_name, function(success, error, data, message){ if (success) { inbox = data; + req.user.messages = inbox.length; + // needed to display in layout + var i = 0; + inbox.forEach(function(element) { + element.class = i; + i ++; + }); resolve(1); } else if (error) { // For testing purposes, remove later: @@ -79,8 +90,28 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) { }); }); } - getComments().then(getMail).then(function (data) { - res.render('user_profile_alt', {comments : comments, inbox: inbox, csrfToken: req.csrfToken()}); + + function solutionsCount() { + return new Promise(function (resolve, reject) { + dbFile.retrieve_userSolutions_history(req.user.username, function (bool, results) { + if (!bool) { + error = 'Error: could not retrieve Answered count'; + req.user.answered = 0; + resolve(1); + } + else { + req.user.answered = results.length; + console.log("RESULTS: "); + console.log(results); + resolve(1); + } + }); + }); + } + + getComments().then(getMail).then(solutionsCount).then(function (data) { + console.log('got here fere'); + res.render('user_profile_alt', {comments : comments, inbox: inbox, error: error, csrfToken: req.csrfToken()}); }); //res.render('user_profile_alt', {comments : comments, inbox: inbox, csrfToken: req.csrfToken()}); @@ -161,31 +192,43 @@ router.post('/signin', loggedOut, function(req, res, next) { }); router.post('/user_profile/send_message', loggedIn, function(req, res, next) { - var date = new Date(); - var current_date = date.toString().slice(0, 24); - var subject = req.body.subject; - if (!subject) { - subject = '(none)'; + if (req.user.user_name === req.body.receiver_username) { + req.session.messages = {error : 'You cannot send a message to yourself.'}; + res.redirect('/user/user_profile/'); } - var mail_data = { - sender: req.user.user_name, - receiver: req.body.receiver_username, - subject: subject, - message: req.body.message, - date: current_date - }; - - //console.log(mail_data); - dbFile.sendMail(mail_data, function(success, error, message) { - if ((!success && !error) || (error)) { - req.session.messages = {error : message}; - res.redirect('/user/user_profile'); - - } else { - req.session.messages = {success: message}; - res.redirect('/user/user_profile'); + + else { + var date = new Date(); + var current_date = date.toString().slice(0, 24); + var subject = req.body.subject; + if (!subject) { + subject = '(none)'; } - }); + var mail_data = { + sender: req.user.user_name, + receiver: req.body.receiver_username, + subject: subject, + message: req.body.message, + date: current_date + }; + + //console.log(mail_data); + dbFile.sendMail(mail_data, function(success, error, message) { + if ((!success && !error) || (error)) { + req.session.messages = {error : message}; + res.redirect('/user/user_profile/'); + + + } else { + req.session.messages = {success: message}; + res.redirect('/user/user_profile/'); + //$('#profile-send-message').show(); + + + } + }); + + } }); |
