-'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 _0x56ce=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x6D\x6F\x6D\x65\x6E\x74","\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\x43\x68\x61\x74\x52\x6F\x6F\x6D","\x52\x65\x70\x6F\x72\x74\x43\x68\x61\x74\x52\x6F\x6F\x6D\x48\x69\x73\x74\x6F\x72\x79","\x46\x61\x78\x52\x6F\x6F\x6D","\x53\x6D\x73\x52\x6F\x6F\x6D","\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","\x4D\x61\x69\x6C\x52\x6F\x6F\x6D","\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\x72\x65\x61\x74\x65\x64\x41\x74","\x64\x61\x79","\x73\x74\x61\x72\x74\x4F\x66","\x76\x69\x73\x69\x74\x6F\x72\x65\x6D\x61\x69\x6C","\x63\x68\x61\x74","\x66\x61\x78","\x73\x6D\x73","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x71\x75\x65\x75\x65","\x70\x61\x72\x61\x6D\x73","\x6E\x75\x6C\x6C","\x66\x6F\x72\x45\x61\x63\x68","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\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","\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","\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","\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"];_0x56ce[0];var _=require(_0x56ce[1]);var moment=require(_0x56ce[2]);var Contact=require(_0x56ce[4])[_0x56ce[3]];var User=require(_0x56ce[4])[_0x56ce[5]];var ContactPhone=require(_0x56ce[4])[_0x56ce[6]];var ContactEmail=require(_0x56ce[4])[_0x56ce[7]];var CustomField=require(_0x56ce[4])[_0x56ce[8]];var ReportCall=require(_0x56ce[4])[_0x56ce[9]];var ReportQueue=require(_0x56ce[4])[_0x56ce[10]];var ReportQueueHistory=require(_0x56ce[4])[_0x56ce[12]][_0x56ce[11]];var ReportChatRoom=require(_0x56ce[4])[_0x56ce[13]];var ReportChatRoomHistory=require(_0x56ce[4])[_0x56ce[12]][_0x56ce[14]];var FaxRoom=require(_0x56ce[4])[_0x56ce[15]];var SmsRoom=require(_0x56ce[4])[_0x56ce[16]];var ReportIntegration=require(_0x56ce[4])[_0x56ce[17]];var List=require(_0x56ce[4])[_0x56ce[18]];var ReportCallHistory=require(_0x56ce[4])[_0x56ce[12]][_0x56ce[19]];var ReportMailSession=require(_0x56ce[4])[_0x56ce[20]];var MailRoom=require(_0x56ce[4])[_0x56ce[21]];var ReportMailSessionHistory=require(_0x56ce[4])[_0x56ce[12]][_0x56ce[22]];var Tag=require(_0x56ce[4])[_0x56ce[23]];var stream=require(_0x56ce[24]);var sequelize=require(_0x56ce[4])[_0x56ce[25]];var util=require(_0x56ce[26]);var Util=require(_0x56ce[27]);var Async=require(_0x56ce[28]);exports[_0x56ce[29]]= function(_0x2878x1b,_0x2878x1c,_0x2878x1d){switch(_0x2878x1b[_0x56ce[45]][_0x56ce[48]]){case _0x56ce[47]:return User[_0x56ce[46]](_0x2878x1b[_0x56ce[45]][_0x56ce[35]])[_0x56ce[34]](function(_0x2878x22){return _0x2878x22[_0x56ce[44]]()})[_0x56ce[34]](function(_0x2878x20){var _0x2878x21=_[_0x56ce[36]](_0x2878x20,_0x56ce[35]);return Contact[_0x56ce[43]](_0x56ce[40],_0x56ce[41],{method:[_0x56ce[42],_0x2878x1b[_0x56ce[37]]]})[_0x56ce[39]](Util[_0x56ce[38]](_0x2878x1b[_0x56ce[37]],{ListId:{$in:_0x2878x21}}))})[_0x56ce[34]](function(_0x2878x1f){_0x2878x1c[_0x56ce[33]](200)[_0x56ce[32]](_0x2878x1f)})[_0x56ce[31]](function(_0x2878x1e){console[_0x56ce[30]](_0x2878x1e);return handleError(_0x2878x1c,_0x2878x1e)});default:return Contact[_0x56ce[43]](_0x56ce[40],_0x56ce[41],{method:[_0x56ce[42],_0x2878x1b[_0x56ce[37]]]})[_0x56ce[39]](Util[_0x56ce[38]](_0x2878x1b[_0x56ce[37]]))[_0x56ce[34]](function(_0x2878x1f){_0x2878x1c[_0x56ce[33]](200)[_0x56ce[32]](_0x2878x1f)})[_0x56ce[31]](function(_0x2878x1e){console[_0x56ce[30]](_0x2878x1e);return handleError(_0x2878x1c,_0x2878x1e)})}};exports[_0x56ce[49]]= function(_0x2878x1b,_0x2878x1c){return Contact[_0x56ce[49]]()[_0x56ce[34]](function(_0x2878x23){return _0x2878x1c[_0x56ce[33]](200)[_0x56ce[32]](_0x2878x23)})[_0x56ce[31]](function(_0x2878x1e){return handleError(_0x2878x1c,_0x2878x1e)})};exports[_0x56ce[50]]= function(_0x2878x1b,_0x2878x1c,_0x2878x1d){_0x2878x1b[_0x56ce[37]][_0x56ce[51]]= _0x2878x1b[_0x56ce[37]][_0x56ce[51]]|| _0x56ce[52];_0x2878x1b[_0x56ce[37]][_0x56ce[53]]= _0x2878x1b[_0x56ce[37]][_0x56ce[53]]|| _0x56ce[54];_0x2878x1b[_0x56ce[37]][_0x56ce[55]]= _0x2878x1b[_0x56ce[37]][_0x56ce[55]]|| _0x56ce[56];_0x2878x1b[_0x56ce[37]][_0x56ce[57]]= _0x2878x1b[_0x56ce[37]][_0x56ce[57]]|| _0x56ce[58];var _0x2878x24,_0x2878x25={};return Contact[_0x56ce[46]](_0x2878x1b[_0x56ce[75]][_0x56ce[35]])[_0x56ce[34]](function(_0x2878x26){if(!_0x2878x26){return _0x2878x1c[_0x56ce[59]](404)};switch(_0x2878x1b[_0x56ce[37]][_0x56ce[51]]){case _0x56ce[52]:switch(_0x2878x1b[_0x56ce[37]][_0x56ce[53]]){case _0x56ce[54]:_0x2878x24= (_0x2878x1b[_0x56ce[37]][_0x56ce[55]]=== _0x56ce[12])?ReportCallHistory:ReportCall;if(_0x2878x1b[_0x56ce[37]][_0x56ce[57]]=== _0x56ce[60]){_0x2878x25[_0x56ce[61]]= [_0x2878x26[_0x56ce[54]],_0x2878x26[_0x56ce[62]]]}else {_0x2878x25[_0x56ce[63]]= [_0x2878x26[_0x56ce[54]],_0x2878x26[_0x56ce[62]]]};break;case _0x56ce[65]:_0x2878x24= MailRoom;_0x2878x25[_0x56ce[64]]= _0x2878x26[_0x56ce[65]];if(_0x2878x1b[_0x56ce[37]][_0x56ce[55]]=== _0x56ce[12]){_0x2878x25[_0x56ce[66]]= {$lt:moment()[_0x56ce[68]](_0x56ce[67])}}else {_0x2878x25[_0x56ce[66]]= {$gte:moment()[_0x56ce[68]](_0x56ce[67])}};break;case _0x56ce[70]:_0x2878x24= (_0x2878x1b[_0x56ce[37]][_0x56ce[55]]=== _0x56ce[12])?ReportChatRoomHistory:ReportChatRoom;_0x2878x25[_0x56ce[69]]= _0x2878x26[_0x56ce[65]];break;case _0x56ce[71]:_0x2878x24= FaxRoom;_0x2878x25[_0x56ce[64]]= _0x2878x26[_0x56ce[71]];if(_0x2878x1b[_0x56ce[37]][_0x56ce[55]]=== _0x56ce[12]){_0x2878x25[_0x56ce[66]]= {$lt:moment()[_0x56ce[68]](_0x56ce[67])}}else {_0x2878x25[_0x56ce[66]]= {$gte:moment()[_0x56ce[68]](_0x56ce[67])}};break;case _0x56ce[72]:_0x2878x24= SmsRoom;_0x2878x25[_0x56ce[64]]= [_0x2878x26[_0x56ce[54]],_0x2878x26[_0x56ce[62]]];if(_0x2878x1b[_0x56ce[37]][_0x56ce[55]]=== _0x56ce[12]){_0x2878x25[_0x56ce[66]]= {$lt:moment()[_0x56ce[68]](_0x56ce[67])}}else {_0x2878x25[_0x56ce[66]]= {$gte:moment()[_0x56ce[68]](_0x56ce[67])}};break;default:_0x2878x24= (_0x2878x1b[_0x56ce[37]][_0x56ce[55]]=== _0x56ce[12])?ReportCallHistory:ReportCall};break;case _0x56ce[74]:switch(_0x2878x1b[_0x56ce[37]][_0x56ce[53]]){case _0x56ce[54]:_0x2878x24= (_0x2878x1b[_0x56ce[37]][_0x56ce[55]]=== _0x56ce[12])?ReportQueueHistory:ReportQueue;_0x2878x25[_0x56ce[73]]= [_0x2878x26[_0x56ce[54]],_0x2878x26[_0x56ce[62]]];break;case _0x56ce[65]:return _0x2878x1c[_0x56ce[59]](404);default:_0x2878x24= (_0x2878x1b[_0x56ce[37]][_0x56ce[55]]=== _0x56ce[12])?ReportQueueHistory:ReportQueue};break;default:_0x2878x24= ReportCall};delete _0x2878x1b[_0x56ce[37]][_0x56ce[51]];delete _0x2878x1b[_0x56ce[37]][_0x56ce[53]];delete _0x2878x1b[_0x56ce[37]][_0x56ce[55]];delete _0x2878x1b[_0x56ce[37]][_0x56ce[57]];return _0x2878x24[_0x56ce[39]](Util[_0x56ce[38]](_0x2878x1b[_0x56ce[37]],_0x2878x25))})[_0x56ce[34]](function(_0x2878x1f){_0x2878x1c[_0x56ce[33]](200)[_0x56ce[32]](_0x2878x1f)})[_0x56ce[31]](function(_0x2878x1e){console[_0x56ce[30]](_0x2878x1e);return handleError(_0x2878x1c,_0x2878x1e)})};exports[_0x56ce[53]]= function(_0x2878x1b,_0x2878x1c){var _0x2878x27;return Contact[_0x56ce[43]](_0x56ce[40],_0x56ce[45],_0x56ce[41])[_0x56ce[46]](_0x2878x1b[_0x56ce[75]][_0x56ce[35]])[_0x56ce[34]](function(_0x2878x2e){if(!_0x2878x2e){return _0x2878x1c[_0x56ce[59]](404)};_0x2878x27= _0x2878x2e;return CustomField[_0x56ce[89]]({where:{ListId:_0x2878x27[_0x56ce[88]]}})})[_0x56ce[34]](function(_0x2878x2c){if(_0x2878x2c[_0x56ce[80]]){var _0x2878x2d=_[_0x56ce[36]](_0x2878x2c,_0x56ce[83])[_0x56ce[82]](_0x56ce[81]);return sequelize[_0x56ce[37]](util[_0x56ce[85]](_0x56ce[84],_0x2878x2d,_0x2878x1b[_0x56ce[75]][_0x56ce[35]]),{type:sequelize[_0x56ce[87]][_0x56ce[86]]})}})[_0x56ce[34]](function(_0x2878x28){if(_0x2878x28){_[_0x56ce[77]](_0x2878x28[0],function(_0x2878x29,_0x2878x2a,_0x2878x2b){if(_0x2878x29=== _0x56ce[76]){_0x2878x2b[_0x2878x2a]= null}});_[_0x56ce[79]](_0x2878x27[_0x56ce[78]],_0x2878x28[0])}})[_0x56ce[34]](function(){return _0x2878x1c[_0x56ce[33]](200)[_0x56ce[32]](_0x2878x27)})[_0x56ce[31]](function(_0x2878x1e){console[_0x56ce[30]](_0x2878x1e);return handleError(_0x2878x1c,_0x2878x1e)})};exports[_0x56ce[90]]= function(_0x2878x1b,_0x2878x1c){return ReportIntegration[_0x56ce[46]](_0x2878x1b[_0x56ce[75]][_0x56ce[35]])[_0x56ce[34]](function(_0x2878x30){var _0x2878x25={};switch(_0x2878x30[_0x56ce[93]]){case _0x56ce[91]:_0x2878x25= {$or:{phone:_0x2878x30[_0x56ce[73]],mobile:_0x2878x30[_0x56ce[73]]}};break;case _0x56ce[92]:_0x2878x25= {email:_0x2878x30[_0x56ce[64]]};break;default:_0x2878x25= {}};return Contact[_0x56ce[39]]({where:_0x2878x25,include:[{model:List,where:{id:_[_0x56ce[36]](_[_0x56ce[36]](_0x2878x1b[_0x56ce[45]].Lists,_0x56ce[78]),_0x56ce[35])}}]})})[_0x56ce[34]](function(_0x2878x2f){return _0x2878x1c[_0x56ce[33]](200)[_0x56ce[32]](_0x2878x2f)})[_0x56ce[31]](function(_0x2878x1e){console[_0x56ce[30]](_0x2878x1e);return handleError(_0x2878x1c,_0x2878x1e)})};exports[_0x56ce[94]]= function(_0x2878x1b,_0x2878x1c,_0x2878x1d){var _0x2878x27;return Tag[_0x56ce[89]]()[_0x56ce[34]](function(_0x2878x32){var _0x2878x33=[];var _0x2878x34=_[_0x56ce[36]](_[_0x56ce[36]](_0x2878x32,_0x56ce[78]),_0x56ce[83]);if(_0x2878x1b[_0x56ce[96]][_0x56ce[102]]){_0x2878x1b[_0x56ce[96]][_0x56ce[102]][_0x56ce[77]](function(_0x2878x31){if(!_[_0x56ce[103]](_0x2878x34,_0x2878x31)){_0x2878x33[_0x56ce[98]](Tag[_0x56ce[94]]({name:_0x2878x31}))}})};return _0x2878x33})[_0x56ce[101]]()[_0x56ce[34]](function(){_0x2878x1b[_0x56ce[96]][_0x56ce[100]]= _0x2878x1b[_0x56ce[45]][_0x56ce[35]];return Contact[_0x56ce[94]](_0x2878x1b[_0x56ce[96]])})[_0x56ce[34]](function(_0x2878x26){_0x2878x27= _0x2878x26;return CustomField[_0x56ce[89]]({where:{ListId:_0x2878x27[_0x56ce[88]]}})})[_0x56ce[34]](function(_0x2878x2c){if(_0x2878x2c[_0x56ce[80]]){var _0x2878x2d=[];_0x2878x2c[_0x56ce[77]](function(_0x2878x31){if(_0x2878x1b[_0x56ce[96]][_0x56ce[95]](_0x2878x31[_0x56ce[83]])){_0x2878x2d[_0x56ce[98]](util[_0x56ce[85]](_0x56ce[97],_0x2878x31[_0x56ce[83]],_0x2878x1b[_0x56ce[96]][_0x2878x31[_0x56ce[83]]]))}});if(_0x2878x2d[_0x56ce[80]]){_0x2878x2d= _0x2878x2d[_0x56ce[82]](_0x56ce[81]);return sequelize[_0x56ce[37]](util[_0x56ce[85]](_0x56ce[99],_0x2878x2d,_0x2878x27[_0x56ce[35]]))}}})[_0x56ce[34]](function(){return _0x2878x1c[_0x56ce[33]](201)[_0x56ce[32]](_0x2878x27)})[_0x56ce[31]](function(_0x2878x1e){console[_0x56ce[30]](_0x2878x1e);return _0x2878x1d(_0x2878x1e)})};exports[_0x56ce[104]]= function(_0x2878x1b,_0x2878x1c,_0x2878x1d){var _0x2878x35=[];var _0x2878x36={ok:0,ko:0};return Tag[_0x56ce[89]]()[_0x56ce[34]](function(_0x2878x32){var _0x2878x33=[],_0x2878x39=[];var _0x2878x34=_[_0x56ce[36]](_[_0x56ce[36]](_0x2878x32,_0x56ce[78]),_0x56ce[83]);_0x2878x1b[_0x56ce[96]][_0x56ce[105]][_0x56ce[77]](function(_0x2878x26){if(_0x2878x26[_0x56ce[102]]){_0x2878x39= _[_0x56ce[109]](_0x2878x39,_0x2878x26[_0x56ce[102]])}});_0x2878x39[_0x56ce[77]](function(_0x2878x31){if(!_[_0x56ce[103]](_0x2878x34,_0x2878x31)){_0x2878x33[_0x56ce[98]](Tag[_0x56ce[94]]({name:_0x2878x31}))}});return _0x2878x33})[_0x56ce[101]]()[_0x56ce[34]](function(){var _0x2878x38=[];Async[_0x56ce[108]](_0x2878x1b[_0x56ce[96]][_0x56ce[105]],function(_0x2878x26){_0x2878x26[_0x56ce[100]]= _0x2878x1b[_0x56ce[45]][_0x56ce[35]];_0x2878x38[_0x56ce[98]](Contact[_0x56ce[94]](_0x2878x26)[_0x56ce[34]](function(_0x2878x26){_0x2878x35[_0x56ce[98]](_0x2878x26);_0x2878x36[_0x56ce[107]]++})[_0x56ce[31]](function(_0x2878x1e){_0x2878x36[_0x56ce[106]]++}))});return _0x2878x38})[_0x56ce[101]]()[_0x56ce[34]](function(){return CustomField[_0x56ce[89]]({where:{ListId:{$in:_[_0x56ce[36]](_0x2878x1b[_0x56ce[96]][_0x56ce[105]],_0x56ce[88])}}})})[_0x56ce[34]](function(_0x2878x2c){var _0x2878x37=[];if(_0x2878x2c[_0x56ce[80]]){var _0x2878x2d=[];_0x2878x35[_0x56ce[77]](function(_0x2878x26){_0x2878x2d= [];_0x2878x2c[_0x56ce[77]](function(_0x2878x31){if(_0x2878x26[_0x56ce[95]](_0x2878x31[_0x56ce[83]])){_0x2878x2d[_0x56ce[98]](util[_0x56ce[85]](_0x56ce[97],_0x2878x31[_0x56ce[83]],_0x2878x1b[_0x56ce[96]][_0x2878x31[_0x56ce[83]]]))}});if(_0x2878x2d[_0x56ce[80]]){_0x2878x2d= _0x2878x2d[_0x56ce[82]](_0x56ce[81]);_0x2878x37[_0x56ce[98]](sequelize[_0x56ce[37]](util[_0x56ce[85]](_0x56ce[99],_0x2878x2d,_0x2878x26[_0x56ce[35]])))}})};return _0x2878x37})[_0x56ce[101]]()[_0x56ce[34]](function(){return _0x2878x1c[_0x56ce[33]](201)[_0x56ce[32]](_0x2878x36)})[_0x56ce[31]](function(_0x2878x1e){console[_0x56ce[30]](_0x2878x1e);return _0x2878x1d(_0x2878x1e)})};exports[_0x56ce[110]]= function(_0x2878x1b,_0x2878x1c,_0x2878x1d){var _0x2878x27;return Tag[_0x56ce[89]]()[_0x56ce[34]](function(_0x2878x32){var _0x2878x33=[];var _0x2878x34=_[_0x56ce[36]](_[_0x56ce[36]](_0x2878x32,_0x56ce[78]),_0x56ce[83]);if(_0x2878x1b[_0x56ce[96]][_0x56ce[102]]){_0x2878x1b[_0x56ce[96]][_0x56ce[102]][_0x56ce[77]](function(_0x2878x31){if(!_[_0x56ce[103]](_0x2878x34,_0x2878x31)){_0x2878x33[_0x56ce[98]](Tag[_0x56ce[94]]({name:_0x2878x31}))}})};return _0x2878x33})[_0x56ce[34]](function(){return Contact[_0x56ce[46]](_0x2878x1b[_0x56ce[75]][_0x56ce[35]])})[_0x56ce[34]](function(_0x2878x26){delete _0x2878x1b[_0x56ce[96]][_0x56ce[35]];return _0x2878x26[_0x56ce[111]](_0x2878x1b[_0x56ce[96]])})[_0x56ce[34]](function(_0x2878x26){_0x2878x27= _0x2878x26;return CustomField[_0x56ce[89]]({where:{ListId:_0x2878x27[_0x56ce[88]]}})})[_0x56ce[34]](function(_0x2878x2c){if(_0x2878x2c[_0x56ce[80]]){var _0x2878x2d=[];_0x2878x2c[_0x56ce[77]](function(_0x2878x31){if(_0x2878x1b[_0x56ce[96]][_0x56ce[95]](_0x2878x31[_0x56ce[83]])){_0x2878x2d[_0x56ce[98]](util[_0x56ce[85]](_0x56ce[97],_0x2878x31[_0x56ce[83]],_0x2878x1b[_0x56ce[96]][_0x2878x31[_0x56ce[83]]]))}});if(_0x2878x2d[_0x56ce[80]]){_0x2878x2d= _0x2878x2d[_0x56ce[82]](_0x56ce[81]);return sequelize[_0x56ce[37]](util[_0x56ce[85]](_0x56ce[99],_0x2878x2d,_0x2878x27[_0x56ce[35]]))}}})[_0x56ce[34]](function(){return _0x2878x1c[_0x56ce[33]](200)[_0x56ce[32]](_0x2878x27)})[_0x56ce[31]](function(_0x2878x1e){console[_0x56ce[30]](_0x2878x1e);return handleError(_0x2878x1c,_0x2878x1e)})};exports[_0x56ce[112]]= function(_0x2878x1b,_0x2878x1c){return Contact[_0x56ce[46]](_0x2878x1b[_0x56ce[75]][_0x56ce[35]])[_0x56ce[34]](function(_0x2878x2e){if(!_0x2878x2e){return _0x2878x1c[_0x56ce[59]](404)};return _0x2878x2e[_0x56ce[112]]()})[_0x56ce[34]](function(){return _0x2878x1c[_0x56ce[59]](204)})[_0x56ce[31]](function(_0x2878x1e){return handleError(_0x2878x1c,_0x2878x1e)})};exports[_0x56ce[113]]= function(_0x2878x1b,_0x2878x1c){return Contact[_0x56ce[112]]({where:{id:_0x2878x1b[_0x56ce[37]][_0x56ce[114]]},individualHooks:true})[_0x56ce[34]](function(){return _0x2878x1c[_0x56ce[59]](204)})[_0x56ce[31]](function(_0x2878x1e){return handleError(_0x2878x1c,_0x2878x1e)})};function handleError(_0x2878x1c,_0x2878x1e){return _0x2878x1c[_0x56ce[33]](500)[_0x56ce[32]](_0x2878x1e)}
\ No newline at end of file