Built motion from commit (unavailable).|2.5.28
[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 _0x83eb=['map','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','join','default','connection','setMaxListeners','request','connectedAt','log','SocketIO\x20','nsp','address','DISCONNECTED','lodash','util','./environment','name','Agents','User','role','agent','telephone','type','UserProfileSection','findOne','autoAssociation','VoiceQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','where','ivr','then','format','%s:queue:%s','length','user:%s','handshake','query','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','voice:outbound','FaxQueues','FaxQueue','SmsQueues','MailQueues','OpenchannelQueue','Campaign','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','chat','sms','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave'];(function(_0xf54a75,_0x16e78d){var _0x5069df=function(_0x4d4533){while(--_0x4d4533){_0xf54a75['push'](_0xf54a75['shift']());}};_0x5069df(++_0x16e78d);}(_0x83eb,0x1f2));var _0xb83e=function(_0x29dae9,_0x3542c5){_0x29dae9=_0x29dae9-0x0;var _0xfb72a0=_0x83eb[_0x29dae9];return _0xfb72a0;};'use strict';var _=require(_0xb83e('0x0'));var util=require(_0xb83e('0x1'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var config=require(_0xb83e('0x2'));var queryQueues={'attributes':['id',_0xb83e('0x3')],'include':[{'as':_0xb83e('0x4'),'model':db[_0xb83e('0x5')],'attributes':['id','name',_0xb83e('0x6')],'raw':!![],'where':{'role':_0xb83e('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xb83e('0x3')],'where':{'role':_0xb83e('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xb83e('0x3')],'where':{'role':_0xb83e('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb83e('0x3'),_0xb83e('0x9')],'where':{'type':'ivr'}};function getAssociatedResources(_0x99df18,_0x4ef9a9,_0x40b21a){return db[_0xb83e('0xa')][_0xb83e('0xb')]({'where':{'name':_0x99df18,'userProfileId':_0x4ef9a9},'raw':!![]})['then'](function(_0x461c7e){if(_0x461c7e){if(_0x461c7e[_0xb83e('0xc')]){switch(_0x99df18){case _0xb83e('0xd'):case'ChatQueues':case'FaxQueues':case'SmsQueues':case'MailQueues':case _0xb83e('0xe'):case _0xb83e('0xf'):return db[_0x40b21a][_0xb83e('0x10')](queryQueues);case _0xb83e('0x11'):return db[_0x40b21a][_0xb83e('0x10')](queryTelephones);case _0xb83e('0x12'):return db[_0x40b21a][_0xb83e('0x10')](queryTrunks);case _0xb83e('0x13'):return db[_0x40b21a][_0xb83e('0x10')](queryCampaigns);}}else{return db[_0xb83e('0x14')]['findAll']({'attributes':[_0xb83e('0x15')],'where':{'sectionId':_0x461c7e['id']},'raw':!![]})['then'](function(_0x3199c2){if(_0x3199c2){var _0x2bb884={'where':{'id':_['map'](_0x3199c2,_0xb83e('0x15'))},'raw':!![]};switch(_0x40b21a){case _0xb83e('0x5'):_0x2bb884[_0xb83e('0x16')][_0xb83e('0x6')]='telephone';break;case'Campaign':_0x2bb884['where'][_0xb83e('0x9')]=_0xb83e('0x17');break;}return db[_0x40b21a][_0xb83e('0x10')](_0x2bb884);}else{return[];}});}}else{return[];}})[_0xb83e('0x18')](function(_0x3be546){return _0x3be546;});}function joinOrLeaveQueues(_0x47a364,_0x5d1b15,_0x89d29d,_0x1fe5bd){_0x47a364[_0x5d1b15](util[_0xb83e('0x19')](_0xb83e('0x1a'),_0x89d29d,_0x1fe5bd['name']));if(_0x1fe5bd['Agents']){for(var _0x2d45f8=0x0;_0x2d45f8<_0x1fe5bd['Agents'][_0xb83e('0x1b')];_0x2d45f8+=0x1){_0x47a364[_0x5d1b15](util[_0xb83e('0x19')](_0xb83e('0x1c'),_0x1fe5bd[_0xb83e('0x4')][_0x2d45f8][_0xb83e('0x3')]));}}}function joinOrLeave(_0x2502e7,_0x21782e,_0x151804){var _0x2af831;if(_0x2502e7[_0xb83e('0x1d')][_0xb83e('0x1e')]['id']){db[_0xb83e('0x5')]['find']({'attributes':['id',_0xb83e('0x3'),_0xb83e('0x6'),_0xb83e('0x1f')],'where':{'id':_0x2502e7[_0xb83e('0x1d')]['query']['id']},'include':[{'model':db[_0xb83e('0x20')],'as':_0xb83e('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0xb83e('0x22')],'as':_0xb83e('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xb83e('0x24')],'as':_0xb83e('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xb83e('0x26')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb83e('0x27')],'as':_0xb83e('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xb83e('0x29')],'as':_0xb83e('0x2a'),'attributes':['id'],'raw':!![]}]})[_0xb83e('0x18')](function(_0x2384fe){if(_0x2384fe){_0x2af831=_0x2384fe;_0x2502e7[_0x21782e](util[_0xb83e('0x19')]('user:%s',_0x2384fe[_0xb83e('0x3')]));var _0x3fba79=[];switch(_0x2384fe['role']){case _0xb83e('0x2b'):_0x2502e7[_0x21782e](_0xb83e('0x2c'));_0x2502e7[_0x21782e]('voice:outbound');if(queryQueues[_0xb83e('0x2d')](_0xb83e('0x2e'))){delete queryQueues[_0xb83e('0x2e')];}_0x3fba79[_0xb83e('0x2f')](db[_0xb83e('0x30')][_0xb83e('0x10')](queryQueues));_0x3fba79['push'](db[_0xb83e('0x31')][_0xb83e('0x10')](queryQueues));_0x3fba79[_0xb83e('0x2f')](db['FaxQueue'][_0xb83e('0x10')](queryQueues));_0x3fba79[_0xb83e('0x2f')](db[_0xb83e('0x32')][_0xb83e('0x10')](queryQueues));_0x3fba79[_0xb83e('0x2f')](db[_0xb83e('0x33')][_0xb83e('0x10')](queryQueues));_0x3fba79[_0xb83e('0x2f')](db['OpenchannelQueue'][_0xb83e('0x10')](queryQueues));_0x3fba79['push'](db[_0xb83e('0x34')][_0xb83e('0x10')](queryQueues));_0x3fba79[_0xb83e('0x2f')](db[_0xb83e('0x5')]['findAll'](queryTelephones));_0x3fba79['push'](db[_0xb83e('0x35')][_0xb83e('0x10')](queryTrunks));_0x3fba79[_0xb83e('0x2f')](db['Campaign'][_0xb83e('0x10')](queryCampaigns));_0x3fba79[_0xb83e('0x2f')](db[_0xb83e('0x5')][_0xb83e('0x10')](queryAgents));break;case'user':_0x2502e7[_0x21782e](_0xb83e('0x2c'));_0x2502e7[_0x21782e](_0xb83e('0x36'));_0x3fba79[_0xb83e('0x2f')](getAssociatedResources(_0xb83e('0xd'),_0x2384fe[_0xb83e('0x1f')],_0xb83e('0x30')));_0x3fba79['push'](getAssociatedResources('ChatQueues',_0x2384fe[_0xb83e('0x1f')],'ChatQueue'));_0x3fba79[_0xb83e('0x2f')](getAssociatedResources(_0xb83e('0x37'),_0x2384fe[_0xb83e('0x1f')],_0xb83e('0x38')));_0x3fba79[_0xb83e('0x2f')](getAssociatedResources(_0xb83e('0x39'),_0x2384fe['userProfileId'],_0xb83e('0x32')));_0x3fba79[_0xb83e('0x2f')](getAssociatedResources(_0xb83e('0x3a'),_0x2384fe[_0xb83e('0x1f')],_0xb83e('0x33')));_0x3fba79[_0xb83e('0x2f')](getAssociatedResources(_0xb83e('0xe'),_0x2384fe[_0xb83e('0x1f')],_0xb83e('0x3b')));_0x3fba79[_0xb83e('0x2f')](getAssociatedResources('WhatsappQueues',_0x2384fe[_0xb83e('0x1f')],_0xb83e('0x34')));_0x3fba79['push'](getAssociatedResources(_0xb83e('0x11'),_0x2384fe[_0xb83e('0x1f')],_0xb83e('0x5')));_0x3fba79['push'](getAssociatedResources(_0xb83e('0x12'),_0x2384fe[_0xb83e('0x1f')],_0xb83e('0x35')));_0x3fba79[_0xb83e('0x2f')](getAssociatedResources(_0xb83e('0x13'),_0x2384fe[_0xb83e('0x1f')],_0xb83e('0x3c')));_0x3fba79[_0xb83e('0x2f')](db['User'][_0xb83e('0x10')](queryAgents));break;case _0xb83e('0x7'):_0x2502e7[_0x21782e](_0xb83e('0x2c'));_0x2502e7[_0x21782e](_0xb83e('0x36'));_0x3fba79[_0xb83e('0x2f')](_0x2384fe['getVoiceQueues']({'attributes':['id','name']}));_0x3fba79['push'](_0x2384fe['getChatQueues']({'attributes':['id',_0xb83e('0x3')]}));_0x3fba79[_0xb83e('0x2f')](_0x2384fe['getFaxQueues']({'attributes':['id',_0xb83e('0x3')]}));_0x3fba79[_0xb83e('0x2f')](_0x2384fe['getSmsQueues']({'attributes':['id','name']}));_0x3fba79[_0xb83e('0x2f')](_0x2384fe[_0xb83e('0x3d')]({'attributes':['id',_0xb83e('0x3')]}));_0x3fba79[_0xb83e('0x2f')](_0x2384fe[_0xb83e('0x3e')]({'attributes':['id',_0xb83e('0x3')]}));_0x3fba79[_0xb83e('0x2f')](_0x2384fe[_0xb83e('0x3f')]({'attributes':['id',_0xb83e('0x3')]}));break;}return BPromise[_0xb83e('0x40')](_0x3fba79);}})[_0xb83e('0x18')](function(_0x3127e8){if(_0x3127e8&&_0x3127e8[_0xb83e('0x1b')]){for(var _0x2bf9dd=0x0;_0x2bf9dd<_0x3127e8[_0xb83e('0x1b')];_0x2bf9dd+=0x1){for(var _0xd5a4b5=0x0;_0xd5a4b5<_0x3127e8[_0x2bf9dd][_0xb83e('0x1b')];_0xd5a4b5+=0x1){switch(_0x2bf9dd){case 0x0:joinOrLeaveQueues(_0x2502e7,_0x21782e,'voice',_0x3127e8[_0x2bf9dd][_0xd5a4b5]);break;case 0x1:joinOrLeaveQueues(_0x2502e7,_0x21782e,_0xb83e('0x41'),_0x3127e8[_0x2bf9dd][_0xd5a4b5]);break;case 0x2:joinOrLeaveQueues(_0x2502e7,_0x21782e,'fax',_0x3127e8[_0x2bf9dd][_0xd5a4b5]);break;case 0x3:joinOrLeaveQueues(_0x2502e7,_0x21782e,_0xb83e('0x42'),_0x3127e8[_0x2bf9dd][_0xd5a4b5]);break;case 0x4:joinOrLeaveQueues(_0x2502e7,_0x21782e,'mail',_0x3127e8[_0x2bf9dd][_0xd5a4b5]);break;case 0x5:joinOrLeaveQueues(_0x2502e7,_0x21782e,'openchannel',_0x3127e8[_0x2bf9dd][_0xd5a4b5]);break;case 0x6:joinOrLeaveQueues(_0x2502e7,_0x21782e,_0xb83e('0x43'),_0x3127e8[_0x2bf9dd][_0xd5a4b5]);break;case 0x7:if(_0x2af831[_0xb83e('0x6')]!==_0xb83e('0x7'))_0x2502e7[_0x21782e](util[_0xb83e('0x19')](_0xb83e('0x44'),_0x3127e8[_0x2bf9dd][_0xd5a4b5][_0xb83e('0x3')]));break;case 0x8:if(_0x2af831[_0xb83e('0x6')]!==_0xb83e('0x7'))_0x2502e7[_0x21782e](util[_0xb83e('0x19')](_0xb83e('0x45'),_0x3127e8[_0x2bf9dd][_0xd5a4b5]['name']));break;case 0x9:if(_0x2af831[_0xb83e('0x6')]!=='agent')_0x2502e7[_0x21782e](util[_0xb83e('0x19')](_0xb83e('0x46'),_0x3127e8[_0x2bf9dd][_0xd5a4b5]['type'],_0x3127e8[_0x2bf9dd][_0xd5a4b5][_0xb83e('0x3')]));break;case 0xa:_0x2502e7[_0x21782e](util[_0xb83e('0x19')](_0xb83e('0x1c'),_0x3127e8[_0x2bf9dd][_0xd5a4b5][_0xb83e('0x3')]));break;}}}}})[_0xb83e('0x18')](function(){if(_0x21782e===_0xb83e('0x47')){var _0x3fea18=_[_0xb83e('0x48')](_0x2af831['ChatInteractions'],'id');return _0x2af831['removeChatInteractions'](_0x3fea18)['then'](function(){for(var _0x5e4bf5=0x0;_0x5e4bf5<_0x3fea18[_0xb83e('0x1b')];_0x5e4bf5+=0x1){_0x151804[_0xb83e('0x49')](_0xb83e('0x4a'),{'ChatInteractionId':Number(_0x3fea18[_0x5e4bf5]),'UserId':Number(_0x2af831['id'])});}});}})[_0xb83e('0x18')](function(){if(_0x21782e===_0xb83e('0x47')){var _0x1b7452=_[_0xb83e('0x48')](_0x2af831['MailInteractions'],'id');return _0x2af831[_0xb83e('0x4b')](_0x1b7452)[_0xb83e('0x18')](function(){for(var _0x23fa97=0x0;_0x23fa97<_0x1b7452['length'];_0x23fa97+=0x1){_0x151804[_0xb83e('0x49')](_0xb83e('0x4c'),{'MailInteractionId':Number(_0x1b7452[_0x23fa97]),'UserId':Number(_0x2af831['id'])});}});}})['then'](function(){if(_0x21782e===_0xb83e('0x47')){var _0x3b8636=_[_0xb83e('0x48')](_0x2af831['FaxInteractions'],'id');return _0x2af831['removeFaxInteractions'](_0x3b8636)[_0xb83e('0x18')](function(){for(var _0xc016aa=0x0;_0xc016aa<_0x3b8636['length'];_0xc016aa+=0x1){_0x151804[_0xb83e('0x49')](_0xb83e('0x4d'),{'FaxInteractionId':Number(_0x3b8636[_0xc016aa]),'UserId':Number(_0x2af831['id'])});}});}})[_0xb83e('0x18')](function(){if(_0x21782e===_0xb83e('0x47')){var _0x28a333=_[_0xb83e('0x48')](_0x2af831[_0xb83e('0x4e')],'id');return _0x2af831[_0xb83e('0x4f')](_0x28a333)[_0xb83e('0x18')](function(){for(var _0x52a2d5=0x0;_0x52a2d5<_0x28a333[_0xb83e('0x1b')];_0x52a2d5+=0x1){_0x151804[_0xb83e('0x49')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x28a333[_0x52a2d5]),'UserId':Number(_0x2af831['id'])});}});}})[_0xb83e('0x18')](function(){if(_0x21782e===_0xb83e('0x47')){var _0x2c2b14=_['map'](_0x2af831[_0xb83e('0x28')],'id');return _0x2af831[_0xb83e('0x50')](_0x2c2b14)[_0xb83e('0x18')](function(){for(var _0x235759=0x0;_0x235759<_0x2c2b14[_0xb83e('0x1b')];_0x235759+=0x1){_0x151804[_0xb83e('0x49')](_0xb83e('0x51'),{'OpenchannelInteractionId':Number(_0x2c2b14[_0x235759]),'UserId':Number(_0x2af831['id'])});}});}})[_0xb83e('0x18')](function(){if(_0x21782e==='leave'){var _0x11eb09=_[_0xb83e('0x48')](_0x2af831[_0xb83e('0x2a')],'id');return _0x2af831['removeWhatsappInteractions'](_0x11eb09)[_0xb83e('0x18')](function(){for(var _0xcc4d2=0x0;_0xcc4d2<_0x11eb09[_0xb83e('0x1b')];_0xcc4d2+=0x1){_0x151804['emit'](_0xb83e('0x52'),{'WhatsappInteractionId':Number(_0x11eb09[_0xcc4d2]),'UserId':Number(_0x2af831['id'])});}});}})[_0xb83e('0x53')](function(_0x2b0427){_0x2502e7['log'](_0x2b0427);});}}function onDisconnect(_0x2ab8b8,_0x29b0b5){joinOrLeave(_0x2ab8b8,'leave',_0x29b0b5);}function onConnect(_0x32379a){joinOrLeave(_0x32379a,_0xb83e('0x54'));}exports[_0xb83e('0x55')]=function(_0x49e956){_0x49e956['on'](_0xb83e('0x56'),function(_0x5c9816){_0x5c9816[_0xb83e('0x57')](0x0);_0x5c9816['address']=_0x5c9816[_0xb83e('0x58')][_0xb83e('0x56')]['remoteAddress']+':'+_0x5c9816[_0xb83e('0x58')][_0xb83e('0x56')]['remotePort'];_0x5c9816[_0xb83e('0x59')]=new Date();_0x5c9816['log']=function(_0x4828cc){console[_0xb83e('0x5a')](_0xb83e('0x5b')+_0x5c9816[_0xb83e('0x5c')][_0xb83e('0x3')]+'['+_0x5c9816[_0xb83e('0x5d')]+']',_0x4828cc);};_0x5c9816['on']('disconnect',function(){onDisconnect(_0x5c9816,_0x49e956);_0x5c9816['log'](_0xb83e('0x5e'));});onConnect(_0x5c9816);_0x5c9816[_0xb83e('0x5a')]('CONNECTED');});};