'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); } }); };