bb53879315af44a936bd304c5e5d38c9f1a21935
[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 _0x1278=['cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','afterCreate','inspect','CmHopper','then','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','catch','findOne','isNil','\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','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','outbound','dialCheckDuplicateType','CmList','length','always','findAll','BlackLists','cmContact,\x20%s,\x20%s','message','Campaign','Lists','CmHopperBlack','models','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','info','[CmContact][afterDestroy][Error]','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','CmContact'];(function(_0x1e50fc,_0x3d2684){var _0x497f51=function(_0x2f744b){while(--_0x2f744b){_0x1e50fc['push'](_0x1e50fc['shift']());}};_0x497f51(++_0x3d2684);}(_0x1278,0xbe));var _0x8127=function(_0x42c6d6,_0x522db7){_0x42c6d6=_0x42c6d6-0x0;var _0x31da6f=_0x1278[_0x42c6d6];return _0x31da6f;};'use strict';var _=require(_0x8127('0x0'));var util=require(_0x8127('0x1'));var logger=require('../../config/logger')(_0x8127('0x2'));var moment=require(_0x8127('0x3'));var BPromise=require('bluebird');var rp=require(_0x8127('0x4'));var fs=require('fs');var path=require(_0x8127('0x5'));var rimraf=require(_0x8127('0x6'));var config=require(_0x8127('0x7'));var attributes=require(_0x8127('0x8'));module[_0x8127('0x9')]=function(_0x284526,_0x47f343){return _0x284526['define'](_0x8127('0xa'),attributes,{'tableName':_0x8127('0xb'),'paranoid':!![],'indexes':[{'name':_0x8127('0xc'),'fields':[_0x8127('0xc')]},{'name':_0x8127('0xd'),'fields':[_0x8127('0xe'),_0x8127('0xf'),_0x8127('0xc'),_0x8127('0x10'),_0x8127('0x11'),_0x8127('0x12')],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x8127('0x13'),'collate':_0x8127('0x14'),'hooks':{'afterCreate':function(_0x397571,_0x3dff78,_0x20aa44){var _0x1c2fa5=_0x284526['models'];var _0x20dfaf=_0x397571[_0x8127('0x15')]({'plain':!![]});function _0x172a59(){return function(_0x520985){logger[_0x8127('0x16')](_0x8127('0x17'),_0x8127('0x18'),util[_0x8127('0x19')](_0x520985,{'showHidden':![],'depth':null}));};}var _0x3d2d68=function(_0xa74985){return new BPromise(function(_0x277876,_0x2e71a9){_0x1c2fa5[_0x8127('0x1a')]['findOne']({'where':{'phone':_0x20dfaf[_0x8127('0xc')],'VoiceQueueId':_0xa74985['id']}})[_0x8127('0x1b')](function(_0x1d3e35){if(!_['isNil'](_0x1d3e35)){throw new Error(_0x8127('0x1c')+_0x20dfaf['phone']+_0x8127('0x1d')+_0xa74985['id']);}return _0x1c2fa5['CmHopper'][_0x8127('0x1e')]({'phone':_0x20dfaf[_0x8127('0xc')],'ContactId':_0x20dfaf['id'],'ListId':_0x20dfaf[_0x8127('0x1f')],'priority':_0x20dfaf['priority']?_0x20dfaf[_0x8127('0x20')]:0x2,'scheduledat':_0x20dfaf[_0x8127('0x21')]?_0x20dfaf['scheduledat']:moment()[_0x8127('0x22')](_0x8127('0x23')),'callback':_0x20dfaf[_0x8127('0x24')]?!![]:![],'callbackuniqueid':_0x20dfaf[_0x8127('0x24')]?_0x20dfaf[_0x8127('0x24')]:undefined,'callbackat':_0x20dfaf[_0x8127('0x24')]?moment()[_0x8127('0x22')](_0x8127('0x23')):undefined,'VoiceQueueId':_0xa74985['id']});})[_0x8127('0x25')](function(_0x69cf3c){_0x2e71a9(_0x69cf3c);});});};var _0x599763=function(_0x19e7be){return new BPromise(function(_0x5061e3,_0x105628){_0x1c2fa5[_0x8127('0x1a')][_0x8127('0x26')]({'where':{'phone':_0x20dfaf['phone'],'VoiceQueueId':_0x19e7be['id']}})[_0x8127('0x1b')](function(_0x1a7138){if(!_[_0x8127('0x27')](_0x1a7138)){throw new Error('cmContact,\x20afterCreate\x20'+_0x20dfaf[_0x8127('0xc')]+_0x8127('0x28')+_0x19e7be['id']);}return _0x1c2fa5[_0x8127('0x29')][_0x8127('0x26')]({'where':{'calleridnum':_0x20dfaf['phone'],'VoiceQueueId':_0x19e7be['id']}});})[_0x8127('0x1b')](function(_0x3763bc){if(!_['isNil'](_0x3763bc)){throw new Error(_0x8127('0x2a')+_0x20dfaf[_0x8127('0xc')]+_0x8127('0x2b')+_0x19e7be['id']);}return _0x1c2fa5[_0x8127('0x1a')][_0x8127('0x1e')]({'phone':_0x20dfaf[_0x8127('0xc')],'ContactId':_0x20dfaf['id'],'ListId':_0x20dfaf[_0x8127('0x1f')],'priority':_0x20dfaf[_0x8127('0x20')]?_0x20dfaf['priority']:0x2,'scheduledat':_0x20dfaf[_0x8127('0x21')]?_0x20dfaf[_0x8127('0x21')]:moment()[_0x8127('0x22')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x20dfaf[_0x8127('0x24')]?!![]:![],'callbackuniqueid':_0x20dfaf[_0x8127('0x24')]?_0x20dfaf['callbackUniqueid']:undefined,'callbackat':_0x20dfaf[_0x8127('0x24')]?moment()[_0x8127('0x22')](_0x8127('0x23')):undefined,'VoiceQueueId':_0x19e7be['id']});})[_0x8127('0x25')](function(_0x55e700){_0x105628(_0x55e700);});});};function _0x26e75b(){return function(_0x4da839){logger['error'](_0x8127('0x17'),'afterCreate',util[_0x8127('0x19')](_0x4da839,{'showHidden':![],'depth':null}));};}var _0x7349bb=function(_0x120c9f){return new BPromise(function(_0x3adf01,_0x3c2759){_0x1c2fa5[_0x8127('0x1a')][_0x8127('0x26')]({'where':{'phone':_0x20dfaf['phone'],'CampaignId':_0x120c9f['id']}})['then'](function(_0x2a0776){if(!_[_0x8127('0x27')](_0x2a0776)){throw new Error(_0x8127('0x1c')+_0x20dfaf[_0x8127('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x120c9f['id']);}return _0x1c2fa5[_0x8127('0x1a')][_0x8127('0x1e')]({'phone':_0x20dfaf[_0x8127('0xc')],'ContactId':_0x20dfaf['id'],'ListId':_0x20dfaf[_0x8127('0x1f')],'priority':_0x20dfaf[_0x8127('0x20')]?_0x20dfaf['priority']:0x2,'scheduledat':_0x20dfaf[_0x8127('0x21')]?_0x20dfaf['scheduledat']:moment()[_0x8127('0x22')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x20dfaf[_0x8127('0x24')]?!![]:![],'callbackuniqueid':_0x20dfaf[_0x8127('0x24')]?_0x20dfaf['callbackUniqueid']:undefined,'callbackat':_0x20dfaf[_0x8127('0x24')]?moment()[_0x8127('0x22')](_0x8127('0x23')):undefined,'CampaignId':_0x120c9f['id']});})[_0x8127('0x25')](function(_0x3a32ce){_0x3c2759(_0x3a32ce);});});};var _0x268210=function(_0x5db61a){return new BPromise(function(_0xf9d9e,_0x334e35){_0x1c2fa5[_0x8127('0x1a')]['findOne']({'where':{'phone':_0x20dfaf[_0x8127('0xc')],'CampaignId':_0x5db61a['id']}})[_0x8127('0x1b')](function(_0x3fc9b0){if(!_[_0x8127('0x27')](_0x3fc9b0)){throw new Error(_0x8127('0x1c')+_0x20dfaf[_0x8127('0xc')]+_0x8127('0x2c')+_0x5db61a['id']);}return _0x1c2fa5[_0x8127('0x29')][_0x8127('0x26')]({'where':{'calleridnum':_0x20dfaf['phone'],'CampaignId':_0x5db61a['id']}});})['then'](function(_0x25e249){if(!_['isNil'](_0x25e249)){throw new Error(_0x8127('0x2a')+_0x20dfaf[_0x8127('0xc')]+_0x8127('0x2d')+_0x5db61a['id']);}return _0x1c2fa5['CmHopper']['create']({'phone':_0x20dfaf['phone'],'ContactId':_0x20dfaf['id'],'ListId':_0x20dfaf[_0x8127('0x1f')],'priority':_0x20dfaf[_0x8127('0x20')]?_0x20dfaf['priority']:0x2,'scheduledat':_0x20dfaf[_0x8127('0x21')]?_0x20dfaf[_0x8127('0x21')]:moment()[_0x8127('0x22')](_0x8127('0x23')),'callback':_0x20dfaf[_0x8127('0x24')]?!![]:![],'callbackuniqueid':_0x20dfaf[_0x8127('0x24')]?_0x20dfaf[_0x8127('0x24')]:undefined,'callbackat':_0x20dfaf[_0x8127('0x24')]?moment()[_0x8127('0x22')](_0x8127('0x23')):undefined,'CampaignId':_0x5db61a['id']});})[_0x8127('0x25')](function(_0x321a6b){_0x334e35(_0x321a6b);});});};if(_0x20dfaf[_0x8127('0x1f')]){_0x1c2fa5[_0x8127('0x2e')]['findAll']({'where':{'type':_0x8127('0x2f')},'attributes':['id',_0x8127('0x30')],'include':[{'model':_0x1c2fa5[_0x8127('0x31')],'as':'Lists','where':{'id':_0x20dfaf[_0x8127('0x1f')]}}]})[_0x8127('0x1b')](function(_0x237114){if(_0x237114){var _0x25f76f=[];for(var _0xf7bce1=0x0,_0xdef8f3;_0xf7bce1<_0x237114[_0x8127('0x32')];_0xf7bce1+=0x1){_0xdef8f3=_0x237114[_0xf7bce1][_0x8127('0x15')]({'plain':!![]});switch(_0xdef8f3[_0x8127('0x30')]){case _0x8127('0x33'):_0x599763(_0xdef8f3)['catch'](_0x172a59());break;case'onlyIfOpen':_0x3d2d68(_0xdef8f3)[_0x8127('0x25')](_0x172a59());break;default:_0x1c2fa5[_0x8127('0x1a')]['create']({'phone':_0x20dfaf[_0x8127('0xc')],'ContactId':_0x20dfaf['id'],'ListId':_0x20dfaf['ListId'],'scheduledat':_0x20dfaf[_0x8127('0x21')]?_0x20dfaf[_0x8127('0x21')]:moment()[_0x8127('0x22')](_0x8127('0x23')),'priority':_0x20dfaf['priority']?_0x20dfaf['priority']:0x2,'callback':_0x20dfaf[_0x8127('0x24')]?!![]:![],'callbackuniqueid':_0x20dfaf[_0x8127('0x24')]?_0x20dfaf[_0x8127('0x24')]:undefined,'callbackat':_0x20dfaf[_0x8127('0x24')]?moment()[_0x8127('0x22')](_0x8127('0x23')):undefined,'VoiceQueueId':_0xdef8f3['id']})[_0x8127('0x25')](_0x172a59());}}}})[_0x8127('0x1b')](function(){return _0x1c2fa5[_0x8127('0x2e')][_0x8127('0x34')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x1c2fa5[_0x8127('0x31')],'as':_0x8127('0x35'),'where':{'id':_0x20dfaf[_0x8127('0x1f')]}}]})['then'](function(_0x5f594c){if(_0x5f594c){var _0x2e0907=[];for(var _0x4517ff=0x0,_0x21441d;_0x4517ff<_0x5f594c['length'];_0x4517ff+=0x1){_0x21441d=_0x5f594c[_0x4517ff]['get']({'plain':!![]});_0x1c2fa5['CmHopperBlack'][_0x8127('0x1e')]({'phone':_0x20dfaf[_0x8127('0xc')],'ContactId':_0x20dfaf['id'],'ListId':_0x20dfaf[_0x8127('0x1f')],'VoiceQueueId':_0x21441d['id']})[_0x8127('0x25')](function(_0x4b1392){logger[_0x8127('0x16')](_0x8127('0x36'),_0x8127('0x18'),_0x4b1392[_0x8127('0x37')]);});}}});})[_0x8127('0x1b')](function(){return _0x1c2fa5[_0x8127('0x38')]['findAll']({'attributes':['id',_0x8127('0x30')],'include':[{'model':_0x1c2fa5[_0x8127('0x31')],'as':_0x8127('0x39'),'where':{'id':_0x20dfaf[_0x8127('0x1f')]}}]})['then'](function(_0x36facf){if(_0x36facf){var _0x43d9ef=[];for(var _0x429ccf=0x0,_0x4a74ff;_0x429ccf<_0x36facf[_0x8127('0x32')];_0x429ccf+=0x1){_0x4a74ff=_0x36facf[_0x429ccf][_0x8127('0x15')]({'plain':!![]});switch(_0x4a74ff['dialCheckDuplicateType']){case _0x8127('0x33'):_0x268210(_0x4a74ff)['catch'](_0x26e75b());break;case'onlyIfOpen':_0x7349bb(_0x4a74ff)[_0x8127('0x25')](_0x26e75b());break;default:_0x1c2fa5[_0x8127('0x1a')][_0x8127('0x1e')]({'phone':_0x20dfaf[_0x8127('0xc')],'ContactId':_0x20dfaf['id'],'ListId':_0x20dfaf[_0x8127('0x1f')],'scheduledat':_0x20dfaf['scheduledat']?_0x20dfaf[_0x8127('0x21')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x20dfaf[_0x8127('0x20')]?_0x20dfaf[_0x8127('0x20')]:0x2,'callback':_0x20dfaf[_0x8127('0x24')]?!![]:![],'callbackuniqueid':_0x20dfaf['callbackUniqueid']?_0x20dfaf[_0x8127('0x24')]:undefined,'callbackat':_0x20dfaf[_0x8127('0x24')]?moment()[_0x8127('0x22')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x4a74ff['id']})['catch'](_0x26e75b());}}}});})['then'](function(){return _0x1c2fa5[_0x8127('0x38')]['findAll']({'attributes':['id'],'include':[{'model':_0x1c2fa5['CmList'],'as':'BlackLists','where':{'id':_0x20dfaf[_0x8127('0x1f')]}}]})[_0x8127('0x1b')](function(_0x295336){if(_0x295336){var _0x3f7ca8=[];for(var _0x3ff0fe=0x0,_0x4ed417;_0x3ff0fe<_0x295336[_0x8127('0x32')];_0x3ff0fe+=0x1){_0x4ed417=_0x295336[_0x3ff0fe][_0x8127('0x15')]({'plain':!![]});_0x1c2fa5[_0x8127('0x3a')][_0x8127('0x1e')]({'phone':_0x20dfaf[_0x8127('0xc')],'ContactId':_0x20dfaf['id'],'ListId':_0x20dfaf[_0x8127('0x1f')],'CampaignId':_0x4ed417['id']})['catch'](function(_0x37319e){logger['error']('cmContact,\x20%s,\x20%s',_0x8127('0x18'),_0x37319e[_0x8127('0x37')]);});}}});})[_0x8127('0x1b')](function(){_0x20aa44();})[_0x8127('0x25')](function(_0x513e22){logger[_0x8127('0x16')](_0x8127('0x36'),_0x8127('0x18'),_0x513e22[_0x8127('0x37')]);_0x20aa44(_0x513e22);});}else{_0x20aa44(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x10d35f,_0xdccd9,_0x1e441d){var _0x50da1d=_0x284526[_0x8127('0x3b')];var _0x58823e=_0x10d35f[_0x8127('0x15')]({'plain':!![]});return _0x50da1d[_0x8127('0x1a')][_0x8127('0x34')]({'raw':!![],'where':{'ListId':_0x58823e[_0x8127('0x1f')],'ContactId':_0x58823e['id']}})['then'](function(_0x3b00c6){if(!_[_0x8127('0x3c')](_0x3b00c6)){var _0xd1f375=[];for(var _0x1b8a39=0x0;_0x1b8a39<_0x3b00c6[_0x8127('0x32')];_0x1b8a39+=0x1){var _0x2f1baf=_0x50da1d['CmHopper'][_0x8127('0x3d')]({'where':{'ListId':_0x3b00c6[_0x1b8a39][_0x8127('0x1f')],'ContactId':_0x3b00c6[_0x1b8a39][_0x8127('0x3e')],'VoiceQueueId':_0x3b00c6[_0x1b8a39][_0x8127('0x3f')],'CampaignId':_0x3b00c6[_0x1b8a39][_0x8127('0x40')]}});_0xd1f375['push'](_0x2f1baf);}return BPromise['all'](_0xd1f375);}})['then'](function(_0x3a1b8d){logger[_0x8127('0x41')]('[CmContact][afterDestroy][Succesfull]',util[_0x8127('0x19')](_0x3a1b8d,{'showHidden':![],'depth':null}));_0x1e441d();})[_0x8127('0x25')](function(_0x33dfad){logger[_0x8127('0x16')](_0x8127('0x42'),util[_0x8127('0x19')](_0x33dfad,{'showHidden':![],'depth':null}));_0x1e441d(_0x33dfad);});}}});};