Built motion from commit 5e31ea4.|0.0.32
[motion.git] / server / api / chat_queue / chat_queue.controller.js
index 9252846..a2eaab3 100644 (file)
@@ -1 +1,226 @@
-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);
+}