3be2f4bc4ab06db475c80440fe8d6dcda56a92a8
[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 _0xdded=['path','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','mobile','email','models','get','error','cmContact','afterCreate','inspect','CmHopper','findOne','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','callbackUniqueid','format','YYYY-MM-DD\x20HH:mm:ss','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','then','cmContact,\x20afterCreate,\x20','catch','\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','findAll','dialCheckDuplicateType','Lists','always','onlyIfOpen','outbound','CmList','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','length','BlackLists','isEmpty','destroy','ContactId','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5f25b3,_0x35481a){var _0x4ab9bf=function(_0x49baf7){while(--_0x49baf7){_0x5f25b3['push'](_0x5f25b3['shift']());}};_0x4ab9bf(++_0x35481a);}(_0xdded,0x17a));var _0xddde=function(_0x39c4bb,_0x2e7841){_0x39c4bb=_0x39c4bb-0x0;var _0x13b9ad=_0xdded[_0x39c4bb];return _0x13b9ad;};'use strict';var _=require(_0xddde('0x0'));var util=require(_0xddde('0x1'));var logger=require(_0xddde('0x2'))(_0xddde('0x3'));var moment=require(_0xddde('0x4'));var BPromise=require(_0xddde('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xddde('0x6'));var rimraf=require(_0xddde('0x7'));var config=require(_0xddde('0x8'));var attributes=require(_0xddde('0x9'));module[_0xddde('0xa')]=function(_0x39fd85,_0x3c3021){return _0x39fd85[_0xddde('0xb')](_0xddde('0xc'),attributes,{'tableName':_0xddde('0xd'),'paranoid':!![],'indexes':[{'name':_0xddde('0xe'),'fields':['phone']},{'name':_0xddde('0xf'),'fields':['firstName','lastName','phone',_0xddde('0x10'),'fax',_0xddde('0x11')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x473781,_0x2880de,_0xaaed0c){var _0x27a882=_0x39fd85[_0xddde('0x12')];var _0xb8ed21=_0x473781[_0xddde('0x13')]({'plain':!![]});function _0x35172e(){return function(_0x57e121){logger[_0xddde('0x14')](_0xddde('0x15'),_0xddde('0x16'),util[_0xddde('0x17')](_0x57e121,{'showHidden':![],'depth':null}));};}var _0x7cbcee=function(_0x31c111){return new BPromise(function(_0x491be5,_0x20b440){_0x27a882[_0xddde('0x18')][_0xddde('0x19')]({'where':{'phone':_0xb8ed21['phone'],'VoiceQueueId':_0x31c111['id']}})['then'](function(_0xadd497){if(!_['isNil'](_0xadd497)){throw new Error(_0xddde('0x1a')+_0xb8ed21[_0xddde('0xe')]+_0xddde('0x1b')+_0x31c111['id']);}return _0x27a882[_0xddde('0x18')][_0xddde('0x1c')]({'phone':_0xb8ed21['phone'],'ContactId':_0xb8ed21['id'],'ListId':_0xb8ed21[_0xddde('0x1d')],'priority':_0xb8ed21[_0xddde('0x1e')]?_0xb8ed21['priority']:0x2,'scheduledat':_0xb8ed21[_0xddde('0x1f')]?_0xb8ed21[_0xddde('0x1f')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0xb8ed21[_0xddde('0x20')]?!![]:![],'callbackuniqueid':_0xb8ed21['callbackUniqueid']?_0xb8ed21[_0xddde('0x20')]:undefined,'callbackat':_0xb8ed21['callbackUniqueid']?moment()[_0xddde('0x21')](_0xddde('0x22')):undefined,'VoiceQueueId':_0x31c111['id']});})['catch'](function(_0x4ae0a8){_0x20b440(_0x4ae0a8);});});};var _0x3cfd91=function(_0x107bca){return new BPromise(function(_0x97bb0f,_0x275f76){_0x27a882[_0xddde('0x18')][_0xddde('0x19')]({'where':{'phone':_0xb8ed21[_0xddde('0xe')],'VoiceQueueId':_0x107bca['id']}})['then'](function(_0x59320f){if(!_[_0xddde('0x23')](_0x59320f)){throw new Error(_0xddde('0x1a')+_0xb8ed21[_0xddde('0xe')]+_0xddde('0x24')+_0x107bca['id']);}return _0x27a882[_0xddde('0x25')]['findOne']({'where':{'calleridnum':_0xb8ed21[_0xddde('0xe')],'VoiceQueueId':_0x107bca['id']}});})[_0xddde('0x26')](function(_0x4ca351){if(!_['isNil'](_0x4ca351)){throw new Error(_0xddde('0x27')+_0xb8ed21[_0xddde('0xe')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x107bca['id']);}return _0x27a882[_0xddde('0x18')][_0xddde('0x1c')]({'phone':_0xb8ed21['phone'],'ContactId':_0xb8ed21['id'],'ListId':_0xb8ed21[_0xddde('0x1d')],'priority':_0xb8ed21[_0xddde('0x1e')]?_0xb8ed21[_0xddde('0x1e')]:0x2,'scheduledat':_0xb8ed21[_0xddde('0x1f')]?_0xb8ed21[_0xddde('0x1f')]:moment()[_0xddde('0x21')](_0xddde('0x22')),'callback':_0xb8ed21[_0xddde('0x20')]?!![]:![],'callbackuniqueid':_0xb8ed21[_0xddde('0x20')]?_0xb8ed21[_0xddde('0x20')]:undefined,'callbackat':_0xb8ed21[_0xddde('0x20')]?moment()[_0xddde('0x21')](_0xddde('0x22')):undefined,'VoiceQueueId':_0x107bca['id']});})[_0xddde('0x28')](function(_0x5e04d6){_0x275f76(_0x5e04d6);});});};function _0x380acb(){return function(_0x5312bb){logger[_0xddde('0x14')](_0xddde('0x15'),_0xddde('0x16'),util['inspect'](_0x5312bb,{'showHidden':![],'depth':null}));};}var _0x49b18c=function(_0x973fc9){return new BPromise(function(_0x3be6ea,_0x45c3b8){_0x27a882['CmHopper']['findOne']({'where':{'phone':_0xb8ed21[_0xddde('0xe')],'CampaignId':_0x973fc9['id']}})[_0xddde('0x26')](function(_0x2ba559){if(!_[_0xddde('0x23')](_0x2ba559)){throw new Error('cmContact,\x20afterCreate\x20'+_0xb8ed21[_0xddde('0xe')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x973fc9['id']);}return _0x27a882[_0xddde('0x18')][_0xddde('0x1c')]({'phone':_0xb8ed21[_0xddde('0xe')],'ContactId':_0xb8ed21['id'],'ListId':_0xb8ed21[_0xddde('0x1d')],'priority':_0xb8ed21[_0xddde('0x1e')]?_0xb8ed21[_0xddde('0x1e')]:0x2,'scheduledat':_0xb8ed21[_0xddde('0x1f')]?_0xb8ed21[_0xddde('0x1f')]:moment()[_0xddde('0x21')](_0xddde('0x22')),'callback':_0xb8ed21[_0xddde('0x20')]?!![]:![],'callbackuniqueid':_0xb8ed21[_0xddde('0x20')]?_0xb8ed21['callbackUniqueid']:undefined,'callbackat':_0xb8ed21[_0xddde('0x20')]?moment()[_0xddde('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x973fc9['id']});})['catch'](function(_0x49c0ab){_0x45c3b8(_0x49c0ab);});});};var _0x143c85=function(_0x384d48){return new BPromise(function(_0x4570ee,_0x12431d){_0x27a882[_0xddde('0x18')][_0xddde('0x19')]({'where':{'phone':_0xb8ed21[_0xddde('0xe')],'CampaignId':_0x384d48['id']}})['then'](function(_0x554724){if(!_[_0xddde('0x23')](_0x554724)){throw new Error('cmContact,\x20afterCreate\x20'+_0xb8ed21[_0xddde('0xe')]+_0xddde('0x29')+_0x384d48['id']);}return _0x27a882['CmHopperFinal'][_0xddde('0x19')]({'where':{'calleridnum':_0xb8ed21[_0xddde('0xe')],'CampaignId':_0x384d48['id']}});})[_0xddde('0x26')](function(_0x535e82){if(!_['isNil'](_0x535e82)){throw new Error(_0xddde('0x27')+_0xb8ed21['phone']+_0xddde('0x2a')+_0x384d48['id']);}return _0x27a882[_0xddde('0x18')][_0xddde('0x1c')]({'phone':_0xb8ed21[_0xddde('0xe')],'ContactId':_0xb8ed21['id'],'ListId':_0xb8ed21[_0xddde('0x1d')],'priority':_0xb8ed21[_0xddde('0x1e')]?_0xb8ed21['priority']:0x2,'scheduledat':_0xb8ed21[_0xddde('0x1f')]?_0xb8ed21[_0xddde('0x1f')]:moment()[_0xddde('0x21')](_0xddde('0x22')),'callback':_0xb8ed21[_0xddde('0x20')]?!![]:![],'callbackuniqueid':_0xb8ed21['callbackUniqueid']?_0xb8ed21[_0xddde('0x20')]:undefined,'callbackat':_0xb8ed21[_0xddde('0x20')]?moment()[_0xddde('0x21')](_0xddde('0x22')):undefined,'CampaignId':_0x384d48['id']});})[_0xddde('0x28')](function(_0xb0c016){_0x12431d(_0xb0c016);});});};if(_0xb8ed21[_0xddde('0x1d')]){_0x27a882[_0xddde('0x2b')][_0xddde('0x2c')]({'where':{'type':'outbound'},'attributes':['id',_0xddde('0x2d')],'include':[{'model':_0x27a882['CmList'],'as':_0xddde('0x2e'),'where':{'id':_0xb8ed21[_0xddde('0x1d')]}}]})['then'](function(_0x28069c){if(_0x28069c){var _0x3e7667=[];for(var _0x3b154b=0x0,_0x4c70ae;_0x3b154b<_0x28069c['length'];_0x3b154b+=0x1){_0x4c70ae=_0x28069c[_0x3b154b]['get']({'plain':!![]});switch(_0x4c70ae[_0xddde('0x2d')]){case _0xddde('0x2f'):_0x3cfd91(_0x4c70ae)[_0xddde('0x28')](_0x35172e());break;case _0xddde('0x30'):_0x7cbcee(_0x4c70ae)['catch'](_0x35172e());break;default:_0x27a882[_0xddde('0x18')][_0xddde('0x1c')]({'phone':_0xb8ed21[_0xddde('0xe')],'ContactId':_0xb8ed21['id'],'ListId':_0xb8ed21['ListId'],'scheduledat':_0xb8ed21[_0xddde('0x1f')]?_0xb8ed21[_0xddde('0x1f')]:moment()[_0xddde('0x21')](_0xddde('0x22')),'priority':_0xb8ed21[_0xddde('0x1e')]?_0xb8ed21['priority']:0x2,'callback':_0xb8ed21[_0xddde('0x20')]?!![]:![],'callbackuniqueid':_0xb8ed21['callbackUniqueid']?_0xb8ed21[_0xddde('0x20')]:undefined,'callbackat':_0xb8ed21['callbackUniqueid']?moment()[_0xddde('0x21')](_0xddde('0x22')):undefined,'VoiceQueueId':_0x4c70ae['id']})[_0xddde('0x28')](_0x35172e());}}}})[_0xddde('0x26')](function(){return _0x27a882[_0xddde('0x2b')][_0xddde('0x2c')]({'where':{'type':_0xddde('0x31')},'attributes':['id'],'include':[{'model':_0x27a882[_0xddde('0x32')],'as':'BlackLists','where':{'id':_0xb8ed21[_0xddde('0x1d')]}}]})[_0xddde('0x26')](function(_0x26133a){if(_0x26133a){var _0xe9610e=[];for(var _0x37ff35=0x0,_0x409485;_0x37ff35<_0x26133a['length'];_0x37ff35+=0x1){_0x409485=_0x26133a[_0x37ff35][_0xddde('0x13')]({'plain':!![]});_0x27a882[_0xddde('0x33')][_0xddde('0x1c')]({'phone':_0xb8ed21[_0xddde('0xe')],'ContactId':_0xb8ed21['id'],'ListId':_0xb8ed21[_0xddde('0x1d')],'VoiceQueueId':_0x409485['id']})['catch'](function(_0x2a8537){logger[_0xddde('0x14')](_0xddde('0x34'),_0xddde('0x16'),_0x2a8537[_0xddde('0x35')]);});}}});})[_0xddde('0x26')](function(){return _0x27a882[_0xddde('0x36')][_0xddde('0x2c')]({'attributes':['id',_0xddde('0x2d')],'include':[{'model':_0x27a882[_0xddde('0x32')],'as':_0xddde('0x2e'),'where':{'id':_0xb8ed21[_0xddde('0x1d')]}}]})[_0xddde('0x26')](function(_0x1966dc){if(_0x1966dc){var _0x3947ee=[];for(var _0xd58937=0x0,_0x34ccf1;_0xd58937<_0x1966dc[_0xddde('0x37')];_0xd58937+=0x1){_0x34ccf1=_0x1966dc[_0xd58937]['get']({'plain':!![]});switch(_0x34ccf1['dialCheckDuplicateType']){case _0xddde('0x2f'):_0x143c85(_0x34ccf1)[_0xddde('0x28')](_0x380acb());break;case _0xddde('0x30'):_0x49b18c(_0x34ccf1)[_0xddde('0x28')](_0x380acb());break;default:_0x27a882[_0xddde('0x18')]['create']({'phone':_0xb8ed21[_0xddde('0xe')],'ContactId':_0xb8ed21['id'],'ListId':_0xb8ed21[_0xddde('0x1d')],'scheduledat':_0xb8ed21[_0xddde('0x1f')]?_0xb8ed21[_0xddde('0x1f')]:moment()[_0xddde('0x21')](_0xddde('0x22')),'priority':_0xb8ed21['priority']?_0xb8ed21[_0xddde('0x1e')]:0x2,'callback':_0xb8ed21[_0xddde('0x20')]?!![]:![],'callbackuniqueid':_0xb8ed21[_0xddde('0x20')]?_0xb8ed21['callbackUniqueid']:undefined,'callbackat':_0xb8ed21[_0xddde('0x20')]?moment()[_0xddde('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x34ccf1['id']})['catch'](_0x380acb());}}}});})['then'](function(){return _0x27a882[_0xddde('0x36')]['findAll']({'attributes':['id'],'include':[{'model':_0x27a882[_0xddde('0x32')],'as':_0xddde('0x38'),'where':{'id':_0xb8ed21[_0xddde('0x1d')]}}]})[_0xddde('0x26')](function(_0x44b52c){if(_0x44b52c){var _0x58d4bc=[];for(var _0x5cdc94=0x0,_0x4775b4;_0x5cdc94<_0x44b52c[_0xddde('0x37')];_0x5cdc94+=0x1){_0x4775b4=_0x44b52c[_0x5cdc94]['get']({'plain':!![]});_0x27a882[_0xddde('0x33')][_0xddde('0x1c')]({'phone':_0xb8ed21[_0xddde('0xe')],'ContactId':_0xb8ed21['id'],'ListId':_0xb8ed21[_0xddde('0x1d')],'CampaignId':_0x4775b4['id']})[_0xddde('0x28')](function(_0x2f2f0c){logger[_0xddde('0x14')](_0xddde('0x34'),_0xddde('0x16'),_0x2f2f0c[_0xddde('0x35')]);});}}});})['then'](function(){_0xaaed0c();})[_0xddde('0x28')](function(_0x4f92fa){logger[_0xddde('0x14')](_0xddde('0x34'),'afterCreate',_0x4f92fa['message']);_0xaaed0c(_0x4f92fa);});}else{_0xaaed0c(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x1430bb,_0x51589c,_0x31eb36){var _0x20f512=_0x39fd85[_0xddde('0x12')];var _0x4ea2ad=_0x1430bb[_0xddde('0x13')]({'plain':!![]});return _0x20f512[_0xddde('0x18')][_0xddde('0x2c')]({'raw':!![],'where':{'ListId':_0x4ea2ad['ListId'],'ContactId':_0x4ea2ad['id']}})[_0xddde('0x26')](function(_0x195d06){if(!_[_0xddde('0x39')](_0x195d06)){var _0x98c824=[];for(var _0xa89ab2=0x0;_0xa89ab2<_0x195d06['length'];_0xa89ab2+=0x1){var _0x2d06b7=_0x20f512['CmHopper'][_0xddde('0x3a')]({'where':{'ListId':_0x195d06[_0xa89ab2][_0xddde('0x1d')],'ContactId':_0x195d06[_0xa89ab2][_0xddde('0x3b')],'VoiceQueueId':_0x195d06[_0xa89ab2]['VoiceQueueId'],'CampaignId':_0x195d06[_0xa89ab2]['CampaignId']}});_0x98c824[_0xddde('0x3c')](_0x2d06b7);}return BPromise['all'](_0x98c824);}})[_0xddde('0x26')](function(_0x14a71f){logger[_0xddde('0x3d')](_0xddde('0x3e'),util[_0xddde('0x17')](_0x14a71f,{'showHidden':![],'depth':null}));_0x31eb36();})[_0xddde('0x28')](function(_0x29b5b1){logger[_0xddde('0x14')](_0xddde('0x3f'),util['inspect'](_0x29b5b1,{'showHidden':![],'depth':null}));_0x31eb36(_0x29b5b1);});}}});};