Built motion from commit (unavailable).|2.5.21
[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 _0xdafd=['user_has_chat_interactions:remove','MailInteractions','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','join','default','connection','setMaxListeners','address','remoteAddress','request','connectedAt','log','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','User','role','agent','type','ivr','findOne','then','autoAssociation','VoiceQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','IvrCampaigns','UserProfileResource','resourceId','where','telephone','Campaign','format','%s:queue:%s','Agents','length','user:%s','userProfileId','handshake','query','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','WhatsappInteraction','WhatsappInteractions','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','ChatQueues','SmsQueues','Trunks','voice:inbound','getVoiceQueues','getChatQueues','getFaxQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','telephone:%s','trunk:%s','campaign:%s:%s','leave','map','removeChatInteractions','emit'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdafd,0x1be));var _0xddaf=function(_0x4eede6,_0x4d1bca){_0x4eede6=_0x4eede6-0x0;var _0x5bcede=_0xdafd[_0x4eede6];return _0x5bcede;};'use strict';var _=require(_0xddaf('0x0'));var util=require(_0xddaf('0x1'));var BPromise=require(_0xddaf('0x2'));var db=require(_0xddaf('0x3'))['db'];var config=require(_0xddaf('0x4'));var queryQueues={'attributes':['id',_0xddaf('0x5')],'include':[{'as':'Agents','model':db[_0xddaf('0x6')],'attributes':['id',_0xddaf('0x5'),_0xddaf('0x7')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xddaf('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xddaf('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xddaf('0x5')],'where':{'role':_0xddaf('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xddaf('0x5'),_0xddaf('0x9')],'where':{'type':_0xddaf('0xa')}};function getAssociatedResources(_0x53a321,_0x3cb9a8,_0x323f28){return db['UserProfileSection'][_0xddaf('0xb')]({'where':{'name':_0x53a321,'userProfileId':_0x3cb9a8},'raw':!![]})[_0xddaf('0xc')](function(_0x6445fb){if(_0x6445fb){if(_0x6445fb[_0xddaf('0xd')]){switch(_0x53a321){case _0xddaf('0xe'):case'ChatQueues':case _0xddaf('0xf'):case'SmsQueues':case _0xddaf('0x10'):case _0xddaf('0x11'):case _0xddaf('0x12'):return db[_0x323f28][_0xddaf('0x13')](queryQueues);case _0xddaf('0x14'):return db[_0x323f28][_0xddaf('0x13')](queryTelephones);case'Trunks':return db[_0x323f28][_0xddaf('0x13')](queryTrunks);case _0xddaf('0x15'):return db[_0x323f28]['findAll'](queryCampaigns);}}else{return db[_0xddaf('0x16')][_0xddaf('0x13')]({'attributes':[_0xddaf('0x17')],'where':{'sectionId':_0x6445fb['id']},'raw':!![]})[_0xddaf('0xc')](function(_0x35adfe){if(_0x35adfe){var _0x58dda3={'where':{'id':_['map'](_0x35adfe,_0xddaf('0x17'))},'raw':!![]};switch(_0x323f28){case'User':_0x58dda3[_0xddaf('0x18')][_0xddaf('0x7')]=_0xddaf('0x19');break;case _0xddaf('0x1a'):_0x58dda3[_0xddaf('0x18')]['type']=_0xddaf('0xa');break;}return db[_0x323f28][_0xddaf('0x13')](_0x58dda3);}else{return[];}});}}else{return[];}})[_0xddaf('0xc')](function(_0x156f4a){return _0x156f4a;});}function joinOrLeaveQueues(_0x37c926,_0x3da114,_0x47d513,_0x1b380e){_0x37c926[_0x3da114](util[_0xddaf('0x1b')](_0xddaf('0x1c'),_0x47d513,_0x1b380e['name']));if(_0x1b380e[_0xddaf('0x1d')]){for(var _0x57acc2=0x0;_0x57acc2<_0x1b380e[_0xddaf('0x1d')][_0xddaf('0x1e')];_0x57acc2+=0x1){_0x37c926[_0x3da114](util['format'](_0xddaf('0x1f'),_0x1b380e[_0xddaf('0x1d')][_0x57acc2]['name']));}}}function joinOrLeave(_0x3becac,_0x56a290,_0x2c0a99){var _0x1f65ef;if(_0x3becac['handshake']['query']['id']){db[_0xddaf('0x6')]['find']({'attributes':['id',_0xddaf('0x5'),_0xddaf('0x7'),_0xddaf('0x20')],'where':{'id':_0x3becac[_0xddaf('0x21')][_0xddaf('0x22')]['id']},'include':[{'model':db[_0xddaf('0x23')],'as':_0xddaf('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xddaf('0x25')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xddaf('0x26')],'as':_0xddaf('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xddaf('0x28')],'as':_0xddaf('0x29'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xddaf('0x2a')],'as':_0xddaf('0x2b'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x39e5b8){if(_0x39e5b8){_0x1f65ef=_0x39e5b8;_0x3becac[_0x56a290](util[_0xddaf('0x1b')]('user:%s',_0x39e5b8['name']));var _0x3a6a89=[];switch(_0x39e5b8[_0xddaf('0x7')]){case'admin':_0x3becac[_0x56a290]('voice:inbound');_0x3becac[_0x56a290](_0xddaf('0x2c'));if(queryQueues[_0xddaf('0x2d')](_0xddaf('0x2e'))){delete queryQueues[_0xddaf('0x2e')];}_0x3a6a89[_0xddaf('0x2f')](db[_0xddaf('0x30')]['findAll'](queryQueues));_0x3a6a89['push'](db[_0xddaf('0x31')][_0xddaf('0x13')](queryQueues));_0x3a6a89[_0xddaf('0x2f')](db[_0xddaf('0x32')]['findAll'](queryQueues));_0x3a6a89['push'](db[_0xddaf('0x33')][_0xddaf('0x13')](queryQueues));_0x3a6a89[_0xddaf('0x2f')](db[_0xddaf('0x34')][_0xddaf('0x13')](queryQueues));_0x3a6a89['push'](db[_0xddaf('0x35')]['findAll'](queryQueues));_0x3a6a89[_0xddaf('0x2f')](db[_0xddaf('0x36')][_0xddaf('0x13')](queryQueues));_0x3a6a89[_0xddaf('0x2f')](db[_0xddaf('0x6')][_0xddaf('0x13')](queryTelephones));_0x3a6a89[_0xddaf('0x2f')](db[_0xddaf('0x37')]['findAll'](queryTrunks));_0x3a6a89['push'](db[_0xddaf('0x1a')][_0xddaf('0x13')](queryCampaigns));_0x3a6a89[_0xddaf('0x2f')](db[_0xddaf('0x6')][_0xddaf('0x13')](queryAgents));break;case _0xddaf('0x38'):_0x3becac[_0x56a290]('voice:inbound');_0x3becac[_0x56a290](_0xddaf('0x2c'));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources(_0xddaf('0xe'),_0x39e5b8['userProfileId'],_0xddaf('0x30')));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources(_0xddaf('0x39'),_0x39e5b8[_0xddaf('0x20')],_0xddaf('0x31')));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources(_0xddaf('0xf'),_0x39e5b8[_0xddaf('0x20')],_0xddaf('0x32')));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources(_0xddaf('0x3a'),_0x39e5b8['userProfileId'],_0xddaf('0x33')));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources('MailQueues',_0x39e5b8[_0xddaf('0x20')],'MailQueue'));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources(_0xddaf('0x11'),_0x39e5b8[_0xddaf('0x20')],'OpenchannelQueue'));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources(_0xddaf('0x12'),_0x39e5b8[_0xddaf('0x20')],'WhatsappQueue'));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources(_0xddaf('0x14'),_0x39e5b8[_0xddaf('0x20')],_0xddaf('0x6')));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources(_0xddaf('0x3b'),_0x39e5b8[_0xddaf('0x20')],_0xddaf('0x37')));_0x3a6a89[_0xddaf('0x2f')](getAssociatedResources(_0xddaf('0x15'),_0x39e5b8['userProfileId'],'Campaign'));_0x3a6a89[_0xddaf('0x2f')](db[_0xddaf('0x6')][_0xddaf('0x13')](queryAgents));break;case _0xddaf('0x8'):_0x3becac[_0x56a290](_0xddaf('0x3c'));_0x3becac[_0x56a290]('voice:outbound');_0x3a6a89[_0xddaf('0x2f')](_0x39e5b8[_0xddaf('0x3d')]({'attributes':['id',_0xddaf('0x5')]}));_0x3a6a89[_0xddaf('0x2f')](_0x39e5b8[_0xddaf('0x3e')]({'attributes':['id','name']}));_0x3a6a89[_0xddaf('0x2f')](_0x39e5b8[_0xddaf('0x3f')]({'attributes':['id',_0xddaf('0x5')]}));_0x3a6a89[_0xddaf('0x2f')](_0x39e5b8['getSmsQueues']({'attributes':['id',_0xddaf('0x5')]}));_0x3a6a89[_0xddaf('0x2f')](_0x39e5b8['getMailQueues']({'attributes':['id','name']}));_0x3a6a89[_0xddaf('0x2f')](_0x39e5b8[_0xddaf('0x40')]({'attributes':['id',_0xddaf('0x5')]}));_0x3a6a89[_0xddaf('0x2f')](_0x39e5b8[_0xddaf('0x41')]({'attributes':['id','name']}));break;}return BPromise[_0xddaf('0x42')](_0x3a6a89);}})[_0xddaf('0xc')](function(_0x3b8a74){if(_0x3b8a74&&_0x3b8a74['length']){for(var _0x35bd12=0x0;_0x35bd12<_0x3b8a74[_0xddaf('0x1e')];_0x35bd12+=0x1){for(var _0x5f196e=0x0;_0x5f196e<_0x3b8a74[_0x35bd12][_0xddaf('0x1e')];_0x5f196e+=0x1){switch(_0x35bd12){case 0x0:joinOrLeaveQueues(_0x3becac,_0x56a290,_0xddaf('0x43'),_0x3b8a74[_0x35bd12][_0x5f196e]);break;case 0x1:joinOrLeaveQueues(_0x3becac,_0x56a290,_0xddaf('0x44'),_0x3b8a74[_0x35bd12][_0x5f196e]);break;case 0x2:joinOrLeaveQueues(_0x3becac,_0x56a290,_0xddaf('0x45'),_0x3b8a74[_0x35bd12][_0x5f196e]);break;case 0x3:joinOrLeaveQueues(_0x3becac,_0x56a290,_0xddaf('0x46'),_0x3b8a74[_0x35bd12][_0x5f196e]);break;case 0x4:joinOrLeaveQueues(_0x3becac,_0x56a290,_0xddaf('0x47'),_0x3b8a74[_0x35bd12][_0x5f196e]);break;case 0x5:joinOrLeaveQueues(_0x3becac,_0x56a290,'openchannel',_0x3b8a74[_0x35bd12][_0x5f196e]);break;case 0x6:joinOrLeaveQueues(_0x3becac,_0x56a290,'whatsapp',_0x3b8a74[_0x35bd12][_0x5f196e]);break;case 0x7:if(_0x1f65ef[_0xddaf('0x7')]!=='agent')_0x3becac[_0x56a290](util[_0xddaf('0x1b')](_0xddaf('0x48'),_0x3b8a74[_0x35bd12][_0x5f196e][_0xddaf('0x5')]));break;case 0x8:if(_0x1f65ef[_0xddaf('0x7')]!==_0xddaf('0x8'))_0x3becac[_0x56a290](util[_0xddaf('0x1b')](_0xddaf('0x49'),_0x3b8a74[_0x35bd12][_0x5f196e]['name']));break;case 0x9:if(_0x1f65ef[_0xddaf('0x7')]!=='agent')_0x3becac[_0x56a290](util[_0xddaf('0x1b')](_0xddaf('0x4a'),_0x3b8a74[_0x35bd12][_0x5f196e]['type'],_0x3b8a74[_0x35bd12][_0x5f196e]['name']));break;case 0xa:_0x3becac[_0x56a290](util['format'](_0xddaf('0x1f'),_0x3b8a74[_0x35bd12][_0x5f196e][_0xddaf('0x5')]));break;}}}}})[_0xddaf('0xc')](function(){if(_0x56a290===_0xddaf('0x4b')){var _0x42efcf=_[_0xddaf('0x4c')](_0x1f65ef[_0xddaf('0x24')],'id');return _0x1f65ef[_0xddaf('0x4d')](_0x42efcf)[_0xddaf('0xc')](function(){for(var _0x1b58a3=0x0;_0x1b58a3<_0x42efcf[_0xddaf('0x1e')];_0x1b58a3+=0x1){_0x2c0a99[_0xddaf('0x4e')](_0xddaf('0x4f'),{'ChatInteractionId':Number(_0x42efcf[_0x1b58a3]),'UserId':Number(_0x1f65ef['id'])});}});}})[_0xddaf('0xc')](function(){if(_0x56a290===_0xddaf('0x4b')){var _0x4338e8=_[_0xddaf('0x4c')](_0x1f65ef[_0xddaf('0x50')],'id');return _0x1f65ef[_0xddaf('0x51')](_0x4338e8)['then'](function(){for(var _0x4ae695=0x0;_0x4ae695<_0x4338e8['length'];_0x4ae695+=0x1){_0x2c0a99[_0xddaf('0x4e')](_0xddaf('0x52'),{'MailInteractionId':Number(_0x4338e8[_0x4ae695]),'UserId':Number(_0x1f65ef['id'])});}});}})['then'](function(){if(_0x56a290===_0xddaf('0x4b')){var _0x577449=_[_0xddaf('0x4c')](_0x1f65ef['FaxInteractions'],'id');return _0x1f65ef[_0xddaf('0x53')](_0x577449)[_0xddaf('0xc')](function(){for(var _0x1d9a50=0x0;_0x1d9a50<_0x577449[_0xddaf('0x1e')];_0x1d9a50+=0x1){_0x2c0a99['emit'](_0xddaf('0x54'),{'FaxInteractionId':Number(_0x577449[_0x1d9a50]),'UserId':Number(_0x1f65ef['id'])});}});}})[_0xddaf('0xc')](function(){if(_0x56a290===_0xddaf('0x4b')){var _0x30086c=_['map'](_0x1f65ef[_0xddaf('0x29')],'id');return _0x1f65ef[_0xddaf('0x55')](_0x30086c)[_0xddaf('0xc')](function(){for(var _0x26b8c6=0x0;_0x26b8c6<_0x30086c[_0xddaf('0x1e')];_0x26b8c6+=0x1){_0x2c0a99[_0xddaf('0x4e')](_0xddaf('0x56'),{'SmsInteractionId':Number(_0x30086c[_0x26b8c6]),'UserId':Number(_0x1f65ef['id'])});}});}})[_0xddaf('0xc')](function(){if(_0x56a290===_0xddaf('0x4b')){var _0x555d3b=_[_0xddaf('0x4c')](_0x1f65ef['OpenchannelInteractions'],'id');return _0x1f65ef[_0xddaf('0x57')](_0x555d3b)[_0xddaf('0xc')](function(){for(var _0x2057ca=0x0;_0x2057ca<_0x555d3b['length'];_0x2057ca+=0x1){_0x2c0a99['emit'](_0xddaf('0x58'),{'OpenchannelInteractionId':Number(_0x555d3b[_0x2057ca]),'UserId':Number(_0x1f65ef['id'])});}});}})[_0xddaf('0xc')](function(){if(_0x56a290==='leave'){var _0x29d326=_['map'](_0x1f65ef['WhatsappInteractions'],'id');return _0x1f65ef['removeWhatsappInteractions'](_0x29d326)[_0xddaf('0xc')](function(){for(var _0x554ed1=0x0;_0x554ed1<_0x29d326[_0xddaf('0x1e')];_0x554ed1+=0x1){_0x2c0a99['emit'](_0xddaf('0x59'),{'WhatsappInteractionId':Number(_0x29d326[_0x554ed1]),'UserId':Number(_0x1f65ef['id'])});}});}})[_0xddaf('0x5a')](function(_0x313792){_0x3becac['log'](_0x313792);});}}function onDisconnect(_0x442164,_0x2060a4){joinOrLeave(_0x442164,_0xddaf('0x4b'),_0x2060a4);}function onConnect(_0x4eb8ba){joinOrLeave(_0x4eb8ba,_0xddaf('0x5b'));}exports[_0xddaf('0x5c')]=function(_0xc92157){_0xc92157['on'](_0xddaf('0x5d'),function(_0xfe2953){_0xfe2953[_0xddaf('0x5e')](0x0);_0xfe2953[_0xddaf('0x5f')]=_0xfe2953['request']['connection'][_0xddaf('0x60')]+':'+_0xfe2953[_0xddaf('0x61')][_0xddaf('0x5d')]['remotePort'];_0xfe2953[_0xddaf('0x62')]=new Date();_0xfe2953[_0xddaf('0x63')]=function(_0x1cee4f){console['log'](_0xddaf('0x64')+_0xfe2953[_0xddaf('0x65')]['name']+'['+_0xfe2953['address']+']',_0x1cee4f);};_0xfe2953['on'](_0xddaf('0x66'),function(){onDisconnect(_0xfe2953,_0xc92157);_0xfe2953[_0xddaf('0x63')](_0xddaf('0x67'));});onConnect(_0xfe2953);_0xfe2953[_0xddaf('0x63')](_0xddaf('0x68'));});};