ebe0392689d8c0abaec46ad2a58864f2c3408606
[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 _0x7ed1=['Lists','length','always','onlyIfOpen','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','message','isEmpty','destroy','VoiceQueueId','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','inspect','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./cmContact.attributes','exports','CmContact','cm_contacts','phone','firstName','lastName','mobile','fax','email','models','get','error','cmContact','afterCreate','findOne','then','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','CmHopper','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','isNil','cmContact,\x20afterCreate,\x20','create','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7ed1,0xca));var _0x17ed=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x7ed1[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0x17ed('0x0'));var util=require('util');var logger=require(_0x17ed('0x1'))(_0x17ed('0x2'));var moment=require(_0x17ed('0x3'));var BPromise=require(_0x17ed('0x4'));var rp=require(_0x17ed('0x5'));var fs=require('fs');var path=require(_0x17ed('0x6'));var rimraf=require('rimraf');var config=require(_0x17ed('0x7'));var attributes=require(_0x17ed('0x8'));module[_0x17ed('0x9')]=function(_0x15583a,_0x569334){return _0x15583a['define'](_0x17ed('0xa'),attributes,{'tableName':_0x17ed('0xb'),'paranoid':!![],'indexes':[{'name':_0x17ed('0xc'),'fields':[_0x17ed('0xc')]},{'name':'fti_cm_contacts','fields':[_0x17ed('0xd'),_0x17ed('0xe'),_0x17ed('0xc'),_0x17ed('0xf'),_0x17ed('0x10'),_0x17ed('0x11')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3aca8e,_0x4935aa,_0x4c8f8e){var _0x74b493=_0x15583a[_0x17ed('0x12')];var _0x4533bc=_0x3aca8e[_0x17ed('0x13')]({'plain':!![]});function _0x3f2851(){return function(_0x54c4bb){logger[_0x17ed('0x14')](_0x17ed('0x15'),_0x17ed('0x16'),util['inspect'](_0x54c4bb,{'showHidden':![],'depth':null}));};}var _0x2ae9aa=function(_0x53ec2a){return new BPromise(function(_0x513e5c,_0x30a0c6){_0x74b493['CmHopper'][_0x17ed('0x17')]({'where':{'phone':_0x4533bc[_0x17ed('0xc')],'VoiceQueueId':_0x53ec2a['id']}})[_0x17ed('0x18')](function(_0x6ccf15){if(!_['isNil'](_0x6ccf15)){throw new Error(_0x17ed('0x19')+_0x4533bc[_0x17ed('0xc')]+_0x17ed('0x1a')+_0x53ec2a['id']);}return _0x74b493['CmHopper']['create']({'phone':_0x4533bc[_0x17ed('0xc')],'ContactId':_0x4533bc['id'],'ListId':_0x4533bc[_0x17ed('0x1b')],'priority':_0x4533bc[_0x17ed('0x1c')]?_0x4533bc[_0x17ed('0x1c')]:0x2,'scheduledat':_0x4533bc[_0x17ed('0x1d')]?_0x4533bc['scheduledat']:moment()[_0x17ed('0x1e')](_0x17ed('0x1f')),'callback':_0x4533bc['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4533bc[_0x17ed('0x20')]?_0x4533bc[_0x17ed('0x20')]:undefined,'callbackat':_0x4533bc['callbackUniqueid']?moment()[_0x17ed('0x1e')](_0x17ed('0x1f')):undefined,'VoiceQueueId':_0x53ec2a['id']});})[_0x17ed('0x21')](function(_0x390342){_0x30a0c6(_0x390342);});});};var _0x3918e4=function(_0x2e5f56){return new BPromise(function(_0x43243e,_0x50f6a3){_0x74b493[_0x17ed('0x22')][_0x17ed('0x17')]({'where':{'phone':_0x4533bc['phone'],'VoiceQueueId':_0x2e5f56['id']}})['then'](function(_0x464799){if(!_['isNil'](_0x464799)){throw new Error('cmContact,\x20afterCreate\x20'+_0x4533bc['phone']+_0x17ed('0x23')+_0x2e5f56['id']);}return _0x74b493['CmHopperFinal'][_0x17ed('0x17')]({'where':{'calleridnum':_0x4533bc[_0x17ed('0xc')],'VoiceQueueId':_0x2e5f56['id']}});})[_0x17ed('0x18')](function(_0x5bdca1){if(!_[_0x17ed('0x24')](_0x5bdca1)){throw new Error(_0x17ed('0x25')+_0x4533bc[_0x17ed('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x2e5f56['id']);}return _0x74b493['CmHopper'][_0x17ed('0x26')]({'phone':_0x4533bc[_0x17ed('0xc')],'ContactId':_0x4533bc['id'],'ListId':_0x4533bc[_0x17ed('0x1b')],'priority':_0x4533bc['priority']?_0x4533bc[_0x17ed('0x1c')]:0x2,'scheduledat':_0x4533bc[_0x17ed('0x1d')]?_0x4533bc[_0x17ed('0x1d')]:moment()[_0x17ed('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4533bc[_0x17ed('0x20')]?!![]:![],'callbackuniqueid':_0x4533bc[_0x17ed('0x20')]?_0x4533bc['callbackUniqueid']:undefined,'callbackat':_0x4533bc[_0x17ed('0x20')]?moment()[_0x17ed('0x1e')](_0x17ed('0x1f')):undefined,'VoiceQueueId':_0x2e5f56['id']});})['catch'](function(_0x3a9f86){_0x50f6a3(_0x3a9f86);});});};function _0x4544ec(){return function(_0x4087e5){logger[_0x17ed('0x14')]('cmContact',_0x17ed('0x16'),util['inspect'](_0x4087e5,{'showHidden':![],'depth':null}));};}var _0x3dd761=function(_0x3f516f){return new BPromise(function(_0x1f091d,_0x8ed855){_0x74b493['CmHopper'][_0x17ed('0x17')]({'where':{'phone':_0x4533bc[_0x17ed('0xc')],'CampaignId':_0x3f516f['id']}})[_0x17ed('0x18')](function(_0x2bd7a6){if(!_[_0x17ed('0x24')](_0x2bd7a6)){throw new Error(_0x17ed('0x19')+_0x4533bc[_0x17ed('0xc')]+_0x17ed('0x27')+_0x3f516f['id']);}return _0x74b493['CmHopper'][_0x17ed('0x26')]({'phone':_0x4533bc[_0x17ed('0xc')],'ContactId':_0x4533bc['id'],'ListId':_0x4533bc[_0x17ed('0x1b')],'priority':_0x4533bc[_0x17ed('0x1c')]?_0x4533bc[_0x17ed('0x1c')]:0x2,'scheduledat':_0x4533bc['scheduledat']?_0x4533bc[_0x17ed('0x1d')]:moment()[_0x17ed('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4533bc['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4533bc['callbackUniqueid']?_0x4533bc[_0x17ed('0x20')]:undefined,'callbackat':_0x4533bc['callbackUniqueid']?moment()[_0x17ed('0x1e')](_0x17ed('0x1f')):undefined,'CampaignId':_0x3f516f['id']});})[_0x17ed('0x21')](function(_0x50a56a){_0x8ed855(_0x50a56a);});});};var _0x2101b9=function(_0x3c6547){return new BPromise(function(_0x241c0b,_0x471b09){_0x74b493[_0x17ed('0x22')]['findOne']({'where':{'phone':_0x4533bc[_0x17ed('0xc')],'CampaignId':_0x3c6547['id']}})[_0x17ed('0x18')](function(_0x217162){if(!_[_0x17ed('0x24')](_0x217162)){throw new Error(_0x17ed('0x19')+_0x4533bc[_0x17ed('0xc')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x3c6547['id']);}return _0x74b493['CmHopperFinal'][_0x17ed('0x17')]({'where':{'calleridnum':_0x4533bc[_0x17ed('0xc')],'CampaignId':_0x3c6547['id']}});})['then'](function(_0x6b4bb4){if(!_[_0x17ed('0x24')](_0x6b4bb4)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x4533bc[_0x17ed('0xc')]+_0x17ed('0x28')+_0x3c6547['id']);}return _0x74b493[_0x17ed('0x22')][_0x17ed('0x26')]({'phone':_0x4533bc[_0x17ed('0xc')],'ContactId':_0x4533bc['id'],'ListId':_0x4533bc[_0x17ed('0x1b')],'priority':_0x4533bc[_0x17ed('0x1c')]?_0x4533bc[_0x17ed('0x1c')]:0x2,'scheduledat':_0x4533bc['scheduledat']?_0x4533bc[_0x17ed('0x1d')]:moment()[_0x17ed('0x1e')](_0x17ed('0x1f')),'callback':_0x4533bc[_0x17ed('0x20')]?!![]:![],'callbackuniqueid':_0x4533bc[_0x17ed('0x20')]?_0x4533bc[_0x17ed('0x20')]:undefined,'callbackat':_0x4533bc[_0x17ed('0x20')]?moment()[_0x17ed('0x1e')](_0x17ed('0x1f')):undefined,'CampaignId':_0x3c6547['id']});})[_0x17ed('0x21')](function(_0x1322f1){_0x471b09(_0x1322f1);});});};if(_0x4533bc[_0x17ed('0x1b')]){_0x74b493[_0x17ed('0x29')][_0x17ed('0x2a')]({'where':{'type':_0x17ed('0x2b')},'attributes':['id',_0x17ed('0x2c')],'include':[{'model':_0x74b493[_0x17ed('0x2d')],'as':_0x17ed('0x2e'),'where':{'id':_0x4533bc[_0x17ed('0x1b')]}}]})['then'](function(_0xe6e696){if(_0xe6e696){var _0x3a1164=[];for(var _0x1c2d4c=0x0,_0xb7309b;_0x1c2d4c<_0xe6e696[_0x17ed('0x2f')];_0x1c2d4c+=0x1){_0xb7309b=_0xe6e696[_0x1c2d4c]['get']({'plain':!![]});switch(_0xb7309b[_0x17ed('0x2c')]){case _0x17ed('0x30'):_0x3918e4(_0xb7309b)[_0x17ed('0x21')](_0x3f2851());break;case _0x17ed('0x31'):_0x2ae9aa(_0xb7309b)[_0x17ed('0x21')](_0x3f2851());break;default:_0x74b493[_0x17ed('0x22')][_0x17ed('0x26')]({'phone':_0x4533bc[_0x17ed('0xc')],'ContactId':_0x4533bc['id'],'ListId':_0x4533bc[_0x17ed('0x1b')],'scheduledat':_0x4533bc[_0x17ed('0x1d')]?_0x4533bc[_0x17ed('0x1d')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x4533bc[_0x17ed('0x1c')]?_0x4533bc[_0x17ed('0x1c')]:0x2,'callback':_0x4533bc[_0x17ed('0x20')]?!![]:![],'callbackuniqueid':_0x4533bc[_0x17ed('0x20')]?_0x4533bc[_0x17ed('0x20')]:undefined,'callbackat':_0x4533bc[_0x17ed('0x20')]?moment()[_0x17ed('0x1e')](_0x17ed('0x1f')):undefined,'VoiceQueueId':_0xb7309b['id']})[_0x17ed('0x21')](_0x3f2851());}}}})['then'](function(){return _0x74b493[_0x17ed('0x29')][_0x17ed('0x2a')]({'where':{'type':_0x17ed('0x2b')},'attributes':['id'],'include':[{'model':_0x74b493['CmList'],'as':'BlackLists','where':{'id':_0x4533bc[_0x17ed('0x1b')]}}]})[_0x17ed('0x18')](function(_0x504279){if(_0x504279){var _0x524468=[];for(var _0x56d86f=0x0,_0x2812c9;_0x56d86f<_0x504279[_0x17ed('0x2f')];_0x56d86f+=0x1){_0x2812c9=_0x504279[_0x56d86f][_0x17ed('0x13')]({'plain':!![]});_0x74b493[_0x17ed('0x32')][_0x17ed('0x26')]({'phone':_0x4533bc[_0x17ed('0xc')],'ContactId':_0x4533bc['id'],'ListId':_0x4533bc[_0x17ed('0x1b')],'VoiceQueueId':_0x2812c9['id']})[_0x17ed('0x21')](function(_0x152976){logger[_0x17ed('0x14')](_0x17ed('0x33'),_0x17ed('0x16'),_0x152976['message']);});}}});})[_0x17ed('0x18')](function(){return _0x74b493[_0x17ed('0x34')]['findAll']({'attributes':['id',_0x17ed('0x2c')],'include':[{'model':_0x74b493[_0x17ed('0x2d')],'as':_0x17ed('0x2e'),'where':{'id':_0x4533bc[_0x17ed('0x1b')]}}]})[_0x17ed('0x18')](function(_0x37fcc1){if(_0x37fcc1){var _0x4dbc9b=[];for(var _0xf67f69=0x0,_0x55ac94;_0xf67f69<_0x37fcc1[_0x17ed('0x2f')];_0xf67f69+=0x1){_0x55ac94=_0x37fcc1[_0xf67f69]['get']({'plain':!![]});switch(_0x55ac94[_0x17ed('0x2c')]){case _0x17ed('0x30'):_0x2101b9(_0x55ac94)[_0x17ed('0x21')](_0x4544ec());break;case'onlyIfOpen':_0x3dd761(_0x55ac94)['catch'](_0x4544ec());break;default:_0x74b493[_0x17ed('0x22')][_0x17ed('0x26')]({'phone':_0x4533bc[_0x17ed('0xc')],'ContactId':_0x4533bc['id'],'ListId':_0x4533bc[_0x17ed('0x1b')],'scheduledat':_0x4533bc[_0x17ed('0x1d')]?_0x4533bc[_0x17ed('0x1d')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x4533bc[_0x17ed('0x1c')]?_0x4533bc[_0x17ed('0x1c')]:0x2,'callback':_0x4533bc[_0x17ed('0x20')]?!![]:![],'callbackuniqueid':_0x4533bc[_0x17ed('0x20')]?_0x4533bc['callbackUniqueid']:undefined,'callbackat':_0x4533bc['callbackUniqueid']?moment()[_0x17ed('0x1e')](_0x17ed('0x1f')):undefined,'CampaignId':_0x55ac94['id']})[_0x17ed('0x21')](_0x4544ec());}}}});})[_0x17ed('0x18')](function(){return _0x74b493[_0x17ed('0x34')][_0x17ed('0x2a')]({'attributes':['id'],'include':[{'model':_0x74b493['CmList'],'as':'BlackLists','where':{'id':_0x4533bc[_0x17ed('0x1b')]}}]})['then'](function(_0x3c9272){if(_0x3c9272){var _0x4ba97e=[];for(var _0x475936=0x0,_0x5e8fe5;_0x475936<_0x3c9272[_0x17ed('0x2f')];_0x475936+=0x1){_0x5e8fe5=_0x3c9272[_0x475936][_0x17ed('0x13')]({'plain':!![]});_0x74b493[_0x17ed('0x32')][_0x17ed('0x26')]({'phone':_0x4533bc['phone'],'ContactId':_0x4533bc['id'],'ListId':_0x4533bc[_0x17ed('0x1b')],'CampaignId':_0x5e8fe5['id']})[_0x17ed('0x21')](function(_0x3532c3){logger['error'](_0x17ed('0x33'),_0x17ed('0x16'),_0x3532c3[_0x17ed('0x35')]);});}}});})[_0x17ed('0x18')](function(){_0x4c8f8e();})['catch'](function(_0x1938b9){logger['error'](_0x17ed('0x33'),_0x17ed('0x16'),_0x1938b9['message']);_0x4c8f8e(_0x1938b9);});}else{_0x4c8f8e(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x39b400,_0x1fdfc6,_0x497a8f){var _0x5f3850=_0x15583a[_0x17ed('0x12')];var _0x259251=_0x39b400['get']({'plain':!![]});return _0x5f3850['CmHopper'][_0x17ed('0x2a')]({'raw':!![],'where':{'ListId':_0x259251[_0x17ed('0x1b')],'ContactId':_0x259251['id']}})[_0x17ed('0x18')](function(_0x347141){if(!_[_0x17ed('0x36')](_0x347141)){var _0x11bb6b=[];for(var _0x2c33a2=0x0;_0x2c33a2<_0x347141['length'];_0x2c33a2+=0x1){var _0x570ee4=_0x5f3850[_0x17ed('0x22')][_0x17ed('0x37')]({'where':{'ListId':_0x347141[_0x2c33a2]['ListId'],'ContactId':_0x347141[_0x2c33a2]['ContactId'],'VoiceQueueId':_0x347141[_0x2c33a2][_0x17ed('0x38')],'CampaignId':_0x347141[_0x2c33a2]['CampaignId']}});_0x11bb6b['push'](_0x570ee4);}return BPromise[_0x17ed('0x39')](_0x11bb6b);}})['then'](function(_0x5619c4){logger[_0x17ed('0x3a')](_0x17ed('0x3b'),util['inspect'](_0x5619c4,{'showHidden':![],'depth':null}));_0x497a8f();})[_0x17ed('0x21')](function(_0x31e86e){logger[_0x17ed('0x14')](_0x17ed('0x3c'),util[_0x17ed('0x3d')](_0x31e86e,{'showHidden':![],'depth':null}));_0x497a8f(_0x31e86e);});}}});};