Built motion from commit (unavailable).|2.4.20
[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 _0x74d4=['voice','chat','sms','mail','openchannel','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','user_has_mail_interactions:remove','emit','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','catch','log','join','connection','setMaxListeners','request','remoteAddress','SocketIO\x20','DISCONNECTED','CONNECTED','lodash','util','bluebird','./environment','name','Agents','User','role','telephone','agent','type','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','Telephones','findAll','IvrCampaigns','UserProfileResource','resourceId','map','where','format','%s:queue:%s','user:%s','userProfileId','handshake','query','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','Campaign','user','FaxQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x74d4,0xd0));var _0x474d=function(_0x4f16a9,_0x19968b){_0x4f16a9=_0x4f16a9-0x0;var _0x2efcea=_0x74d4[_0x4f16a9];return _0x2efcea;};'use strict';var _=require(_0x474d('0x0'));var util=require(_0x474d('0x1'));var BPromise=require(_0x474d('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x474d('0x3'));var queryQueues={'attributes':['id',_0x474d('0x4')],'include':[{'as':_0x474d('0x5'),'model':db[_0x474d('0x6')],'attributes':['id',_0x474d('0x4'),_0x474d('0x7')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x474d('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x474d('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x474d('0x4')],'where':{'role':_0x474d('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x474d('0x4'),_0x474d('0xa')],'where':{'type':_0x474d('0xb')}};function getAssociatedResources(_0x1402da,_0x2b37c1,_0x221245){return db[_0x474d('0xc')]['findOne']({'where':{'name':_0x1402da,'userProfileId':_0x2b37c1},'raw':!![]})[_0x474d('0xd')](function(_0x10251d){if(_0x10251d){if(_0x10251d[_0x474d('0xe')]){switch(_0x1402da){case _0x474d('0xf'):case _0x474d('0x10'):case _0x474d('0x11'):case _0x474d('0x12'):case _0x474d('0x13'):case _0x474d('0x14'):return db[_0x221245]['findAll'](queryQueues);case _0x474d('0x15'):return db[_0x221245]['findAll'](queryTelephones);case'Trunks':return db[_0x221245][_0x474d('0x16')](queryTrunks);case _0x474d('0x17'):return db[_0x221245][_0x474d('0x16')](queryCampaigns);}}else{return db[_0x474d('0x18')]['findAll']({'attributes':[_0x474d('0x19')],'where':{'sectionId':_0x10251d['id']},'raw':!![]})[_0x474d('0xd')](function(_0x3fcadd){if(_0x3fcadd){var _0x5af8ee={'where':{'id':_[_0x474d('0x1a')](_0x3fcadd,'resourceId')},'raw':!![]};switch(_0x221245){case _0x474d('0x6'):_0x5af8ee[_0x474d('0x1b')][_0x474d('0x7')]=_0x474d('0x8');break;case'Campaign':_0x5af8ee['where'][_0x474d('0xa')]=_0x474d('0xb');break;}return db[_0x221245][_0x474d('0x16')](_0x5af8ee);}else{return[];}});}}else{return[];}})[_0x474d('0xd')](function(_0x4cbb34){return _0x4cbb34;});}function joinOrLeaveQueues(_0x5ba801,_0x597ca9,_0x466642,_0x16576b){_0x5ba801[_0x597ca9](util[_0x474d('0x1c')](_0x474d('0x1d'),_0x466642,_0x16576b[_0x474d('0x4')]));if(_0x16576b[_0x474d('0x5')]){for(var _0x1b6d11=0x0;_0x1b6d11<_0x16576b[_0x474d('0x5')]['length'];_0x1b6d11+=0x1){_0x5ba801[_0x597ca9](util[_0x474d('0x1c')](_0x474d('0x1e'),_0x16576b[_0x474d('0x5')][_0x1b6d11]['name']));}}}function joinOrLeave(_0x1a0ae4,_0x5a9ed7,_0x55fcc2){var _0x30b88c;if(_0x1a0ae4['handshake']['query']['id']){db[_0x474d('0x6')]['find']({'attributes':['id',_0x474d('0x4'),_0x474d('0x7'),_0x474d('0x1f')],'where':{'id':_0x1a0ae4[_0x474d('0x20')][_0x474d('0x21')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x474d('0x22'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x474d('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x474d('0x24')],'as':_0x474d('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x474d('0x26')],'as':_0x474d('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x474d('0x28')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]}]})[_0x474d('0xd')](function(_0x358fac){if(_0x358fac){_0x30b88c=_0x358fac;_0x1a0ae4[_0x5a9ed7](util[_0x474d('0x1c')](_0x474d('0x1e'),_0x358fac[_0x474d('0x4')]));var _0x353c2a=[];switch(_0x358fac[_0x474d('0x7')]){case'admin':_0x1a0ae4[_0x5a9ed7](_0x474d('0x29'));_0x1a0ae4[_0x5a9ed7](_0x474d('0x2a'));if(queryQueues['hasOwnProperty'](_0x474d('0x2b'))){delete queryQueues[_0x474d('0x2b')];}_0x353c2a[_0x474d('0x2c')](db[_0x474d('0x2d')][_0x474d('0x16')](queryQueues));_0x353c2a[_0x474d('0x2c')](db[_0x474d('0x2e')][_0x474d('0x16')](queryQueues));_0x353c2a[_0x474d('0x2c')](db['FaxQueue'][_0x474d('0x16')](queryQueues));_0x353c2a[_0x474d('0x2c')](db[_0x474d('0x2f')][_0x474d('0x16')](queryQueues));_0x353c2a[_0x474d('0x2c')](db[_0x474d('0x30')][_0x474d('0x16')](queryQueues));_0x353c2a[_0x474d('0x2c')](db[_0x474d('0x31')][_0x474d('0x16')](queryQueues));_0x353c2a[_0x474d('0x2c')](db['User'][_0x474d('0x16')](queryTelephones));_0x353c2a['push'](db[_0x474d('0x32')][_0x474d('0x16')](queryTrunks));_0x353c2a[_0x474d('0x2c')](db[_0x474d('0x33')]['findAll'](queryCampaigns));_0x353c2a[_0x474d('0x2c')](db[_0x474d('0x6')]['findAll'](queryAgents));break;case _0x474d('0x34'):_0x1a0ae4[_0x5a9ed7](_0x474d('0x29'));_0x1a0ae4[_0x5a9ed7](_0x474d('0x2a'));_0x353c2a[_0x474d('0x2c')](getAssociatedResources(_0x474d('0xf'),_0x358fac[_0x474d('0x1f')],_0x474d('0x2d')));_0x353c2a[_0x474d('0x2c')](getAssociatedResources(_0x474d('0x10'),_0x358fac['userProfileId'],'ChatQueue'));_0x353c2a[_0x474d('0x2c')](getAssociatedResources('FaxQueues',_0x358fac[_0x474d('0x1f')],_0x474d('0x35')));_0x353c2a[_0x474d('0x2c')](getAssociatedResources('SmsQueues',_0x358fac[_0x474d('0x1f')],_0x474d('0x2f')));_0x353c2a[_0x474d('0x2c')](getAssociatedResources(_0x474d('0x13'),_0x358fac[_0x474d('0x1f')],_0x474d('0x30')));_0x353c2a[_0x474d('0x2c')](getAssociatedResources(_0x474d('0x14'),_0x358fac[_0x474d('0x1f')],_0x474d('0x31')));_0x353c2a['push'](getAssociatedResources(_0x474d('0x15'),_0x358fac['userProfileId'],_0x474d('0x6')));_0x353c2a[_0x474d('0x2c')](getAssociatedResources('Trunks',_0x358fac[_0x474d('0x1f')],_0x474d('0x32')));_0x353c2a[_0x474d('0x2c')](getAssociatedResources(_0x474d('0x17'),_0x358fac[_0x474d('0x1f')],_0x474d('0x33')));_0x353c2a[_0x474d('0x2c')](db[_0x474d('0x6')]['findAll'](queryAgents));break;case _0x474d('0x9'):_0x1a0ae4[_0x5a9ed7](_0x474d('0x29'));_0x1a0ae4[_0x5a9ed7](_0x474d('0x2a'));_0x353c2a[_0x474d('0x2c')](_0x358fac[_0x474d('0x36')]({'attributes':['id',_0x474d('0x4')]}));_0x353c2a['push'](_0x358fac[_0x474d('0x37')]({'attributes':['id','name']}));_0x353c2a['push'](_0x358fac[_0x474d('0x38')]({'attributes':['id','name']}));_0x353c2a[_0x474d('0x2c')](_0x358fac[_0x474d('0x39')]({'attributes':['id',_0x474d('0x4')]}));_0x353c2a['push'](_0x358fac[_0x474d('0x3a')]({'attributes':['id',_0x474d('0x4')]}));_0x353c2a[_0x474d('0x2c')](_0x358fac[_0x474d('0x3b')]({'attributes':['id','name']}));break;}return BPromise[_0x474d('0x3c')](_0x353c2a);}})[_0x474d('0xd')](function(_0x1f2fbb){if(_0x1f2fbb&&_0x1f2fbb[_0x474d('0x3d')]){for(var _0x1c8f52=0x0;_0x1c8f52<_0x1f2fbb[_0x474d('0x3d')];_0x1c8f52+=0x1){for(var _0x1e8c14=0x0;_0x1e8c14<_0x1f2fbb[_0x1c8f52]['length'];_0x1e8c14+=0x1){switch(_0x1c8f52){case 0x0:joinOrLeaveQueues(_0x1a0ae4,_0x5a9ed7,_0x474d('0x3e'),_0x1f2fbb[_0x1c8f52][_0x1e8c14]);break;case 0x1:joinOrLeaveQueues(_0x1a0ae4,_0x5a9ed7,_0x474d('0x3f'),_0x1f2fbb[_0x1c8f52][_0x1e8c14]);break;case 0x2:joinOrLeaveQueues(_0x1a0ae4,_0x5a9ed7,'fax',_0x1f2fbb[_0x1c8f52][_0x1e8c14]);break;case 0x3:joinOrLeaveQueues(_0x1a0ae4,_0x5a9ed7,_0x474d('0x40'),_0x1f2fbb[_0x1c8f52][_0x1e8c14]);break;case 0x4:joinOrLeaveQueues(_0x1a0ae4,_0x5a9ed7,_0x474d('0x41'),_0x1f2fbb[_0x1c8f52][_0x1e8c14]);break;case 0x5:joinOrLeaveQueues(_0x1a0ae4,_0x5a9ed7,_0x474d('0x42'),_0x1f2fbb[_0x1c8f52][_0x1e8c14]);break;case 0x6:_0x1a0ae4[_0x5a9ed7](util[_0x474d('0x1c')](_0x474d('0x43'),_0x1f2fbb[_0x1c8f52][_0x1e8c14]['name']));break;case 0x7:_0x1a0ae4[_0x5a9ed7](util[_0x474d('0x1c')](_0x474d('0x44'),_0x1f2fbb[_0x1c8f52][_0x1e8c14][_0x474d('0x4')]));break;case 0x8:_0x1a0ae4[_0x5a9ed7](util[_0x474d('0x1c')](_0x474d('0x45'),_0x1f2fbb[_0x1c8f52][_0x1e8c14][_0x474d('0xa')],_0x1f2fbb[_0x1c8f52][_0x1e8c14]['name']));break;case 0x9:_0x1a0ae4[_0x5a9ed7](util[_0x474d('0x1c')](_0x474d('0x1e'),_0x1f2fbb[_0x1c8f52][_0x1e8c14][_0x474d('0x4')]));break;}}}}})[_0x474d('0xd')](function(){if(_0x5a9ed7===_0x474d('0x46')){var _0x123cbb=_['map'](_0x30b88c[_0x474d('0x22')],'id');return _0x30b88c[_0x474d('0x47')](_0x123cbb)[_0x474d('0xd')](function(){for(var _0x441504=0x0;_0x441504<_0x123cbb[_0x474d('0x3d')];_0x441504+=0x1){_0x55fcc2['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x123cbb[_0x441504]),'UserId':Number(_0x30b88c['id'])});}});}})[_0x474d('0xd')](function(){if(_0x5a9ed7===_0x474d('0x46')){var _0x4ebd34=_[_0x474d('0x1a')](_0x30b88c[_0x474d('0x23')],'id');return _0x30b88c['removeMailInteractions'](_0x4ebd34)[_0x474d('0xd')](function(){for(var _0x5bf581=0x0;_0x5bf581<_0x4ebd34['length'];_0x5bf581+=0x1){_0x55fcc2['emit'](_0x474d('0x48'),{'MailInteractionId':Number(_0x4ebd34[_0x5bf581]),'UserId':Number(_0x30b88c['id'])});}});}})[_0x474d('0xd')](function(){if(_0x5a9ed7===_0x474d('0x46')){var _0xe3d532=_[_0x474d('0x1a')](_0x30b88c[_0x474d('0x25')],'id');return _0x30b88c['removeFaxInteractions'](_0xe3d532)[_0x474d('0xd')](function(){for(var _0x537238=0x0;_0x537238<_0xe3d532['length'];_0x537238+=0x1){_0x55fcc2[_0x474d('0x49')](_0x474d('0x4a'),{'FaxInteractionId':Number(_0xe3d532[_0x537238]),'UserId':Number(_0x30b88c['id'])});}});}})[_0x474d('0xd')](function(){if(_0x5a9ed7==='leave'){var _0x38b0d4=_[_0x474d('0x1a')](_0x30b88c[_0x474d('0x27')],'id');return _0x30b88c[_0x474d('0x4b')](_0x38b0d4)['then'](function(){for(var _0x498e52=0x0;_0x498e52<_0x38b0d4[_0x474d('0x3d')];_0x498e52+=0x1){_0x55fcc2['emit'](_0x474d('0x4c'),{'SmsInteractionId':Number(_0x38b0d4[_0x498e52]),'UserId':Number(_0x30b88c['id'])});}});}})[_0x474d('0xd')](function(){if(_0x5a9ed7===_0x474d('0x46')){var _0x4a4f68=_['map'](_0x30b88c[_0x474d('0x4d')],'id');return _0x30b88c[_0x474d('0x4e')](_0x4a4f68)['then'](function(){for(var _0x2518d4=0x0;_0x2518d4<_0x4a4f68[_0x474d('0x3d')];_0x2518d4+=0x1){_0x55fcc2[_0x474d('0x49')](_0x474d('0x4f'),{'OpenchannelInteractionId':Number(_0x4a4f68[_0x2518d4]),'UserId':Number(_0x30b88c['id'])});}});}})[_0x474d('0x50')](function(_0x39ab45){_0x1a0ae4[_0x474d('0x51')](_0x39ab45);});}}function onDisconnect(_0x1d3ca9,_0xf5213b){joinOrLeave(_0x1d3ca9,_0x474d('0x46'),_0xf5213b);}function onConnect(_0x5b24a6){joinOrLeave(_0x5b24a6,_0x474d('0x52'));}exports['default']=function(_0x4ed852){_0x4ed852['on'](_0x474d('0x53'),function(_0x3349b9){_0x3349b9[_0x474d('0x54')](0x0);_0x3349b9['address']=_0x3349b9[_0x474d('0x55')]['connection'][_0x474d('0x56')]+':'+_0x3349b9[_0x474d('0x55')]['connection']['remotePort'];_0x3349b9['connectedAt']=new Date();_0x3349b9[_0x474d('0x51')]=function(_0x401b60){console[_0x474d('0x51')](_0x474d('0x57')+_0x3349b9['nsp'][_0x474d('0x4')]+'['+_0x3349b9['address']+']',_0x401b60);};_0x3349b9['on']('disconnect',function(){onDisconnect(_0x3349b9,_0x4ed852);_0x3349b9['log'](_0x474d('0x58'));});onConnect(_0x3349b9);_0x3349b9[_0x474d('0x51')](_0x474d('0x59'));});};