From 8ff1e6151c7a6d6ce85d57edb2418b64b4d41d58 Mon Sep 17 00:00:00 2001 From: arnaucode Date: Fri, 23 Jun 2017 02:56:30 +0200 Subject: [PATCH] notification system fixed --- controllers/userController.js | 45 ++++++++++++++++++++++++++++++++--- server.js | 2 ++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/controllers/userController.js b/controllers/userController.js index 2b6d68a..9db2903 100644 --- a/controllers/userController.js +++ b/controllers/userController.js @@ -190,6 +190,24 @@ exports.getUserLikes = function(req, res) { } }); }; +exports.getNumNotificationsByToken = function(req, res) { + userModel.findOne({ + 'token': req.headers['x-access-token'] + }) + .lean() + .exec(function(err, user) { + if (err) return res.send(500, err.message); + if (!user) { + res.json({ + success: false, + message: 'User not found.' + }); + } else if (user) { + + res.status(200).jsonp(user.notifications); + } + }); +}; exports.getNotifications = function(req, res) { userModel.findOne({ 'token': req.headers['x-access-token'] @@ -205,9 +223,9 @@ exports.getNotifications = function(req, res) { }); } else if (user) { - //res.status(200).jsonp(user.notifications); notificationModel.find({ - 'user': user._id + 'user': user._id, + 'state': 'pendent' }) .lean() .exec(function(err, notifications) { @@ -218,10 +236,31 @@ exports.getNotifications = function(req, res) { message: 'No pendent notifications.' }); } else if (notifications) { - + //here, maybe in the future is better delete the viewed notifications + notificationModel.update( + {state: "pendent"}, + {state: "viewed"}, + {multi: true}, + function(err){ + if(err){ + console.log(err); + } + } + ); res.status(200).jsonp(notifications); } }); + + //now, clean notifications count from user + userModel.update( + {'token': req.headers['x-access-token']}, + {notifications: []}, + function(err){ + if(err){ + console.log(err); + } + } + ); } }); }; diff --git a/server.js b/server.js index 483cfc8..6ab0c3c 100755 --- a/server.js +++ b/server.js @@ -113,6 +113,8 @@ apiRoutes.use(function(req, res, next) { apiRoutes.route('/search/:searchstring') .get(searchCtrl.searchByString); +apiRoutes.route('/numnotifications') + .get(userCtrl.getNumNotificationsByToken); apiRoutes.route('/notifications') .get(userCtrl.getNotifications); apiRoutes.route('/users/token')