Files
meanTorrent/modules/torrents/server/controllers/completes.server.controller.js
2017-11-30 17:50:20 +08:00

128 lines
3.3 KiB
JavaScript

'use strict';
/**
* Module dependencies
*/
var path = require('path'),
config = require(path.resolve('./config/config')),
mongoose = require('mongoose'),
errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')),
User = mongoose.model('User'),
Complete = mongoose.model('Complete'),
Torrent = mongoose.model('Torrent'),
async = require('async'),
validator = require('validator'),
traceLogCreate = require(path.resolve('./config/lib/tracelog')).create;
var hnrConfig = config.meanTorrentConfig.hitAndRun;
var traceConfig = config.meanTorrentConfig.trace;
/**
* removeWarning
* @param req
* @param res
*/
exports.removeWarning = function (req, res) {
var comp = req.complate;
var user = req.user;
if (user.isOper) {
comp.hnr_warning = false;
comp.remove_warning_at = Date.now();
comp.remove_by = req.user;
comp.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(comp);
//update warning number of user
comp.user.update({
$inc: {hnr_warning: -1}
}).exec();
//create trace log
traceLogCreate(req, traceConfig.action.adminRemoveHnrWarning, {
user: comp.user._id,
complete: comp._id
});
}
});
} else {
if (!comp.user._id.equals(req.user._id)) {
return res.status(403).json({
message: 'Only owner or oper can remove warning'
});
} else {
if (req.user.score < hnrConfig.scoreToRemoveWarning) {
return res.status(422).send({
message: 'SERVER.SCORE_NOT_ENOUGH'
});
} else {
//update score
req.user.update({
$set: {score: req.user.score - hnrConfig.scoreToRemoveWarning}
}).exec();
comp.hnr_warning = false;
comp.remove_warning_at = Date.now();
comp.remove_warning_score = hnrConfig.scoreToRemoveWarning;
comp.remove_by = req.user;
comp.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(comp);
//update warning number of user
comp.user.update({
$inc: {hnr_warning: -1}
}).exec();
//create trace log
traceLogCreate(req, traceConfig.action.userRemoveHnrWarning, {
complete: comp._id,
score: hnrConfig.scoreToRemoveWarning
});
}
});
}
}
}
};
/**
* complete middleware
*/
exports.completeByID = function (req, res, next, id) {
if (!mongoose.Types.ObjectId.isValid(id)) {
return res.status(400).send({
message: 'COMPLETE_ID_INVALID'
});
}
Complete.findById(id)
.populate('user', 'username displayName profileImageURL')
.populate('remove_by', 'username displayName profileImageURL')
.exec(function (err, complete) {
if (err) {
return next(err);
} else if (!complete) {
return res.status(404).send({
message: 'No complete with that identifier has been found'
});
}
req.complate = complete;
next();
});
};