Built motion from commit b5413ace.|2.6.9
[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 _0xcaaf=['nsp','address','disconnect','DISCONNECTED','lodash','bluebird','name','Agents','telephone','agent','type','findOne','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','then','map','User','role','where','format','%s:queue:%s','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','voice:outbound','include','VoiceQueue','push','ChatQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','Campaign','user','VoiceQueues','FaxQueue','OpenchannelQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','voice','chat','fax','sms','mail','whatsapp','telephone:%s','campaign:%s:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','default','setMaxListeners','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20'];(function(_0x1cf8e6,_0x35a5a7){var _0x48e5b4=function(_0x4f4f36){while(--_0x4f4f36){_0x1cf8e6['push'](_0x1cf8e6['shift']());}};_0x48e5b4(++_0x35a5a7);}(_0xcaaf,0x66));var _0xfcaa=function(_0x37dc4e,_0x255646){_0x37dc4e=_0x37dc4e-0x0;var _0x31dddc=_0xcaaf[_0x37dc4e];return _0x31dddc;};'use strict';var _=require(_0xfcaa('0x0'));var util=require('util');var BPromise=require(_0xfcaa('0x1'));var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xfcaa('0x2')],'include':[{'as':_0xfcaa('0x3'),'model':db['User'],'attributes':['id',_0xfcaa('0x2'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xfcaa('0x2')],'where':{'role':_0xfcaa('0x4')}};var queryTrunks={'raw':!![],'attributes':['id',_0xfcaa('0x2')]};var queryAgents={'raw':!![],'attributes':['id',_0xfcaa('0x2')],'where':{'role':_0xfcaa('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xfcaa('0x2'),_0xfcaa('0x6')],'where':{'type':'ivr'}};function getAssociatedResources(_0xa0706d,_0x4c084d,_0x30a4a0){return db['UserProfileSection'][_0xfcaa('0x7')]({'where':{'name':_0xa0706d,'userProfileId':_0x4c084d},'raw':!![]})['then'](function(_0x586902){if(_0x586902){if(_0x586902[_0xfcaa('0x8')]){switch(_0xa0706d){case'VoiceQueues':case _0xfcaa('0x9'):case _0xfcaa('0xa'):case _0xfcaa('0xb'):case _0xfcaa('0xc'):case _0xfcaa('0xd'):case _0xfcaa('0xe'):return db[_0x30a4a0][_0xfcaa('0xf')](queryQueues);case _0xfcaa('0x10'):return db[_0x30a4a0]['findAll'](queryTelephones);case _0xfcaa('0x11'):return db[_0x30a4a0][_0xfcaa('0xf')](queryTrunks);case _0xfcaa('0x12'):return db[_0x30a4a0][_0xfcaa('0xf')](queryCampaigns);}}else{return db['UserProfileResource'][_0xfcaa('0xf')]({'attributes':[_0xfcaa('0x13')],'where':{'sectionId':_0x586902['id']},'raw':!![]})[_0xfcaa('0x14')](function(_0xf49a9b){if(_0xf49a9b){var _0x54f7f5={'where':{'id':_[_0xfcaa('0x15')](_0xf49a9b,_0xfcaa('0x13'))},'raw':!![]};switch(_0x30a4a0){case _0xfcaa('0x16'):_0x54f7f5['where'][_0xfcaa('0x17')]=_0xfcaa('0x4');break;case'Campaign':_0x54f7f5[_0xfcaa('0x18')]['type']='ivr';break;}return db[_0x30a4a0][_0xfcaa('0xf')](_0x54f7f5);}else{return[];}});}}else{return[];}})[_0xfcaa('0x14')](function(_0x416132){return _0x416132;});}function joinOrLeaveQueues(_0xa4df1,_0x2b56e4,_0x4566e1,_0x3e0a3d){_0xa4df1[_0x2b56e4](util[_0xfcaa('0x19')](_0xfcaa('0x1a'),_0x4566e1,_0x3e0a3d[_0xfcaa('0x2')]));if(_0x3e0a3d['Agents']){for(var _0x36791f=0x0;_0x36791f<_0x3e0a3d[_0xfcaa('0x3')][_0xfcaa('0x1b')];_0x36791f+=0x1){_0xa4df1[_0x2b56e4](util[_0xfcaa('0x19')](_0xfcaa('0x1c'),_0x3e0a3d[_0xfcaa('0x3')][_0x36791f][_0xfcaa('0x2')]));}}}function joinOrLeave(_0x425122,_0x653ca8,_0x5cc0f2){var _0x415bce;if(_0x425122[_0xfcaa('0x1d')][_0xfcaa('0x1e')]['id']){db['User'][_0xfcaa('0x1f')]({'attributes':['id','name',_0xfcaa('0x17'),_0xfcaa('0x20')],'where':{'id':_0x425122[_0xfcaa('0x1d')][_0xfcaa('0x1e')]['id']},'include':[{'model':db[_0xfcaa('0x21')],'as':_0xfcaa('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xfcaa('0x23')],'as':_0xfcaa('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xfcaa('0x25')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xfcaa('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xfcaa('0x27')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xfcaa('0x14')](function(_0x4605b5){if(_0x4605b5){_0x415bce=_0x4605b5;_0x425122[_0x653ca8](util['format'](_0xfcaa('0x1c'),_0x4605b5['name']));var _0x4e135a=[];switch(_0x4605b5[_0xfcaa('0x17')]){case _0xfcaa('0x28'):_0x425122[_0x653ca8](_0xfcaa('0x29'));_0x425122[_0x653ca8](_0xfcaa('0x2a'));if(queryQueues['hasOwnProperty'](_0xfcaa('0x2b'))){delete queryQueues[_0xfcaa('0x2b')];}_0x4e135a['push'](db[_0xfcaa('0x2c')][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x2e')][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db['FaxQueue'][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x2f')][_0xfcaa('0xf')](queryQueues));_0x4e135a['push'](db[_0xfcaa('0x30')]['findAll'](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db['OpenchannelQueue'][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x31')][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x16')]['findAll'](queryTelephones));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x32')][_0xfcaa('0xf')](queryTrunks));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x33')][_0xfcaa('0xf')](queryCampaigns));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x16')][_0xfcaa('0xf')](queryAgents));break;case _0xfcaa('0x34'):_0x425122[_0x653ca8](_0xfcaa('0x29'));_0x425122[_0x653ca8](_0xfcaa('0x2a'));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0x35'),_0x4605b5['userProfileId'],'VoiceQueue'));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources('ChatQueues',_0x4605b5[_0xfcaa('0x20')],'ChatQueue'));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources('FaxQueues',_0x4605b5[_0xfcaa('0x20')],_0xfcaa('0x36')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0xb'),_0x4605b5[_0xfcaa('0x20')],_0xfcaa('0x2f')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0xc'),_0x4605b5['userProfileId'],_0xfcaa('0x30')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0xd'),_0x4605b5['userProfileId'],_0xfcaa('0x37')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0xe'),_0x4605b5[_0xfcaa('0x20')],_0xfcaa('0x31')));_0x4e135a['push'](getAssociatedResources(_0xfcaa('0x10'),_0x4605b5[_0xfcaa('0x20')],_0xfcaa('0x16')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0x11'),_0x4605b5['userProfileId'],'Trunk'));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0x12'),_0x4605b5['userProfileId'],_0xfcaa('0x33')));_0x4e135a[_0xfcaa('0x2d')](db['User'][_0xfcaa('0xf')](queryAgents));break;case _0xfcaa('0x5'):_0x425122[_0x653ca8](_0xfcaa('0x29'));_0x425122[_0x653ca8](_0xfcaa('0x2a'));_0x4e135a['push'](_0x4605b5[_0xfcaa('0x38')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a['push'](_0x4605b5[_0xfcaa('0x39')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a[_0xfcaa('0x2d')](_0x4605b5[_0xfcaa('0x3a')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a['push'](_0x4605b5[_0xfcaa('0x3b')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a[_0xfcaa('0x2d')](_0x4605b5[_0xfcaa('0x3c')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a[_0xfcaa('0x2d')](_0x4605b5[_0xfcaa('0x3d')]({'attributes':['id','name']}));_0x4e135a[_0xfcaa('0x2d')](_0x4605b5['getWhatsappQueues']({'attributes':['id',_0xfcaa('0x2')]}));break;}return BPromise['all'](_0x4e135a);}})[_0xfcaa('0x14')](function(_0x4fa001){if(_0x4fa001&&_0x4fa001[_0xfcaa('0x1b')]){for(var _0x575172=0x0;_0x575172<_0x4fa001[_0xfcaa('0x1b')];_0x575172+=0x1){for(var _0x2e6e4c=0x0;_0x2e6e4c<_0x4fa001[_0x575172]['length'];_0x2e6e4c+=0x1){switch(_0x575172){case 0x0:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x3e'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x1:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x3f'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x2:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x40'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x3:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x41'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x4:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x42'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x5:joinOrLeaveQueues(_0x425122,_0x653ca8,'openchannel',_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x6:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x43'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x7:if(_0x415bce[_0xfcaa('0x17')]!==_0xfcaa('0x5'))_0x425122[_0x653ca8](util[_0xfcaa('0x19')](_0xfcaa('0x44'),_0x4fa001[_0x575172][_0x2e6e4c][_0xfcaa('0x2')]));break;case 0x8:if(_0x415bce[_0xfcaa('0x17')]!==_0xfcaa('0x5'))_0x425122[_0x653ca8](util['format']('trunk:%s',_0x4fa001[_0x575172][_0x2e6e4c]['name']));break;case 0x9:if(_0x415bce[_0xfcaa('0x17')]!=='agent')_0x425122[_0x653ca8](util[_0xfcaa('0x19')](_0xfcaa('0x45'),_0x4fa001[_0x575172][_0x2e6e4c][_0xfcaa('0x6')],_0x4fa001[_0x575172][_0x2e6e4c][_0xfcaa('0x2')]));break;case 0xa:_0x425122[_0x653ca8](util[_0xfcaa('0x19')](_0xfcaa('0x1c'),_0x4fa001[_0x575172][_0x2e6e4c][_0xfcaa('0x2')]));break;}}}}})[_0xfcaa('0x14')](function(){if(_0x653ca8==='leave'){var _0xd8675d=_['map'](_0x415bce[_0xfcaa('0x22')],'id');return _0x415bce[_0xfcaa('0x46')](_0xd8675d)[_0xfcaa('0x14')](function(){for(var _0x4e0cf7=0x0;_0x4e0cf7<_0xd8675d[_0xfcaa('0x1b')];_0x4e0cf7+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x48'),{'ChatInteractionId':Number(_0xd8675d[_0x4e0cf7]),'UserId':Number(_0x415bce['id'])});}});}})['then'](function(){if(_0x653ca8===_0xfcaa('0x49')){var _0x4a7b64=_[_0xfcaa('0x15')](_0x415bce['MailInteractions'],'id');return _0x415bce[_0xfcaa('0x4a')](_0x4a7b64)[_0xfcaa('0x14')](function(){for(var _0x184b6b=0x0;_0x184b6b<_0x4a7b64[_0xfcaa('0x1b')];_0x184b6b+=0x1){_0x5cc0f2['emit'](_0xfcaa('0x4b'),{'MailInteractionId':Number(_0x4a7b64[_0x184b6b]),'UserId':Number(_0x415bce['id'])});}});}})[_0xfcaa('0x14')](function(){if(_0x653ca8==='leave'){var _0x11a055=_[_0xfcaa('0x15')](_0x415bce[_0xfcaa('0x4c')],'id');return _0x415bce[_0xfcaa('0x4d')](_0x11a055)['then'](function(){for(var _0x2d4938=0x0;_0x2d4938<_0x11a055[_0xfcaa('0x1b')];_0x2d4938+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x4e'),{'FaxInteractionId':Number(_0x11a055[_0x2d4938]),'UserId':Number(_0x415bce['id'])});}});}})['then'](function(){if(_0x653ca8===_0xfcaa('0x49')){var _0x4e84f5=_[_0xfcaa('0x15')](_0x415bce[_0xfcaa('0x4f')],'id');return _0x415bce['removeSmsInteractions'](_0x4e84f5)[_0xfcaa('0x14')](function(){for(var _0x5c26f9=0x0;_0x5c26f9<_0x4e84f5['length'];_0x5c26f9+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x50'),{'SmsInteractionId':Number(_0x4e84f5[_0x5c26f9]),'UserId':Number(_0x415bce['id'])});}});}})[_0xfcaa('0x14')](function(){if(_0x653ca8==='leave'){var _0x5e7973=_[_0xfcaa('0x15')](_0x415bce[_0xfcaa('0x26')],'id');return _0x415bce[_0xfcaa('0x51')](_0x5e7973)['then'](function(){for(var _0x5c4316=0x0;_0x5c4316<_0x5e7973[_0xfcaa('0x1b')];_0x5c4316+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x52'),{'OpenchannelInteractionId':Number(_0x5e7973[_0x5c4316]),'UserId':Number(_0x415bce['id'])});}});}})[_0xfcaa('0x14')](function(){if(_0x653ca8===_0xfcaa('0x49')){var _0x1c058a=_['map'](_0x415bce['WhatsappInteractions'],'id');return _0x415bce[_0xfcaa('0x53')](_0x1c058a)[_0xfcaa('0x14')](function(){for(var _0x80ff4=0x0;_0x80ff4<_0x1c058a[_0xfcaa('0x1b')];_0x80ff4+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x54'),{'WhatsappInteractionId':Number(_0x1c058a[_0x80ff4]),'UserId':Number(_0x415bce['id'])});}});}})[_0xfcaa('0x55')](function(_0x5881bb){_0x425122['log'](_0x5881bb);});}}function onDisconnect(_0x2c577d,_0x2af4e4){joinOrLeave(_0x2c577d,'leave',_0x2af4e4);}function onConnect(_0x48bb09){joinOrLeave(_0x48bb09,'join');}exports[_0xfcaa('0x56')]=function(_0x23a1dd){_0x23a1dd['on']('connection',function(_0x3aac86){_0x3aac86[_0xfcaa('0x57')](0x0);_0x3aac86['address']=_0x3aac86[_0xfcaa('0x58')]['connection'][_0xfcaa('0x59')]+':'+_0x3aac86[_0xfcaa('0x58')]['connection'][_0xfcaa('0x5a')];_0x3aac86[_0xfcaa('0x5b')]=new Date();_0x3aac86['log']=function(_0xc4d7a0){console[_0xfcaa('0x5c')](_0xfcaa('0x5d')+_0x3aac86[_0xfcaa('0x5e')][_0xfcaa('0x2')]+'['+_0x3aac86[_0xfcaa('0x5f')]+']',_0xc4d7a0);};_0x3aac86['on'](_0xfcaa('0x60'),function(){onDisconnect(_0x3aac86,_0x23a1dd);_0x3aac86[_0xfcaa('0x5c')](_0xfcaa('0x61'));});onConnect(_0x3aac86);_0x3aac86[_0xfcaa('0x5c')]('CONNECTED');});};