435e7d54e0f96dc4823c7117f6ec727bd379c20b
[motion2.git] / server / config / socketio.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 _0xb012=['WhatsappQueue','Trunk','user','voice:outbound','ChatQueue','OpenchannelQueue','getVoiceQueues','getChatQueues','getFaxQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','fax','sms','mail','openchannel','telephone:%s','trunk:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','default','setMaxListeners','address','request','connection','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','telephone','agent','type','ivr','UserProfileSection','findOne','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','then','map','where','role','Campaign','%s:queue:%s','length','format','user:%s','query','find','userProfileId','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue'];(function(_0x583121,_0x7a91e6){var _0x4a9736=function(_0x43182c){while(--_0x43182c){_0x583121['push'](_0x583121['shift']());}};_0x4a9736(++_0x7a91e6);}(_0xb012,0x92));var _0x2b01=function(_0x5c0eaf,_0x183874){_0x5c0eaf=_0x5c0eaf-0x0;var _0x15e931=_0xb012[_0x5c0eaf];return _0x15e931;};'use strict';var _=require(_0x2b01('0x0'));var util=require(_0x2b01('0x1'));var BPromise=require(_0x2b01('0x2'));var db=require(_0x2b01('0x3'))['db'];var config=require(_0x2b01('0x4'));var queryQueues={'attributes':['id',_0x2b01('0x5')],'include':[{'as':_0x2b01('0x6'),'model':db[_0x2b01('0x7')],'attributes':['id',_0x2b01('0x5'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x2b01('0x5')],'where':{'role':_0x2b01('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x2b01('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x2b01('0x5')],'where':{'role':_0x2b01('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x2b01('0xa')],'where':{'type':_0x2b01('0xb')}};function getAssociatedResources(_0x13e0e8,_0x4682d2,_0x26bb89){return db[_0x2b01('0xc')][_0x2b01('0xd')]({'where':{'name':_0x13e0e8,'userProfileId':_0x4682d2},'raw':!![]})['then'](function(_0x5231fc){if(_0x5231fc){if(_0x5231fc[_0x2b01('0xe')]){switch(_0x13e0e8){case _0x2b01('0xf'):case _0x2b01('0x10'):case _0x2b01('0x11'):case _0x2b01('0x12'):case _0x2b01('0x13'):case _0x2b01('0x14'):case _0x2b01('0x15'):return db[_0x26bb89][_0x2b01('0x16')](queryQueues);case _0x2b01('0x17'):return db[_0x26bb89][_0x2b01('0x16')](queryTelephones);case _0x2b01('0x18'):return db[_0x26bb89][_0x2b01('0x16')](queryTrunks);case _0x2b01('0x19'):return db[_0x26bb89][_0x2b01('0x16')](queryCampaigns);}}else{return db[_0x2b01('0x1a')][_0x2b01('0x16')]({'attributes':[_0x2b01('0x1b')],'where':{'sectionId':_0x5231fc['id']},'raw':!![]})[_0x2b01('0x1c')](function(_0x3e28be){if(_0x3e28be){var _0x14eb60={'where':{'id':_[_0x2b01('0x1d')](_0x3e28be,_0x2b01('0x1b'))},'raw':!![]};switch(_0x26bb89){case _0x2b01('0x7'):_0x14eb60[_0x2b01('0x1e')][_0x2b01('0x1f')]=_0x2b01('0x8');break;case _0x2b01('0x20'):_0x14eb60[_0x2b01('0x1e')]['type']='ivr';break;}return db[_0x26bb89][_0x2b01('0x16')](_0x14eb60);}else{return[];}});}}else{return[];}})['then'](function(_0x46f165){return _0x46f165;});}function joinOrLeaveQueues(_0x3fd07b,_0xb2e86d,_0x22c5bb,_0x1a3f5c){_0x3fd07b[_0xb2e86d](util['format'](_0x2b01('0x21'),_0x22c5bb,_0x1a3f5c['name']));if(_0x1a3f5c[_0x2b01('0x6')]){for(var _0x3be87e=0x0;_0x3be87e<_0x1a3f5c[_0x2b01('0x6')][_0x2b01('0x22')];_0x3be87e+=0x1){_0x3fd07b[_0xb2e86d](util[_0x2b01('0x23')](_0x2b01('0x24'),_0x1a3f5c[_0x2b01('0x6')][_0x3be87e][_0x2b01('0x5')]));}}}function joinOrLeave(_0x335e78,_0x151e89,_0x263214){var _0x392f35;if(_0x335e78['handshake'][_0x2b01('0x25')]['id']){db[_0x2b01('0x7')][_0x2b01('0x26')]({'attributes':['id','name',_0x2b01('0x1f'),_0x2b01('0x27')],'where':{'id':_0x335e78['handshake']['query']['id']},'include':[{'model':db[_0x2b01('0x28')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x2b01('0x29')],'as':_0x2b01('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x2b01('0x2b')],'as':_0x2b01('0x2c'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x2b01('0x2d'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x2b01('0x2e'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x2b01('0x2f'),'attributes':['id'],'raw':!![]}]})[_0x2b01('0x1c')](function(_0x9fb1f0){if(_0x9fb1f0){_0x392f35=_0x9fb1f0;_0x335e78[_0x151e89](util['format'](_0x2b01('0x24'),_0x9fb1f0['name']));var _0x233c52=[];switch(_0x9fb1f0[_0x2b01('0x1f')]){case _0x2b01('0x30'):_0x335e78[_0x151e89](_0x2b01('0x31'));_0x335e78[_0x151e89]('voice:outbound');if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0x2b01('0x32')];}_0x233c52[_0x2b01('0x33')](db[_0x2b01('0x34')][_0x2b01('0x16')](queryQueues));_0x233c52['push'](db['ChatQueue'][_0x2b01('0x16')](queryQueues));_0x233c52[_0x2b01('0x33')](db[_0x2b01('0x35')]['findAll'](queryQueues));_0x233c52[_0x2b01('0x33')](db[_0x2b01('0x36')]['findAll'](queryQueues));_0x233c52[_0x2b01('0x33')](db[_0x2b01('0x37')]['findAll'](queryQueues));_0x233c52[_0x2b01('0x33')](db['OpenchannelQueue']['findAll'](queryQueues));_0x233c52[_0x2b01('0x33')](db[_0x2b01('0x38')][_0x2b01('0x16')](queryQueues));_0x233c52[_0x2b01('0x33')](db['User'][_0x2b01('0x16')](queryTelephones));_0x233c52[_0x2b01('0x33')](db[_0x2b01('0x39')][_0x2b01('0x16')](queryTrunks));_0x233c52[_0x2b01('0x33')](db[_0x2b01('0x20')]['findAll'](queryCampaigns));_0x233c52[_0x2b01('0x33')](db['User'][_0x2b01('0x16')](queryAgents));break;case _0x2b01('0x3a'):_0x335e78[_0x151e89](_0x2b01('0x31'));_0x335e78[_0x151e89](_0x2b01('0x3b'));_0x233c52[_0x2b01('0x33')](getAssociatedResources(_0x2b01('0xf'),_0x9fb1f0[_0x2b01('0x27')],_0x2b01('0x34')));_0x233c52[_0x2b01('0x33')](getAssociatedResources(_0x2b01('0x10'),_0x9fb1f0[_0x2b01('0x27')],_0x2b01('0x3c')));_0x233c52[_0x2b01('0x33')](getAssociatedResources(_0x2b01('0x11'),_0x9fb1f0[_0x2b01('0x27')],_0x2b01('0x35')));_0x233c52[_0x2b01('0x33')](getAssociatedResources(_0x2b01('0x12'),_0x9fb1f0[_0x2b01('0x27')],_0x2b01('0x36')));_0x233c52[_0x2b01('0x33')](getAssociatedResources(_0x2b01('0x13'),_0x9fb1f0[_0x2b01('0x27')],_0x2b01('0x37')));_0x233c52[_0x2b01('0x33')](getAssociatedResources(_0x2b01('0x14'),_0x9fb1f0['userProfileId'],_0x2b01('0x3d')));_0x233c52[_0x2b01('0x33')](getAssociatedResources('WhatsappQueues',_0x9fb1f0[_0x2b01('0x27')],_0x2b01('0x38')));_0x233c52[_0x2b01('0x33')](getAssociatedResources('Telephones',_0x9fb1f0[_0x2b01('0x27')],_0x2b01('0x7')));_0x233c52[_0x2b01('0x33')](getAssociatedResources(_0x2b01('0x18'),_0x9fb1f0['userProfileId'],_0x2b01('0x39')));_0x233c52[_0x2b01('0x33')](getAssociatedResources(_0x2b01('0x19'),_0x9fb1f0[_0x2b01('0x27')],_0x2b01('0x20')));_0x233c52['push'](db[_0x2b01('0x7')][_0x2b01('0x16')](queryAgents));break;case _0x2b01('0x9'):_0x335e78[_0x151e89](_0x2b01('0x31'));_0x335e78[_0x151e89]('voice:outbound');_0x233c52[_0x2b01('0x33')](_0x9fb1f0[_0x2b01('0x3e')]({'attributes':['id',_0x2b01('0x5')]}));_0x233c52[_0x2b01('0x33')](_0x9fb1f0[_0x2b01('0x3f')]({'attributes':['id','name']}));_0x233c52[_0x2b01('0x33')](_0x9fb1f0[_0x2b01('0x40')]({'attributes':['id',_0x2b01('0x5')]}));_0x233c52['push'](_0x9fb1f0['getSmsQueues']({'attributes':['id',_0x2b01('0x5')]}));_0x233c52['push'](_0x9fb1f0['getMailQueues']({'attributes':['id',_0x2b01('0x5')]}));_0x233c52['push'](_0x9fb1f0[_0x2b01('0x41')]({'attributes':['id',_0x2b01('0x5')]}));_0x233c52[_0x2b01('0x33')](_0x9fb1f0[_0x2b01('0x42')]({'attributes':['id',_0x2b01('0x5')]}));break;}return BPromise[_0x2b01('0x43')](_0x233c52);}})[_0x2b01('0x1c')](function(_0x22d39e){if(_0x22d39e&&_0x22d39e['length']){for(var _0x1eaaae=0x0;_0x1eaaae<_0x22d39e['length'];_0x1eaaae+=0x1){for(var _0x1814e9=0x0;_0x1814e9<_0x22d39e[_0x1eaaae][_0x2b01('0x22')];_0x1814e9+=0x1){switch(_0x1eaaae){case 0x0:joinOrLeaveQueues(_0x335e78,_0x151e89,_0x2b01('0x44'),_0x22d39e[_0x1eaaae][_0x1814e9]);break;case 0x1:joinOrLeaveQueues(_0x335e78,_0x151e89,'chat',_0x22d39e[_0x1eaaae][_0x1814e9]);break;case 0x2:joinOrLeaveQueues(_0x335e78,_0x151e89,_0x2b01('0x45'),_0x22d39e[_0x1eaaae][_0x1814e9]);break;case 0x3:joinOrLeaveQueues(_0x335e78,_0x151e89,_0x2b01('0x46'),_0x22d39e[_0x1eaaae][_0x1814e9]);break;case 0x4:joinOrLeaveQueues(_0x335e78,_0x151e89,_0x2b01('0x47'),_0x22d39e[_0x1eaaae][_0x1814e9]);break;case 0x5:joinOrLeaveQueues(_0x335e78,_0x151e89,_0x2b01('0x48'),_0x22d39e[_0x1eaaae][_0x1814e9]);break;case 0x6:joinOrLeaveQueues(_0x335e78,_0x151e89,'whatsapp',_0x22d39e[_0x1eaaae][_0x1814e9]);break;case 0x7:if(_0x392f35[_0x2b01('0x1f')]!=='agent')_0x335e78[_0x151e89](util['format'](_0x2b01('0x49'),_0x22d39e[_0x1eaaae][_0x1814e9][_0x2b01('0x5')]));break;case 0x8:if(_0x392f35[_0x2b01('0x1f')]!==_0x2b01('0x9'))_0x335e78[_0x151e89](util[_0x2b01('0x23')](_0x2b01('0x4a'),_0x22d39e[_0x1eaaae][_0x1814e9][_0x2b01('0x5')]));break;case 0x9:if(_0x392f35[_0x2b01('0x1f')]!==_0x2b01('0x9'))_0x335e78[_0x151e89](util['format'](_0x2b01('0x4b'),_0x22d39e[_0x1eaaae][_0x1814e9][_0x2b01('0xa')],_0x22d39e[_0x1eaaae][_0x1814e9][_0x2b01('0x5')]));break;case 0xa:_0x335e78[_0x151e89](util['format'](_0x2b01('0x24'),_0x22d39e[_0x1eaaae][_0x1814e9]['name']));break;}}}}})[_0x2b01('0x1c')](function(){if(_0x151e89===_0x2b01('0x4c')){var _0x364543=_[_0x2b01('0x1d')](_0x392f35[_0x2b01('0x4d')],'id');return _0x392f35[_0x2b01('0x4e')](_0x364543)[_0x2b01('0x1c')](function(){for(var _0x5a5c3f=0x0;_0x5a5c3f<_0x364543[_0x2b01('0x22')];_0x5a5c3f+=0x1){_0x263214[_0x2b01('0x4f')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x364543[_0x5a5c3f]),'UserId':Number(_0x392f35['id'])});}});}})[_0x2b01('0x1c')](function(){if(_0x151e89===_0x2b01('0x4c')){var _0x1b611c=_[_0x2b01('0x1d')](_0x392f35[_0x2b01('0x2a')],'id');return _0x392f35[_0x2b01('0x50')](_0x1b611c)[_0x2b01('0x1c')](function(){for(var _0x2c3225=0x0;_0x2c3225<_0x1b611c['length'];_0x2c3225+=0x1){_0x263214['emit'](_0x2b01('0x51'),{'MailInteractionId':Number(_0x1b611c[_0x2c3225]),'UserId':Number(_0x392f35['id'])});}});}})['then'](function(){if(_0x151e89===_0x2b01('0x4c')){var _0x589f44=_[_0x2b01('0x1d')](_0x392f35[_0x2b01('0x2c')],'id');return _0x392f35[_0x2b01('0x52')](_0x589f44)[_0x2b01('0x1c')](function(){for(var _0xdb053c=0x0;_0xdb053c<_0x589f44['length'];_0xdb053c+=0x1){_0x263214['emit'](_0x2b01('0x53'),{'FaxInteractionId':Number(_0x589f44[_0xdb053c]),'UserId':Number(_0x392f35['id'])});}});}})[_0x2b01('0x1c')](function(){if(_0x151e89===_0x2b01('0x4c')){var _0x3e8100=_[_0x2b01('0x1d')](_0x392f35[_0x2b01('0x2d')],'id');return _0x392f35[_0x2b01('0x54')](_0x3e8100)['then'](function(){for(var _0x2b8365=0x0;_0x2b8365<_0x3e8100[_0x2b01('0x22')];_0x2b8365+=0x1){_0x263214[_0x2b01('0x4f')](_0x2b01('0x55'),{'SmsInteractionId':Number(_0x3e8100[_0x2b8365]),'UserId':Number(_0x392f35['id'])});}});}})[_0x2b01('0x1c')](function(){if(_0x151e89===_0x2b01('0x4c')){var _0x5dccdb=_['map'](_0x392f35['OpenchannelInteractions'],'id');return _0x392f35[_0x2b01('0x56')](_0x5dccdb)['then'](function(){for(var _0x35d2b8=0x0;_0x35d2b8<_0x5dccdb[_0x2b01('0x22')];_0x35d2b8+=0x1){_0x263214[_0x2b01('0x4f')](_0x2b01('0x57'),{'OpenchannelInteractionId':Number(_0x5dccdb[_0x35d2b8]),'UserId':Number(_0x392f35['id'])});}});}})['then'](function(){if(_0x151e89===_0x2b01('0x4c')){var _0x21005d=_[_0x2b01('0x1d')](_0x392f35[_0x2b01('0x2f')],'id');return _0x392f35['removeWhatsappInteractions'](_0x21005d)['then'](function(){for(var _0xdf4aff=0x0;_0xdf4aff<_0x21005d[_0x2b01('0x22')];_0xdf4aff+=0x1){_0x263214[_0x2b01('0x4f')](_0x2b01('0x58'),{'WhatsappInteractionId':Number(_0x21005d[_0xdf4aff]),'UserId':Number(_0x392f35['id'])});}});}})[_0x2b01('0x59')](function(_0x428dfd){_0x335e78[_0x2b01('0x5a')](_0x428dfd);});}}function onDisconnect(_0x5d5801,_0x3811c1){joinOrLeave(_0x5d5801,'leave',_0x3811c1);}function onConnect(_0x7d4b65){joinOrLeave(_0x7d4b65,_0x2b01('0x5b'));}exports[_0x2b01('0x5c')]=function(_0x5c6cb0){_0x5c6cb0['on']('connection',function(_0x3192b6){_0x3192b6[_0x2b01('0x5d')](0x0);_0x3192b6[_0x2b01('0x5e')]=_0x3192b6[_0x2b01('0x5f')][_0x2b01('0x60')]['remoteAddress']+':'+_0x3192b6[_0x2b01('0x5f')][_0x2b01('0x60')]['remotePort'];_0x3192b6['connectedAt']=new Date();_0x3192b6['log']=function(_0x2cfce3){console[_0x2b01('0x5a')]('SocketIO\x20'+_0x3192b6[_0x2b01('0x61')][_0x2b01('0x5')]+'['+_0x3192b6[_0x2b01('0x5e')]+']',_0x2cfce3);};_0x3192b6['on'](_0x2b01('0x62'),function(){onDisconnect(_0x3192b6,_0x5c6cb0);_0x3192b6[_0x2b01('0x5a')](_0x2b01('0x63'));});onConnect(_0x3192b6);_0x3192b6[_0x2b01('0x5a')](_0x2b01('0x64'));});};