-'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 ReportIntegration = require('../../models').ReportIntegration;
-var Service = require('../../models').Service;
-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', 'Service.name', '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,
- include: [{
- model: Service
- }]
- };
-
- _.forIn(req.query, function(value, key) {
- switch (key) {
- case 'per_page':
- case 'page':
- break;
- case 'sort_by':
- if (value === 'service') {
- _.find(query.include, {
- model: Service
- }).order = util.format('name %s', req.query.sort_order || 'ASC');
- } else {
- 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;
- case 'service':
- _.find(query.include, {
- model: Service
- }).where = {
- name: {
- $like: '%' + value + '%'
- }
- };
- break;
- default:
- query.where[key] = {
- $like: {}
- };
- query.where[key].$like = '%' + value + '%';
- }
- });
- console.log(query);
-
-
- 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'
- }, {
- model: Service
- }]
- })
- .then(function(managed_contact) {
- if (!managed_contact) {
- return res.sendStatus(404);
- }
- return res.status(200).send(managed_contact);
- })
- .catch(function(err) {
- console.log(err);
- return handleError(res, err);
- });
-};
-
-exports.getEventContacts = function(req, res) {
- ReportIntegration
- .findById(req.params.id)
- .then(function(event) {
- var modelInclude = {};
- switch (event.eventChannel) {
- case 'voice':
- modelInclude = {
- model: ContactPhone,
- as: 'Phones',
- where: {
- phone: event.calleridnum
- }
- };
- break;
- case 'mail':
- modelInclude = {
- model: ContactEmail,
- as: 'Emails',
- where: {
- email: event.from
- }
- };
- break;
- default:
- }
- return Contact.findAll({
- include: [modelInclude, {
- model: Service,
- where: {
- id: _.pluck(_.pluck(req.user.Services, 'dataValues'), 'id')
- }
- }]
- });
- })
- .then(function(contacts) {
- return res.status(200).send(contacts);
- })
- .catch(function(err) {
- console.log(err);
- return handleError(res, err);
- });
-
-};
-
-// 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);
- });
-};
-
-// 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 _0xbc3d=["\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","\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\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x53\x65\x72\x76\x69\x63\x65","\x52\x65\x70\x6F\x72\x74\x43\x61\x6C\x6C\x48\x69\x73\x74\x6F\x72\x79","\x68\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\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","\x69\x6E\x64\x65\x78","\x6E\x61\x6D\x65","\x53\x65\x72\x76\x69\x63\x65\x2E\x6E\x61\x6D\x65","\x64\x65\x73\x63\x72\x69\x70\x74\x69\x6F\x6E","\x70\x65\x72\x5F\x70\x61\x67\x65","\x71\x75\x65\x72\x79","\x70\x61\x67\x65","\x73\x65\x72\x76\x69\x63\x65","\x6F\x72\x64\x65\x72","\x69\x6E\x63\x6C\x75\x64\x65","\x66\x69\x6E\x64","\x6E\x61\x6D\x65\x20\x25\x73","\x73\x6F\x72\x74\x5F\x6F\x72\x64\x65\x72","\x41\x53\x43","\x66\x6F\x72\x6D\x61\x74","\x25\x73\x20\x25\x73","\x73\x6F\x72\x74\x5F\x62\x79","\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","\x6C\x6F\x67","\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","\x50\x68\x6F\x6E\x65\x73","\x49\x6E\x62\x6F\x75\x6E\x64\x73","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x73","\x48\x69\x73\x74\x6F\x72\x79\x49\x6E\x62\x6F\x75\x6E\x64\x73","\x48\x69\x73\x74\x6F\x72\x79\x4F\x75\x74\x62\x6F\x75\x6E\x64\x73","\x45\x6D\x61\x69\x6C\x73","\x49\x6E\x62\x6F\x75\x6E\x64\x4D\x65\x73\x73\x61\x67\x65\x73","\x4F\x75\x74\x62\x6F\x75\x6E\x64\x4D\x65\x73\x73\x61\x67\x65\x73","\x48\x69\x73\x74\x6F\x72\x79\x49\x6E\x62\x6F\x75\x6E\x64\x4D\x65\x73\x73\x61\x67\x65\x73","\x48\x69\x73\x74\x6F\x72\x79\x4F\x75\x74\x62\x6F\x75\x6E\x64\x4D\x65\x73\x73\x61\x67\x65\x73","\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x67\x65\x74\x45\x76\x65\x6E\x74\x43\x6F\x6E\x74\x61\x63\x74\x73","\x63\x61\x6C\x6C\x65\x72\x69\x64\x6E\x75\x6D","\x76\x6F\x69\x63\x65","\x66\x72\x6F\x6D","\x6D\x61\x69\x6C","\x65\x76\x65\x6E\x74\x43\x68\x61\x6E\x6E\x65\x6C","\x75\x73\x65\x72","\x64\x61\x74\x61\x56\x61\x6C\x75\x65\x73","\x70\x6C\x75\x63\x6B","\x66\x69\x6E\x64\x41\x6C\x6C","\x63\x6F\x6E\x74\x61\x63\x74\x56\x61\x6C\x69\x64\x61\x74\x69\x6F\x6E","\x70\x68\x6F\x6E\x65\x73","\x62\x6F\x64\x79","\x65\x6D\x61\x69\x6C\x73","\x63\x72\x65\x61\x74\x65","\x73\x70\x72\x65\x61\x64","\x43\x6F\x6E\x74\x61\x63\x74\x48\x61\x73\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64","\x73\x65\x74\x43\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x6B\x65\x79\x73","\x73\x65\x74\x45\x6D\x61\x69\x6C\x73","\x73\x65\x74\x50\x68\x6F\x6E\x65\x73","\x6D\x61\x70","\x63\x75\x73\x74\x6F\x6D\x46\x69\x65\x6C\x64\x73","\x63\x6C\x6F\x6E\x65","\x61\x6C\x6C","\x65\x6D\x61\x69\x6C","\x75\x6E\x69\x71","\x66\x69\x6E\x64\x4F\x72\x43\x72\x65\x61\x74\x65","\x74\x61\x67\x73","\x2C","\x73\x70\x6C\x69\x74","\x69\x6E\x63\x6C\x75\x64\x65\x73","\x6C\x65\x6E\x67\x74\x68","\x62\x75\x6C\x6B\x43\x72\x65\x61\x74\x65","\x55\x73\x65\x72\x49\x64","\x70\x68\x6F\x6E\x65","\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"];_0xbc3d[0];var _=require(_0xbc3d[1]);var Contact=require(_0xbc3d[3])[_0xbc3d[2]];var ContactPhone=require(_0xbc3d[3])[_0xbc3d[4]];var ContactEmail=require(_0xbc3d[3])[_0xbc3d[5]];var CustomField=require(_0xbc3d[3])[_0xbc3d[6]];var ReportCall=require(_0xbc3d[3])[_0xbc3d[7]];var ReportIntegration=require(_0xbc3d[3])[_0xbc3d[8]];var Service=require(_0xbc3d[3])[_0xbc3d[9]];var ReportCallHistory=require(_0xbc3d[3])[_0xbc3d[11]][_0xbc3d[10]];var ReportMailSession=require(_0xbc3d[3])[_0xbc3d[12]];var ReportMailSessionHistory=require(_0xbc3d[3])[_0xbc3d[11]][_0xbc3d[13]];var Tag=require(_0xbc3d[3])[_0xbc3d[14]];var stream=require(_0xbc3d[15]);var sequelize=require(_0xbc3d[3])[_0xbc3d[16]];var util=require(_0xbc3d[17]);exports[_0xbc3d[18]]=function(_0xd3cax10,_0xd3cax11){var _0xd3cax12=[_0xbc3d[19],_0xbc3d[20],_0xbc3d[21]];var _0xd3cax13=_0xd3cax10[_0xbc3d[23]][_0xbc3d[22]]?parseInt(_0xd3cax10[_0xbc3d[23]][_0xbc3d[22]],10):100;var _0xd3cax14=_0xd3cax10[_0xbc3d[23]][_0xbc3d[24]]?parseInt(_0xd3cax10[_0xbc3d[23]][_0xbc3d[24]],10):0;var _0xd3cax15={where:{},limit:_0xd3cax13,offset:_0xd3cax14*_0xd3cax13,include:[{model:Service}]};_[_0xbc3d[42]](_0xd3cax10[_0xbc3d[23]],function(_0xd3cax16,_0xd3cax17){switch(_0xd3cax17){case _0xbc3d[22]:;case _0xbc3d[24]:break ;;case _0xbc3d[34]:if(_0xd3cax16===_0xbc3d[25]){_[_0xbc3d[28]](_0xd3cax15[_0xbc3d[27]],{model:Service})[_0xbc3d[26]]=util[_0xbc3d[32]](_0xbc3d[29],_0xd3cax10[_0xbc3d[23]][_0xbc3d[30]]||_0xbc3d[31])}else {_0xd3cax15[_0xbc3d[26]]=util[_0xbc3d[32]](_0xbc3d[33],_0xd3cax10[_0xbc3d[23]][_0xbc3d[34]],_0xd3cax10[_0xbc3d[23]][_0xbc3d[30]]||_0xbc3d[31])||null};break ;;case _0xbc3d[30]:break ;;case _0xbc3d[40]:_0xd3cax15[_0xbc3d[36]][_0xbc3d[35]]=[];_0xd3cax12[_0xbc3d[39]](function(_0xd3cax18){var _0xd3cax19={};_0xd3cax19[_0xd3cax18]={$like:_0xbc3d[37]+_0xd3cax16+_0xbc3d[37]};_0xd3cax15[_0xbc3d[36]][_0xbc3d[35]][_0xbc3d[38]](_0xd3cax19);});break ;;case _0xbc3d[25]:_[_0xbc3d[28]](_0xd3cax15[_0xbc3d[27]],{model:Service})[_0xbc3d[36]]={name:{$like:_0xbc3d[37]+_0xd3cax16+_0xbc3d[37]}};break ;;default:_0xd3cax15[_0xbc3d[36]][_0xd3cax17]={$like:{}};_0xd3cax15[_0xbc3d[36]][_0xd3cax17][_0xbc3d[41]]=_0xbc3d[37]+_0xd3cax16+_0xbc3d[37];;}});console[_0xbc3d[43]](_0xd3cax15);Contact[_0xbc3d[58]](_0xd3cax15)[_0xbc3d[57]](function(_0xd3cax1b){var _0xd3cax1c=Math[_0xbc3d[49]](_0xd3cax1b[_0xbc3d[48]]/_0xd3cax13);var _0xd3cax1d=_0xd3cax1c>(_0xd3cax15[_0xbc3d[50]]+1)?util[_0xbc3d[32]](_0xbc3d[51],_0xd3cax10[_0xbc3d[52]],_0xd3cax10[_0xbc3d[54]][_0xbc3d[53]],_0xd3cax10[_0xbc3d[55]],_0xd3cax14+1):null;var _0xd3cax1e=_0xd3cax14>0?util[_0xbc3d[32]](_0xbc3d[51],_0xd3cax10[_0xbc3d[52]],_0xd3cax10[_0xbc3d[54]][_0xbc3d[53]],_0xd3cax10[_0xbc3d[55]],_0xd3cax14-1):null;_0xd3cax11[_0xbc3d[46]](200)[_0xbc3d[45]]({count:_0xd3cax1b[_0xbc3d[48]],rows:_0xd3cax1b[_0xbc3d[56]],next_page:_0xd3cax1d,previous_page:_0xd3cax1e,total_pages:_0xd3cax1c});})[_0xbc3d[47]](function(_0xd3cax1a){_0xd3cax11[_0xbc3d[46]](500)[_0xbc3d[45]]({error:_0xbc3d[44]})});};exports[_0xbc3d[59]]=function(_0xd3cax10,_0xd3cax11){Contact[_0xbc3d[74]](_0xd3cax10[_0xbc3d[62]][_0xbc3d[61]],{include:[{model:ContactPhone,as:_0xbc3d[63],include:[{model:ReportCall,as:_0xbc3d[64],include:[{all:true}]},{model:ReportCall,as:_0xbc3d[65],include:[{all:true}]},{model:ReportCallHistory,as:_0xbc3d[66],include:[{all:true}]},{model:ReportCallHistory,as:_0xbc3d[67],include:[{all:true}]}]},{model:ContactEmail,as:_0xbc3d[68],include:[{model:ReportMailSession,as:_0xbc3d[69],include:[{all:true}]},{model:ReportMailSession,as:_0xbc3d[70],include:[{all:true}]},{model:ReportMailSessionHistory,as:_0xbc3d[71],include:[{all:true}]},{model:ReportMailSessionHistory,as:_0xbc3d[72],include:[{all:true}]}]},{model:CustomField,as:_0xbc3d[73]},{model:Service}]})[_0xbc3d[57]](function(_0xd3cax1f){if(!_0xd3cax1f){return _0xd3cax11[_0xbc3d[60]](404)};return _0xd3cax11[_0xbc3d[46]](200)[_0xbc3d[45]](_0xd3cax1f);})[_0xbc3d[47]](function(_0xd3cax1a){console[_0xbc3d[43]](_0xd3cax1a);return handleError(_0xd3cax11,_0xd3cax1a);})};exports[_0xbc3d[75]]=function(_0xd3cax10,_0xd3cax11){ReportIntegration[_0xbc3d[74]](_0xd3cax10[_0xbc3d[62]][_0xbc3d[61]])[_0xbc3d[57]](function(_0xd3cax21){var _0xd3cax22={};switch(_0xd3cax21[_0xbc3d[80]]){case _0xbc3d[77]:_0xd3cax22={model:ContactPhone,as:_0xbc3d[63],where:{phone:_0xd3cax21[_0xbc3d[76]]}};break ;;case _0xbc3d[79]:_0xd3cax22={model:ContactEmail,as:_0xbc3d[68],where:{email:_0xd3cax21[_0xbc3d[78]]}};break ;;default:;};return Contact[_0xbc3d[84]]({include:[_0xd3cax22,{model:Service,where:{id:_[_0xbc3d[83]](_[_0xbc3d[83]](_0xd3cax10[_0xbc3d[81]].Services,_0xbc3d[82]),_0xbc3d[61])}}]});})[_0xbc3d[57]](function(_0xd3cax20){return _0xd3cax11[_0xbc3d[46]](200)[_0xbc3d[45]](_0xd3cax20)})[_0xbc3d[47]](function(_0xd3cax1a){console[_0xbc3d[43]](_0xd3cax1a);return handleError(_0xd3cax11,_0xd3cax1a);})};exports[_0xbc3d[85]]=function(_0xd3cax10,_0xd3cax11){Contact[_0xbc3d[84]]({where:{$or:{"\x24\x50\x68\x6F\x6E\x65\x73\x2E\x70\x68\x6F\x6E\x65\x24":_0xd3cax10[_0xbc3d[87]][_0xbc3d[86]],"\x24\x45\x6D\x61\x69\x6C\x73\x2E\x65\x6D\x61\x69\x6C\x24":_0xd3cax10[_0xbc3d[87]][_0xbc3d[88]]}},include:[{all:true}]})[_0xbc3d[57]](function(_0xd3cax20){console[_0xbc3d[43]](_0xd3cax20);return _0xd3cax11[_0xbc3d[46]](200)[_0xbc3d[45]](_0xd3cax20);})[_0xbc3d[47]](function(_0xd3cax1a){console[_0xbc3d[43]](_0xd3cax1a);return handleError(_0xd3cax11,_0xd3cax1a);})};exports[_0xbc3d[89]]=function(_0xd3cax10,_0xd3cax11,_0xd3cax23){var _0xd3cax24=[],_0xd3cax25=[],_0xd3cax26={};Tag[_0xbc3d[84]]()[_0xbc3d[57]](function(_0xd3cax2d){var _0xd3cax2e=[];var _0xd3cax2f=_[_0xbc3d[83]](_[_0xbc3d[83]](_0xd3cax2d,_0xbc3d[82]),_0xbc3d[19]);if(_0xd3cax10[_0xbc3d[87]][_0xbc3d[103]]){var _0xd3cax30=_0xd3cax10[_0xbc3d[87]][_0xbc3d[103]][_0xbc3d[105]](_0xbc3d[104]);_0xd3cax30[_0xbc3d[39]](function(_0xd3cax29){if(!_[_0xbc3d[106]](_0xd3cax2d,_0xd3cax29)){_0xd3cax2e[_0xbc3d[38]]({name:_0xd3cax29})}});if(_0xd3cax2e[_0xbc3d[107]]){Tag[_0xbc3d[108]](_0xd3cax2e,{individualHooks:true})};};_0xd3cax10[_0xbc3d[87]][_0xbc3d[109]]=_0xd3cax10[_0xbc3d[81]][_0xbc3d[61]];var _0xd3cax31=_[_0xbc3d[101]](_[_0xbc3d[83]](_0xd3cax10[_0xbc3d[87]].Phones,_0xbc3d[110]));var _0xd3cax32=[];_0xd3cax31[_0xbc3d[39]](function(_0xd3cax29){_0xd3cax32[_0xbc3d[38]](ContactPhone[_0xbc3d[102]]({where:{phone:_0xd3cax29},defaults:{phone:_0xd3cax29}}))});return _0xd3cax32;})[_0xbc3d[99]]()[_0xbc3d[57]](function(_0xd3cax11){_0xd3cax24=_[_0xbc3d[96]](_0xd3cax11,function(_0xd3cax29){return _0xd3cax29[0]});var _0xd3cax2b=[];var _0xd3cax2c=_[_0xbc3d[101]](_[_0xbc3d[83]](_0xd3cax10[_0xbc3d[87]].Emails,_0xbc3d[100]));_0xd3cax2c[_0xbc3d[39]](function(_0xd3cax29){_0xd3cax2b[_0xbc3d[38]](ContactEmail[_0xbc3d[102]]({where:{email:_0xd3cax29},defaults:{email:_0xd3cax29}}))});return _0xd3cax2b;})[_0xbc3d[99]]()[_0xbc3d[57]](function(_0xd3cax11){_0xd3cax25=_[_0xbc3d[96]](_0xd3cax11,function(_0xd3cax29){return _0xd3cax29[0]});delete _0xd3cax10[_0xbc3d[87]][_0xbc3d[63]];delete _0xd3cax10[_0xbc3d[87]][_0xbc3d[68]];_0xd3cax26=_[_0xbc3d[98]](_0xd3cax10[_0xbc3d[87]][_0xbc3d[97]]);delete _0xd3cax10[_0xbc3d[87]][_0xbc3d[97]];return Contact[_0xbc3d[89]](_0xd3cax10[_0xbc3d[87]]);})[_0xbc3d[57]](function(_0xd3cax27){return [_0xd3cax27,_0xd3cax27[_0xbc3d[95]](_0xd3cax24)]})[_0xbc3d[90]](function(_0xd3cax27){return [_0xd3cax27,_0xd3cax27[_0xbc3d[94]](_0xd3cax25)]})[_0xbc3d[90]](function(_0xd3cax27){var _0xd3cax2a=_[_0xbc3d[93]](_0xd3cax26);return [_0xd3cax27,CustomField[_0xbc3d[84]]({where:{id:_0xd3cax2a}})];})[_0xbc3d[90]](function(_0xd3cax27,_0xd3cax28){_0xd3cax28[_0xbc3d[39]](function(_0xd3cax29){_0xd3cax29[_0xbc3d[91]]={value:_0xd3cax26[String(_0xd3cax29[_0xbc3d[61]])]}});return [_0xd3cax27,_0xd3cax27[_0xbc3d[92]](_0xd3cax28)];})[_0xbc3d[90]](function(_0xd3cax27){return _0xd3cax11[_0xbc3d[46]](201)[_0xbc3d[45]](_0xd3cax27)})[_0xbc3d[47]](function(_0xd3cax1a){console[_0xbc3d[43]](_0xd3cax1a);return _0xd3cax23(_0xd3cax1a);});};exports[_0xbc3d[111]]=function(_0xd3cax10,_0xd3cax11,_0xd3cax23){var _0xd3cax24=[],_0xd3cax25=[],_0xd3cax26={};Tag[_0xbc3d[84]]()[_0xbc3d[57]](function(_0xd3cax2d){var _0xd3cax2e=[];var _0xd3cax2f=_[_0xbc3d[83]](_[_0xbc3d[83]](_0xd3cax2d,_0xbc3d[82]),_0xbc3d[19]);if(_0xd3cax10[_0xbc3d[87]][_0xbc3d[103]]){var _0xd3cax30=_0xd3cax10[_0xbc3d[87]][_0xbc3d[103]][_0xbc3d[105]](_0xbc3d[104]);_0xd3cax30[_0xbc3d[39]](function(_0xd3cax29){if(!_[_0xbc3d[106]](_0xd3cax2d,_0xd3cax29)){_0xd3cax2e[_0xbc3d[38]]({name:_0xd3cax29})}});if(_0xd3cax2e[_0xbc3d[107]]){Tag[_0xbc3d[108]](_0xd3cax2e,{individualHooks:true})};};var _0xd3cax32=[];var _0xd3cax31=_[_0xbc3d[101]](_[_0xbc3d[83]](_0xd3cax10[_0xbc3d[87]].Phones,_0xbc3d[110]));_0xd3cax31[_0xbc3d[39]](function(_0xd3cax29){_0xd3cax32[_0xbc3d[38]](ContactPhone[_0xbc3d[102]]({where:{phone:_0xd3cax29},defaults:{phone:_0xd3cax29}}))});return _0xd3cax32;})[_0xbc3d[99]]()[_0xbc3d[57]](function(_0xd3cax11){_0xd3cax24=_[_0xbc3d[96]](_0xd3cax11,function(_0xd3cax29){return _0xd3cax29[0]});var _0xd3cax2b=[];var _0xd3cax2c=_[_0xbc3d[101]](_[_0xbc3d[83]](_0xd3cax10[_0xbc3d[87]].Emails,_0xbc3d[100]));_0xd3cax2c[_0xbc3d[39]](function(_0xd3cax29){_0xd3cax2b[_0xbc3d[38]](ContactEmail[_0xbc3d[102]]({where:{email:_0xd3cax29},defaults:{email:_0xd3cax29}}))});return _0xd3cax2b;})[_0xbc3d[99]]()[_0xbc3d[57]](function(_0xd3cax11){_0xd3cax25=_[_0xbc3d[96]](_0xd3cax11,function(_0xd3cax29){return _0xd3cax29[0]});delete _0xd3cax10[_0xbc3d[87]][_0xbc3d[63]];delete _0xd3cax10[_0xbc3d[87]][_0xbc3d[68]];_0xd3cax26=_[_0xbc3d[98]](_0xd3cax10[_0xbc3d[87]][_0xbc3d[97]]);delete _0xd3cax10[_0xbc3d[87]][_0xbc3d[97]];delete _0xd3cax10[_0xbc3d[87]][_0xbc3d[73]];var _0xd3cax33=_0xd3cax10[_0xbc3d[87]][_0xbc3d[61]];delete _0xd3cax10[_0xbc3d[87]][_0xbc3d[61]];return Contact[_0xbc3d[74]](_0xd3cax33);})[_0xbc3d[57]](function(_0xd3cax27){return [_0xd3cax27,_0xd3cax27[_0xbc3d[95]](_0xd3cax24)]})[_0xbc3d[90]](function(_0xd3cax27){return [_0xd3cax27,_0xd3cax27[_0xbc3d[94]](_0xd3cax25)]})[_0xbc3d[90]](function(_0xd3cax27){var _0xd3cax2a=_[_0xbc3d[93]](_0xd3cax26);return [_0xd3cax27,CustomField[_0xbc3d[84]]({where:{id:_0xd3cax2a}})];})[_0xbc3d[90]](function(_0xd3cax27,_0xd3cax28){_0xd3cax28[_0xbc3d[39]](function(_0xd3cax29){_0xd3cax29[_0xbc3d[91]]={value:_0xd3cax26[String(_0xd3cax29[_0xbc3d[61]])]}});return [_0xd3cax27,_0xd3cax27[_0xbc3d[92]](_0xd3cax28)];})[_0xbc3d[90]](function(_0xd3cax27){return _0xd3cax27[_0xbc3d[112]](_0xd3cax10[_0xbc3d[87]])})[_0xbc3d[57]](function(_0xd3cax27){return _0xd3cax11[_0xbc3d[46]](200)[_0xbc3d[45]](_0xd3cax27)})[_0xbc3d[47]](function(_0xd3cax1a){console[_0xbc3d[43]](_0xd3cax1a);return handleError(_0xd3cax11,_0xd3cax1a);});};exports[_0xbc3d[113]]=function(_0xd3cax10,_0xd3cax11){Contact[_0xbc3d[74]](_0xd3cax10[_0xbc3d[62]][_0xbc3d[61]])[_0xbc3d[57]](function(_0xd3cax1f){if(!_0xd3cax1f){return _0xd3cax11[_0xbc3d[60]](404)};_0xd3cax1f[_0xbc3d[113]]()[_0xbc3d[57]](function(){return _0xd3cax11[_0xbc3d[60]](204)})[_0xbc3d[47]](function(_0xd3cax1a){return handleError(_0xd3cax11,_0xd3cax1a)});})[_0xbc3d[47]](function(_0xd3cax1a){return handleError(_0xd3cax11,_0xd3cax1a)})};exports[_0xbc3d[114]]=function(_0xd3cax10,_0xd3cax11){Contact[_0xbc3d[113]]({where:{id:_0xd3cax10[_0xbc3d[23]][_0xbc3d[61]]},individualHooks:true})[_0xbc3d[57]](function(){return _0xd3cax11[_0xbc3d[60]](204)})[_0xbc3d[47]](function(_0xd3cax1a){return handleError(_0xd3cax11,_0xd3cax1a)})};function handleError(_0xd3cax11,_0xd3cax1a){return _0xd3cax11[_0xbc3d[46]](500)[_0xbc3d[45]](_0xd3cax1a)}
\ No newline at end of file