aboutsummaryrefslogtreecommitdiff
path: root/routes
diff options
context:
space:
mode:
authorHumairAK <humair88@hotmail.com>2016-07-26 07:43:08 +0000
committerHumairAK <humair88@hotmail.com>2016-07-26 07:43:08 +0000
commit3983edb2518acd91f991ad5fc6308bcaf46700f5 (patch)
treea81da7c47c8f9d0b853d478c619baadcf35d8237 /routes
parentf016bdbc35b7efa44bd63413bde09433ea916c59 (diff)
parenta345cf13d3b952ef0d427b61475f5cf722b3cbb0 (diff)
Merge branch 'master' of https://github.com/HumairAK/solutions_repo
Diffstat (limited to 'routes')
-rw-r--r--routes/index.js80
-rw-r--r--routes/user.js93
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();
+
+
+ }
+ });
+
+ }
});