3 var _ = require('lodash');
4 var util = require('util');
6 var MailQueue = require('../../models').MailQueue;
8 // Get list of mailQueues
9 exports.index = function(req, res) {
11 var attributes = ['description', 'name', 'timeout', 'strategy'];
12 var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100;
13 var page = req.query.page ? parseInt(req.query.page, 10) : 0;
18 offset: page * per_page,
24 _.forIn(req.query, function(value, key) {
30 query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null;
36 attributes.forEach(function(attribute) {
39 $like: '%' + value + '%'
42 query.where.$or.push(tmp);
49 query.where[key].$like = '%' + value + '%';
54 .findAndCountAll(query)
55 .then(function(result) {
56 var total_pages = Math.ceil(result.count / per_page);
57 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;
58 var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null;
60 res.status(200).send({
64 previous_page: previous_page,
65 total_pages: total_pages
69 .catch(function(err) {
70 return handleError(res, err);
74 // Get a single mailQueue
75 exports.show = function(req, res) {
77 .findById(req.params.id)
78 .then(function(mailQueue) {
80 return res.sendStatus(404);
82 return res.send(mailQueue);
84 .catch(function(err) {
85 return handleError(res, err);
89 // Creates a new mailQueue in the DB.
90 exports.create = function(req, res) {
93 .then(function(mailQueue) {
94 return res.status(201).send(mailQueue);
96 .catch(function(err) {
97 return handleError(res, err);
101 // Updates an existing mailQueue in the DB.
102 exports.update = function(req, res) {
108 .findById(req.params.id)
109 .then(function(mailQueue) {
111 return res.sendStatus(404);
113 var updated = _.merge(mailQueue, req.body);
116 return res.status(200).send(mailQueue);
118 .catch(function(err) {
119 return handleError(res, err);
122 .catch(function(err) {
123 return handleError(res, err);
127 // Updates an existing user_has_mailQueue in the DB.
128 exports.addAgents = function(req, res, next) {
130 .findById(req.params.id)
131 .then(function(mailQueue) {
134 .addUsers(req.body.agents, {
135 individualHooks: true
138 throw new Error('MailQueue not found');
142 return res.sendStatus(200);
144 .catch(function(err) {
145 return handleError(res, err);
149 exports.removeAgents = function(req, res) {
151 .findById(req.params.id)
152 .then(function(mailQueue) {
155 .removeUsers(req.body.agents, {
156 individualHooks: true
159 throw new Error('MailQueue not found');
163 return res.sendStatus(200);
165 .catch(function(err) {
166 return handleError(res, err);
170 // Deletes a mailQueue from the DB.
171 exports.destroy = function(req, res) {
173 .findById(req.params.id)
174 .then(function(mailQueue) {
176 return res.sendStatus(404);
181 return res.sendStatus(204);
183 .catch(function(err) {
184 return handleError(res, err);
187 .catch(function(err) {
188 return handleError(res, err);
192 // Deletes a agent from the DB.
193 exports.bulkDestroy = function(req, res) {
199 individualHooks: true
202 return res.sendStatus(204);
204 .catch(function(err) {
205 return handleError(res, err);
209 function handleError(res, err) {
210 return res.status(500).send(err);