diff --git a/modules/forums/client/controllers/forums-topic.client.controller.js b/modules/forums/client/controllers/forums-topic.client.controller.js index 5b1d66cf..01b7e012 100644 --- a/modules/forums/client/controllers/forums-topic.client.controller.js +++ b/modules/forums/client/controllers/forums-topic.client.controller.js @@ -410,6 +410,8 @@ topic.$thumbsUp(function (res) { vm.topic = res; + }, function(res){ + NotifycationService.showErrorNotify(res.data.message, 'ERROR'); }); }; diff --git a/modules/forums/server/controllers/forums.server.controller.js b/modules/forums/server/controllers/forums.server.controller.js index 6f41bc70..796c6516 100644 --- a/modules/forums/server/controllers/forums.server.controller.js +++ b/modules/forums/server/controllers/forums.server.controller.js @@ -298,6 +298,7 @@ exports.toggleTopicReadonly = function (req, res) { * @param res */ exports.thumbsUp = function (req, res) { + var user = req.user; var exist = false; var topic = req.topic; var thumb = new Thumb(); @@ -315,9 +316,20 @@ exports.thumbsUp = function (req, res) { } }); if (exist) { - return res.json(topic); + return res.status(422).send({ + message: 'ALREADY_THUMBS_UP' + }); } else { - r._scoreList.push(thumb); + if (r.user.score >= forumsConfig.thumbs_up_score) { + r._scoreList.push(thumb); + r.user.update({ + $inc: {score: forumsConfig.thumbs_up_score} + }).exec(); + } else { + return res.status(422).send({ + message: 'SCORE_NOT_ENOUGH' + }); + } } } }); @@ -330,9 +342,20 @@ exports.thumbsUp = function (req, res) { } }); if (exist) { - return res.json(topic); + return res.status(422).send({ + message: 'ALREADY_THUMBS_UP' + }); } else { - topic._scoreList.push(thumb); + if (topic.user.score >= forumsConfig.thumbs_up_score) { + topic._scoreList.push(thumb); + topic.user.update({ + $inc: {score: forumsConfig.thumbs_up_score} + }).exec(); + } else { + return res.status(422).send({ + message: 'SCORE_NOT_ENOUGH' + }); + } } } @@ -345,6 +368,10 @@ exports.thumbsUp = function (req, res) { res.json(topic); } }); + + user.update({ + $inc: {score: -forumsConfig.thumbs_up_score} + }).exec(); }; /**