d94e7e80190f671a4c6b12ea66aee5fcee04dc71
[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 _0x6100=['minutes','YYYY-MM-DD\x20HH:mm:ss','then','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','callbackUniqueid','format','catch','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','ret','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','CmList','Lists','length','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','dialCheckDuplicateType','always','message','List\x20not\x20found','models','isEmpty','destroy','VoiceQueueId','CampaignId','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','bluebird','path','rimraf','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','afterCreate','inspect','scheduledat','isNil','VoiceQueue','findOne','dialTimezone','timezones','utcOffset'];(function(_0x4aa4e6,_0x278c45){var _0x322588=function(_0x19279d){while(--_0x19279d){_0x4aa4e6['push'](_0x4aa4e6['shift']());}};_0x322588(++_0x278c45);}(_0x6100,0x1cc));var _0x0610=function(_0x7de119,_0x411a89){_0x7de119=_0x7de119-0x0;var _0x1be026=_0x6100[_0x7de119];return _0x1be026;};'use strict';var _=require(_0x0610('0x0'));var util=require(_0x0610('0x1'));var logger=require(_0x0610('0x2'))(_0x0610('0x3'));var moment=require('moment');var BPromise=require(_0x0610('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0610('0x5'));var rimraf=require(_0x0610('0x6'));var config=require('../../config/environment');var shared=require('../../config/environment/shared');var attributes=require('./cmContact.attributes');module['exports']=function(_0x5a7d83,_0xcb0edb){return _0x5a7d83[_0x0610('0x7')](_0x0610('0x8'),attributes,{'tableName':_0x0610('0x9'),'paranoid':!![],'indexes':[{'name':_0x0610('0xa'),'fields':[_0x0610('0xa')]},{'name':_0x0610('0xb'),'fields':[_0x0610('0xc'),_0x0610('0xd'),_0x0610('0xa'),'mobile','fax',_0x0610('0xe')],'type':_0x0610('0xf')}],'timestamps':!![],'charset':_0x0610('0x10'),'collate':_0x0610('0x11'),'hooks':{'afterCreate':function(_0x3c2a32,_0x13d423,_0x3c3648){var _0x3459f1=_0x5a7d83['models'];var _0x4ccb03=_0x3c2a32[_0x0610('0x12')]({'plain':!![]});function _0x305d6f(){return function(_0x9771e7){logger[_0x0610('0x13')](_0x0610('0x14'),_0x0610('0x15'),util[_0x0610('0x16')](_0x9771e7,{'showHidden':![],'depth':null}));};}function _0x423e7a(_0x5785b8,_0x391e70){var _0x4b7111=_0x391e70[_0x0610('0x17')]?_0x391e70[_0x0610('0x17')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x367060,_0x14515f){if(_[_0x0610('0x18')](_0x391e70['dialTimezone'])){_0x367060({'ret':_0x4b7111});}else{_0x3459f1[_0x0610('0x19')][_0x0610('0x1a')]({'where':{'id':_0x5785b8['id']}})['then'](function(_0x5e3cbe){if(!_[_0x0610('0x18')](_0x5e3cbe)){var _0x4bf843=_0x5e3cbe[_0x0610('0x1b')];if(!_[_0x0610('0x18')](_0x4bf843)){var _0x19aa7d=shared[_0x0610('0x1c')];var _0x547382=_0x19aa7d[_0x4bf843];var _0x454bcb=_0x19aa7d[_0x391e70['dialTimezone']];if(!_[_0x0610('0x18')](_0x547382)&&!_[_0x0610('0x18')](_0x454bcb)){var _0x40ecd9=_0x547382[_0x0610('0x1d')]-_0x454bcb[_0x0610('0x1d')];_0x4b7111=_0x391e70[_0x0610('0x17')]?_0x391e70[_0x0610('0x17')]:moment();var _0xb09ee8=moment(_0x4b7111)['add'](_0x40ecd9,_0x0610('0x1e'));_0x367060({'ret':_0xb09ee8['format'](_0x0610('0x1f'))});}else _0x367060({'ret':_0x4b7111});}else _0x367060({'ret':_0x4b7111});}else{_0x367060({'ret':_0x4b7111});}});}});return 0xa;}var _0x41dbbd=function(_0x166fc8){return new BPromise(function(_0xde670,_0x2fc5cd){_0x423e7a(_0x166fc8,_0x4ccb03)[_0x0610('0x20')](function(_0x80531e){_0x4ccb03[_0x0610('0x17')]=_0x80531e['ret'];_0x3459f1[_0x0610('0x21')][_0x0610('0x1a')]({'where':{'phone':_0x4ccb03['phone'],'VoiceQueueId':_0x166fc8['id']}})[_0x0610('0x20')](function(_0x4ffff4){if(!_[_0x0610('0x18')](_0x4ffff4)){throw new Error(_0x0610('0x22')+_0x4ccb03[_0x0610('0xa')]+_0x0610('0x23')+_0x166fc8['id']);}return _0x3459f1[_0x0610('0x21')][_0x0610('0x24')]({'phone':_0x4ccb03[_0x0610('0xa')],'ContactId':_0x4ccb03['id'],'ListId':_0x4ccb03[_0x0610('0x25')],'priority':_0x4ccb03[_0x0610('0x26')]?_0x4ccb03[_0x0610('0x26')]:0x2,'scheduledat':_0x4ccb03[_0x0610('0x17')]?_0x4ccb03[_0x0610('0x17')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4ccb03['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4ccb03[_0x0610('0x27')]?_0x4ccb03['callbackUniqueid']:undefined,'callbackat':_0x4ccb03[_0x0610('0x27')]?moment()[_0x0610('0x28')](_0x0610('0x1f')):undefined,'VoiceQueueId':_0x166fc8['id']});})[_0x0610('0x29')](function(_0x359f10){_0x2fc5cd(_0x359f10);});});});};var _0xaac3a0=function(_0x5bc5de){return new BPromise(function(_0x212367,_0x317d4d){_0x423e7a(_0x5bc5de,_0x4ccb03)['then'](function(_0x5109af){_0x4ccb03[_0x0610('0x17')]=_0x5109af['ret'];_0x3459f1[_0x0610('0x21')]['findOne']({'where':{'phone':_0x4ccb03[_0x0610('0xa')],'VoiceQueueId':_0x5bc5de['id']}})['then'](function(_0x283cf8){if(!_[_0x0610('0x18')](_0x283cf8)){throw new Error(_0x0610('0x22')+_0x4ccb03[_0x0610('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x5bc5de['id']);}return _0x3459f1[_0x0610('0x2a')]['findOne']({'where':{'calleridnum':_0x4ccb03[_0x0610('0xa')],'VoiceQueueId':_0x5bc5de['id']}});})[_0x0610('0x20')](function(_0x4f9d07){if(!_[_0x0610('0x18')](_0x4f9d07)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x4ccb03[_0x0610('0xa')]+_0x0610('0x2b')+_0x5bc5de['id']);}return _0x3459f1[_0x0610('0x21')][_0x0610('0x24')]({'phone':_0x4ccb03[_0x0610('0xa')],'ContactId':_0x4ccb03['id'],'ListId':_0x4ccb03[_0x0610('0x25')],'priority':_0x4ccb03['priority']?_0x4ccb03[_0x0610('0x26')]:0x2,'scheduledat':_0x4ccb03[_0x0610('0x17')]?_0x4ccb03[_0x0610('0x17')]:moment()[_0x0610('0x28')](_0x0610('0x1f')),'callback':_0x4ccb03[_0x0610('0x27')]?!![]:![],'callbackuniqueid':_0x4ccb03[_0x0610('0x27')]?_0x4ccb03[_0x0610('0x27')]:undefined,'callbackat':_0x4ccb03[_0x0610('0x27')]?moment()[_0x0610('0x28')](_0x0610('0x1f')):undefined,'VoiceQueueId':_0x5bc5de['id']});})[_0x0610('0x29')](function(_0x4f1665){_0x317d4d(_0x4f1665);});});});};function _0xa3b770(){return function(_0x2448db){logger[_0x0610('0x13')](_0x0610('0x14'),'afterCreate',util[_0x0610('0x16')](_0x2448db,{'showHidden':![],'depth':null}));};}function _0x5a5737(_0x5531ef,_0x15870){var _0x1b558b=_0x15870['scheduledat']?_0x15870[_0x0610('0x17')]:moment()[_0x0610('0x28')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x394565,_0x589394){if(_['isNil'](_0x15870['dialTimezone'])){_0x394565({'ret':_0x1b558b});}else{_0x3459f1['Campaign'][_0x0610('0x1a')]({'where':{'id':_0x5531ef['id']}})[_0x0610('0x20')](function(_0x517dc1){if(!_[_0x0610('0x18')](_0x517dc1)){var _0x510f23=_0x517dc1[_0x0610('0x1b')];if(!_[_0x0610('0x18')](_0x510f23)){var _0x574ddf=shared['timezones'];var _0xcdaa1b=_0x574ddf[_0x510f23];var _0x553106=_0x574ddf[_0x15870[_0x0610('0x1b')]];if(!_[_0x0610('0x18')](_0xcdaa1b)&&!_[_0x0610('0x18')](_0x553106)){var _0x37858e=_0xcdaa1b[_0x0610('0x1d')]-_0x553106['utcOffset'];_0x1b558b=_0x15870['scheduledat']?_0x15870[_0x0610('0x17')]:moment();var _0x2507ee=moment(_0x1b558b)['add'](_0x37858e,_0x0610('0x1e'));_0x394565({'ret':_0x2507ee[_0x0610('0x28')](_0x0610('0x1f'))});}else _0x394565({'ret':_0x1b558b});}else _0x394565({'ret':_0x1b558b});}else{_0x394565({'ret':_0x1b558b});}});}});return 0xa;}var _0x93adaa=function(_0x389499){return new BPromise(function(_0x3d2987,_0x3a01db){_0x5a5737(_0x389499,_0x4ccb03)['then'](function(_0x311a4f){_0x4ccb03[_0x0610('0x17')]=_0x311a4f[_0x0610('0x2c')];_0x3459f1[_0x0610('0x21')][_0x0610('0x1a')]({'where':{'phone':_0x4ccb03[_0x0610('0xa')],'CampaignId':_0x389499['id']}})['then'](function(_0x313685){if(!_[_0x0610('0x18')](_0x313685)){throw new Error(_0x0610('0x22')+_0x4ccb03[_0x0610('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x389499['id']);}return _0x3459f1[_0x0610('0x21')][_0x0610('0x24')]({'phone':_0x4ccb03[_0x0610('0xa')],'ContactId':_0x4ccb03['id'],'ListId':_0x4ccb03[_0x0610('0x25')],'priority':_0x4ccb03['priority']?_0x4ccb03['priority']:0x2,'scheduledat':_0x4ccb03[_0x0610('0x17')]?_0x4ccb03[_0x0610('0x17')]:moment()[_0x0610('0x28')](_0x0610('0x1f')),'callback':_0x4ccb03[_0x0610('0x27')]?!![]:![],'callbackuniqueid':_0x4ccb03[_0x0610('0x27')]?_0x4ccb03[_0x0610('0x27')]:undefined,'callbackat':_0x4ccb03[_0x0610('0x27')]?moment()[_0x0610('0x28')](_0x0610('0x1f')):undefined,'CampaignId':_0x389499['id']});})[_0x0610('0x29')](function(_0x21d635){_0x3a01db(_0x21d635);});});});};var _0x424418=function(_0x34217d){return new BPromise(function(_0x393ef8,_0x3b3406){_0x5a5737(_0x34217d,_0x4ccb03)[_0x0610('0x20')](function(_0x4b902c){_0x4ccb03['scheduledat']=_0x4b902c[_0x0610('0x2c')];_0x3459f1['CmHopper']['findOne']({'where':{'phone':_0x4ccb03[_0x0610('0xa')],'CampaignId':_0x34217d['id']}})[_0x0610('0x20')](function(_0xdd7a2){if(!_[_0x0610('0x18')](_0xdd7a2)){throw new Error(_0x0610('0x22')+_0x4ccb03['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x34217d['id']);}return _0x3459f1[_0x0610('0x2a')][_0x0610('0x1a')]({'where':{'calleridnum':_0x4ccb03['phone'],'CampaignId':_0x34217d['id']}});})[_0x0610('0x20')](function(_0x1882d8){if(!_[_0x0610('0x18')](_0x1882d8)){throw new Error(_0x0610('0x2d')+_0x4ccb03[_0x0610('0xa')]+_0x0610('0x2e')+_0x34217d['id']);}return _0x3459f1[_0x0610('0x21')][_0x0610('0x24')]({'phone':_0x4ccb03[_0x0610('0xa')],'ContactId':_0x4ccb03['id'],'ListId':_0x4ccb03['ListId'],'priority':_0x4ccb03['priority']?_0x4ccb03['priority']:0x2,'scheduledat':_0x4ccb03[_0x0610('0x17')]?_0x4ccb03[_0x0610('0x17')]:moment()[_0x0610('0x28')](_0x0610('0x1f')),'callback':_0x4ccb03[_0x0610('0x27')]?!![]:![],'callbackuniqueid':_0x4ccb03['callbackUniqueid']?_0x4ccb03['callbackUniqueid']:undefined,'callbackat':_0x4ccb03[_0x0610('0x27')]?moment()[_0x0610('0x28')](_0x0610('0x1f')):undefined,'CampaignId':_0x34217d['id']});})[_0x0610('0x29')](function(_0x2c63d9){_0x3b3406(_0x2c63d9);});});});};if(_0x4ccb03[_0x0610('0x25')]){_0x3459f1[_0x0610('0x19')][_0x0610('0x2f')]({'where':{'type':_0x0610('0x30')},'attributes':['id','dialCheckDuplicateType',_0x0610('0x1b')],'include':[{'model':_0x3459f1[_0x0610('0x31')],'as':_0x0610('0x32'),'where':{'id':_0x4ccb03[_0x0610('0x25')]}}]})[_0x0610('0x20')](function(_0x2b7b14){if(_0x2b7b14){var _0x58055f=[];for(var _0x402562=0x0,_0x529ce9;_0x402562<_0x2b7b14[_0x0610('0x33')];_0x402562+=0x1){_0x529ce9=_0x2b7b14[_0x402562][_0x0610('0x12')]({'plain':!![]});switch(_0x529ce9['dialCheckDuplicateType']){case'always':_0xaac3a0(_0x529ce9)['catch'](_0x305d6f());break;case _0x0610('0x34'):_0x41dbbd(_0x529ce9)[_0x0610('0x29')](_0x305d6f());break;default:_0x5a5737(_0x529ce9,_0x4ccb03)[_0x0610('0x20')](function(_0x2d35a6){_0x4ccb03['scheduledat']=_0x2d35a6['ret'];_0x3459f1['CmHopper'][_0x0610('0x24')]({'phone':_0x4ccb03[_0x0610('0xa')],'ContactId':_0x4ccb03['id'],'ListId':_0x4ccb03[_0x0610('0x25')],'scheduledat':_0x4ccb03[_0x0610('0x17')]?_0x4ccb03['scheduledat']:moment()[_0x0610('0x28')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x4ccb03['priority']?_0x4ccb03[_0x0610('0x26')]:0x2,'callback':_0x4ccb03['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4ccb03['callbackUniqueid']?_0x4ccb03[_0x0610('0x27')]:undefined,'callbackat':_0x4ccb03[_0x0610('0x27')]?moment()[_0x0610('0x28')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x529ce9['id']})['catch'](_0x305d6f());});}}}})['then'](function(){return _0x3459f1[_0x0610('0x19')][_0x0610('0x2f')]({'where':{'type':_0x0610('0x30')},'attributes':['id'],'include':[{'model':_0x3459f1[_0x0610('0x31')],'as':_0x0610('0x35'),'where':{'id':_0x4ccb03[_0x0610('0x25')]}}]})[_0x0610('0x20')](function(_0x5627b3){if(_0x5627b3){var _0x4d6f3d=[];for(var _0x305a6e=0x0,_0x15f77d;_0x305a6e<_0x5627b3[_0x0610('0x33')];_0x305a6e+=0x1){_0x15f77d=_0x5627b3[_0x305a6e]['get']({'plain':!![]});_0x3459f1[_0x0610('0x36')][_0x0610('0x24')]({'phone':_0x4ccb03[_0x0610('0xa')],'ContactId':_0x4ccb03['id'],'ListId':_0x4ccb03[_0x0610('0x25')],'VoiceQueueId':_0x15f77d['id']})['catch'](function(_0x2eb802){logger[_0x0610('0x13')](_0x0610('0x37'),_0x0610('0x15'),_0x2eb802['message']);});}}});})[_0x0610('0x20')](function(){return _0x3459f1[_0x0610('0x38')][_0x0610('0x2f')]({'attributes':['id',_0x0610('0x39'),_0x0610('0x1b')],'include':[{'model':_0x3459f1['CmList'],'as':'Lists','where':{'id':_0x4ccb03[_0x0610('0x25')]}}]})['then'](function(_0x48ac6d){if(_0x48ac6d){var _0x20e291=[];for(var _0x5e2b6d=0x0,_0x2d1d75;_0x5e2b6d<_0x48ac6d['length'];_0x5e2b6d+=0x1){_0x2d1d75=_0x48ac6d[_0x5e2b6d]['get']({'plain':!![]});switch(_0x2d1d75[_0x0610('0x39')]){case _0x0610('0x3a'):_0x424418(_0x2d1d75)['catch'](_0xa3b770());break;case'onlyIfOpen':_0x93adaa(_0x2d1d75)[_0x0610('0x29')](_0xa3b770());break;default:_0x3459f1[_0x0610('0x21')]['create']({'phone':_0x4ccb03[_0x0610('0xa')],'ContactId':_0x4ccb03['id'],'ListId':_0x4ccb03[_0x0610('0x25')],'scheduledat':_0x4ccb03[_0x0610('0x17')]?_0x4ccb03[_0x0610('0x17')]:moment()[_0x0610('0x28')](_0x0610('0x1f')),'priority':_0x4ccb03[_0x0610('0x26')]?_0x4ccb03[_0x0610('0x26')]:0x2,'callback':_0x4ccb03['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4ccb03[_0x0610('0x27')]?_0x4ccb03[_0x0610('0x27')]:undefined,'callbackat':_0x4ccb03[_0x0610('0x27')]?moment()[_0x0610('0x28')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x2d1d75['id']})[_0x0610('0x29')](_0xa3b770());}}}});})[_0x0610('0x20')](function(){return _0x3459f1[_0x0610('0x38')][_0x0610('0x2f')]({'attributes':['id'],'include':[{'model':_0x3459f1['CmList'],'as':_0x0610('0x35'),'where':{'id':_0x4ccb03['ListId']}}]})['then'](function(_0x512ea4){if(_0x512ea4){var _0x49a877=[];for(var _0x564cf7=0x0,_0x4d1472;_0x564cf7<_0x512ea4['length'];_0x564cf7+=0x1){_0x4d1472=_0x512ea4[_0x564cf7][_0x0610('0x12')]({'plain':!![]});_0x3459f1[_0x0610('0x36')]['create']({'phone':_0x4ccb03['phone'],'ContactId':_0x4ccb03['id'],'ListId':_0x4ccb03['ListId'],'CampaignId':_0x4d1472['id']})[_0x0610('0x29')](function(_0x3c7eee){logger['error'](_0x0610('0x37'),_0x0610('0x15'),_0x3c7eee[_0x0610('0x3b')]);});}}});})[_0x0610('0x20')](function(){_0x3c3648();})[_0x0610('0x29')](function(_0x504959){logger[_0x0610('0x13')](_0x0610('0x37'),_0x0610('0x15'),_0x504959['message']);_0x3c3648(_0x504959);});}else{_0x3c3648(new Error(_0x0610('0x3c')));}},'afterDestroy':function(_0x1c26d6,_0x164b9c,_0x3e379c){var _0x22ef50=_0x5a7d83[_0x0610('0x3d')];var _0x206b2e=_0x1c26d6[_0x0610('0x12')]({'plain':!![]});return _0x22ef50[_0x0610('0x21')][_0x0610('0x2f')]({'raw':!![],'where':{'ListId':_0x206b2e['ListId'],'ContactId':_0x206b2e['id']}})[_0x0610('0x20')](function(_0x5ec47f){if(!_[_0x0610('0x3e')](_0x5ec47f)){var _0xbe2fea=[];for(var _0x27ebb4=0x0;_0x27ebb4<_0x5ec47f[_0x0610('0x33')];_0x27ebb4+=0x1){var _0xa14002=_0x22ef50[_0x0610('0x21')][_0x0610('0x3f')]({'where':{'ListId':_0x5ec47f[_0x27ebb4]['ListId'],'ContactId':_0x5ec47f[_0x27ebb4]['ContactId'],'VoiceQueueId':_0x5ec47f[_0x27ebb4][_0x0610('0x40')],'CampaignId':_0x5ec47f[_0x27ebb4][_0x0610('0x41')]}});_0xbe2fea[_0x0610('0x42')](_0xa14002);}return BPromise['all'](_0xbe2fea);}})[_0x0610('0x20')](function(_0x49bb58){logger[_0x0610('0x43')](_0x0610('0x44'),util['inspect'](_0x49bb58,{'showHidden':![],'depth':null}));_0x3e379c();})[_0x0610('0x29')](function(_0x9f8c6b){logger[_0x0610('0x13')](_0x0610('0x45'),util[_0x0610('0x16')](_0x9f8c6b,{'showHidden':![],'depth':null}));_0x3e379c(_0x9f8c6b);});}}});};