3 var _ = require('lodash');
4 var util = require('util');
6 var Team = require('../../models').Team;
7 var User = require('../../models').User;
10 exports.index = function(req, res) {
12 var attributes = ['name', 'description'];
13 var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100;
14 var page = req.query.page ? parseInt(req.query.page, 10) : 0;
22 offset: page * per_page
25 _.forIn(req.query, function(value, key) {
31 query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null;
37 attributes.forEach(function(attribute) {
40 $like: '%' + value + '%'
43 query.where.$or.push(tmp);
50 query.where[key].$like = '%' + value + '%';
55 .findAndCountAll(query)
56 .then(function(result) {
58 var total_pages = Math.ceil(result.count / per_page);
59 var next_page = total_pages > (query.offset + 1) ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page + 1) : null;
60 var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null;
62 res.status(200).send({
66 previous_page: previous_page,
67 total_pages: total_pages
71 .catch(function(err) {
72 res.status(500).send({
73 error: 'Something blew up!'
79 exports.show = function(req, res) {
87 .then(function(team) {
89 return res.sendStatus(404);
91 return res.send(team);
93 .catch(function(err) {
94 return handleError(res, err);
98 // Creates a new team in the DB.
99 exports.create = function(req, res) {
102 .then(function(team) {
103 return res.status(201).send(team);
105 .catch(function(err) {
106 return handleError(res, err);
110 // Updates an existing team in the DB.
111 exports.update = function(req, res) {
121 .then(function(team) {
123 return res.sendStatus(404);
125 var updated = _.merge(team, req.body);
128 return res.status(200).send(team);
130 .catch(function(err) {
131 return handleError(res, err);
134 .catch(function(err) {
135 return handleError(res, err);
139 // Deletes a team from the DB.
140 exports.destroy = function(req, res) {
147 .then(function(team) {
149 return res.sendStatus(404);
153 return res.sendStatus(204);
155 .catch(function(err) {
156 return handleError(res, err);
159 .catch(function(err) {
160 return handleError(res, err);
164 // Deletes a agent from the DB.
165 exports.bulkDestroy = function(req, res) {
171 individualHooks: true
174 return res.sendStatus(204);
176 .catch(function(err) {
177 return handleError(res, err);
181 // Updates an existing user_has_mail_queue in the DB.
182 exports.addAgents = function(req, res, next) {
184 .findById(req.params.id)
185 .then(function(team) {
190 .addUsers(req.body.agents)
192 return res.sendStatus(200);
194 .catch(function(err) {
198 return next(new Error('no mail queue found'));
201 .catch(function(err) {
206 exports.removeAgents = function(req, res, next) {
208 .findById(req.params.id)
209 .then(function(team) {
214 .removeUsers(req.body.agents)
216 return res.sendStatus(200);
218 .catch(function(err) {
222 return next(new Error('no mail queue found'));
225 .catch(function(err) {
230 function handleError(res, err) {
231 return res.status(500).send(err);