From a3e82a0d1527ab97458f38f59716a057f6ec476c Mon Sep 17 00:00:00 2001 From: OldHawk Date: Mon, 3 Jul 2017 17:48:27 +0800 Subject: [PATCH] feat(forums): add forums server config & controller --- .../server/config/forums.server.config.js | 14 ++ .../controllers/forums.server.controller.js | 120 ++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 modules/forums/server/config/forums.server.config.js create mode 100644 modules/forums/server/controllers/forums.server.controller.js diff --git a/modules/forums/server/config/forums.server.config.js b/modules/forums/server/config/forums.server.config.js new file mode 100644 index 00000000..629c3606 --- /dev/null +++ b/modules/forums/server/config/forums.server.config.js @@ -0,0 +1,14 @@ +'use strict'; + +/** + * Module dependencies + */ +var path = require('path'), + config = require(path.resolve('./config/config')); + +/** + * Module init function. + */ +module.exports = function (app, db) { + +}; diff --git a/modules/forums/server/controllers/forums.server.controller.js b/modules/forums/server/controllers/forums.server.controller.js new file mode 100644 index 00000000..d6fcd828 --- /dev/null +++ b/modules/forums/server/controllers/forums.server.controller.js @@ -0,0 +1,120 @@ +'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'); + +/** + * create a forum + * @param req + * @param res + */ +exports.create = function (req, res) { + var forum = new Forum(req.body); + + forum.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(forum); + } + }); +}; + +/** + * list forums + * @param req + * @param res + */ +exports.list = function (req, res) { + Forum.find() + .sort('order -createdat') + .populate('lastTopic') + .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); + }); +}; + +/** + * Update an forum + */ +exports.update = function (req, res) { + var forum = req.forum; + + forum.name = req.body.name; + forum.desc = req.body.desc; + forum.order = req.body.order; + forum.readOnly = req.body.readOnly; + + forum.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(forum); + } + }); +}; + +/** + * delete forum + * @param req + * @param res + */ +exports.delete = function (req, res) { + var forum = req.forum; + forum.remove(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(forum); + } + }); +}; + +/** + * Invitation middleware + */ +exports.forumByID = function (req, res, next, id) { + + if (!mongoose.Types.ObjectId.isValid(id)) { + return res.status(400).send({ + message: 'Forum is invalid' + }); + } + + Forum.findById(id) + .populate('lastTopic') + .populate('moderators', 'username displayName profileImageURL uploaded downloaded') + .exec(function (err, forum) { + if (err) { + return next(err); + } else if (!forum) { + return res.status(404).send({ + message: 'No forum with that identifier has been found' + }); + } + req.forum = forum; + next(); + }); +}; +