-var _0xd64e=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72\x48\x61\x73\x43\x68\x61\x74\x51\x75\x65\x75\x65","\x69\x6E\x64\x65\x78","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x6E\x61\x6D\x65","\x74\x69\x6D\x65\x6F\x75\x74","\x73\x74\x72\x61\x74\x65\x67\x79","\x70\x65\x72\x5F\x70\x61\x67\x65","\x71\x75\x65\x72\x79","\x70\x61\x67\x65","\x6F\x72\x64\x65\x72","\x25\x73\x20\x25\x73","\x73\x6F\x72\x74\x5F\x62\x79","\x73\x6F\x72\x74\x5F\x6F\x72\x64\x65\x72","\x41\x53\x43","\x66\x6F\x72\x6D\x61\x74","\x24\x6F\x72","\x77\x68\x65\x72\x65","\x25","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x24","\x24\x6C\x69\x6B\x65","\x66\x6F\x72\x49\x6E","\x63\x61\x74\x63\x68","\x63\x6F\x75\x6E\x74","\x63\x65\x69\x6C","\x6F\x66\x66\x73\x65\x74","\x25\x73\x3A\x2F\x2F\x25\x73\x25\x73\x3F\x70\x61\x67\x65\x3D\x25\x64","\x70\x72\x6F\x74\x6F\x63\x6F\x6C","\x68\x6F\x73\x74","\x68\x65\x61\x64\x65\x72\x73","\x62\x61\x73\x65\x55\x72\x6C","\x72\x6F\x77\x73","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x6D\x65","\x69\x64","\x75\x73\x65\x72","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x6D\x65\x72\x67\x65","\x73\x61\x76\x65","\x61\x64\x64\x41\x67\x65\x6E\x74\x73","\x61\x67\x65\x6E\x74\x73","\x61\x64\x64\x55\x73\x65\x72\x73","\x4E\x6F\x20\x6D\x61\x69\x6C\x20\x71\x75\x65\x75\x65\x20\x66\x6F\x75\x6E\x64","\x72\x65\x6D\x6F\x76\x65\x41\x67\x65\x6E\x74\x73","\x72\x65\x6D\x6F\x76\x65\x55\x73\x65\x72\x73","\x6E\x6F\x20\x6D\x61\x69\x6C\x20\x71\x75\x65\x75\x65\x20\x66\x6F\x75\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79"];_0xd64e[0];var _=require(_0xd64e[1]);var util=require(_0xd64e[2]);var ChatQueue=require(_0xd64e[4])[_0xd64e[3]];var UserHasChatQueue=require(_0xd64e[4])[_0xd64e[5]];exports[_0xd64e[6]]=function(_0x5fc5x5,_0x5fc5x6){var _0x5fc5x7=[_0xd64e[7],_0xd64e[8],_0xd64e[9],_0xd64e[10]];var _0x5fc5x8=_0x5fc5x5[_0xd64e[12]][_0xd64e[11]]?parseInt(_0x5fc5x5[_0xd64e[12]][_0xd64e[11]],10):100;var _0x5fc5x9=_0x5fc5x5[_0xd64e[12]][_0xd64e[13]]?parseInt(_0x5fc5x5[_0xd64e[12]][_0xd64e[13]],10):0;var _0x5fc5xa={where:{},limit:_0x5fc5x8,offset:_0x5fc5x9*_0x5fc5x8,include:[{all:true}]};_[_0xd64e[27]](_0x5fc5x5[_0xd64e[12]],function(_0x5fc5xb,_0x5fc5xc){switch(_0x5fc5xc){case _0xd64e[11]:;case _0xd64e[13]:break ;;case _0xd64e[16]:_0x5fc5xa[_0xd64e[14]]=util[_0xd64e[19]](_0xd64e[15],_0x5fc5x5[_0xd64e[12]][_0xd64e[16]],_0x5fc5x5[_0xd64e[12]][_0xd64e[17]]||_0xd64e[18])||null;break ;;case _0xd64e[17]:break ;;case _0xd64e[25]:_0x5fc5xa[_0xd64e[21]][_0xd64e[20]]=[];_0x5fc5x7[_0xd64e[24]](function(_0x5fc5xd){var _0x5fc5xe={};_0x5fc5xe[_0x5fc5xd]={$like:_0xd64e[22]+_0x5fc5xb+_0xd64e[22]};_0x5fc5xa[_0xd64e[21]][_0xd64e[20]][_0xd64e[23]](_0x5fc5xe);});break ;;default:_0x5fc5xa[_0xd64e[21]][_0x5fc5xc]={$like:{}};_0x5fc5xa[_0xd64e[21]][_0x5fc5xc][_0xd64e[26]]=_0xd64e[22]+_0x5fc5xb+_0xd64e[22];;}});ChatQueue[_0xd64e[41]](_0x5fc5xa)[_0xd64e[40]](function(_0x5fc5x10){var _0x5fc5x11=Math[_0xd64e[30]](_0x5fc5x10[_0xd64e[29]]/_0x5fc5x8);var _0x5fc5x12=_0x5fc5x11>(_0x5fc5xa[_0xd64e[31]]+1)?util[_0xd64e[19]](_0xd64e[32],_0x5fc5x5[_0xd64e[33]],_0x5fc5x5[_0xd64e[35]][_0xd64e[34]],_0x5fc5x5[_0xd64e[36]],_0x5fc5x9+1):null;var _0x5fc5x13=_0x5fc5x9>0?util[_0xd64e[19]](_0xd64e[32],_0x5fc5x5[_0xd64e[33]],_0x5fc5x5[_0xd64e[35]][_0xd64e[34]],_0x5fc5x5[_0xd64e[36]],_0x5fc5x9-1):null;_0x5fc5x6[_0xd64e[39]](200)[_0xd64e[38]]({count:_0x5fc5x10[_0xd64e[29]],rows:_0x5fc5x10[_0xd64e[37]],next_page:_0x5fc5x12,previous_page:_0x5fc5x13,total_pages:_0x5fc5x11});})[_0xd64e[28]](function(_0x5fc5xf){return handleError(_0x5fc5x6,_0x5fc5xf)});};exports[_0xd64e[42]]=function(_0x5fc5x5,_0x5fc5x6,_0x5fc5x14){UserHasChatQueue[_0xd64e[45]]({where:{UserId:_0x5fc5x5[_0xd64e[44]][_0xd64e[43]]}})[_0xd64e[40]](function(_0x5fc5x15){return _0x5fc5x6[_0xd64e[39]](200)[_0xd64e[38]](_0x5fc5x15)})[_0xd64e[28]](function(_0x5fc5xf){return handleError(_0x5fc5x6,_0x5fc5xf)})};exports[_0xd64e[46]]=function(_0x5fc5x5,_0x5fc5x6){ChatQueue[_0xd64e[49]](_0x5fc5x5[_0xd64e[48]][_0xd64e[43]])[_0xd64e[40]](function(_0x5fc5x16){if(!_0x5fc5x16){return _0x5fc5x6[_0xd64e[47]](404)};return _0x5fc5x6[_0xd64e[38]](_0x5fc5x16);})[_0xd64e[28]](function(_0x5fc5xf){return handleError(_0x5fc5x6,_0x5fc5xf)})};exports[_0xd64e[50]]=function(_0x5fc5x5,_0x5fc5x6){ChatQueue[_0xd64e[50]](_0x5fc5x5[_0xd64e[51]])[_0xd64e[40]](function(_0x5fc5x16){return _0x5fc5x6[_0xd64e[39]](201)[_0xd64e[38]](_0x5fc5x16)})[_0xd64e[28]](function(_0x5fc5xf){return handleError(_0x5fc5x6,_0x5fc5xf)})};exports[_0xd64e[52]]=function(_0x5fc5x5,_0x5fc5x6){if(_0x5fc5x5[_0xd64e[51]][_0xd64e[43]]){delete _0x5fc5x5[_0xd64e[51]][_0xd64e[43]]};ChatQueue[_0xd64e[49]](_0x5fc5x5[_0xd64e[48]][_0xd64e[43]])[_0xd64e[40]](function(_0x5fc5x16){if(!_0x5fc5x16){return _0x5fc5x6[_0xd64e[47]](404)};var _0x5fc5x17=_[_0xd64e[53]](_0x5fc5x16,_0x5fc5x5[_0xd64e[51]]);_0x5fc5x17[_0xd64e[54]]()[_0xd64e[40]](function(){return _0x5fc5x6[_0xd64e[39]](200)[_0xd64e[38]](_0x5fc5x16)})[_0xd64e[28]](function(_0x5fc5xf){return handleError(_0x5fc5x6,_0x5fc5xf)});})[_0xd64e[28]](function(_0x5fc5xf){return handleError(_0x5fc5x6,_0x5fc5xf)});};exports[_0xd64e[55]]=function(_0x5fc5x5,_0x5fc5x6,_0x5fc5x14){return ChatQueue[_0xd64e[49]](_0x5fc5x5[_0xd64e[48]][_0xd64e[43]])[_0xd64e[40]](function(_0x5fc5x18){if(_0x5fc5x18){return _0x5fc5x18[_0xd64e[57]](_0x5fc5x5[_0xd64e[51]][_0xd64e[56]],{individualHooks:true})}else {throw new Error(_0xd64e[58])}})[_0xd64e[40]](function(){return _0x5fc5x6[_0xd64e[47]](200)})[_0xd64e[28]](function(_0x5fc5xf){return _0x5fc5x14(_0x5fc5xf)})};exports[_0xd64e[59]]=function(_0x5fc5x5,_0x5fc5x6,_0x5fc5x14){return ChatQueue[_0xd64e[49]](_0x5fc5x5[_0xd64e[48]][_0xd64e[43]])[_0xd64e[40]](function(_0x5fc5x18){if(_0x5fc5x18){return _0x5fc5x18[_0xd64e[60]](_0x5fc5x5[_0xd64e[51]][_0xd64e[56]],{individualHooks:true})}else {throw new Error(_0xd64e[61])}})[_0xd64e[40]](function(){return _0x5fc5x6[_0xd64e[47]](200)})[_0xd64e[28]](function(_0x5fc5xf){return _0x5fc5x14(_0x5fc5xf)})};exports[_0xd64e[62]]=function(_0x5fc5x5,_0x5fc5x6){ChatQueue[_0xd64e[49]](_0x5fc5x5[_0xd64e[48]][_0xd64e[43]])[_0xd64e[40]](function(_0x5fc5x16){if(!_0x5fc5x16){return _0x5fc5x6[_0xd64e[47]](404)};_0x5fc5x16[_0xd64e[62]]()[_0xd64e[40]](function(){return _0x5fc5x6[_0xd64e[47]](204)})[_0xd64e[28]](function(_0x5fc5xf){return handleError(_0x5fc5x6,_0x5fc5xf)});})[_0xd64e[28]](function(_0x5fc5xf){return handleError(_0x5fc5x6,_0x5fc5xf)})};exports[_0xd64e[63]]=function(_0x5fc5x5,_0x5fc5x6){ChatQueue[_0xd64e[62]]({where:{id:_0x5fc5x5[_0xd64e[12]][_0xd64e[43]]},individualHooks:true})[_0xd64e[40]](function(){return _0x5fc5x6[_0xd64e[47]](204)})[_0xd64e[28]](function(_0x5fc5xf){return handleError(_0x5fc5x6,_0x5fc5xf)})};function handleError(_0x5fc5x6,_0x5fc5xf){return _0x5fc5x6[_0xd64e[39]](500)[_0xd64e[38]](_0x5fc5xf)}
\ No newline at end of file
+'use strict';
+
+var _ = require('lodash');
+var util = require('util');
+
+var ChatQueue = require('../../models').ChatQueue;
+var UserHasChatQueue = require('../../models').UserHasChatQueue;
+
+// Get list of mailQueues
+exports.index = function (req, res) {
+
+ var attributes = ['description', 'name', 'timeout', 'strategy'];
+ var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100;
+ var page = req.query.page ? parseInt(req.query.page, 10) : 0;
+
+ var query = {
+ where: {},
+ limit: per_page,
+ offset: page * per_page,
+ include: [{
+ all: true
+ }]
+ };
+
+ _.forIn(req.query, function (value, key) {
+ switch (key) {
+ case 'per_page':
+ case 'page':
+ break;
+ case 'sort_by':
+ query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null;
+ break;
+ case 'sort_order':
+ break;
+ case '$':
+ query.where.$or = [];
+ attributes.forEach(function (attribute) {
+ var tmp = {};
+ tmp[attribute] = {
+ $like: '%' + value + '%'
+ };
+
+ query.where.$or.push(tmp);
+ });
+ break;
+ default:
+ query.where[key] = {
+ $like: {}
+ };
+ query.where[key].$like = '%' + value + '%';
+ }
+ });
+
+ ChatQueue
+ .findAndCountAll(query)
+ .then(function (result) {
+ var total_pages = Math.ceil(result.count / per_page);
+ 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;
+ var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null;
+
+ res.status(200).send({
+ count: result.count,
+ rows: result.rows,
+ next_page: next_page,
+ previous_page: previous_page,
+ total_pages: total_pages
+ });
+
+ })
+ .catch(function (err) {
+ return handleError(res, err);
+ });
+};
+
+// Get list of my chat_rooms
+exports.me = function (req, res, next) {
+ UserHasChatQueue
+ .findAll({
+ where: {
+ UserId: req.user.id
+ }
+ })
+ .then(function (userHasChatQueues) {
+ return res.status(200).send(userHasChatQueues);
+ })
+ .catch(function (err) {
+ return handleError(res, err);
+ });
+};
+
+// Get a single chat_queue
+exports.show = function (req, res) {
+ ChatQueue
+ .findById(req.params.id)
+ .then(function (chat_queue) {
+ if (!chat_queue) {
+ return res.sendStatus(404);
+ }
+ return res.send(chat_queue);
+ })
+ .catch(function (err) {
+ return handleError(res, err);
+ });
+};
+
+// Creates a new chat_queue in the DB.
+exports.create = function (req, res) {
+ ChatQueue
+ .create(req.body)
+ .then(function (chat_queue) {
+ return res.status(201).send(chat_queue);
+ })
+ .catch(function (err) {
+ return handleError(res, err);
+ });
+};
+
+// Updates an existing chat_queue in the DB.
+exports.update = function (req, res) {
+ if (req.body.id) {
+ delete req.body.id;
+ }
+ ChatQueue
+ .findById(req.params.id)
+ .then(function (chat_queue) {
+ if (!chat_queue) {
+ return res.sendStatus(404);
+ }
+ var updated = _.merge(chat_queue, req.body);
+ updated.save()
+ .then(function () {
+ return res.status(200).send(chat_queue);
+ })
+ .catch(function (err) {
+ return handleError(res, err);
+ });
+ })
+ .catch(function (err) {
+ return handleError(res, err);
+ });
+};
+
+// Updates an existing user_has_chatQueue in the DB.
+exports.addAgents = function (req, res, next) {
+ return ChatQueue
+ .findById(req.params.id)
+ .then(function (chatQueue) {
+ if (chatQueue) {
+ return chatQueue
+ .addUsers(req.body.agents, {
+ individualHooks: true
+ });
+ } else {
+ throw new Error('No mail queue found');
+ }
+ })
+ .then(function () {
+ return res.sendStatus(200);
+ })
+ .catch(function (err) {
+ return next(err);
+ });
+};
+
+exports.removeAgents = function (req, res, next) {
+ return ChatQueue
+ .findById(req.params.id)
+ .then(function (chatQueue) {
+ if (chatQueue) {
+ return chatQueue
+ .removeUsers(req.body.agents, {
+ individualHooks: true
+ });
+ } else {
+ throw new Error('no mail queue found');
+ }
+ })
+ .then(function () {
+ return res.sendStatus(200);
+ })
+ .catch(function (err) {
+ return next(err);
+ });
+};
+
+// Deletes a chat_queue from the DB.
+exports.destroy = function (req, res) {
+ ChatQueue
+ .findById(req.params.id)
+ .then(function (chat_queue) {
+ if (!chat_queue) {
+ return res.sendStatus(404);
+ }
+ chat_queue.destroy()
+ .then(function () {
+ return res.sendStatus(204);
+ })
+ .catch(function (err) {
+ return handleError(res, err);
+ });
+ })
+ .catch(function (err) {
+ return handleError(res, err);
+ });
+};
+
+// Deletes a agent from the DB.
+exports.bulkDestroy = function (req, res) {
+ ChatQueue
+ .destroy({
+ where: {
+ id: req.query.id
+ },
+ individualHooks: true
+ })
+ .then(function () {
+ return res.sendStatus(204);
+ })
+ .catch(function (err) {
+ return handleError(res, err);
+ });
+};
+
+function handleError(res, err) {
+ return res.status(500).send(err);
+}