Built motion from commit 5e31ea4.|0.0.32
[motion.git] / server / api / chat_website / chat_website.controller.js
index 4121601..b9339a4 100644 (file)
@@ -1 +1,269 @@
-var _0xfc05=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x74\x69\x6C","\x61\x73\x79\x6E\x63","\x6D\x75\x73\x74\x61\x63\x68\x65","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x43\x68\x61\x74\x57\x65\x62\x73\x69\x74\x65","\x43\x68\x61\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E","\x73\x6E\x69\x70\x70\x65\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6D\x70\x6F\x6E\x65\x6E\x74\x73\x2F\x78\x63\x68\x61\x74\x74\x79","\x69\x6E\x64\x65\x78","\x6E\x61\x6D\x65","\x61\x64\x64\x72\x65\x73\x73","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x72\x65\x6D\x6F\x74\x65","\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","\x53\x6F\x6D\x65\x74\x68\x69\x6E\x67\x20\x62\x6C\x65\x77\x20\x75\x70\x21","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\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","\x74\x68\x65\x6E","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x53\x6E\x69\x70\x70\x65\x74\x43\x6F\x64\x65","\x72\x65\x6E\x64\x65\x72","\x63\x72\x65\x61\x74\x65","\x62\x6F\x64\x79","\x75\x70\x64\x61\x74\x65","\x64\x65\x73\x74\x72\x6F\x79","\x66\x69\x6E\x64","\x73\x6F\x72\x74\x41\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x61\x70\x70\x6C\x69\x63\x61\x74\x69\x6F\x6E\x73","\x6C\x65\x6E\x67\x74\x68","\x70\x72\x69\x6F\x72\x69\x74\x79","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x66\x69\x6E\x64\x41\x6C\x6C","\x77\x61\x74\x65\x72\x66\x61\x6C\x6C","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79"];_0xfc05[0];var _=require(_0xfc05[1]);var util=require(_0xfc05[2]);var async=require(_0xfc05[3]);var Mustache=require(_0xfc05[4]);var sequelize=require(_0xfc05[6])[_0xfc05[5]];var ChatWebsite=require(_0xfc05[6])[_0xfc05[7]];var ChatApplication=require(_0xfc05[6])[_0xfc05[8]];var snippet=require(_0xfc05[10])[_0xfc05[9]];exports[_0xfc05[11]]=function(_0xe925x9,_0xe925xa,_0xe925xb){var _0xe925xc=[_0xfc05[12],_0xfc05[13],_0xfc05[14],_0xfc05[15]];var _0xe925xd=_0xe925x9[_0xfc05[17]][_0xfc05[16]]?parseInt(_0xe925x9[_0xfc05[17]][_0xfc05[16]],10):100;var _0xe925xe=_0xe925x9[_0xfc05[17]][_0xfc05[18]]?parseInt(_0xe925x9[_0xfc05[17]][_0xfc05[18]],10):0;var _0xe925xf={where:{},limit:_0xe925xd,offset:_0xe925xe*_0xe925xd};_[_0xfc05[32]](_0xe925x9[_0xfc05[17]],function(_0xe925x10,_0xe925x11){switch(_0xe925x11){case _0xfc05[16]:;case _0xfc05[18]:break ;;case _0xfc05[21]:_0xe925xf[_0xfc05[19]]=util[_0xfc05[24]](_0xfc05[20],_0xe925x9[_0xfc05[17]][_0xfc05[21]],_0xe925x9[_0xfc05[17]][_0xfc05[22]]||_0xfc05[23])||null;break ;;case _0xfc05[22]:break ;;case _0xfc05[30]:_0xe925xf[_0xfc05[26]][_0xfc05[25]]=[];_0xe925xc[_0xfc05[29]](function(_0xe925x12){var _0xe925x13={};_0xe925x13[_0xe925x12]={$like:_0xfc05[27]+_0xe925x10+_0xfc05[27]};_0xe925xf[_0xfc05[26]][_0xfc05[25]][_0xfc05[28]](_0xe925x13);});break ;;default:_0xe925xf[_0xfc05[26]][_0xe925x11]={$like:{}};_0xe925xf[_0xfc05[26]][_0xe925x11][_0xfc05[31]]=_0xfc05[27]+_0xe925x10+_0xfc05[27];;}});ChatWebsite[_0xfc05[47]](_0xe925xf)[_0xfc05[46]](function(_0xe925x15){var _0xe925x16=Math[_0xfc05[38]](_0xe925x15[_0xfc05[37]]/_0xe925xd);var _0xe925x17=_0xe925x16>(_0xe925xf[_0xfc05[39]]+1)?util[_0xfc05[24]](_0xfc05[40],_0xe925x9[_0xfc05[41]],_0xe925x9[_0xfc05[43]][_0xfc05[42]],_0xe925x9[_0xfc05[44]],_0xe925xe+1):null;var _0xe925x18=_0xe925xe>0?util[_0xfc05[24]](_0xfc05[40],_0xe925x9[_0xfc05[41]],_0xe925x9[_0xfc05[43]][_0xfc05[42]],_0xe925x9[_0xfc05[44]],_0xe925xe-1):null;_0xe925xa[_0xfc05[35]](200)[_0xfc05[34]]({count:_0xe925x15[_0xfc05[37]],rows:_0xe925x15[_0xfc05[45]],next_page:_0xe925x17,previous_page:_0xe925x18,total_pages:_0xe925x16});})[_0xfc05[36]](function(_0xe925x14){_0xe925xa[_0xfc05[35]](500)[_0xfc05[34]]({error:_0xfc05[33]})});};exports[_0xfc05[48]]=function(_0xe925x9,_0xe925xa){ChatWebsite[_0xfc05[52]](_0xe925x9[_0xfc05[51]][_0xfc05[50]])[_0xfc05[46]](function(_0xe925x19){if(!_0xe925x19){return _0xe925xa[_0xfc05[49]](404)};return _0xe925xa[_0xfc05[34]](_0xe925x19);})[_0xfc05[36]](function(_0xe925x14){return handleError(_0xe925xa,_0xe925x14)})};exports[_0xfc05[53]]=function(_0xe925x9,_0xe925xa){ChatWebsite[_0xfc05[52]](_0xe925x9[_0xfc05[51]][_0xfc05[50]])[_0xfc05[46]](function(_0xe925x19){var _0xe925x1a={remote:_0xe925x19[_0xfc05[15]],websiteId:_0xe925x9[_0xfc05[51]][_0xfc05[50]]};var _0xe925x1b=Mustache[_0xfc05[54]](snippet,_0xe925x1a);return _0xe925xa[_0xfc05[34]](_0xe925x1b);})[_0xfc05[36]](function(_0xe925x14){return handleError(_0xe925xa,_0xe925x14)})};exports[_0xfc05[55]]=function(_0xe925x9,_0xe925xa){ChatWebsite[_0xfc05[55]](_0xe925x9[_0xfc05[56]])[_0xfc05[46]](function(_0xe925x19){return _0xe925xa[_0xfc05[35]](201)[_0xfc05[34]](_0xe925x19)})[_0xfc05[36]](function(_0xe925x14){return handleError(_0xe925xa,_0xe925x14)})};exports[_0xfc05[57]]=function(_0xe925x9,_0xe925xa){if(_0xe925x9[_0xfc05[56]][_0xfc05[50]]){delete _0xe925x9[_0xfc05[56]][_0xfc05[50]]};return ChatWebsite[_0xfc05[52]](_0xe925x9[_0xfc05[51]][_0xfc05[50]])[_0xfc05[46]](function(_0xe925x19){if(!_0xe925x19){return _0xe925xa[_0xfc05[49]](404)};return _0xe925x19[_0xfc05[57]](_0xe925x9[_0xfc05[56]])[_0xfc05[46]](function(_0xe925x19){return _0xe925xa[_0xfc05[35]](200)[_0xfc05[34]](_0xe925x19)});})[_0xfc05[36]](function(_0xe925x14){return handleError(_0xe925xa,_0xe925x14)});};exports[_0xfc05[58]]=function(_0xe925x9,_0xe925xa){ChatWebsite[_0xfc05[59]]({where:{id:_0xe925x9[_0xfc05[51]][_0xfc05[50]]}})[_0xfc05[46]](function(_0xe925x19){if(!_0xe925x19){return _0xe925xa[_0xfc05[49]](404)};_0xe925x19[_0xfc05[58]]()[_0xfc05[46]](function(){return _0xe925xa[_0xfc05[49]](204)})[_0xfc05[36]](function(_0xe925x14){return handleError(_0xe925xa,_0xe925x14)});})[_0xfc05[36]](function(_0xe925x14){return handleError(_0xe925xa,_0xe925x14)})};exports[_0xfc05[60]]=function(_0xe925x9,_0xe925xa,_0xe925xb){ChatApplication[_0xfc05[66]]({where:{id:_0xe925x9[_0xfc05[56]][_0xfc05[61]]}})[_0xfc05[46]](function(_0xe925x1c){var _0xe925x1d=_0xe925x1c;async[_0xfc05[67]]([function(_0xe925x1e){ChatApplication[_0xfc05[58]]({where:{id:_0xe925x9[_0xfc05[56]][_0xfc05[61]]}})[_0xfc05[46]](function(){_0xe925x1e()})[_0xfc05[36]](function(_0xe925x14){_0xe925x1e(_0xe925x14)})},function(_0xe925x1e){var _0xe925x1f=[];for(var _0xe925x20=0;_0xe925x20<_0xe925x9[_0xfc05[56]][_0xfc05[61]][_0xfc05[62]];_0xe925x20++){var _0xe925x21=_[_0xfc05[59]](_0xe925x1d,{"\x69\x64":_0xe925x9[_0xfc05[56]][_0xfc05[61]][_0xe925x20]});if(_0xe925x21){_0xe925x21[_0xfc05[63]]=_0xe925x20+1;_0xe925x1f[_0xfc05[28]](_0xe925x21[_0xfc05[64]]);};};ChatApplication[_0xfc05[65]](_0xe925x1f)[_0xfc05[46]](function(){_0xe925x1e()})[_0xfc05[36]](function(_0xe925x14){_0xe925x1e(_0xe925x14)});},function(_0xe925x1e){ChatApplication[_0xfc05[66]]({where:{id:_0xe925x9[_0xfc05[56]][_0xfc05[61]]},order:_0xfc05[63],include:[{all:true}]})[_0xfc05[46]](function(_0xe925x1c){_0xe925x1e(null,_0xe925x1c)})[_0xfc05[36]](function(_0xe925x14){_0xe925x1e(_0xe925x14)})}],function(_0xe925x14,_0xe925x15){if(_0xe925x14){return handleError(_0xe925xa,_0xe925x14)}else {return _0xe925xa[_0xfc05[35]](201)[_0xfc05[34]](_0xe925x15)}});})[_0xfc05[36]](function(_0xe925x14){return handleError(_0xe925xa,_0xe925x14)})};exports[_0xfc05[68]]=function(_0xe925x9,_0xe925xa){ChatWebsite[_0xfc05[58]]({where:{id:_0xe925x9[_0xfc05[17]][_0xfc05[50]]},individualHooks:true})[_0xfc05[46]](function(){return _0xe925xa[_0xfc05[49]](204)})[_0xfc05[36]](function(_0xe925x14){return handleError(_0xe925xa,_0xe925x14)})};function handleError(_0xe925xa,_0xe925x14){return _0xe925xa[_0xfc05[35]](500)[_0xfc05[34]](_0xe925x14)}
\ No newline at end of file
+'use strict';
+
+var _ = require('lodash');
+var util = require('util');
+var async = require('async');
+var Mustache = require('mustache');
+
+var sequelize = require('../../models').sequelize;
+var ChatWebsite = require('../../models').ChatWebsite;
+var ChatApplication = require('../../models').ChatApplication;
+var snippet = require('../../components/xchatty').snippet;
+
+// Get list of chat_websites
+exports.index = function (req, res, next) {
+
+  var attributes = ['name', 'address', 'description', 'remote'];
+  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
+  };
+
+  _.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 + '%';
+    }
+  });
+
+  ChatWebsite
+    .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) {
+      res.status(500).send({
+        error: 'Something blew up!'
+      });
+    });
+};
+
+// Get a single chat_website
+exports.show = function (req, res) {
+  ChatWebsite
+    .findById(req.params.id)
+    .then(function (chat_website) {
+      if (!chat_website) {
+        return res.sendStatus(404);
+      }
+      return res.send(chat_website);
+    })
+    .catch(function (err) {
+      return handleError(res, err);
+    });
+};
+
+// Get a snippet for chat_website
+exports.getSnippetCode = function (req, res) {
+  ChatWebsite
+    .findById(req.params.id)
+    .then(function (chat_website) {
+      var configSnippet = {
+        remote: chat_website.remote,
+        websiteId: req.params.id
+      };
+      var html = Mustache.render(snippet, configSnippet);
+      return res.send(html);
+    })
+    .catch(function (err) {
+      return handleError(res, err);
+    });
+};
+
+// Creates a new chat_website in the DB.
+exports.create = function (req, res) {
+  ChatWebsite
+    .create(req.body)
+    .then(function (chat_website) {
+      return res.status(201).send(chat_website);
+    })
+    .catch(function (err) {
+      return handleError(res, err);
+    });
+};
+
+// Updates an existing chat_website in the DB.
+exports.update = function (req, res) {
+  if (req.body.id) {
+    delete req.body.id;
+  }
+
+  return ChatWebsite
+    .findById(req.params.id)
+    .then(function (chat_website) {
+      if (!chat_website) {
+        return res.sendStatus(404);
+      }
+
+      return chat_website
+        .update(req.body)
+        .then(function (chat_website) {
+          return res.status(200).send(chat_website);
+        })
+    })
+    .catch(function (err) {
+      return handleError(res, err);
+    });
+};
+
+// Deletes a chat_website from the DB.
+exports.destroy = function (req, res) {
+  ChatWebsite
+    .find({
+      where: {
+        id: req.params.id
+      }
+    })
+    .then(function (chat_website) {
+      if (!chat_website) {
+        return res.sendStatus(404);
+      }
+      chat_website.destroy()
+        .then(function () {
+          return res.sendStatus(204);
+        })
+        .catch(function (err) {
+          return handleError(res, err);
+        });
+    })
+    .catch(function (err) {
+      return handleError(res, err);
+    });
+};
+
+// Sort Mail Applications
+exports.sortApplications = function (req, res, next) {
+
+  ChatApplication
+    .findAll({
+      where: {
+        id: req.body.applications
+      }
+    })
+    .then(function (chatApplications) {
+      var tmpChatApplications = chatApplications;
+
+      async.waterfall([
+        function (callback) {
+          ChatApplication
+            .destroy({
+              where: {
+                id: req.body.applications
+              }
+            }).then(function () {
+              callback();
+            })
+            .catch(function (err) {
+              callback(err);
+            });
+        },
+        function (callback) {
+          var sortedApplications = [];
+          for (var i = 0; i < req.body.applications.length; i++) {
+            var tmpChatApplication = _.find(tmpChatApplications, {
+              'id': req.body.applications[i]
+            });
+            if (tmpChatApplication) {
+              tmpChatApplication.priority = i + 1;
+              sortedApplications.push(tmpChatApplication.dataValues);
+            }
+          }
+
+          ChatApplication
+            .bulkCreate(sortedApplications)
+            .then(function () {
+              callback();
+            })
+            .catch(function (err) {
+              callback(err);
+            });
+        },
+        function (callback) {
+          ChatApplication
+            .findAll({
+              where: {
+                id: req.body.applications
+              },
+              order: 'priority',
+              include: [{
+                all: true
+              }]
+            })
+            .then(function (chatApplications) {
+              callback(null, chatApplications);
+            })
+            .catch(function (err) {
+              callback(err);
+            });
+        }
+      ], function (err, result) {
+        if (err) {
+          return handleError(res, err);
+        } else {
+          return res.status(201).send(result);
+        }
+      });
+    })
+    .catch(function (err) {
+      return handleError(res, err);
+    });
+};
+
+// Deletes a agent from the DB.
+exports.bulkDestroy = function (req, res) {
+  ChatWebsite
+    .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);
+}