dbe6f63b6be134bbc93e1ba0918a25c16cd49f91
[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 _0x0bb5=['always','onlyIfOpen','VoiceQueue','outbound','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','message','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','push','all','info','[CmContact][afterDestroy][Succesfull]','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','models','get','error','cmContact','afterCreate','inspect','CmHopper','findOne','then','isNil','create','ListId','priority','scheduledat','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','format','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','findAll','dialCheckDuplicateType','CmList','Lists','length'];(function(_0x39060c,_0x4361cc){var _0x1d815e=function(_0x2fd12e){while(--_0x2fd12e){_0x39060c['push'](_0x39060c['shift']());}};_0x1d815e(++_0x4361cc);}(_0x0bb5,0x148));var _0x50bb=function(_0x426067,_0x208f5b){_0x426067=_0x426067-0x0;var _0x2c588d=_0x0bb5[_0x426067];return _0x2c588d;};'use strict';var _=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x50bb('0x2'));var BPromise=require(_0x50bb('0x3'));var rp=require(_0x50bb('0x4'));var fs=require('fs');var path=require(_0x50bb('0x5'));var rimraf=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var attributes=require(_0x50bb('0x8'));module[_0x50bb('0x9')]=function(_0x4e6093,_0x4a105c){return _0x4e6093[_0x50bb('0xa')](_0x50bb('0xb'),attributes,{'tableName':_0x50bb('0xc'),'paranoid':!![],'indexes':[{'name':_0x50bb('0xd'),'fields':['phone']}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4ab8d7,_0x2bede8,_0x1c2174){var _0x3ae598=_0x4e6093[_0x50bb('0xe')];var _0x5512e1=_0x4ab8d7[_0x50bb('0xf')]({'plain':!![]});function _0x2edeeb(){return function(_0x184d06){logger[_0x50bb('0x10')](_0x50bb('0x11'),_0x50bb('0x12'),util[_0x50bb('0x13')](_0x184d06,{'showHidden':![],'depth':null}));};}var _0x4d7e3d=function(_0x226370){return new BPromise(function(_0x58837d,_0x283f04){_0x3ae598[_0x50bb('0x14')][_0x50bb('0x15')]({'where':{'phone':_0x5512e1['phone'],'VoiceQueueId':_0x226370['id']}})[_0x50bb('0x16')](function(_0x309986){if(!_[_0x50bb('0x17')](_0x309986)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5512e1[_0x50bb('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x226370['id']);}return _0x3ae598[_0x50bb('0x14')][_0x50bb('0x18')]({'phone':_0x5512e1[_0x50bb('0xd')],'ContactId':_0x5512e1['id'],'ListId':_0x5512e1[_0x50bb('0x19')],'priority':_0x5512e1[_0x50bb('0x1a')]?_0x5512e1['priority']:0x2,'scheduledat':_0x5512e1[_0x50bb('0x1b')]?_0x5512e1[_0x50bb('0x1b')]:moment()['format'](_0x50bb('0x1c')),'callback':_0x5512e1['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5512e1[_0x50bb('0x1d')]?_0x5512e1[_0x50bb('0x1d')]:undefined,'callbackat':_0x5512e1['callbackUniqueid']?moment()['format'](_0x50bb('0x1c')):undefined,'VoiceQueueId':_0x226370['id']});})[_0x50bb('0x1e')](function(_0x2408db){_0x283f04(_0x2408db);});});};var _0x26abe7=function(_0x56b25a){return new BPromise(function(_0x19dc5d,_0x32bfc3){_0x3ae598[_0x50bb('0x14')]['findOne']({'where':{'phone':_0x5512e1[_0x50bb('0xd')],'VoiceQueueId':_0x56b25a['id']}})[_0x50bb('0x16')](function(_0x1344ec){if(!_['isNil'](_0x1344ec)){throw new Error(_0x50bb('0x1f')+_0x5512e1['phone']+_0x50bb('0x20')+_0x56b25a['id']);}return _0x3ae598[_0x50bb('0x21')][_0x50bb('0x15')]({'where':{'calleridnum':_0x5512e1[_0x50bb('0xd')],'VoiceQueueId':_0x56b25a['id']}});})[_0x50bb('0x16')](function(_0x342078){if(!_['isNil'](_0x342078)){throw new Error(_0x50bb('0x22')+_0x5512e1[_0x50bb('0xd')]+_0x50bb('0x23')+_0x56b25a['id']);}return _0x3ae598[_0x50bb('0x14')]['create']({'phone':_0x5512e1[_0x50bb('0xd')],'ContactId':_0x5512e1['id'],'ListId':_0x5512e1['ListId'],'priority':_0x5512e1['priority']?_0x5512e1[_0x50bb('0x1a')]:0x2,'scheduledat':_0x5512e1['scheduledat']?_0x5512e1['scheduledat']:moment()[_0x50bb('0x24')](_0x50bb('0x1c')),'callback':_0x5512e1[_0x50bb('0x1d')]?!![]:![],'callbackuniqueid':_0x5512e1[_0x50bb('0x1d')]?_0x5512e1[_0x50bb('0x1d')]:undefined,'callbackat':_0x5512e1[_0x50bb('0x1d')]?moment()[_0x50bb('0x24')](_0x50bb('0x1c')):undefined,'VoiceQueueId':_0x56b25a['id']});})['catch'](function(_0x44ce86){_0x32bfc3(_0x44ce86);});});};function _0x461cf3(){return function(_0x15ee2e){logger[_0x50bb('0x10')]('cmContact',_0x50bb('0x12'),util[_0x50bb('0x13')](_0x15ee2e,{'showHidden':![],'depth':null}));};}var _0xc38da5=function(_0xb3c3ba){return new BPromise(function(_0x3fd5f6,_0x3b0374){_0x3ae598[_0x50bb('0x14')][_0x50bb('0x15')]({'where':{'phone':_0x5512e1[_0x50bb('0xd')],'CampaignId':_0xb3c3ba['id']}})[_0x50bb('0x16')](function(_0x1c2ee2){if(!_[_0x50bb('0x17')](_0x1c2ee2)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5512e1[_0x50bb('0xd')]+_0x50bb('0x25')+_0xb3c3ba['id']);}return _0x3ae598[_0x50bb('0x14')][_0x50bb('0x18')]({'phone':_0x5512e1[_0x50bb('0xd')],'ContactId':_0x5512e1['id'],'ListId':_0x5512e1[_0x50bb('0x19')],'priority':_0x5512e1[_0x50bb('0x1a')]?_0x5512e1[_0x50bb('0x1a')]:0x2,'scheduledat':_0x5512e1[_0x50bb('0x1b')]?_0x5512e1[_0x50bb('0x1b')]:moment()[_0x50bb('0x24')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x5512e1[_0x50bb('0x1d')]?!![]:![],'callbackuniqueid':_0x5512e1[_0x50bb('0x1d')]?_0x5512e1[_0x50bb('0x1d')]:undefined,'callbackat':_0x5512e1[_0x50bb('0x1d')]?moment()[_0x50bb('0x24')](_0x50bb('0x1c')):undefined,'CampaignId':_0xb3c3ba['id']});})['catch'](function(_0x527b4a){_0x3b0374(_0x527b4a);});});};var _0x11eee8=function(_0x5ed0b4){return new BPromise(function(_0xa6dbc5,_0x1bf25a){_0x3ae598[_0x50bb('0x14')][_0x50bb('0x15')]({'where':{'phone':_0x5512e1[_0x50bb('0xd')],'CampaignId':_0x5ed0b4['id']}})['then'](function(_0x3a5f09){if(!_['isNil'](_0x3a5f09)){throw new Error(_0x50bb('0x1f')+_0x5512e1[_0x50bb('0xd')]+_0x50bb('0x26')+_0x5ed0b4['id']);}return _0x3ae598['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x5512e1[_0x50bb('0xd')],'CampaignId':_0x5ed0b4['id']}});})[_0x50bb('0x16')](function(_0x43e86f){if(!_[_0x50bb('0x17')](_0x43e86f)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x5512e1[_0x50bb('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x5ed0b4['id']);}return _0x3ae598['CmHopper'][_0x50bb('0x18')]({'phone':_0x5512e1['phone'],'ContactId':_0x5512e1['id'],'ListId':_0x5512e1[_0x50bb('0x19')],'priority':_0x5512e1[_0x50bb('0x1a')]?_0x5512e1[_0x50bb('0x1a')]:0x2,'scheduledat':_0x5512e1[_0x50bb('0x1b')]?_0x5512e1[_0x50bb('0x1b')]:moment()[_0x50bb('0x24')](_0x50bb('0x1c')),'callback':_0x5512e1[_0x50bb('0x1d')]?!![]:![],'callbackuniqueid':_0x5512e1[_0x50bb('0x1d')]?_0x5512e1[_0x50bb('0x1d')]:undefined,'callbackat':_0x5512e1['callbackUniqueid']?moment()['format'](_0x50bb('0x1c')):undefined,'CampaignId':_0x5ed0b4['id']});})[_0x50bb('0x1e')](function(_0x1cf062){_0x1bf25a(_0x1cf062);});});};if(_0x5512e1[_0x50bb('0x19')]){_0x3ae598['VoiceQueue'][_0x50bb('0x27')]({'where':{'type':'outbound'},'attributes':['id',_0x50bb('0x28')],'include':[{'model':_0x3ae598[_0x50bb('0x29')],'as':_0x50bb('0x2a'),'where':{'id':_0x5512e1[_0x50bb('0x19')]}}]})[_0x50bb('0x16')](function(_0x355726){if(_0x355726){var _0x3b1918=[];for(var _0x1a3735=0x0,_0x425632;_0x1a3735<_0x355726[_0x50bb('0x2b')];_0x1a3735+=0x1){_0x425632=_0x355726[_0x1a3735][_0x50bb('0xf')]({'plain':!![]});switch(_0x425632[_0x50bb('0x28')]){case _0x50bb('0x2c'):_0x26abe7(_0x425632)[_0x50bb('0x1e')](_0x2edeeb());break;case _0x50bb('0x2d'):_0x4d7e3d(_0x425632)[_0x50bb('0x1e')](_0x2edeeb());break;default:_0x3ae598['CmHopper'][_0x50bb('0x18')]({'phone':_0x5512e1['phone'],'ContactId':_0x5512e1['id'],'ListId':_0x5512e1[_0x50bb('0x19')],'scheduledat':_0x5512e1[_0x50bb('0x1b')]?_0x5512e1[_0x50bb('0x1b')]:moment()[_0x50bb('0x24')](_0x50bb('0x1c')),'priority':_0x5512e1[_0x50bb('0x1a')]?_0x5512e1[_0x50bb('0x1a')]:0x2,'callback':_0x5512e1[_0x50bb('0x1d')]?!![]:![],'callbackuniqueid':_0x5512e1[_0x50bb('0x1d')]?_0x5512e1[_0x50bb('0x1d')]:undefined,'callbackat':_0x5512e1[_0x50bb('0x1d')]?moment()[_0x50bb('0x24')](_0x50bb('0x1c')):undefined,'VoiceQueueId':_0x425632['id']})[_0x50bb('0x1e')](_0x2edeeb());}}}})['then'](function(){return _0x3ae598[_0x50bb('0x2e')]['findAll']({'where':{'type':_0x50bb('0x2f')},'attributes':['id'],'include':[{'model':_0x3ae598[_0x50bb('0x29')],'as':_0x50bb('0x30'),'where':{'id':_0x5512e1[_0x50bb('0x19')]}}]})[_0x50bb('0x16')](function(_0x39ac1a){if(_0x39ac1a){var _0x133dd9=[];for(var _0x358b3a=0x0,_0x480245;_0x358b3a<_0x39ac1a[_0x50bb('0x2b')];_0x358b3a+=0x1){_0x480245=_0x39ac1a[_0x358b3a][_0x50bb('0xf')]({'plain':!![]});_0x3ae598[_0x50bb('0x31')][_0x50bb('0x18')]({'phone':_0x5512e1[_0x50bb('0xd')],'ContactId':_0x5512e1['id'],'ListId':_0x5512e1['ListId'],'VoiceQueueId':_0x480245['id']})[_0x50bb('0x1e')](function(_0x31f680){logger[_0x50bb('0x10')](_0x50bb('0x32'),_0x50bb('0x12'),_0x31f680['message']);});}}});})['then'](function(){return _0x3ae598[_0x50bb('0x33')]['findAll']({'attributes':['id',_0x50bb('0x28')],'include':[{'model':_0x3ae598['CmList'],'as':_0x50bb('0x2a'),'where':{'id':_0x5512e1[_0x50bb('0x19')]}}]})[_0x50bb('0x16')](function(_0x4e67c1){if(_0x4e67c1){var _0x2ce0a9=[];for(var _0x1bb951=0x0,_0x588dfe;_0x1bb951<_0x4e67c1[_0x50bb('0x2b')];_0x1bb951+=0x1){_0x588dfe=_0x4e67c1[_0x1bb951][_0x50bb('0xf')]({'plain':!![]});switch(_0x588dfe[_0x50bb('0x28')]){case _0x50bb('0x2c'):_0x11eee8(_0x588dfe)['catch'](_0x461cf3());break;case _0x50bb('0x2d'):_0xc38da5(_0x588dfe)[_0x50bb('0x1e')](_0x461cf3());break;default:_0x3ae598[_0x50bb('0x14')][_0x50bb('0x18')]({'phone':_0x5512e1[_0x50bb('0xd')],'ContactId':_0x5512e1['id'],'ListId':_0x5512e1['ListId'],'scheduledat':_0x5512e1[_0x50bb('0x1b')]?_0x5512e1['scheduledat']:moment()[_0x50bb('0x24')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x5512e1['priority']?_0x5512e1[_0x50bb('0x1a')]:0x2,'callback':_0x5512e1['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5512e1['callbackUniqueid']?_0x5512e1[_0x50bb('0x1d')]:undefined,'callbackat':_0x5512e1[_0x50bb('0x1d')]?moment()[_0x50bb('0x24')](_0x50bb('0x1c')):undefined,'CampaignId':_0x588dfe['id']})[_0x50bb('0x1e')](_0x461cf3());}}}});})[_0x50bb('0x16')](function(){return _0x3ae598[_0x50bb('0x33')][_0x50bb('0x27')]({'attributes':['id'],'include':[{'model':_0x3ae598['CmList'],'as':'BlackLists','where':{'id':_0x5512e1[_0x50bb('0x19')]}}]})[_0x50bb('0x16')](function(_0x1d8bf9){if(_0x1d8bf9){var _0x29e1c7=[];for(var _0x45d4bf=0x0,_0x184d26;_0x45d4bf<_0x1d8bf9[_0x50bb('0x2b')];_0x45d4bf+=0x1){_0x184d26=_0x1d8bf9[_0x45d4bf]['get']({'plain':!![]});_0x3ae598[_0x50bb('0x31')][_0x50bb('0x18')]({'phone':_0x5512e1[_0x50bb('0xd')],'ContactId':_0x5512e1['id'],'ListId':_0x5512e1[_0x50bb('0x19')],'CampaignId':_0x184d26['id']})[_0x50bb('0x1e')](function(_0x5dbfcb){logger[_0x50bb('0x10')](_0x50bb('0x32'),_0x50bb('0x12'),_0x5dbfcb[_0x50bb('0x34')]);});}}});})[_0x50bb('0x16')](function(){_0x1c2174();})['catch'](function(_0x261bf5){logger['error']('cmContact,\x20%s,\x20%s',_0x50bb('0x12'),_0x261bf5[_0x50bb('0x34')]);_0x1c2174(_0x261bf5);});}else{_0x1c2174(new Error(_0x50bb('0x35')));}},'afterDestroy':function(_0x3aba4e,_0x431d71,_0x20e35a){var _0x15aaf8=_0x4e6093[_0x50bb('0xe')];var _0x330299=_0x3aba4e[_0x50bb('0xf')]({'plain':!![]});return _0x15aaf8[_0x50bb('0x14')]['findAll']({'raw':!![],'where':{'ListId':_0x330299[_0x50bb('0x19')],'ContactId':_0x330299['id']}})['then'](function(_0x44b19d){if(!_[_0x50bb('0x36')](_0x44b19d)){var _0x59c18e=[];for(var _0x29f260=0x0;_0x29f260<_0x44b19d[_0x50bb('0x2b')];_0x29f260+=0x1){var _0xafa1b7=_0x15aaf8[_0x50bb('0x14')][_0x50bb('0x37')]({'where':{'ListId':_0x44b19d[_0x29f260][_0x50bb('0x19')],'ContactId':_0x44b19d[_0x29f260][_0x50bb('0x38')],'VoiceQueueId':_0x44b19d[_0x29f260][_0x50bb('0x39')],'CampaignId':_0x44b19d[_0x29f260]['CampaignId']}});_0x59c18e[_0x50bb('0x3a')](_0xafa1b7);}return BPromise[_0x50bb('0x3b')](_0x59c18e);}})[_0x50bb('0x16')](function(_0x4a226d){logger[_0x50bb('0x3c')](_0x50bb('0x3d'),util[_0x50bb('0x13')](_0x4a226d,{'showHidden':![],'depth':null}));_0x20e35a();})[_0x50bb('0x1e')](function(_0x25a480){logger[_0x50bb('0x10')]('[CmContact][afterDestroy][Error]',util[_0x50bb('0x13')](_0x25a480,{'showHidden':![],'depth':null}));_0x20e35a(_0x25a480);});}}});};