058d0a70d71289b7673ef2f8a321dc8ddaa88f41
[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 _0x3646=['outbound','CmList','Lists','map','all','ListId','BlackLists','CmHopperBlack','exports','define','CmContact','fti_cm_contacts','firstName','lastName','mobile','email','utf8mb4','utf8mb4_unicode_ci','models','get','error','[cmContact][afterCreate]\x20List\x20not\x20found\x20for\x20contact\x20with\x20id\x20','[cmContact][afterCreate]','message','isEmpty','length','destroy','info','[CmContact][afterDestroy][Succesfull]','inspect','catch','[CmContact][afterDestroy][Error]','lodash','../../config/logger','api','moment','../../config/environment/shared','./cmContact.attributes','Campaign','isNil','dialTimezone','findOne','resolve','utcOffset','scheduledat','add','minutes','phone','format','YYYY-MM-DD\x20HH:mm:ss','priority','callbackUniqueid','assign','then','[Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20','VoiceQueueId','CmHopper','create','[OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CampaignId','dialCheckDuplicateType','VoiceQueue','findAll'];(function(_0x272e18,_0x75e43c){var _0x572ca9=function(_0xf2b51a){while(--_0xf2b51a){_0x272e18['push'](_0x272e18['shift']());}};_0x572ca9(++_0x75e43c);}(_0x3646,0xa0));var _0x6364=function(_0x46ac86,_0x284134){_0x46ac86=_0x46ac86-0x0;var _0x1f6552=_0x3646[_0x46ac86];return _0x1f6552;};'use strict';var _=require(_0x6364('0x0'));var util=require('util');var logger=require(_0x6364('0x1'))(_0x6364('0x2'));var moment=require(_0x6364('0x3'));var shared=require(_0x6364('0x4'));var attributes=require(_0x6364('0x5'));function getTimezoneCallbackAt(_0x21c4fb,_0x2fa5de,_0x53df62,_0x4259f1){var _0x1b8b5d=_0x4259f1?_0x6364('0x6'):'VoiceQueue';var _0x27fb2e=_0x53df62['scheduledat']?_0x53df62['scheduledat']:moment()['format']('YYYY-MM-DD\x20HH:mm:ss');if(_[_0x6364('0x7')](_0x53df62[_0x6364('0x8')])){return Promise['resolve'](_0x27fb2e);}return _0x21c4fb[_0x1b8b5d][_0x6364('0x9')]({'where':{'id':_0x2fa5de}})['then'](function(_0x788629){if(_[_0x6364('0x7')](_0x788629)||_[_0x6364('0x7')](_0x788629[_0x6364('0x8')])){return Promise[_0x6364('0xa')](_0x27fb2e);}var _0x128be4=shared['timezones'];var _0x2c3178=_0x128be4[_0x788629['dialTimezone']];var _0x495344=_0x128be4[_0x53df62[_0x6364('0x8')]];if(_[_0x6364('0x7')](_0x2c3178)&&_[_0x6364('0x7')](_0x495344)){return Promise[_0x6364('0xa')](_0x27fb2e);}var _0x22ba1e=_0x2c3178['utcOffset']-_0x495344[_0x6364('0xb')];var _0x2fbe45=_0x53df62['scheduledat']?_0x53df62[_0x6364('0xc')]:moment();_0x27fb2e=moment(_0x2fbe45)[_0x6364('0xd')](_0x22ba1e,_0x6364('0xe'))['format']('YYYY-MM-DD\x20HH:mm:ss');return Promise[_0x6364('0xa')](_0x27fb2e);});}function getNewHopperPayload(_0x593a55){return{'phone':_0x593a55[_0x6364('0xf')],'ContactId':_0x593a55['id'],'ListId':_0x593a55['ListId'],'scheduledat':_0x593a55[_0x6364('0xc')]?_0x593a55[_0x6364('0xc')]:moment()[_0x6364('0x10')](_0x6364('0x11')),'priority':_0x593a55[_0x6364('0x12')]?_0x593a55[_0x6364('0x12')]:0x2,'callback':_0x593a55[_0x6364('0x13')]?!![]:![],'callbackuniqueid':_0x593a55['callbackUniqueid']?_0x593a55[_0x6364('0x13')]:undefined,'callbackat':_0x593a55[_0x6364('0x13')]?moment()[_0x6364('0x10')](_0x6364('0x11')):undefined};}function handleAlwaysCheckDuplicate(_0x5641c8,_0x1fcc12,_0x99d07d,_0x53ea9c){var _0x17596d={'phone':_0x99d07d['phone']};var _0x3141c9={'calleridnum':_0x99d07d[_0x6364('0xf')]};if(_0x53ea9c){Object[_0x6364('0x14')](_0x17596d,{'CampaignId':_0x1fcc12['id']});Object[_0x6364('0x14')](_0x3141c9,{'CampaignId':_0x1fcc12['id']});}else{Object[_0x6364('0x14')](_0x17596d,{'VoiceQueueId':_0x1fcc12['id']});Object[_0x6364('0x14')](_0x3141c9,{'VoiceQueueId':_0x1fcc12['id']});}return _0x5641c8['CmHopper'][_0x6364('0x9')]({'where':_0x17596d})[_0x6364('0x15')](function(_0x31525a){if(_0x31525a){throw new Error(_0x6364('0x16')+_0x99d07d[_0x6364('0xf')]+_0x6364('0x17')+_0x1fcc12['id']);}return _0x5641c8['CmHopperFinal'][_0x6364('0x9')]({'where':_0x3141c9});})[_0x6364('0x15')](function(_0x33e0f3){if(_0x33e0f3){throw new Error('[Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x99d07d['phone']+_0x6364('0x17')+_0x1fcc12['id']);}var _0x201bdb=getNewHopperPayload(_0x99d07d);if(_0x53ea9c){_0x201bdb['CampaignId']=_0x1fcc12['id'];}else{_0x201bdb[_0x6364('0x18')]=_0x1fcc12['id'];}return _0x5641c8[_0x6364('0x19')][_0x6364('0x1a')](_0x201bdb);});}function handleOnlyIfOpenCheckDuplicate(_0x50f375,_0x303494,_0x25d20f,_0x4d2426){var _0x2a1c23={'phone':_0x25d20f[_0x6364('0xf')]};if(_0x4d2426){Object['assign'](_0x2a1c23,{'CampaignId':_0x303494['id']});}else{Object['assign'](_0x2a1c23,{'VoiceQueueId':_0x303494['id']});}return _0x50f375[_0x6364('0x19')][_0x6364('0x9')]({'where':_0x2a1c23})[_0x6364('0x15')](function(_0xc94fd2){if(_0xc94fd2){throw new Error(_0x6364('0x1b')+_0x25d20f[_0x6364('0xf')]+_0x6364('0x17')+_0x303494['id']);}var _0x326fa7=getNewHopperPayload(_0x25d20f);if(_0x4d2426){_0x326fa7[_0x6364('0x1c')]=_0x303494['id'];}else{_0x326fa7[_0x6364('0x18')]=_0x303494['id'];}return _0x50f375[_0x6364('0x19')][_0x6364('0x1a')](_0x326fa7);});}function handleNeverCheckDuplicate(_0x40595e,_0x5b8c3a,_0x353408){var _0x24fe77=getNewHopperPayload(_0x353408);_0x24fe77[_0x6364('0x18')]=_0x5b8c3a['id'];return _0x40595e[_0x6364('0x19')]['create'](_0x24fe77);}function handleCheckDuplicate(_0x152834,_0x5745fd,_0x10ae87,_0x3c9a04){return getTimezoneCallbackAt(_0x152834,_0x5745fd,_0x10ae87,_0x3c9a04)[_0x6364('0x15')](function(_0x3c3458){_0x10ae87['scheduledat']=_0x3c3458;switch(_0x5745fd[_0x6364('0x1d')]){case'always':return handleAlwaysCheckDuplicate(_0x152834,_0x5745fd,_0x10ae87,_0x3c9a04);case'onlyIfOpen':return handleOnlyIfOpenCheckDuplicate(_0x152834,_0x5745fd,_0x10ae87,_0x3c9a04);default:return handleNeverCheckDuplicate(_0x152834,_0x5745fd,_0x10ae87);}});}function createHopperForVoiceQueues(_0x216a4f,_0x133b9f){return _0x216a4f[_0x6364('0x1e')][_0x6364('0x1f')]({'where':{'type':_0x6364('0x20')},'attributes':['id',_0x6364('0x1d'),_0x6364('0x8')],'include':[{'model':_0x216a4f[_0x6364('0x21')],'as':_0x6364('0x22'),'where':{'id':_0x133b9f['ListId']}}],'raw':!![]})[_0x6364('0x15')](function(_0x23ea4f){var _0x2d4ee4=_0x23ea4f[_0x6364('0x23')](function(_0x120e46){return handleCheckDuplicate(_0x216a4f,_0x120e46,_0x133b9f,![]);});return Promise[_0x6364('0x24')](_0x2d4ee4);});}function createHopperForCampaigns(_0xbee97f,_0x4be9aa){return _0xbee97f[_0x6364('0x6')][_0x6364('0x1f')]({'attributes':['id',_0x6364('0x1d'),_0x6364('0x8')],'include':[{'model':_0xbee97f[_0x6364('0x21')],'as':_0x6364('0x22'),'where':{'id':_0x4be9aa[_0x6364('0x25')]}}],'raw':!![]})[_0x6364('0x15')](function(_0xff69af){var _0x3214c6=_0xff69af[_0x6364('0x23')](function(_0x4d828b){return handleCheckDuplicate(_0xbee97f,_0x4d828b,_0x4be9aa,!![]);});return Promise[_0x6364('0x24')](_0x3214c6);});}function createHopperBlackForVoiceQueues(_0x26e840,_0x421f59){return _0x26e840[_0x6364('0x1e')][_0x6364('0x1f')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x26e840[_0x6364('0x21')],'as':_0x6364('0x26'),'where':{'id':_0x421f59[_0x6364('0x25')]}}],'raw':!![]})[_0x6364('0x15')](function(_0xce2bca){var _0x352ccd=_0xce2bca[_0x6364('0x23')](function(_0x22e5bd){return _0x26e840[_0x6364('0x27')][_0x6364('0x1a')]({'phone':_0x421f59[_0x6364('0xf')],'ContactId':_0x421f59['id'],'ListId':_0x421f59[_0x6364('0x25')],'VoiceQueueId':_0x22e5bd['id']});});return Promise[_0x6364('0x24')](_0x352ccd);});}function createHopperBlackForCampaigns(_0x28ad9a,_0x26fac3){return _0x28ad9a['Campaign'][_0x6364('0x1f')]({'attributes':['id'],'include':[{'model':_0x28ad9a[_0x6364('0x21')],'as':'BlackLists','where':{'id':_0x26fac3[_0x6364('0x25')]}}],'raw':!![]})[_0x6364('0x15')](function(_0x143f64){var _0x571d77=_0x143f64[_0x6364('0x23')](function(_0x37a06a){return _0x28ad9a[_0x6364('0x27')][_0x6364('0x1a')]({'phone':_0x26fac3[_0x6364('0xf')],'ContactId':_0x26fac3['id'],'ListId':_0x26fac3['ListId'],'CampaignId':_0x37a06a['id']});});return Promise[_0x6364('0x24')](_0x571d77);});}module[_0x6364('0x28')]=function(_0x465a1c){return _0x465a1c[_0x6364('0x29')](_0x6364('0x2a'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x6364('0xf'),'fields':[_0x6364('0xf')]},{'name':_0x6364('0x2b'),'fields':[_0x6364('0x2c'),_0x6364('0x2d'),'phone',_0x6364('0x2e'),'fax',_0x6364('0x2f')],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x6364('0x30'),'collate':_0x6364('0x31'),'hooks':{'afterCreate':function(_0x4940c5,_0x122201,_0x293eef){var _0x10b1fa=_0x465a1c[_0x6364('0x32')];var _0x2000b1=_0x4940c5[_0x6364('0x33')]({'plain':!![]});if(!_0x2000b1[_0x6364('0x25')]){logger[_0x6364('0x34')](_0x6364('0x35')+_0x2000b1['id']);return _0x293eef();}if(!_0x2000b1[_0x6364('0xf')]){return _0x293eef();}return createHopperForVoiceQueues(_0x10b1fa,_0x2000b1)[_0x6364('0x15')](function(){return createHopperBlackForVoiceQueues(_0x10b1fa,_0x2000b1);})['then'](function(){return createHopperForCampaigns(_0x10b1fa,_0x2000b1);})[_0x6364('0x15')](function(){return createHopperBlackForCampaigns(_0x10b1fa,_0x2000b1);})[_0x6364('0x15')](function(){return _0x293eef();})['catch'](function(_0x10dc2d){logger[_0x6364('0x34')](_0x6364('0x36'),_0x10dc2d[_0x6364('0x37')]);_0x293eef();});},'afterDestroy':function(_0x542182,_0x5d5f68,_0x2983f6){var _0x1fb31f=_0x465a1c['models'];var _0x54a9f9=_0x542182['get']({'plain':!![]});return _0x1fb31f['CmHopper']['findAll']({'raw':!![],'where':{'ListId':_0x54a9f9['ListId'],'ContactId':_0x54a9f9['id']}})[_0x6364('0x15')](function(_0x7abca9){if(!_[_0x6364('0x38')](_0x7abca9)){var _0x4950d7=[];for(var _0x1dc130=0x0;_0x1dc130<_0x7abca9[_0x6364('0x39')];_0x1dc130+=0x1){var _0x4203e7=_0x1fb31f['CmHopper'][_0x6364('0x3a')]({'where':{'ListId':_0x7abca9[_0x1dc130]['ListId'],'ContactId':_0x7abca9[_0x1dc130]['ContactId'],'VoiceQueueId':_0x7abca9[_0x1dc130][_0x6364('0x18')],'CampaignId':_0x7abca9[_0x1dc130][_0x6364('0x1c')]}});_0x4950d7['push'](_0x4203e7);}return Promise['all'](_0x4950d7);}})['then'](function(_0x40550a){logger[_0x6364('0x3b')](_0x6364('0x3c'),util[_0x6364('0x3d')](_0x40550a,{'showHidden':![],'depth':null}));_0x2983f6();})[_0x6364('0x3e')](function(_0x1db6e1){logger[_0x6364('0x34')](_0x6364('0x3f'),util[_0x6364('0x3d')](_0x1db6e1,{'showHidden':![],'depth':null}));_0x2983f6(_0x1db6e1);});}}});};