Built motion from commit c671bd6.|0.0.103
[motion.git] / server / api / contact_manager / contact_manager.controller.js
index 27e39f6..0837504 100644 (file)
@@ -1,516 +1 @@
-'use strict';
-
-var _ = require('lodash');
-var Contact = require('../../models').Contact;
-var ContactPhone = require('../../models').ContactPhone;
-var ContactEmail = require('../../models').ContactEmail;
-var CustomField = require('../../models').CustomField;
-var ReportCall = require('../../models').ReportCall;
-var ReportCallHistory = require('../../models').history.ReportCallHistory;
-var ReportMailSession = require('../../models').ReportMailSession;
-var ReportMailSessionHistory = require('../../models').history.ReportMailSessionHistory;
-var Tag = require('../../models').Tag;
-var stream = require('stream');
-var sequelize = require('../../models').sequelize;
-var util = require('util');
-
-// Get list of contacts
-exports.index = function(req, res) {
-
-  var attributes = ['name', 'surname', 'description'];
-  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 + '%';
-    }
-  });
-
-
-  Contact
-    .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 managed_contact
-exports.show = function(req, res) {
-  Contact
-    .findById(req.params.id, {
-      include: [{
-        model: ContactPhone,
-        as: 'Phones',
-        include: [{
-          model: ReportCall,
-          as: 'Inbounds',
-          include: [{
-            all: true
-          }]
-        }, {
-          model: ReportCall,
-          as: 'Outbounds',
-          include: [{
-            all: true
-          }]
-        }, {
-          model: ReportCallHistory,
-          as: 'HistoryInbounds',
-          include: [{
-            all: true
-          }]
-        }, {
-          model: ReportCallHistory,
-          as: 'HistoryOutbounds',
-          include: [{
-            all: true
-          }]
-        }]
-      }, {
-        model: ContactEmail,
-        as: 'Emails',
-        include: [{
-          model: ReportMailSession,
-          as: 'InboundMessages',
-          include: [{
-            all: true
-          }]
-        }, {
-          model: ReportMailSession,
-          as: 'OutboundMessages',
-          include: [{
-            all: true
-          }]
-        }, {
-          model: ReportMailSessionHistory,
-          as: 'HistoryInboundMessages',
-          include: [{
-            all: true
-          }]
-        }, {
-          model: ReportMailSessionHistory,
-          as: 'HistoryOutboundMessages',
-          include: [{
-            all: true
-          }]
-        }]
-      }, {
-        model: CustomField,
-        as: 'CustomFields'
-      }]
-    })
-    .then(function(managed_contact) {
-      if (!managed_contact) {
-        return res.sendStatus(404);
-      }
-      return res.send(managed_contact);
-    })
-    .catch(function(err) {
-      console.log(err);
-      return handleError(res, err);
-    });
-};
-
-exports.getHistory = function(req, res) {
-
-};
-
-// validate contact uniqueness
-exports.contactValidation = function(req, res) {
-  Contact.findAll({
-      where: {
-        $or: {
-          '$Phones.phone$': req.body.phones,
-          '$Emails.email$': req.body.emails
-        }
-      },
-      include: [{
-        all: true
-      }]
-    })
-    .then(function(contacts) {
-      console.log(contacts);
-      return res.status(200).send(contacts);
-    })
-    .catch(function(err) {
-      console.log(err);
-      return handleError(res, err);
-    });
-};
-
-// Creates a new managed_contact in the DB.
-exports.create = function(req, res, next) {
-  var newPhones = [],
-    newEmails = [],
-    newCustomFields = {};
-  Tag.findAll()
-    .then(function(tags) {
-      var newTags = [];
-      var tagList = _.pluck(_.pluck(tags, 'dataValues'), 'name');
-      if (req.body.tags) {
-        var contactTags = req.body.tags.split(',');
-        contactTags.forEach(function(elem) {
-          if (!_.includes(tags, elem)) {
-            newTags.push({
-              name: elem
-            });
-          }
-        });
-        if (newTags.length) {
-          Tag.bulkCreate(newTags, {
-            individualHooks: true
-          });
-        }
-      }
-      req.body.UserId = req.user.id;
-      var phones = _.uniq(_.pluck(req.body.Phones, 'phone'));
-      var contactPhones = [];
-      phones.forEach(function(elem) {
-        contactPhones.push(ContactPhone.findOrCreate({
-          where: {
-            phone: elem
-          },
-          defaults: {
-            phone: elem
-          }
-        }));
-      });
-      return contactPhones;
-    })
-    .all()
-    .then(function(res) {
-      newPhones = _.map(res, function(elem) {
-        return elem[0];
-      });
-
-      var contactEmails = [];
-      var emails = _.uniq(_.pluck(req.body.Emails, 'email'));
-      emails.forEach(function(elem) {
-        contactEmails.push(ContactEmail.findOrCreate({
-          where: {
-            email: elem
-          },
-          defaults: {
-            email: elem
-          }
-        }));
-      });
-      return contactEmails;
-    })
-    .all()
-    .then(function(res) {
-      newEmails = _.map(res, function(elem) {
-        return elem[0];
-      });
-      delete req.body.Phones;
-      delete req.body.Emails;
-      newCustomFields = _.clone(req.body.customFields);
-      delete req.body.customFields;
-
-      return Contact.create(req.body);
-    })
-    .then(function(contact) {
-      return [contact, contact.setPhones(newPhones)];
-    })
-    .spread(function(contact) {
-      return [contact, contact.setEmails(newEmails)];
-    })
-    .spread(function(contact) {
-      var customFieldsIds = _.keys(newCustomFields);
-      return [contact, CustomField.findAll({
-        where: {
-          id: customFieldsIds
-        }
-      })];
-    })
-    .spread(function(contact, customFields) {
-      customFields.forEach(function(elem) {
-        elem.ContactHasCustomField = {
-          value: newCustomFields[String(elem.id)]
-        }
-      });
-      return [contact, contact.setCustomFields(customFields)];
-    })
-    .spread(function(contact) {
-      return res.status(201).send(contact);
-    })
-    .catch(function(err) {
-      console.log(err);
-      return next(err);
-    });
-};
-
-// Updates an existing managed_contact in the DB.
-exports.update = function(req, res, next) {
-  var newPhones = [],
-    newEmails = [],
-    newCustomFields = {};
-  Tag.findAll()
-    .then(function(tags) {
-      var newTags = [];
-      var tagList = _.pluck(_.pluck(tags, 'dataValues'), 'name');
-      if (req.body.tags) {
-        var contactTags = req.body.tags.split(',');
-        contactTags.forEach(function(elem) {
-          if (!_.includes(tags, elem)) {
-            newTags.push({
-              name: elem
-            });
-          }
-        });
-        if (newTags.length) {
-          Tag.bulkCreate(newTags, {
-            individualHooks: true
-          });
-        }
-      }
-      var contactPhones = [];
-      var phones = _.uniq(_.pluck(req.body.Phones, 'phone'));
-      phones.forEach(function(elem) {
-        contactPhones.push(ContactPhone.findOrCreate({
-          where: {
-            phone: elem
-          },
-          defaults: {
-            phone: elem
-          }
-        }));
-      });
-      return contactPhones;
-    })
-    .all()
-    .then(function(res) {
-      newPhones = _.map(res, function(elem) {
-        return elem[0];
-      });
-
-      var contactEmails = [];
-      var emails = _.uniq(_.pluck(req.body.Emails, 'email'));
-      emails.forEach(function(elem) {
-        contactEmails.push(ContactEmail.findOrCreate({
-          where: {
-            email: elem
-          },
-          defaults: {
-            email: elem
-          }
-        }));
-      });
-      return contactEmails;
-    })
-    .all()
-    .then(function(res) {
-      newEmails = _.map(res, function(elem) {
-        return elem[0];
-      });
-      delete req.body.Phones;
-      delete req.body.Emails;
-      newCustomFields = _.clone(req.body.customFields);
-      delete req.body.customFields;
-      delete req.body.CustomFields;
-      var updateId = req.body.id;
-      delete req.body.id;
-
-      return Contact.findById(updateId);
-    })
-    .then(function(contact) {
-      return [contact, contact.setPhones(newPhones)];
-    })
-    .spread(function(contact) {
-      return [contact, contact.setEmails(newEmails)];
-    })
-    .spread(function(contact) {
-      var customFieldsIds = _.keys(newCustomFields);
-      return [contact, CustomField.findAll({
-        where: {
-          id: customFieldsIds
-        }
-      })];
-    })
-    .spread(function(contact, customFields) {
-      customFields.forEach(function(elem) {
-        elem.ContactHasCustomField = {
-          value: newCustomFields[String(elem.id)]
-        }
-      });
-      return [contact, contact.setCustomFields(customFields)];
-    })
-    .spread(function(contact) {
-      return contact.updateAttributes(req.body)
-    })
-    .then(function(contact) {
-      return res.status(200).send(contact);
-    })
-    .catch(function(err) {
-      console.log(err);
-      return handleError(res, err);
-    });
-};
-
-// // Join contacts info in the DB.
-// exports.joinContacts = function(req, res, next) {
-//   if (req.body.tags) {
-//     Tag.findAll()
-//       .then(function(tags) {
-//         var newTags = [];
-//         var tagList = _.pluck(_.pluck(tags, 'dataValues'), 'name');
-//         var contactTags = req.body.tags.split(',');
-//         contactTags.forEach(function(elem) {
-//           if (!_.includes(tags, elem)) {
-//             newTags.push({
-//               name: elem
-//             });
-//           }
-//         });
-//         if (newTags.length) {
-//           Tag.bulkCreate(newTags, {
-//             individualHooks: true
-//           });
-//         }
-//       })
-//       .catch(function(err) {
-//         return handleError(res, err);
-//       });
-//   }
-//   var updateId = req.body.id;
-//   delete req.body.id;
-//   var phones = _.map(req.body.Phones, function(elem) {
-//     return {
-//       phone: elem.phone,
-//       ContactId: updateId
-//     };
-//   });
-//   var emails = _.map(req.body.Emails, function(elem) {
-//     return {
-//       email: elem.email,
-//       ContactId: updateId
-//     };
-//   });
-//   delete req.body.Phones;
-//   delete req.body.Emails;
-//   return sequelize.transaction(function(t) {
-//       return Contact.update(req.body, {
-//           where: {
-//             id: updateId
-//           }
-//         }, {
-//           transaction: t,
-//           include: [{
-//             all: true
-//           }]
-//         })
-//         .then(function(contact) {
-//           return ContactPhone
-//             .bulkCreate(phones, {
-//               transaction: t
-//             })
-//             .then(function() {
-//               return ContactEmail
-//                 .bulkCreate(emails, {
-//                   transaction: t
-//                 })
-//                 .then(function() {
-//                   return Contact.findById(updateId, {
-//                       transaction: t
-//                     })
-//                     .then(function(contact) {
-//                       return res.status(201).send(contact);
-//                     })
-//                 })
-//             })
-//         })
-//     })
-//     .catch(function(err) {
-//       console.log(err);
-//       return next(err);
-//     });
-// };
-
-// Deletes a managed_contact from the DB.
-exports.destroy = function(req, res) {
-  Contact
-    .findById(req.params.id)
-    .then(function(managed_contact) {
-      if (!managed_contact) {
-        return res.sendStatus(404);
-      }
-      managed_contact.destroy()
-        .then(function() {
-          return res.sendStatus(204);
-        })
-        .catch(function(err) {
-          return handleError(res, err);
-        });
-    })
-    .catch(function(err) {
-      return handleError(res, err);
-    });
-};
-
-// Deletes a managed_contact from the DB.
-exports.bulkDestroy = function(req, res) {
-  Contact
-    .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);
-}
+var _0x913b=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x43\x6F\x6E\x74\x61\x63\x74","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x55\x73\x65\x72","\x43\x6F\x6E\x74\x61\x63\x74\x50\x68\x6F\x6E\x65","\x43\x6F\x6E\x74\x61\x63\x74\x45\x6D\x61\x69\x6C","\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65","\x52\x65\x70\x6F\x72\x74\x51\x75\x65\x75\x65\x48\x69\x73\x74\x6F\x72\x79","\x68\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x4C\x69\x73\x74","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x48\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x52\x6F\x6F\x6D\x48\x69\x73\x74\x6F\x72\x79","\x52\x65\x70\x6F\x72\x74\x4D\x61\x69\x6C\x53\x65\x73\x73\x69\x6F\x6E\x48\x69\x73\x74\x6F\x72\x79","\x54\x61\x67","\x73\x74\x72\x65\x61\x6D","\x73\x65\x71\x75\x65\x6C\x69\x7A\x65","\x75\x74\x69\x6C","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x75\x74\x69\x6C","\x61\x73\x79\x6E\x63","\x69\x6E\x64\x65\x78","\x6C\x6F\x67","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x69\x64","\x6D\x61\x70","\x71\x75\x65\x72\x79","\x67\x65\x74\x51\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6E\x64\x43\x6F\x75\x6E\x74\x41\x6C\x6C","\x6C\x69\x73\x74","\x63\x6F\x6D\x70\x61\x6E\x79","\x63\x6F\x6D\x70\x61\x6E\x79\x5F\x6C\x69\x73\x74\x5F\x66\x69\x6C\x74\x65\x72","\x73\x63\x6F\x70\x65","\x67\x65\x74\x4C\x69\x73\x74\x73","\x75\x73\x65\x72","\x66\x69\x6E\x64\x42\x79\x49\x64","\x61\x67\x65\x6E\x74","\x72\x6F\x6C\x65","\x64\x65\x73\x63\x72\x69\x62\x65","\x67\x65\x74\x4C\x6F\x67","\x64\x65\x74\x61\x69\x6C","\x67\x65\x6E\x65\x72\x61\x6C","\x73\x68\x6F\x77","\x70\x68\x6F\x6E\x65","\x6C\x6F\x67\x54\x79\x70\x65","\x6A\x6F\x75\x72\x6E\x61\x6C","\x74\x79\x70\x65","\x69\x6E\x62\x6F\x75\x6E\x64","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x6F\x75\x74\x62\x6F\x75\x6E\x64","\x64\x65\x73\x74\x69\x6E\x61\x74\x69\x6F\x6E","\x6D\x6F\x62\x69\x6C\x65","\x73\x6F\x75\x72\x63\x65","\x66\x72\x6F\x6D","\x65\x6D\x61\x69\x6C","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x71\x75\x65\x75\x65","\x70\x61\x72\x61\x6D\x73","\x6D\x65\x72\x67\x65","\x6C\x65\x6E\x67\x74\x68","\x2C","\x6A\x6F\x69\x6E","\x6E\x61\x6D\x65","\x53\x45\x4C\x45\x43\x54\x20\x25\x73\x20\x46\x52\x4F\x4D\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x57\x48\x45\x52\x45\x20\x69\x64\x3D\x25\x73","\x66\x6F\x72\x6D\x61\x74","\x53\x45\x4C\x45\x43\x54","\x51\x75\x65\x72\x79\x54\x79\x70\x65\x73","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x4C\x69\x73\x74\x49\x64","\x66\x69\x6E\x64\x41\x6C\x6C","\x67\x65\x74\x45\x76\x65\x6E\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x76\x6F\x69\x63\x65","\x6D\x61\x69\x6C","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x63\x72\x65\x61\x74\x65","\x68\x61\x73\x4F\x77\x6E\x50\x72\x6F\x70\x65\x72\x74\x79","\x62\x6F\x64\x79","\x25\x73\x3D\x27\x25\x73\x27","\x70\x75\x73\x68","\x66\x6F\x72\x45\x61\x63\x68","\x55\x50\x44\x41\x54\x45\x20\x63\x6D\x5F\x63\x6F\x6E\x74\x61\x63\x74\x73\x20\x53\x45\x54\x20\x25\x73\x20\x57\x48\x45\x52\x45\x20\x69\x64\x3D\x25\x73","\x55\x73\x65\x72\x49\x64","\x61\x6C\x6C","\x74\x61\x67\x73","\x73\x70\x6C\x69\x74","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x63\x6F\x6E\x74\x61\x63\x74\x73","\x6B\x6F","\x6F\x6B","\x66\x6F\x72\x45\x61\x63\x68\x4F\x66","\x75\x6E\x69\x6F\x6E","\x75\x70\x64\x61\x74\x65","\x75\x70\x64\x61\x74\x65\x41\x74\x74\x72\x69\x62\x75\x74\x65\x73","\x64\x65\x73\x74\x72\x6F\x79","\x62\x75\x6C\x6B\x44\x65\x73\x74\x72\x6F\x79","\x69\x64\x73"];_0x913b[0];var _=require(_0x913b[1]);var Contact=require(_0x913b[3])[_0x913b[2]];var User=require(_0x913b[3])[_0x913b[4]];var ContactPhone=require(_0x913b[3])[_0x913b[5]];var ContactEmail=require(_0x913b[3])[_0x913b[6]];var CustomField=require(_0x913b[3])[_0x913b[7]];var ReportCall=require(_0x913b[3])[_0x913b[8]];var ReportQueue=require(_0x913b[3])[_0x913b[9]];var ReportQueueHistory=require(_0x913b[3])[_0x913b[11]][_0x913b[10]];var ReportIntegration=require(_0x913b[3])[_0x913b[12]];var List=require(_0x913b[3])[_0x913b[13]];var ReportCallHistory=require(_0x913b[3])[_0x913b[11]][_0x913b[14]];var ReportMailSession=require(_0x913b[3])[_0x913b[15]];var ReportMailRoom=require(_0x913b[3])[_0x913b[16]];var ReportMailRoomHistory=require(_0x913b[3])[_0x913b[11]][_0x913b[17]];var ReportMailSessionHistory=require(_0x913b[3])[_0x913b[11]][_0x913b[18]];var Tag=require(_0x913b[3])[_0x913b[19]];var stream=require(_0x913b[20]);var sequelize=require(_0x913b[3])[_0x913b[21]];var util=require(_0x913b[22]);var Util=require(_0x913b[23]);var Async=require(_0x913b[24]);exports[_0x913b[25]]=function(_0xa2d5x17,_0xa2d5x18,_0xa2d5x19){switch(_0xa2d5x17[_0x913b[41]][_0x913b[44]]){case _0x913b[43]:return User[_0x913b[42]](_0xa2d5x17[_0x913b[41]][_0x913b[31]])[_0x913b[30]](function(_0xa2d5x1e){return _0xa2d5x1e[_0x913b[40]]()})[_0x913b[30]](function(_0xa2d5x1c){var _0xa2d5x1d=_[_0x913b[32]](_0xa2d5x1c,_0x913b[31]);return Contact[_0x913b[39]](_0x913b[36],_0x913b[37],{method:[_0x913b[38],_0xa2d5x17[_0x913b[33]]]})[_0x913b[35]](Util[_0x913b[34]](_0xa2d5x17[_0x913b[33]],{ListId:{$in:_0xa2d5x1d}}))})[_0x913b[30]](function(_0xa2d5x1b){_0xa2d5x18[_0x913b[29]](200)[_0x913b[28]](_0xa2d5x1b)})[_0x913b[27]](function(_0xa2d5x1a){console[_0x913b[26]](_0xa2d5x1a);return handleError(_0xa2d5x18,_0xa2d5x1a)});default:return Contact[_0x913b[39]](_0x913b[36],_0x913b[37],{method:[_0x913b[38],_0xa2d5x17[_0x913b[33]]]})[_0x913b[35]](Util[_0x913b[34]](_0xa2d5x17[_0x913b[33]]))[_0x913b[30]](function(_0xa2d5x1b){_0xa2d5x18[_0x913b[29]](200)[_0x913b[28]](_0xa2d5x1b)})[_0x913b[27]](function(_0xa2d5x1a){console[_0x913b[26]](_0xa2d5x1a);return handleError(_0xa2d5x18,_0xa2d5x1a)})}};exports[_0x913b[45]]=function(_0xa2d5x17,_0xa2d5x18){return Contact[_0x913b[45]]()[_0x913b[30]](function(_0xa2d5x1f){return _0xa2d5x18[_0x913b[29]](200)[_0x913b[28]](_0xa2d5x1f)})[_0x913b[27]](function(_0xa2d5x1a){return handleError(_0xa2d5x18,_0xa2d5x1a)})};exports[_0x913b[46]]=function(_0xa2d5x17,_0xa2d5x18,_0xa2d5x19){_0xa2d5x17[_0x913b[33]][_0x913b[47]]=_0xa2d5x17[_0x913b[33]][_0x913b[47]]||_0x913b[48];_0xa2d5x17[_0x913b[33]][_0x913b[49]]=_0xa2d5x17[_0x913b[33]][_0x913b[49]]||_0x913b[50];_0xa2d5x17[_0x913b[33]][_0x913b[51]]=_0xa2d5x17[_0x913b[33]][_0x913b[51]]||_0x913b[52];_0xa2d5x17[_0x913b[33]][_0x913b[53]]=_0xa2d5x17[_0x913b[33]][_0x913b[53]]||_0x913b[54];var _0xa2d5x20,_0xa2d5x21={};return Contact[_0x913b[42]](_0xa2d5x17[_0x913b[64]][_0x913b[31]])[_0x913b[30]](function(_0xa2d5x22){if(!_0xa2d5x22){return _0xa2d5x18[_0x913b[55]](404)};switch(_0xa2d5x17[_0x913b[33]][_0x913b[47]]){case _0x913b[48]:switch(_0xa2d5x17[_0x913b[33]][_0x913b[49]]){case _0x913b[50]:_0xa2d5x20=(_0xa2d5x17[_0x913b[33]][_0x913b[51]]===_0x913b[11])?ReportCallHistory:ReportCall;if(_0xa2d5x17[_0x913b[33]][_0x913b[53]]===_0x913b[56]){_0xa2d5x21[_0x913b[57]]=[_0xa2d5x22[_0x913b[50]],_0xa2d5x22[_0x913b[58]]]}else {_0xa2d5x21[_0x913b[59]]=[_0xa2d5x22[_0x913b[50]],_0xa2d5x22[_0x913b[58]]]};break;case _0x913b[61]:_0xa2d5x20=(_0xa2d5x17[_0x913b[33]][_0x913b[51]]===_0x913b[11])?ReportMailRoomHistory:ReportMailRoom;_0xa2d5x21[_0x913b[60]]=_0xa2d5x22[_0x913b[61]];break;default:_0xa2d5x20=(_0xa2d5x17[_0x913b[33]][_0x913b[51]]===_0x913b[11])?ReportCallHistory:ReportCall};break;case _0x913b[63]:switch(_0xa2d5x17[_0x913b[33]][_0x913b[49]]){case _0x913b[50]:_0xa2d5x20=(_0xa2d5x17[_0x913b[33]][_0x913b[51]]===_0x913b[11])?ReportQueueHistory:ReportQueue;_0xa2d5x21[_0x913b[62]]=[_0xa2d5x22[_0x913b[50]],_0xa2d5x22[_0x913b[58]]];break;case _0x913b[61]:return _0xa2d5x18[_0x913b[55]](404);default:_0xa2d5x20=(_0xa2d5x17[_0x913b[33]][_0x913b[51]]===_0x913b[11])?ReportQueueHistory:ReportQueue};break;default:_0xa2d5x20=ReportCall;_0xa2d5x17[_0x913b[33]][_0x913b[49]]=_0x913b[50]};delete _0xa2d5x17[_0x913b[33]][_0x913b[47]];delete _0xa2d5x17[_0x913b[33]][_0x913b[49]];delete _0xa2d5x17[_0x913b[33]][_0x913b[51]];delete _0xa2d5x17[_0x913b[33]][_0x913b[53]];return _0xa2d5x20[_0x913b[35]](Util[_0x913b[34]](_0xa2d5x17[_0x913b[33]],_0xa2d5x21))})[_0x913b[30]](function(_0xa2d5x1b){_0xa2d5x18[_0x913b[29]](200)[_0x913b[28]](_0xa2d5x1b)})[_0x913b[27]](function(_0xa2d5x1a){console[_0x913b[26]](_0xa2d5x1a);return handleError(_0xa2d5x18,_0xa2d5x1a)})};exports[_0x913b[49]]=function(_0xa2d5x17,_0xa2d5x18){var _0xa2d5x23;return Contact[_0x913b[39]](_0x913b[36],_0x913b[41],_0x913b[37])[_0x913b[42]](_0xa2d5x17[_0x913b[64]][_0x913b[31]])[_0x913b[30]](function(_0xa2d5x27){if(!_0xa2d5x27){return _0xa2d5x18[_0x913b[55]](404)};_0xa2d5x23=_0xa2d5x27[_0x913b[74]];return CustomField[_0x913b[76]]({where:{ListId:_0xa2d5x23[_0x913b[75]]}})})[_0x913b[30]](function(_0xa2d5x25){if(_0xa2d5x25[_0x913b[66]]){var _0xa2d5x26=_[_0x913b[32]](_0xa2d5x25,_0x913b[69])[_0x913b[68]](_0x913b[67]);return sequelize[_0x913b[33]](util[_0x913b[71]](_0x913b[70],_0xa2d5x26,_0xa2d5x17[_0x913b[64]][_0x913b[31]]),{type:sequelize[_0x913b[73]][_0x913b[72]]})}})[_0x913b[30]](function(_0xa2d5x24){if(_0xa2d5x24){_[_0x913b[65]](_0xa2d5x23,_0xa2d5x24[0])}})[_0x913b[30]](function(){return _0xa2d5x18[_0x913b[29]](200)[_0x913b[28]](_0xa2d5x23)})[_0x913b[27]](function(_0xa2d5x1a){console[_0x913b[26]](_0xa2d5x1a);return handleError(_0xa2d5x18,_0xa2d5x1a)})};exports[_0x913b[77]]=function(_0xa2d5x17,_0xa2d5x18){return ReportIntegration[_0x913b[42]](_0xa2d5x17[_0x913b[64]][_0x913b[31]])[_0x913b[30]](function(_0xa2d5x29){var _0xa2d5x21={};switch(_0xa2d5x29[_0x913b[80]]){case _0x913b[78]:_0xa2d5x21={$or:{phone:_0xa2d5x29[_0x913b[62]],mobile:_0xa2d5x29[_0x913b[62]]}};break;case _0x913b[79]:_0xa2d5x21={email:_0xa2d5x29[_0x913b[60]]};break;default:_0xa2d5x21={}};return Contact[_0x913b[76]]({where:_0xa2d5x21,include:[{model:List,where:{id:_[_0x913b[32]](_[_0x913b[32]](_0xa2d5x17[_0x913b[41]].Lists,_0x913b[74]),_0x913b[31])}}]})})[_0x913b[30]](function(_0xa2d5x28){return _0xa2d5x18[_0x913b[29]](200)[_0x913b[28]](_0xa2d5x28)})[_0x913b[27]](function(_0xa2d5x1a){console[_0x913b[26]](_0xa2d5x1a);return handleError(_0xa2d5x18,_0xa2d5x1a)})};exports[_0x913b[81]]=function(_0xa2d5x17,_0xa2d5x18,_0xa2d5x19){var _0xa2d5x23;return Tag[_0x913b[76]]()[_0x913b[30]](function(_0xa2d5x2b){var _0xa2d5x2c=[];var _0xa2d5x2d=_[_0x913b[32]](_[_0x913b[32]](_0xa2d5x2b,_0x913b[74]),_0x913b[69]);if(_0xa2d5x17[_0x913b[83]][_0x913b[90]]){var _0xa2d5x2e=_0xa2d5x17[_0x913b[83]][_0x913b[90]][_0x913b[91]](_0x913b[67]);_0xa2d5x2e[_0x913b[86]](function(_0xa2d5x2a){if(!_[_0x913b[92]](_0xa2d5x2d,_0xa2d5x2a)){_0xa2d5x2c[_0x913b[85]](Tag[_0x913b[81]]({name:_0xa2d5x2a}))}})};return _0xa2d5x2c})[_0x913b[89]]()[_0x913b[30]](function(){_0xa2d5x17[_0x913b[83]][_0x913b[88]]=_0xa2d5x17[_0x913b[41]][_0x913b[31]];return Contact[_0x913b[81]](_0xa2d5x17[_0x913b[83]])})[_0x913b[30]](function(_0xa2d5x22){_0xa2d5x23=_0xa2d5x22;return CustomField[_0x913b[76]]({where:{ListId:_0xa2d5x23[_0x913b[75]]}})})[_0x913b[30]](function(_0xa2d5x25){if(_0xa2d5x25[_0x913b[66]]){var _0xa2d5x26=[];_0xa2d5x25[_0x913b[86]](function(_0xa2d5x2a){if(_0xa2d5x17[_0x913b[83]][_0x913b[82]](_0xa2d5x2a[_0x913b[69]])){_0xa2d5x26[_0x913b[85]](util[_0x913b[71]](_0x913b[84],_0xa2d5x2a[_0x913b[69]],_0xa2d5x17[_0x913b[83]][_0xa2d5x2a[_0x913b[69]]]))}});if(_0xa2d5x26[_0x913b[66]]){_0xa2d5x26=_0xa2d5x26[_0x913b[68]](_0x913b[67]);return sequelize[_0x913b[33]](util[_0x913b[71]](_0x913b[87],_0xa2d5x26,_0xa2d5x23[_0x913b[31]]))}}})[_0x913b[30]](function(){return _0xa2d5x18[_0x913b[29]](201)[_0x913b[28]](_0xa2d5x23)})[_0x913b[27]](function(_0xa2d5x1a){console[_0x913b[26]](_0xa2d5x1a);return _0xa2d5x19(_0xa2d5x1a)})};exports[_0x913b[93]]=function(_0xa2d5x17,_0xa2d5x18,_0xa2d5x19){var _0xa2d5x2f=[];var _0xa2d5x30={ok:0,ko:0};return Tag[_0x913b[76]]()[_0x913b[30]](function(_0xa2d5x2b){var _0xa2d5x2c=[],_0xa2d5x2e=[];var _0xa2d5x2d=_[_0x913b[32]](_[_0x913b[32]](_0xa2d5x2b,_0x913b[74]),_0x913b[69]);_0xa2d5x17[_0x913b[83]][_0x913b[94]][_0x913b[86]](function(_0xa2d5x22){if(_0xa2d5x22[_0x913b[90]]){_0xa2d5x2e=_[_0x913b[98]](_0xa2d5x2e,_0xa2d5x22[_0x913b[90]][_0x913b[91]](_0x913b[67]))}});_0xa2d5x2e[_0x913b[86]](function(_0xa2d5x2a){if(!_[_0x913b[92]](_0xa2d5x2d,_0xa2d5x2a)){_0xa2d5x2c[_0x913b[85]](Tag[_0x913b[81]]({name:_0xa2d5x2a}))}});return _0xa2d5x2c})[_0x913b[89]]()[_0x913b[30]](function(){var _0xa2d5x32=[];Async[_0x913b[97]](_0xa2d5x17[_0x913b[83]][_0x913b[94]],function(_0xa2d5x22){_0xa2d5x22[_0x913b[88]]=_0xa2d5x17[_0x913b[41]][_0x913b[31]];_0xa2d5x32[_0x913b[85]](Contact[_0x913b[81]](_0xa2d5x22)[_0x913b[30]](function(_0xa2d5x22){_0xa2d5x2f[_0x913b[85]](_0xa2d5x22);_0xa2d5x30[_0x913b[96]]++})[_0x913b[27]](function(_0xa2d5x1a){_0xa2d5x30[_0x913b[95]]++}))});return _0xa2d5x32})[_0x913b[89]]()[_0x913b[30]](function(){return CustomField[_0x913b[76]]({where:{ListId:{$in:_[_0x913b[32]](_0xa2d5x17[_0x913b[83]][_0x913b[94]],_0x913b[75])}}})})[_0x913b[30]](function(_0xa2d5x25){var _0xa2d5x31=[];if(_0xa2d5x25[_0x913b[66]]){var _0xa2d5x26=[];_0xa2d5x2f[_0x913b[86]](function(_0xa2d5x22){_0xa2d5x26=[];_0xa2d5x25[_0x913b[86]](function(_0xa2d5x2a){if(_0xa2d5x22[_0x913b[82]](_0xa2d5x2a[_0x913b[69]])){_0xa2d5x26[_0x913b[85]](util[_0x913b[71]](_0x913b[84],_0xa2d5x2a[_0x913b[69]],_0xa2d5x17[_0x913b[83]][_0xa2d5x2a[_0x913b[69]]]))}});if(_0xa2d5x26[_0x913b[66]]){_0xa2d5x26=_0xa2d5x26[_0x913b[68]](_0x913b[67]);_0xa2d5x31[_0x913b[85]](sequelize[_0x913b[33]](util[_0x913b[71]](_0x913b[87],_0xa2d5x26,_0xa2d5x22[_0x913b[31]])))}})};return _0xa2d5x31})[_0x913b[89]]()[_0x913b[30]](function(){return _0xa2d5x18[_0x913b[29]](201)[_0x913b[28]](_0xa2d5x30)})[_0x913b[27]](function(_0xa2d5x1a){console[_0x913b[26]](_0xa2d5x1a);return _0xa2d5x19(_0xa2d5x1a)})};exports[_0x913b[99]]=function(_0xa2d5x17,_0xa2d5x18,_0xa2d5x19){var _0xa2d5x23;return Tag[_0x913b[76]]()[_0x913b[30]](function(_0xa2d5x2b){var _0xa2d5x2c=[];var _0xa2d5x2d=_[_0x913b[32]](_[_0x913b[32]](_0xa2d5x2b,_0x913b[74]),_0x913b[69]);if(_0xa2d5x17[_0x913b[83]][_0x913b[90]]){var _0xa2d5x2e=_0xa2d5x17[_0x913b[83]][_0x913b[90]][_0x913b[91]](_0x913b[67]);_0xa2d5x2e[_0x913b[86]](function(_0xa2d5x2a){if(!_[_0x913b[92]](_0xa2d5x2d,_0xa2d5x2a)){_0xa2d5x2c[_0x913b[85]](Tag[_0x913b[81]]({name:_0xa2d5x2a}))}})};return _0xa2d5x2c})[_0x913b[30]](function(){return Contact[_0x913b[42]](_0xa2d5x17[_0x913b[64]][_0x913b[31]])})[_0x913b[30]](function(_0xa2d5x22){delete _0xa2d5x17[_0x913b[83]][_0x913b[31]];return _0xa2d5x22[_0x913b[100]](_0xa2d5x17[_0x913b[83]])})[_0x913b[30]](function(_0xa2d5x22){_0xa2d5x23=_0xa2d5x22;return CustomField[_0x913b[76]]({where:{ListId:_0xa2d5x23[_0x913b[75]]}})})[_0x913b[30]](function(_0xa2d5x25){if(_0xa2d5x25[_0x913b[66]]){var _0xa2d5x26=[];_0xa2d5x25[_0x913b[86]](function(_0xa2d5x2a){if(_0xa2d5x17[_0x913b[83]][_0x913b[82]](_0xa2d5x2a[_0x913b[69]])){_0xa2d5x26[_0x913b[85]](util[_0x913b[71]](_0x913b[84],_0xa2d5x2a[_0x913b[69]],_0xa2d5x17[_0x913b[83]][_0xa2d5x2a[_0x913b[69]]]))}});if(_0xa2d5x26[_0x913b[66]]){_0xa2d5x26=_0xa2d5x26[_0x913b[68]](_0x913b[67]);return sequelize[_0x913b[33]](util[_0x913b[71]](_0x913b[87],_0xa2d5x26,_0xa2d5x23[_0x913b[31]]))}}})[_0x913b[30]](function(){return _0xa2d5x18[_0x913b[29]](200)[_0x913b[28]](_0xa2d5x23)})[_0x913b[27]](function(_0xa2d5x1a){console[_0x913b[26]](_0xa2d5x1a);return handleError(_0xa2d5x18,_0xa2d5x1a)})};exports[_0x913b[101]]=function(_0xa2d5x17,_0xa2d5x18){return Contact[_0x913b[42]](_0xa2d5x17[_0x913b[64]][_0x913b[31]])[_0x913b[30]](function(_0xa2d5x27){if(!_0xa2d5x27){return _0xa2d5x18[_0x913b[55]](404)};return _0xa2d5x27[_0x913b[101]]()})[_0x913b[30]](function(){return _0xa2d5x18[_0x913b[55]](204)})[_0x913b[27]](function(_0xa2d5x1a){return handleError(_0xa2d5x18,_0xa2d5x1a)})};exports[_0x913b[102]]=function(_0xa2d5x17,_0xa2d5x18){return Contact[_0x913b[101]]({where:{id:_0xa2d5x17[_0x913b[33]][_0x913b[103]]},individualHooks:true})[_0x913b[30]](function(){return _0xa2d5x18[_0x913b[55]](204)})[_0x913b[27]](function(_0xa2d5x1a){return handleError(_0xa2d5x18,_0xa2d5x1a)})};function handleError(_0xa2d5x18,_0xa2d5x1a){return _0xa2d5x18[_0x913b[29]](500)[_0x913b[28]](_0xa2d5x1a)}
\ No newline at end of file