1cd0c38dacc0f71c2170cb4dcb2a39ea5c3121b7
[motion2.git] / server / api / cmContact / cmContact.model.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xc0d7=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','models','get','cmContact','afterCreate','inspect','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','findOne','then','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','VoiceQueue','BlackLists','CmHopperBlack','error','message','Campaign','cmContact,\x20%s,\x20%s','isEmpty','destroy','VoiceQueueId','CampaignId','all','[CmContact][afterDestroy][Error]','api'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xc0d7,0x7f));var _0x7c0d=function(_0x1dd561,_0x587733){_0x1dd561=_0x1dd561-0x0;var _0x61376=_0xc0d7[_0x1dd561];return _0x61376;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7c0d('0x0'));var moment=require(_0x7c0d('0x1'));var BPromise=require(_0x7c0d('0x2'));var rp=require(_0x7c0d('0x3'));var fs=require('fs');var path=require(_0x7c0d('0x4'));var rimraf=require(_0x7c0d('0x5'));var config=require(_0x7c0d('0x6'));var attributes=require(_0x7c0d('0x7'));module[_0x7c0d('0x8')]=function(_0x5a6a70,_0x507bc0){return _0x5a6a70[_0x7c0d('0x9')](_0x7c0d('0xa'),attributes,{'tableName':_0x7c0d('0xb'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0x7c0d('0xc')]},{'name':_0x7c0d('0xd'),'fields':[_0x7c0d('0xe'),_0x7c0d('0xf'),'phone',_0x7c0d('0x10'),_0x7c0d('0x11'),'email'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x190944,_0x27d25a,_0x496398){var _0x329e26=_0x5a6a70[_0x7c0d('0x12')];var _0x31b829=_0x190944[_0x7c0d('0x13')]({'plain':!![]});function _0x41236d(){return function(_0x34dccf){logger['error'](_0x7c0d('0x14'),_0x7c0d('0x15'),util[_0x7c0d('0x16')](_0x34dccf,{'showHidden':![],'depth':null}));};}var _0x25c4a8=function(_0x33dd94){return new BPromise(function(_0xe2533c,_0x9c965b){_0x329e26[_0x7c0d('0x17')]['findOne']({'where':{'phone':_0x31b829[_0x7c0d('0xc')],'VoiceQueueId':_0x33dd94['id']}})['then'](function(_0x20bf75){if(!_['isNil'](_0x20bf75)){throw new Error(_0x7c0d('0x18')+_0x31b829[_0x7c0d('0xc')]+_0x7c0d('0x19')+_0x33dd94['id']);}return _0x329e26[_0x7c0d('0x17')][_0x7c0d('0x1a')]({'phone':_0x31b829[_0x7c0d('0xc')],'ContactId':_0x31b829['id'],'ListId':_0x31b829[_0x7c0d('0x1b')],'priority':_0x31b829[_0x7c0d('0x1c')]?_0x31b829[_0x7c0d('0x1c')]:0x2,'scheduledat':_0x31b829[_0x7c0d('0x1d')]?_0x31b829[_0x7c0d('0x1d')]:moment()[_0x7c0d('0x1e')](_0x7c0d('0x1f')),'callback':_0x31b829[_0x7c0d('0x20')]?!![]:![],'callbackuniqueid':_0x31b829[_0x7c0d('0x20')]?_0x31b829[_0x7c0d('0x20')]:undefined,'callbackat':_0x31b829[_0x7c0d('0x20')]?moment()[_0x7c0d('0x1e')](_0x7c0d('0x1f')):undefined,'VoiceQueueId':_0x33dd94['id']});})['catch'](function(_0x58f715){_0x9c965b(_0x58f715);});});};var _0x5dae80=function(_0x54b14f){return new BPromise(function(_0x5872fe,_0x3c401a){_0x329e26[_0x7c0d('0x17')][_0x7c0d('0x21')]({'where':{'phone':_0x31b829[_0x7c0d('0xc')],'VoiceQueueId':_0x54b14f['id']}})[_0x7c0d('0x22')](function(_0x2a92ce){if(!_[_0x7c0d('0x23')](_0x2a92ce)){throw new Error('cmContact,\x20afterCreate\x20'+_0x31b829[_0x7c0d('0xc')]+_0x7c0d('0x24')+_0x54b14f['id']);}return _0x329e26['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x31b829[_0x7c0d('0xc')],'VoiceQueueId':_0x54b14f['id']}});})['then'](function(_0x236973){if(!_[_0x7c0d('0x23')](_0x236973)){throw new Error(_0x7c0d('0x25')+_0x31b829[_0x7c0d('0xc')]+_0x7c0d('0x26')+_0x54b14f['id']);}return _0x329e26['CmHopper'][_0x7c0d('0x1a')]({'phone':_0x31b829[_0x7c0d('0xc')],'ContactId':_0x31b829['id'],'ListId':_0x31b829[_0x7c0d('0x1b')],'priority':_0x31b829[_0x7c0d('0x1c')]?_0x31b829[_0x7c0d('0x1c')]:0x2,'scheduledat':_0x31b829['scheduledat']?_0x31b829[_0x7c0d('0x1d')]:moment()['format'](_0x7c0d('0x1f')),'callback':_0x31b829[_0x7c0d('0x20')]?!![]:![],'callbackuniqueid':_0x31b829[_0x7c0d('0x20')]?_0x31b829[_0x7c0d('0x20')]:undefined,'callbackat':_0x31b829[_0x7c0d('0x20')]?moment()[_0x7c0d('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x54b14f['id']});})[_0x7c0d('0x27')](function(_0x5dbfe1){_0x3c401a(_0x5dbfe1);});});};function _0x368e6f(){return function(_0x3aaf9d){logger['error']('cmContact',_0x7c0d('0x15'),util['inspect'](_0x3aaf9d,{'showHidden':![],'depth':null}));};}var _0x453b8f=function(_0x361105){return new BPromise(function(_0x544ea6,_0x486b66){_0x329e26['CmHopper']['findOne']({'where':{'phone':_0x31b829[_0x7c0d('0xc')],'CampaignId':_0x361105['id']}})['then'](function(_0x510f9e){if(!_[_0x7c0d('0x23')](_0x510f9e)){throw new Error('cmContact,\x20afterCreate\x20'+_0x31b829[_0x7c0d('0xc')]+_0x7c0d('0x28')+_0x361105['id']);}return _0x329e26[_0x7c0d('0x17')][_0x7c0d('0x1a')]({'phone':_0x31b829['phone'],'ContactId':_0x31b829['id'],'ListId':_0x31b829[_0x7c0d('0x1b')],'priority':_0x31b829[_0x7c0d('0x1c')]?_0x31b829[_0x7c0d('0x1c')]:0x2,'scheduledat':_0x31b829[_0x7c0d('0x1d')]?_0x31b829[_0x7c0d('0x1d')]:moment()[_0x7c0d('0x1e')](_0x7c0d('0x1f')),'callback':_0x31b829[_0x7c0d('0x20')]?!![]:![],'callbackuniqueid':_0x31b829[_0x7c0d('0x20')]?_0x31b829[_0x7c0d('0x20')]:undefined,'callbackat':_0x31b829['callbackUniqueid']?moment()[_0x7c0d('0x1e')](_0x7c0d('0x1f')):undefined,'CampaignId':_0x361105['id']});})['catch'](function(_0x3ff97b){_0x486b66(_0x3ff97b);});});};var _0x142ad0=function(_0x35f3c3){return new BPromise(function(_0x1b723b,_0x304606){_0x329e26[_0x7c0d('0x17')]['findOne']({'where':{'phone':_0x31b829[_0x7c0d('0xc')],'CampaignId':_0x35f3c3['id']}})[_0x7c0d('0x22')](function(_0x309f6b){if(!_[_0x7c0d('0x23')](_0x309f6b)){throw new Error(_0x7c0d('0x18')+_0x31b829['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x35f3c3['id']);}return _0x329e26[_0x7c0d('0x29')][_0x7c0d('0x21')]({'where':{'calleridnum':_0x31b829['phone'],'CampaignId':_0x35f3c3['id']}});})[_0x7c0d('0x22')](function(_0x4c87d8){if(!_[_0x7c0d('0x23')](_0x4c87d8)){throw new Error(_0x7c0d('0x25')+_0x31b829['phone']+_0x7c0d('0x2a')+_0x35f3c3['id']);}return _0x329e26['CmHopper'][_0x7c0d('0x1a')]({'phone':_0x31b829[_0x7c0d('0xc')],'ContactId':_0x31b829['id'],'ListId':_0x31b829['ListId'],'priority':_0x31b829['priority']?_0x31b829['priority']:0x2,'scheduledat':_0x31b829[_0x7c0d('0x1d')]?_0x31b829[_0x7c0d('0x1d')]:moment()[_0x7c0d('0x1e')](_0x7c0d('0x1f')),'callback':_0x31b829['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x31b829['callbackUniqueid']?_0x31b829[_0x7c0d('0x20')]:undefined,'callbackat':_0x31b829['callbackUniqueid']?moment()['format'](_0x7c0d('0x1f')):undefined,'CampaignId':_0x35f3c3['id']});})['catch'](function(_0x2ae43c){_0x304606(_0x2ae43c);});});};if(_0x31b829[_0x7c0d('0x1b')]){_0x329e26['VoiceQueue'][_0x7c0d('0x2b')]({'where':{'type':_0x7c0d('0x2c')},'attributes':['id',_0x7c0d('0x2d')],'include':[{'model':_0x329e26[_0x7c0d('0x2e')],'as':_0x7c0d('0x2f'),'where':{'id':_0x31b829['ListId']}}]})[_0x7c0d('0x22')](function(_0x384ce1){if(_0x384ce1){var _0x5c9dbf=[];for(var _0xf0389d=0x0,_0x11f530;_0xf0389d<_0x384ce1[_0x7c0d('0x30')];_0xf0389d+=0x1){_0x11f530=_0x384ce1[_0xf0389d][_0x7c0d('0x13')]({'plain':!![]});switch(_0x11f530['dialCheckDuplicateType']){case _0x7c0d('0x31'):_0x5dae80(_0x11f530)[_0x7c0d('0x27')](_0x41236d());break;case _0x7c0d('0x32'):_0x25c4a8(_0x11f530)[_0x7c0d('0x27')](_0x41236d());break;default:_0x329e26[_0x7c0d('0x17')]['create']({'phone':_0x31b829[_0x7c0d('0xc')],'ContactId':_0x31b829['id'],'ListId':_0x31b829['ListId'],'scheduledat':_0x31b829[_0x7c0d('0x1d')]?_0x31b829['scheduledat']:moment()[_0x7c0d('0x1e')](_0x7c0d('0x1f')),'priority':_0x31b829[_0x7c0d('0x1c')]?_0x31b829[_0x7c0d('0x1c')]:0x2,'callback':_0x31b829[_0x7c0d('0x20')]?!![]:![],'callbackuniqueid':_0x31b829['callbackUniqueid']?_0x31b829[_0x7c0d('0x20')]:undefined,'callbackat':_0x31b829['callbackUniqueid']?moment()[_0x7c0d('0x1e')](_0x7c0d('0x1f')):undefined,'VoiceQueueId':_0x11f530['id']})[_0x7c0d('0x27')](_0x41236d());}}}})['then'](function(){return _0x329e26[_0x7c0d('0x33')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x329e26[_0x7c0d('0x2e')],'as':_0x7c0d('0x34'),'where':{'id':_0x31b829[_0x7c0d('0x1b')]}}]})['then'](function(_0x297223){if(_0x297223){var _0x192b36=[];for(var _0x37fc71=0x0,_0x553288;_0x37fc71<_0x297223[_0x7c0d('0x30')];_0x37fc71+=0x1){_0x553288=_0x297223[_0x37fc71][_0x7c0d('0x13')]({'plain':!![]});_0x329e26[_0x7c0d('0x35')][_0x7c0d('0x1a')]({'phone':_0x31b829[_0x7c0d('0xc')],'ContactId':_0x31b829['id'],'ListId':_0x31b829['ListId'],'VoiceQueueId':_0x553288['id']})['catch'](function(_0x41c115){logger[_0x7c0d('0x36')]('cmContact,\x20%s,\x20%s','afterCreate',_0x41c115[_0x7c0d('0x37')]);});}}});})[_0x7c0d('0x22')](function(){return _0x329e26[_0x7c0d('0x38')]['findAll']({'attributes':['id',_0x7c0d('0x2d')],'include':[{'model':_0x329e26[_0x7c0d('0x2e')],'as':_0x7c0d('0x2f'),'where':{'id':_0x31b829[_0x7c0d('0x1b')]}}]})[_0x7c0d('0x22')](function(_0x449841){if(_0x449841){var _0x4b464c=[];for(var _0x4f6b34=0x0,_0x1dc652;_0x4f6b34<_0x449841[_0x7c0d('0x30')];_0x4f6b34+=0x1){_0x1dc652=_0x449841[_0x4f6b34][_0x7c0d('0x13')]({'plain':!![]});switch(_0x1dc652['dialCheckDuplicateType']){case _0x7c0d('0x31'):_0x142ad0(_0x1dc652)[_0x7c0d('0x27')](_0x368e6f());break;case _0x7c0d('0x32'):_0x453b8f(_0x1dc652)[_0x7c0d('0x27')](_0x368e6f());break;default:_0x329e26['CmHopper'][_0x7c0d('0x1a')]({'phone':_0x31b829[_0x7c0d('0xc')],'ContactId':_0x31b829['id'],'ListId':_0x31b829[_0x7c0d('0x1b')],'scheduledat':_0x31b829[_0x7c0d('0x1d')]?_0x31b829[_0x7c0d('0x1d')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x31b829[_0x7c0d('0x1c')]?_0x31b829[_0x7c0d('0x1c')]:0x2,'callback':_0x31b829[_0x7c0d('0x20')]?!![]:![],'callbackuniqueid':_0x31b829[_0x7c0d('0x20')]?_0x31b829[_0x7c0d('0x20')]:undefined,'callbackat':_0x31b829['callbackUniqueid']?moment()[_0x7c0d('0x1e')](_0x7c0d('0x1f')):undefined,'CampaignId':_0x1dc652['id']})[_0x7c0d('0x27')](_0x368e6f());}}}});})['then'](function(){return _0x329e26[_0x7c0d('0x38')][_0x7c0d('0x2b')]({'attributes':['id'],'include':[{'model':_0x329e26['CmList'],'as':_0x7c0d('0x34'),'where':{'id':_0x31b829[_0x7c0d('0x1b')]}}]})[_0x7c0d('0x22')](function(_0x1cc489){if(_0x1cc489){var _0x11ce01=[];for(var _0x4cb628=0x0,_0x5b40b9;_0x4cb628<_0x1cc489['length'];_0x4cb628+=0x1){_0x5b40b9=_0x1cc489[_0x4cb628][_0x7c0d('0x13')]({'plain':!![]});_0x329e26['CmHopperBlack'][_0x7c0d('0x1a')]({'phone':_0x31b829[_0x7c0d('0xc')],'ContactId':_0x31b829['id'],'ListId':_0x31b829[_0x7c0d('0x1b')],'CampaignId':_0x5b40b9['id']})['catch'](function(_0x302c36){logger[_0x7c0d('0x36')](_0x7c0d('0x39'),_0x7c0d('0x15'),_0x302c36['message']);});}}});})[_0x7c0d('0x22')](function(){_0x496398();})[_0x7c0d('0x27')](function(_0x40a488){logger[_0x7c0d('0x36')](_0x7c0d('0x39'),_0x7c0d('0x15'),_0x40a488['message']);_0x496398(_0x40a488);});}else{_0x496398(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x2630a5,_0x18f2a3,_0x3153a4){var _0x4ce477=_0x5a6a70[_0x7c0d('0x12')];var _0x2d216b=_0x2630a5['get']({'plain':!![]});return _0x4ce477[_0x7c0d('0x17')][_0x7c0d('0x2b')]({'raw':!![],'where':{'ListId':_0x2d216b[_0x7c0d('0x1b')],'ContactId':_0x2d216b['id']}})['then'](function(_0x50a24b){if(!_[_0x7c0d('0x3a')](_0x50a24b)){var _0x37b432=[];for(var _0x4ee573=0x0;_0x4ee573<_0x50a24b[_0x7c0d('0x30')];_0x4ee573+=0x1){var _0x37a28f=_0x4ce477[_0x7c0d('0x17')][_0x7c0d('0x3b')]({'where':{'ListId':_0x50a24b[_0x4ee573][_0x7c0d('0x1b')],'ContactId':_0x50a24b[_0x4ee573]['ContactId'],'VoiceQueueId':_0x50a24b[_0x4ee573][_0x7c0d('0x3c')],'CampaignId':_0x50a24b[_0x4ee573][_0x7c0d('0x3d')]}});_0x37b432['push'](_0x37a28f);}return BPromise[_0x7c0d('0x3e')](_0x37b432);}})['then'](function(_0x3a5ac5){logger['info']('[CmContact][afterDestroy][Succesfull]',util['inspect'](_0x3a5ac5,{'showHidden':![],'depth':null}));_0x3153a4();})[_0x7c0d('0x27')](function(_0x231f0a){logger[_0x7c0d('0x36')](_0x7c0d('0x3f'),util[_0x7c0d('0x16')](_0x231f0a,{'showHidden':![],'depth':null}));_0x3153a4(_0x231f0a);});}}});};