From aa8a8a70ac3d9178cf215758b91e36a03155c6e2 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Fri, 8 Sep 2017 12:03:53 +0800 Subject: [PATCH] feat(torrent): remove all complete warning of torrent when the torrent H&R status to false and when the torrent be deleted --- .../controllers/torrents.server.controller.js | 33 ++++++++++++++++--- .../server/models/complete.server.model.js | 17 ++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/modules/torrents/server/controllers/torrents.server.controller.js b/modules/torrents/server/controllers/torrents.server.controller.js index 89a350f7..df1d8c49 100644 --- a/modules/torrents/server/controllers/torrents.server.controller.js +++ b/modules/torrents/server/controllers/torrents.server.controller.js @@ -14,6 +14,7 @@ var path = require('path'), Subtitle = mongoose.model('Subtitle'), Thumb = mongoose.model('Thumb'), Torrent = mongoose.model('Torrent'), + Complete = mongoose.model('Complete'), Forum = mongoose.model('Forum'), Topic = mongoose.model('Topic'), fs = require('fs'), @@ -503,13 +504,33 @@ exports.toggleHnRStatus = function (req, res) { }); } else { res.json(torrent); + + //remove the complete data and update user`s warning number when the H&R prop to false + removeTorrentHnRWarning(torrent._id); } }); - - //TODO: remove the complete data and update user`s warning number when the H&R prop to false - }; +/** + * removeTorrentHnRWarning + * @param torrent + */ +function removeTorrentHnRWarning(tid) { + Complete.find({ + torrent: tid + }) + .populate('user') + .exec(function (err, cs) { + if (!err && cs) { + cs.forEach(function (c) { + if (c.hnr_warning) { + c.removeHnRWarning(c.user); + } + }); + } + }); +} + /** * thumbsUp * @param req @@ -733,7 +754,11 @@ exports.delete = function (req, res) { torrent: torrent._id }); - //TODO: remove the complete data and update user`s warning number if the torrent has H&R prop + //remove the complete data and update user`s warning number if the torrent has H&R prop + removeTorrentHnRWarning(torrent._id); + Complete.remove({ + torrent: torrent._id + }); torrent.remove(function (err) { if (err) { diff --git a/modules/torrents/server/models/complete.server.model.js b/modules/torrents/server/models/complete.server.model.js index c2858724..2575ae58 100644 --- a/modules/torrents/server/models/complete.server.model.js +++ b/modules/torrents/server/models/complete.server.model.js @@ -135,6 +135,23 @@ CompleteSchema.methods.countHnRWarning = function (u) { } }; +/** + * removeHnRWarning + * remove H&R warning + */ +CompleteSchema.methods.removeHnRWarning = function (u) { + if (this.hnr_warning) { + this.update({ + $set: {hnr_warning: false} + }).exec(); + + //update user warning numbers + u.update({ + $inc: {hnr_warning: -1} + }).exec(); + } +}; + CompleteSchema.index({user: -1, createdAt: -1}); CompleteSchema.index({torrent: 1, createdAt: -1});