f62067b7db727e71216b0d9f8a64058a0b81734c
[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 _0x94ca=['then','utcOffset','add','minutes','ListId','priority','callbackUniqueid','phone','assign','CmHopper','[Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20','[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','VoiceQueueId','[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','create','dialCheckDuplicateType','onlyIfOpen','VoiceQueue','findAll','outbound','CmList','Lists','all','map','BlackLists','CmHopperBlack','define','CmContact','cm_contacts','fti_cm_contacts','firstName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','catch','length','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','inspect','lodash','util','../../config/logger','api','../../config/environment/shared','./cmContact.attributes','Campaign','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','resolve','findOne'];(function(_0x339a46,_0x3bfc29){var _0x2514b9=function(_0x21345c){while(--_0x21345c){_0x339a46['push'](_0x339a46['shift']());}};_0x2514b9(++_0x3bfc29);}(_0x94ca,0xea));var _0xa94c=function(_0x2c2596,_0x26f279){_0x2c2596=_0x2c2596-0x0;var _0x269abc=_0x94ca[_0x2c2596];return _0x269abc;};'use strict';var _=require(_0xa94c('0x0'));var util=require(_0xa94c('0x1'));var logger=require(_0xa94c('0x2'))(_0xa94c('0x3'));var moment=require('moment');var shared=require(_0xa94c('0x4'));var attributes=require(_0xa94c('0x5'));function getTimezoneCallbackAt(_0x27a010,_0x500a4d,_0x33a5b0,_0x175dba){var _0x49cf3e=_0x175dba?_0xa94c('0x6'):'VoiceQueue';var _0x275633=_0x33a5b0[_0xa94c('0x7')]?_0x33a5b0[_0xa94c('0x7')]:moment()[_0xa94c('0x8')](_0xa94c('0x9'));if(_[_0xa94c('0xa')](_0x33a5b0[_0xa94c('0xb')])){return Promise[_0xa94c('0xc')](_0x275633);}return _0x27a010[_0x49cf3e][_0xa94c('0xd')]({'where':{'id':_0x500a4d}})[_0xa94c('0xe')](function(_0x37e048){if(_[_0xa94c('0xa')](_0x37e048)||_[_0xa94c('0xa')](_0x37e048[_0xa94c('0xb')])){return Promise[_0xa94c('0xc')](_0x275633);}var _0x5be2bc=shared['timezones'];var _0x45556a=_0x5be2bc[_0x37e048['dialTimezone']];var _0x249d1e=_0x5be2bc[_0x33a5b0['dialTimezone']];if(_[_0xa94c('0xa')](_0x45556a)&&_[_0xa94c('0xa')](_0x249d1e)){return Promise[_0xa94c('0xc')](_0x275633);}var _0x4cfae6=_0x45556a[_0xa94c('0xf')]-_0x249d1e[_0xa94c('0xf')];var _0x4af9df=_0x33a5b0[_0xa94c('0x7')]?_0x33a5b0[_0xa94c('0x7')]:moment();_0x275633=moment(_0x4af9df)[_0xa94c('0x10')](_0x4cfae6,_0xa94c('0x11'))[_0xa94c('0x8')]('YYYY-MM-DD\x20HH:mm:ss');return Promise[_0xa94c('0xc')](_0x275633);});}function getNewHopperPayload(_0x247346){return{'phone':_0x247346['phone'],'ContactId':_0x247346['id'],'ListId':_0x247346[_0xa94c('0x12')],'scheduledat':_0x247346['scheduledat']?_0x247346[_0xa94c('0x7')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x247346[_0xa94c('0x13')]?_0x247346[_0xa94c('0x13')]:0x2,'callback':_0x247346[_0xa94c('0x14')]?!![]:![],'callbackuniqueid':_0x247346[_0xa94c('0x14')]?_0x247346[_0xa94c('0x14')]:undefined,'callbackat':_0x247346[_0xa94c('0x14')]?moment()[_0xa94c('0x8')](_0xa94c('0x9')):undefined};}function handleAlwaysCheckDuplicate(_0x247343,_0x2d401b,_0x1a2935,_0x24d999){var _0x4ba275={'phone':_0x1a2935['phone']};var _0x26dff={'calleridnum':_0x1a2935[_0xa94c('0x15')]};if(_0x24d999){Object['assign'](_0x4ba275,{'CampaignId':_0x2d401b['id']});Object['assign'](_0x26dff,{'CampaignId':_0x2d401b['id']});}else{Object[_0xa94c('0x16')](_0x4ba275,{'VoiceQueueId':_0x2d401b['id']});Object[_0xa94c('0x16')](_0x26dff,{'VoiceQueueId':_0x2d401b['id']});}return _0x247343[_0xa94c('0x17')]['findOne']({'where':_0x4ba275})[_0xa94c('0xe')](function(_0x4e17a8){if(_0x4e17a8){throw new Error(_0xa94c('0x18')+_0x1a2935[_0xa94c('0x15')]+_0xa94c('0x19')+_0x2d401b['id']);}return _0x247343['CmHopperFinal'][_0xa94c('0xd')]({'where':_0x26dff});})[_0xa94c('0xe')](function(_0xd91639){if(_0xd91639){throw new Error(_0xa94c('0x1a')+_0x1a2935[_0xa94c('0x15')]+_0xa94c('0x19')+_0x2d401b['id']);}var _0x1d279e=getNewHopperPayload(_0x1a2935);if(_0x24d999){_0x1d279e['CampaignId']=_0x2d401b['id'];}else{_0x1d279e[_0xa94c('0x1b')]=_0x2d401b['id'];}return _0x247343['CmHopper']['create'](_0x1d279e);});}function handleOnlyIfOpenCheckDuplicate(_0x37623f,_0x2680cf,_0x21b597,_0x4befa9){var _0x402eb5={'phone':_0x21b597['phone']};if(_0x4befa9){Object[_0xa94c('0x16')](_0x402eb5,{'CampaignId':_0x2680cf['id']});}else{Object[_0xa94c('0x16')](_0x402eb5,{'VoiceQueueId':_0x2680cf['id']});}return _0x37623f[_0xa94c('0x17')][_0xa94c('0xd')]({'where':_0x402eb5})['then'](function(_0x4c15b1){if(_0x4c15b1){throw new Error(_0xa94c('0x1c')+_0x21b597[_0xa94c('0x15')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x2680cf['id']);}var _0x512467=getNewHopperPayload(_0x21b597);if(_0x4befa9){_0x512467['CampaignId']=_0x2680cf['id'];}else{_0x512467[_0xa94c('0x1b')]=_0x2680cf['id'];}return _0x37623f[_0xa94c('0x17')][_0xa94c('0x1d')](_0x512467);});}function handleNeverCheckDuplicate(_0x2fe799,_0x930d9c,_0x258fe9){var _0x19225a=getNewHopperPayload(_0x258fe9);_0x19225a['VoiceQueueId']=_0x930d9c['id'];return _0x2fe799[_0xa94c('0x17')][_0xa94c('0x1d')](_0x19225a);}function handleCheckDuplicate(_0x55df44,_0x1f3d22,_0x573900,_0xc56575){return getTimezoneCallbackAt(_0x55df44,_0x1f3d22,_0x573900,_0xc56575)['then'](function(_0x2745b6){_0x573900['scheduledat']=_0x2745b6;switch(_0x1f3d22[_0xa94c('0x1e')]){case'always':return handleAlwaysCheckDuplicate(_0x55df44,_0x1f3d22,_0x573900,_0xc56575);case _0xa94c('0x1f'):return handleOnlyIfOpenCheckDuplicate(_0x55df44,_0x1f3d22,_0x573900,_0xc56575);default:return handleNeverCheckDuplicate(_0x55df44,_0x1f3d22,_0x573900);}});}function createHopperForVoiceQueues(_0x3fc4fe,_0x4511e8){return _0x3fc4fe[_0xa94c('0x20')][_0xa94c('0x21')]({'where':{'type':_0xa94c('0x22')},'attributes':['id',_0xa94c('0x1e'),_0xa94c('0xb')],'include':[{'model':_0x3fc4fe[_0xa94c('0x23')],'as':_0xa94c('0x24'),'where':{'id':_0x4511e8[_0xa94c('0x12')]}}],'raw':!![]})[_0xa94c('0xe')](function(_0x162c5e){var _0x49d018=_0x162c5e['map'](function(_0x10ea00){return handleCheckDuplicate(_0x3fc4fe,_0x10ea00,_0x4511e8,![]);});return Promise[_0xa94c('0x25')](_0x49d018);});}function createHopperForCampaigns(_0x54a871,_0xdbc593){return _0x54a871[_0xa94c('0x6')]['findAll']({'attributes':['id',_0xa94c('0x1e'),'dialTimezone'],'include':[{'model':_0x54a871[_0xa94c('0x23')],'as':_0xa94c('0x24'),'where':{'id':_0xdbc593['ListId']}}],'raw':!![]})['then'](function(_0x54d7cb){var _0x215f6c=_0x54d7cb[_0xa94c('0x26')](function(_0x386832){return handleCheckDuplicate(_0x54a871,_0x386832,_0xdbc593,!![]);});return Promise[_0xa94c('0x25')](_0x215f6c);});}function createHopperBlackForVoiceQueues(_0x6fcad8,_0x565ca6){return _0x6fcad8[_0xa94c('0x20')][_0xa94c('0x21')]({'where':{'type':_0xa94c('0x22')},'attributes':['id'],'include':[{'model':_0x6fcad8['CmList'],'as':_0xa94c('0x27'),'where':{'id':_0x565ca6[_0xa94c('0x12')]}}],'raw':!![]})[_0xa94c('0xe')](function(_0x3b85aa){var _0x3b0a94=_0x3b85aa[_0xa94c('0x26')](function(_0x422c7b){return _0x6fcad8[_0xa94c('0x28')][_0xa94c('0x1d')]({'phone':_0x565ca6[_0xa94c('0x15')],'ContactId':_0x565ca6['id'],'ListId':_0x565ca6[_0xa94c('0x12')],'VoiceQueueId':_0x422c7b['id']});});return Promise['all'](_0x3b0a94);});}function createHopperBlackForCampaigns(_0x1d33d7,_0x1264a8){return _0x1d33d7['Campaign'][_0xa94c('0x21')]({'attributes':['id'],'include':[{'model':_0x1d33d7[_0xa94c('0x23')],'as':_0xa94c('0x27'),'where':{'id':_0x1264a8['ListId']}}],'raw':!![]})[_0xa94c('0xe')](function(_0x3c9584){var _0x52866f=_0x3c9584[_0xa94c('0x26')](function(_0x5469ad){return _0x1d33d7['CmHopperBlack'][_0xa94c('0x1d')]({'phone':_0x1264a8[_0xa94c('0x15')],'ContactId':_0x1264a8['id'],'ListId':_0x1264a8['ListId'],'CampaignId':_0x5469ad['id']});});return Promise[_0xa94c('0x25')](_0x52866f);});}module['exports']=function(_0x505a89){return _0x505a89[_0xa94c('0x29')](_0xa94c('0x2a'),attributes,{'tableName':_0xa94c('0x2b'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0xa94c('0x15')]},{'name':_0xa94c('0x2c'),'fields':[_0xa94c('0x2d'),'lastName','phone',_0xa94c('0x2e'),_0xa94c('0x2f'),_0xa94c('0x30')],'type':_0xa94c('0x31')}],'timestamps':!![],'charset':_0xa94c('0x32'),'collate':_0xa94c('0x33'),'hooks':{'afterCreate':function(_0x17b1d1,_0x43e166,_0x208413){var _0x1b344b=_0x505a89['models'];var _0x3f85ec=_0x17b1d1[_0xa94c('0x34')]({'plain':!![]});if(!_0x3f85ec['ListId']){logger[_0xa94c('0x35')](_0xa94c('0x36')+_0x3f85ec['id']);return _0x208413();}if(!_0x3f85ec[_0xa94c('0x15')]){return _0x208413();}return createHopperForVoiceQueues(_0x1b344b,_0x3f85ec)['then'](function(){return createHopperBlackForVoiceQueues(_0x1b344b,_0x3f85ec);})[_0xa94c('0xe')](function(){return createHopperForCampaigns(_0x1b344b,_0x3f85ec);})['then'](function(){return createHopperBlackForCampaigns(_0x1b344b,_0x3f85ec);})[_0xa94c('0xe')](function(){return _0x208413();})[_0xa94c('0x37')](function(_0xdfdd3f){logger[_0xa94c('0x35')]('[cmContact][afterCreate]',_0xdfdd3f['message']);_0x208413();});},'afterDestroy':function(_0x5d6178,_0x206672,_0x23c940){var _0x4d2844=_0x505a89['models'];var _0x1ccd5f=_0x5d6178[_0xa94c('0x34')]({'plain':!![]});return _0x4d2844['CmHopper'][_0xa94c('0x21')]({'raw':!![],'where':{'ListId':_0x1ccd5f['ListId'],'ContactId':_0x1ccd5f['id']}})[_0xa94c('0xe')](function(_0x2b8738){if(!_['isEmpty'](_0x2b8738)){var _0x3cd6a5=[];for(var _0x3c118f=0x0;_0x3c118f<_0x2b8738[_0xa94c('0x38')];_0x3c118f+=0x1){var _0x3714d3=_0x4d2844[_0xa94c('0x17')]['destroy']({'where':{'ListId':_0x2b8738[_0x3c118f][_0xa94c('0x12')],'ContactId':_0x2b8738[_0x3c118f]['ContactId'],'VoiceQueueId':_0x2b8738[_0x3c118f]['VoiceQueueId'],'CampaignId':_0x2b8738[_0x3c118f]['CampaignId']}});_0x3cd6a5[_0xa94c('0x39')](_0x3714d3);}return Promise[_0xa94c('0x25')](_0x3cd6a5);}})[_0xa94c('0xe')](function(_0x4803df){logger[_0xa94c('0x3a')](_0xa94c('0x3b'),util['inspect'](_0x4803df,{'showHidden':![],'depth':null}));_0x23c940();})[_0xa94c('0x37')](function(_0x591a11){logger[_0xa94c('0x35')](_0xa94c('0x3c'),util[_0xa94c('0x3d')](_0x591a11,{'showHidden':![],'depth':null}));_0x23c940(_0x591a11);});}}});};