diff options
| -rw-r--r-- | node_simple.js | 49 | ||||
| -rw-r--r-- | routes/user.js | 81 | ||||
| -rw-r--r-- | views/user_profile_alt.hbs | 3 |
3 files changed, 91 insertions, 42 deletions
diff --git a/node_simple.js b/node_simple.js index 596cef6..228e861 100644 --- a/node_simple.js +++ b/node_simple.js @@ -552,10 +552,20 @@ exports.find_user_name = function (user_name, callback) { .then(function (db) { var logins = db.collection('logins'); + var admins = db.collection('admins'); logins.find( { user_name: user_name } ).toArray(function (err, result) { if (err) throw err; - else if (result.length == 0) { // nothing was found so this user is new - callback(false); + else if (result.length == 0) { // nothing was found in users + // check if user_name is taken by admin + admins.find({username : user_name}).toArray(function(err, data) { + if (err) throw err; + else if (data.length == 0) { + callback(false); + } + else { + callback(true); + } + }); } else { callback(true); @@ -1240,25 +1250,32 @@ exports.addAdmin = function (admin_data, callback) { console.log('addAdmin, admin_data: ' + admin_data.fname); console.log("inside addAdmin"); - + var logins = db.collection('logins'); // Check if the admin username already exists. Also check for user username. If it does, then we don't add the admin_data and return a message. exports.adminExists( admin_data.username , function (error, exists, data, message) { console.log("adminExists: " + message); if (!exists && !error) { - mongoFactory.getConnection(uri).then(function (db) { - - var admins = db.collection('admins'); - - admins.insertOne( admin_data, function (err) { - if (err) { - callback(false, true, message); - } - else { - callback(true, false, "Admin added."); - } - - }); + logins.find({username: username}).toArray(function (err, result) { + if (err){ + callback(true, false, null, "Error: could not retreive logins collection in addAdmin()."); + } else if (result.length) { + callback(false, false, 'User with given username already exists.'); + } else { + mongoFactory.getConnection(uri).then(function (db) { + + var admins = db.collection('admins'); + + admins.insertOne(admin_data, function (err) { + if (err) { + callback(false, true, message); + } + else { + callback(true, false, "Admin added."); + } + }); + }); + } }).catch(function (err) { callbackUser(false, true, "Unable to connect."); }) diff --git a/routes/user.js b/routes/user.js index e3340e0..47988df 100644 --- a/routes/user.js +++ b/routes/user.js @@ -25,6 +25,7 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) { 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) { @@ -47,9 +48,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); } @@ -62,6 +65,7 @@ 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) { @@ -88,9 +92,28 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) { }); }); } - getComments().then(getMail).then(function (data) { + + 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, csrfToken: req.csrfToken()}); + 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()}); @@ -171,35 +194,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 { + 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(); + } else { + req.session.messages = {success: message}; + res.redirect('/user/user_profile/'); + //$('#profile-send-message').show(); - } - }); + + } + }); + + } }); diff --git a/views/user_profile_alt.hbs b/views/user_profile_alt.hbs index 7297b63..4d8fd8b 100644 --- a/views/user_profile_alt.hbs +++ b/views/user_profile_alt.hbs @@ -68,8 +68,9 @@ </tr> <tr> <tr> - <td>Messages:</td> + <td>Inbox:</td> <td>{{ user.messages }}</td> + </tr> <tr> <td>Comments:</td> |
