'use strict'; var async = require('async'); var groups = require('../../groups'); var categories = require('../../categories'); var AdminsMods = module.exports; AdminsMods.get = function (req, res, next) { async.waterfall([ function (next) { async.parallel({ admins: function (next) { groups.get('administrators', { uid: req.uid }, next); }, globalMods: function (next) { groups.get('Global Moderators', { uid: req.uid }, next); }, categories: function (next) { getModeratorsOfCategories(req.uid, next); }, }, next); }, function (results) { res.render('admin/manage/admins-mods', results); }, ], next); }; function getModeratorsOfCategories(uid, callback) { async.waterfall([ function (next) { categories.buildForSelect(uid, 'find', next); }, function (categoryData, next) { async.map(categoryData, function (category, next) { async.waterfall([ function (next) { categories.getModerators(category.cid, next); }, function (moderators, next) { category.moderators = moderators; next(null, category); }, ], next); }, next); }, ], callback); }