a35740bf1fc85f10c031e74773984e2ae7a122fb
[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 _0xaf2b=['voice:inbound','voice:outbound','include','push','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','user','VoiceQueue','userProfileId','getVoiceQueues','getChatQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','trunk:%s','campaign:%s:%s','emit','removeMailInteractions','user_has_mail_interactions:remove','leave','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','default','connection','setMaxListeners','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','User','agent','telephone','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','IvrCampaigns','map','resourceId','where','type','ivr','format','Agents','length','user:%s','handshake','find','role','query','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','WhatsappInteraction'];(function(_0x5e7514,_0x30c2e1){var _0x12f472=function(_0x33ddb6){while(--_0x33ddb6){_0x5e7514['push'](_0x5e7514['shift']());}};_0x12f472(++_0x30c2e1);}(_0xaf2b,0x93));var _0xbaf2=function(_0x24f6b2,_0x2b91f7){_0x24f6b2=_0x24f6b2-0x0;var _0x4b4661=_0xaf2b[_0x24f6b2];return _0x4b4661;};'use strict';var _=require(_0xbaf2('0x0'));var util=require(_0xbaf2('0x1'));var BPromise=require(_0xbaf2('0x2'));var db=require(_0xbaf2('0x3'))['db'];var config=require(_0xbaf2('0x4'));var queryQueues={'attributes':['id',_0xbaf2('0x5')],'include':[{'as':'Agents','model':db[_0xbaf2('0x6')],'attributes':['id',_0xbaf2('0x5'),'role'],'raw':!![],'where':{'role':_0xbaf2('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xbaf2('0x5')],'where':{'role':_0xbaf2('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xbaf2('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xbaf2('0x5')],'where':{'role':_0xbaf2('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xbaf2('0x5'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x120252,_0x1c6a75,_0x2ef492){return db[_0xbaf2('0x9')][_0xbaf2('0xa')]({'where':{'name':_0x120252,'userProfileId':_0x1c6a75},'raw':!![]})[_0xbaf2('0xb')](function(_0x354aa6){if(_0x354aa6){if(_0x354aa6[_0xbaf2('0xc')]){switch(_0x120252){case _0xbaf2('0xd'):case _0xbaf2('0xe'):case _0xbaf2('0xf'):case _0xbaf2('0x10'):case _0xbaf2('0x11'):case _0xbaf2('0x12'):case _0xbaf2('0x13'):return db[_0x2ef492]['findAll'](queryQueues);case _0xbaf2('0x14'):return db[_0x2ef492][_0xbaf2('0x15')](queryTelephones);case'Trunks':return db[_0x2ef492]['findAll'](queryTrunks);case _0xbaf2('0x16'):return db[_0x2ef492][_0xbaf2('0x15')](queryCampaigns);}}else{return db['UserProfileResource'][_0xbaf2('0x15')]({'attributes':['resourceId'],'where':{'sectionId':_0x354aa6['id']},'raw':!![]})[_0xbaf2('0xb')](function(_0x542753){if(_0x542753){var _0x25d65f={'where':{'id':_[_0xbaf2('0x17')](_0x542753,_0xbaf2('0x18'))},'raw':!![]};switch(_0x2ef492){case'User':_0x25d65f[_0xbaf2('0x19')]['role']=_0xbaf2('0x8');break;case'Campaign':_0x25d65f['where'][_0xbaf2('0x1a')]=_0xbaf2('0x1b');break;}return db[_0x2ef492][_0xbaf2('0x15')](_0x25d65f);}else{return[];}});}}else{return[];}})[_0xbaf2('0xb')](function(_0x492060){return _0x492060;});}function joinOrLeaveQueues(_0x37b4fb,_0x1bb0fd,_0xfcd2ef,_0x5a7add){_0x37b4fb[_0x1bb0fd](util[_0xbaf2('0x1c')]('%s:queue:%s',_0xfcd2ef,_0x5a7add[_0xbaf2('0x5')]));if(_0x5a7add[_0xbaf2('0x1d')]){for(var _0x2414a1=0x0;_0x2414a1<_0x5a7add['Agents'][_0xbaf2('0x1e')];_0x2414a1+=0x1){_0x37b4fb[_0x1bb0fd](util['format'](_0xbaf2('0x1f'),_0x5a7add[_0xbaf2('0x1d')][_0x2414a1][_0xbaf2('0x5')]));}}}function joinOrLeave(_0x3fdd57,_0x11d7fb,_0x25074f){var _0x44dd02;if(_0x3fdd57[_0xbaf2('0x20')]['query']['id']){db[_0xbaf2('0x6')][_0xbaf2('0x21')]({'attributes':['id',_0xbaf2('0x5'),_0xbaf2('0x22'),'userProfileId'],'where':{'id':_0x3fdd57[_0xbaf2('0x20')][_0xbaf2('0x23')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0xbaf2('0x24'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xbaf2('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xbaf2('0x26')],'as':_0xbaf2('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xbaf2('0x28')],'as':_0xbaf2('0x29'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xbaf2('0x2a')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xbaf2('0xb')](function(_0xf2a5b7){if(_0xf2a5b7){_0x44dd02=_0xf2a5b7;_0x3fdd57[_0x11d7fb](util[_0xbaf2('0x1c')](_0xbaf2('0x1f'),_0xf2a5b7['name']));var _0x4c0abd=[];switch(_0xf2a5b7[_0xbaf2('0x22')]){case'admin':_0x3fdd57[_0x11d7fb](_0xbaf2('0x2b'));_0x3fdd57[_0x11d7fb](_0xbaf2('0x2c'));if(queryQueues['hasOwnProperty'](_0xbaf2('0x2d'))){delete queryQueues[_0xbaf2('0x2d')];}_0x4c0abd[_0xbaf2('0x2e')](db['VoiceQueue'][_0xbaf2('0x15')](queryQueues));_0x4c0abd['push'](db[_0xbaf2('0x2f')]['findAll'](queryQueues));_0x4c0abd[_0xbaf2('0x2e')](db[_0xbaf2('0x30')][_0xbaf2('0x15')](queryQueues));_0x4c0abd[_0xbaf2('0x2e')](db[_0xbaf2('0x31')][_0xbaf2('0x15')](queryQueues));_0x4c0abd[_0xbaf2('0x2e')](db['MailQueue']['findAll'](queryQueues));_0x4c0abd[_0xbaf2('0x2e')](db[_0xbaf2('0x32')]['findAll'](queryQueues));_0x4c0abd[_0xbaf2('0x2e')](db[_0xbaf2('0x33')]['findAll'](queryQueues));_0x4c0abd[_0xbaf2('0x2e')](db[_0xbaf2('0x6')]['findAll'](queryTelephones));_0x4c0abd[_0xbaf2('0x2e')](db[_0xbaf2('0x34')][_0xbaf2('0x15')](queryTrunks));_0x4c0abd['push'](db[_0xbaf2('0x35')][_0xbaf2('0x15')](queryCampaigns));_0x4c0abd[_0xbaf2('0x2e')](db[_0xbaf2('0x6')]['findAll'](queryAgents));break;case _0xbaf2('0x36'):_0x3fdd57[_0x11d7fb](_0xbaf2('0x2b'));_0x3fdd57[_0x11d7fb]('voice:outbound');_0x4c0abd[_0xbaf2('0x2e')](getAssociatedResources(_0xbaf2('0xd'),_0xf2a5b7['userProfileId'],_0xbaf2('0x37')));_0x4c0abd['push'](getAssociatedResources(_0xbaf2('0xe'),_0xf2a5b7['userProfileId'],'ChatQueue'));_0x4c0abd[_0xbaf2('0x2e')](getAssociatedResources(_0xbaf2('0xf'),_0xf2a5b7[_0xbaf2('0x38')],_0xbaf2('0x30')));_0x4c0abd[_0xbaf2('0x2e')](getAssociatedResources(_0xbaf2('0x10'),_0xf2a5b7['userProfileId'],_0xbaf2('0x31')));_0x4c0abd[_0xbaf2('0x2e')](getAssociatedResources(_0xbaf2('0x11'),_0xf2a5b7['userProfileId'],'MailQueue'));_0x4c0abd['push'](getAssociatedResources('OpenchannelQueues',_0xf2a5b7['userProfileId'],_0xbaf2('0x32')));_0x4c0abd[_0xbaf2('0x2e')](getAssociatedResources('WhatsappQueues',_0xf2a5b7[_0xbaf2('0x38')],_0xbaf2('0x33')));_0x4c0abd[_0xbaf2('0x2e')](getAssociatedResources(_0xbaf2('0x14'),_0xf2a5b7['userProfileId'],'User'));_0x4c0abd[_0xbaf2('0x2e')](getAssociatedResources('Trunks',_0xf2a5b7[_0xbaf2('0x38')],_0xbaf2('0x34')));_0x4c0abd[_0xbaf2('0x2e')](getAssociatedResources(_0xbaf2('0x16'),_0xf2a5b7[_0xbaf2('0x38')],_0xbaf2('0x35')));_0x4c0abd['push'](db[_0xbaf2('0x6')][_0xbaf2('0x15')](queryAgents));break;case'agent':_0x3fdd57[_0x11d7fb](_0xbaf2('0x2b'));_0x3fdd57[_0x11d7fb]('voice:outbound');_0x4c0abd['push'](_0xf2a5b7[_0xbaf2('0x39')]({'attributes':['id','name']}));_0x4c0abd[_0xbaf2('0x2e')](_0xf2a5b7[_0xbaf2('0x3a')]({'attributes':['id',_0xbaf2('0x5')]}));_0x4c0abd[_0xbaf2('0x2e')](_0xf2a5b7['getFaxQueues']({'attributes':['id',_0xbaf2('0x5')]}));_0x4c0abd[_0xbaf2('0x2e')](_0xf2a5b7['getSmsQueues']({'attributes':['id',_0xbaf2('0x5')]}));_0x4c0abd['push'](_0xf2a5b7[_0xbaf2('0x3b')]({'attributes':['id',_0xbaf2('0x5')]}));_0x4c0abd[_0xbaf2('0x2e')](_0xf2a5b7[_0xbaf2('0x3c')]({'attributes':['id','name']}));_0x4c0abd['push'](_0xf2a5b7['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0xbaf2('0x3d')](_0x4c0abd);}})[_0xbaf2('0xb')](function(_0x43b00f){if(_0x43b00f&&_0x43b00f['length']){for(var _0x3ba286=0x0;_0x3ba286<_0x43b00f[_0xbaf2('0x1e')];_0x3ba286+=0x1){for(var _0x1ddbaf=0x0;_0x1ddbaf<_0x43b00f[_0x3ba286]['length'];_0x1ddbaf+=0x1){switch(_0x3ba286){case 0x0:joinOrLeaveQueues(_0x3fdd57,_0x11d7fb,_0xbaf2('0x3e'),_0x43b00f[_0x3ba286][_0x1ddbaf]);break;case 0x1:joinOrLeaveQueues(_0x3fdd57,_0x11d7fb,_0xbaf2('0x3f'),_0x43b00f[_0x3ba286][_0x1ddbaf]);break;case 0x2:joinOrLeaveQueues(_0x3fdd57,_0x11d7fb,_0xbaf2('0x40'),_0x43b00f[_0x3ba286][_0x1ddbaf]);break;case 0x3:joinOrLeaveQueues(_0x3fdd57,_0x11d7fb,_0xbaf2('0x41'),_0x43b00f[_0x3ba286][_0x1ddbaf]);break;case 0x4:joinOrLeaveQueues(_0x3fdd57,_0x11d7fb,_0xbaf2('0x42'),_0x43b00f[_0x3ba286][_0x1ddbaf]);break;case 0x5:joinOrLeaveQueues(_0x3fdd57,_0x11d7fb,_0xbaf2('0x43'),_0x43b00f[_0x3ba286][_0x1ddbaf]);break;case 0x6:joinOrLeaveQueues(_0x3fdd57,_0x11d7fb,_0xbaf2('0x44'),_0x43b00f[_0x3ba286][_0x1ddbaf]);break;case 0x7:_0x3fdd57[_0x11d7fb](util['format']('telephone:%s',_0x43b00f[_0x3ba286][_0x1ddbaf][_0xbaf2('0x5')]));break;case 0x8:_0x3fdd57[_0x11d7fb](util['format'](_0xbaf2('0x45'),_0x43b00f[_0x3ba286][_0x1ddbaf][_0xbaf2('0x5')]));break;case 0x9:_0x3fdd57[_0x11d7fb](util[_0xbaf2('0x1c')](_0xbaf2('0x46'),_0x43b00f[_0x3ba286][_0x1ddbaf][_0xbaf2('0x1a')],_0x43b00f[_0x3ba286][_0x1ddbaf][_0xbaf2('0x5')]));break;case 0xa:_0x3fdd57[_0x11d7fb](util['format'](_0xbaf2('0x1f'),_0x43b00f[_0x3ba286][_0x1ddbaf][_0xbaf2('0x5')]));break;}}}}})[_0xbaf2('0xb')](function(){if(_0x11d7fb==='leave'){var _0x269a5f=_['map'](_0x44dd02[_0xbaf2('0x24')],'id');return _0x44dd02['removeChatInteractions'](_0x269a5f)[_0xbaf2('0xb')](function(){for(var _0x1c6883=0x0;_0x1c6883<_0x269a5f[_0xbaf2('0x1e')];_0x1c6883+=0x1){_0x25074f[_0xbaf2('0x47')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x269a5f[_0x1c6883]),'UserId':Number(_0x44dd02['id'])});}});}})[_0xbaf2('0xb')](function(){if(_0x11d7fb==='leave'){var _0x4fd012=_[_0xbaf2('0x17')](_0x44dd02['MailInteractions'],'id');return _0x44dd02[_0xbaf2('0x48')](_0x4fd012)[_0xbaf2('0xb')](function(){for(var _0x46458b=0x0;_0x46458b<_0x4fd012[_0xbaf2('0x1e')];_0x46458b+=0x1){_0x25074f[_0xbaf2('0x47')](_0xbaf2('0x49'),{'MailInteractionId':Number(_0x4fd012[_0x46458b]),'UserId':Number(_0x44dd02['id'])});}});}})[_0xbaf2('0xb')](function(){if(_0x11d7fb===_0xbaf2('0x4a')){var _0x13e536=_[_0xbaf2('0x17')](_0x44dd02[_0xbaf2('0x27')],'id');return _0x44dd02[_0xbaf2('0x4b')](_0x13e536)[_0xbaf2('0xb')](function(){for(var _0x215246=0x0;_0x215246<_0x13e536[_0xbaf2('0x1e')];_0x215246+=0x1){_0x25074f[_0xbaf2('0x47')](_0xbaf2('0x4c'),{'FaxInteractionId':Number(_0x13e536[_0x215246]),'UserId':Number(_0x44dd02['id'])});}});}})['then'](function(){if(_0x11d7fb==='leave'){var _0x5c239b=_['map'](_0x44dd02['SmsInteractions'],'id');return _0x44dd02[_0xbaf2('0x4d')](_0x5c239b)[_0xbaf2('0xb')](function(){for(var _0x3d3633=0x0;_0x3d3633<_0x5c239b[_0xbaf2('0x1e')];_0x3d3633+=0x1){_0x25074f['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x5c239b[_0x3d3633]),'UserId':Number(_0x44dd02['id'])});}});}})[_0xbaf2('0xb')](function(){if(_0x11d7fb===_0xbaf2('0x4a')){var _0x3a90e4=_['map'](_0x44dd02['OpenchannelInteractions'],'id');return _0x44dd02['removeOpenchannelInteractions'](_0x3a90e4)[_0xbaf2('0xb')](function(){for(var _0x39359a=0x0;_0x39359a<_0x3a90e4[_0xbaf2('0x1e')];_0x39359a+=0x1){_0x25074f['emit'](_0xbaf2('0x4e'),{'OpenchannelInteractionId':Number(_0x3a90e4[_0x39359a]),'UserId':Number(_0x44dd02['id'])});}});}})[_0xbaf2('0xb')](function(){if(_0x11d7fb==='leave'){var _0x280a24=_[_0xbaf2('0x17')](_0x44dd02[_0xbaf2('0x4f')],'id');return _0x44dd02['removeWhatsappInteractions'](_0x280a24)[_0xbaf2('0xb')](function(){for(var _0x1b90c1=0x0;_0x1b90c1<_0x280a24[_0xbaf2('0x1e')];_0x1b90c1+=0x1){_0x25074f[_0xbaf2('0x47')](_0xbaf2('0x50'),{'WhatsappInteractionId':Number(_0x280a24[_0x1b90c1]),'UserId':Number(_0x44dd02['id'])});}});}})[_0xbaf2('0x51')](function(_0x14e9df){_0x3fdd57[_0xbaf2('0x52')](_0x14e9df);});}}function onDisconnect(_0x59cd3b,_0x126c20){joinOrLeave(_0x59cd3b,'leave',_0x126c20);}function onConnect(_0x132f6d){joinOrLeave(_0x132f6d,'join');}exports[_0xbaf2('0x53')]=function(_0x5b9bfa){_0x5b9bfa['on'](_0xbaf2('0x54'),function(_0x1de86c){_0x1de86c[_0xbaf2('0x55')](0x0);_0x1de86c['address']=_0x1de86c[_0xbaf2('0x56')][_0xbaf2('0x54')][_0xbaf2('0x57')]+':'+_0x1de86c['request'][_0xbaf2('0x54')][_0xbaf2('0x58')];_0x1de86c[_0xbaf2('0x59')]=new Date();_0x1de86c['log']=function(_0x23a1d7){console[_0xbaf2('0x52')](_0xbaf2('0x5a')+_0x1de86c[_0xbaf2('0x5b')][_0xbaf2('0x5')]+'['+_0x1de86c[_0xbaf2('0x5c')]+']',_0x23a1d7);};_0x1de86c['on'](_0xbaf2('0x5d'),function(){onDisconnect(_0x1de86c,_0x5b9bfa);_0x1de86c[_0xbaf2('0x52')](_0xbaf2('0x5e'));});onConnect(_0x1de86c);_0x1de86c[_0xbaf2('0x52')]('CONNECTED');});};