Files
meanTorrent/modules/torrents/server/controllers/comments.server.controller.js

207 lines
4.8 KiB
JavaScript
Raw Normal View History

2017-04-21 18:29:02 +08:00
'use strict';
/**
* Module dependencies
*/
var path = require('path'),
config = require(path.resolve('./config/config')),
mongoose = require('mongoose'),
2017-04-22 00:48:04 +08:00
errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')),
User = mongoose.model('User'),
Peer = mongoose.model('Peer'),
2017-04-23 03:14:16 +08:00
Torrent = mongoose.model('Torrent'),
Comment = mongoose.model('Comment'),
async = require('async');
2017-04-21 18:29:02 +08:00
/**
* create a comment of torrent
* @param req
* @param res
*/
exports.create = function (req, res) {
var comment = new Comment();
2017-04-22 00:48:04 +08:00
comment.comment = req.body.comment;
comment.user = req.user;
var torrent = req.torrent;
torrent._replies.push(comment);
torrent.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
Torrent.populate(torrent._replies, {
path: 'user',
select: 'displayName profileImageURL uploaded downloaded'
}, function (err, t) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(torrent);
}
});
}
});
2017-04-21 18:29:02 +08:00
};
/**
* update a comment of torrent
* @param req
* @param res
*/
exports.update = function (req, res) {
2017-04-23 23:51:11 +08:00
var torrent = req.torrent;
torrent._replies.forEach(function (r) {
if (r._id.equals(req.params.commentId)) {
r.comment = req.body.comment;
r.editedat = Date.now();
r.editedby = req.user.displayName;
2017-04-21 18:29:02 +08:00
torrent.save(function (err, t, numAffected) {
2017-04-23 23:51:11 +08:00
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
//console.log('numAffected: ' + numAffected);
2017-04-23 23:51:11 +08:00
res.json(torrent);
}
});
}
});
2017-04-21 18:29:02 +08:00
};
/**
* delete a comment of torrent
* @param req
* @param res
*/
exports.delete = function (req, res) {
2017-04-23 23:51:11 +08:00
var torrent = req.torrent;
2017-04-21 18:29:02 +08:00
2017-04-23 23:51:11 +08:00
torrent._replies.forEach(function (r) {
if (r._id.equals(req.params.commentId)) {
torrent._replies.pull(r);
torrent.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(torrent);
}
});
}
});
2017-04-21 18:29:02 +08:00
};
/**
* create a sub comment of comment
* @param req
* @param res
*/
exports.SubCreate = function (req, res) {
2017-04-23 03:14:16 +08:00
var comment_to = undefined;
var torrent = req.torrent;
var comment = new Comment();
comment.comment = req.body.comment;
comment.user = req.user;
2017-04-21 18:29:02 +08:00
2017-04-23 03:14:16 +08:00
torrent._replies.forEach(function (r) {
if (r._id.equals(req.params.commentId)) {
r._replies.push(comment);
comment_to = r;
}
});
torrent.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
Torrent.populate(comment_to._replies, {
path: 'user',
select: 'displayName profileImageURL uploaded downloaded'
}, function (err, t) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(torrent);
}
});
}
});
2017-04-21 18:29:02 +08:00
};
/**
* update a sub comment of comment
* @param req
* @param res
*/
exports.SubUpdate = function (req, res) {
2017-04-23 23:51:11 +08:00
var torrent = req.torrent;
2017-04-21 18:29:02 +08:00
2017-04-23 23:51:11 +08:00
torrent._replies.forEach(function (r) {
if (r._id.equals(req.params.commentId)) {
r._replies.forEach(function (s) {
if (s._id.equals(req.params.subCommentId)) {
s.comment = req.body.comment;
s.editedat = Date.now();
s.editedby = req.user.displayName;
torrent.markModified('_replies');
torrent.save(function (err, t, numAffected) {
2017-04-23 23:51:11 +08:00
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
//console.log('numAffected: ' + numAffected);
2017-04-23 23:51:11 +08:00
res.json(torrent);
}
});
}
});
}
});
2017-04-21 18:29:02 +08:00
};
/**
* delete a sub comment of comment
* @param req
* @param res
*/
exports.SubDelete = function (req, res) {
2017-04-23 23:51:11 +08:00
var torrent = req.torrent;
2017-04-21 18:29:02 +08:00
torrent._replies.forEach(function (r) {
if (r._id.equals(req.params.commentId)) {
r._replies.forEach(function (s) {
2017-04-23 23:51:11 +08:00
if (s._id.equals(req.params.subCommentId)) {
console.log(r._id + '-' + s._id);
r._replies.pull(s);
torrent.markModified('_replies');
2017-04-23 23:51:11 +08:00
torrent.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(torrent);
}
});
}
});
2017-04-23 23:51:11 +08:00
}
});
2017-04-21 18:29:02 +08:00
};