Files
meanTorrent/modules/forums/server/controllers/forums.server.controller.js
2017-07-07 17:19:42 +08:00

90 lines
2.1 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'),
Forum = mongoose.model('Forum'),
Topic = mongoose.model('Topic'),
async = require('async');
/**
* list forums
* @param req
* @param res
*/
exports.list = function (req, res) {
Forum.find()
.sort('order -createdat')
.populate('lastNewTopic')
.populate('lastReplyTopic')
.populate('moderators', 'username displayName profileImageURL uploaded downloaded')
.exec(function (err, forums) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
}
res.json(forums);
});
};
/**
* read forum
* @param req
* @param res
*/
exports.read = function (req, res) {
res.json(req.forum);
};
/**
* listTopics
* @param req
* @param res
*/
exports.listTopics = function (req, res) {
Topic.find({
forum: req.params.forumId
})
.sort('-isTop -updatedAt -createdAt')
.populate('user', 'username displayName profileImageURL uploaded downloaded')
.populate('lastUser', 'username displayName profileImageURL uploaded downloaded')
.populate('_scoreList.user', 'username displayName profileImageURL uploaded downloaded')
.populate('_replies.user', 'username displayName profileImageURL uploaded downloaded')
.exec(function (err, topics) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
}
res.json(topics);
});
};
/**
* postNewTopic
* @param req
* @param res
*/
exports.postNewTopic = function (req, res) {
var forum = req.forum;
var topic = new Topic(req.body);
topic.forum = forum;
topic.user = req.user;
topic.save(function (err) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json(topic);
}
});
};