Built motion from commit 497d3d92.|2.5.43
[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 _0x8561=['fax','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','removeChatInteractions','emit','leave','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','setMaxListeners','connection','remoteAddress','request','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','util','bluebird','./environment','Agents','name','agent','type','UserProfileSection','findOne','autoAssociation','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','then','map','User','telephone','ivr','format','length','user:%s','handshake','query','find','role','userProfileId','ChatInteractions','MailInteraction','FaxInteraction','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueues','ChatQueue','MailQueues','Campaign','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all'];(function(_0x2bf466,_0x4929a5){var _0x856885=function(_0x102ef1){while(--_0x102ef1){_0x2bf466['push'](_0x2bf466['shift']());}};_0x856885(++_0x4929a5);}(_0x8561,0x1b2));var _0x1856=function(_0x34d275,_0x5d84ee){_0x34d275=_0x34d275-0x0;var _0x1379cc=_0x8561[_0x34d275];return _0x1379cc;};'use strict';var _=require('lodash');var util=require(_0x1856('0x0'));var BPromise=require(_0x1856('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x1856('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x1856('0x3'),'model':db['User'],'attributes':['id',_0x1856('0x4'),'role'],'raw':!![],'where':{'role':_0x1856('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x1856('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x1856('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x1856('0x6')],'where':{'type':'ivr'}};function getAssociatedResources(_0x4c19c5,_0x5b0930,_0x5c3bc5){return db[_0x1856('0x7')][_0x1856('0x8')]({'where':{'name':_0x4c19c5,'userProfileId':_0x5b0930},'raw':!![]})['then'](function(_0x55fe85){if(_0x55fe85){if(_0x55fe85[_0x1856('0x9')]){switch(_0x4c19c5){case'VoiceQueues':case _0x1856('0xa'):case _0x1856('0xb'):case _0x1856('0xc'):case'MailQueues':case _0x1856('0xd'):case _0x1856('0xe'):return db[_0x5c3bc5]['findAll'](queryQueues);case _0x1856('0xf'):return db[_0x5c3bc5][_0x1856('0x10')](queryTelephones);case _0x1856('0x11'):return db[_0x5c3bc5]['findAll'](queryTrunks);case _0x1856('0x12'):return db[_0x5c3bc5][_0x1856('0x10')](queryCampaigns);}}else{return db[_0x1856('0x13')]['findAll']({'attributes':[_0x1856('0x14')],'where':{'sectionId':_0x55fe85['id']},'raw':!![]})[_0x1856('0x15')](function(_0x12a82f){if(_0x12a82f){var _0x3ff3af={'where':{'id':_[_0x1856('0x16')](_0x12a82f,_0x1856('0x14'))},'raw':!![]};switch(_0x5c3bc5){case _0x1856('0x17'):_0x3ff3af['where']['role']=_0x1856('0x18');break;case'Campaign':_0x3ff3af['where'][_0x1856('0x6')]=_0x1856('0x19');break;}return db[_0x5c3bc5]['findAll'](_0x3ff3af);}else{return[];}});}}else{return[];}})['then'](function(_0x1a12e1){return _0x1a12e1;});}function joinOrLeaveQueues(_0x40d229,_0xd19f62,_0x17ed21,_0x2d4771){_0x40d229[_0xd19f62](util[_0x1856('0x1a')]('%s:queue:%s',_0x17ed21,_0x2d4771[_0x1856('0x4')]));if(_0x2d4771[_0x1856('0x3')]){for(var _0x1dd95d=0x0;_0x1dd95d<_0x2d4771[_0x1856('0x3')][_0x1856('0x1b')];_0x1dd95d+=0x1){_0x40d229[_0xd19f62](util[_0x1856('0x1a')](_0x1856('0x1c'),_0x2d4771['Agents'][_0x1dd95d]['name']));}}}function joinOrLeave(_0x237d8b,_0x31df72,_0x31dc64){var _0x4b867e;if(_0x237d8b[_0x1856('0x1d')][_0x1856('0x1e')]['id']){db[_0x1856('0x17')][_0x1856('0x1f')]({'attributes':['id','name',_0x1856('0x20'),_0x1856('0x21')],'where':{'id':_0x237d8b[_0x1856('0x1d')][_0x1856('0x1e')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x1856('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x23')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x24')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x25')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x26')],'as':_0x1856('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x28')],'as':_0x1856('0x29'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x2f3d8f){if(_0x2f3d8f){_0x4b867e=_0x2f3d8f;_0x237d8b[_0x31df72](util[_0x1856('0x1a')](_0x1856('0x1c'),_0x2f3d8f[_0x1856('0x4')]));var _0x3ef572=[];switch(_0x2f3d8f[_0x1856('0x20')]){case'admin':_0x237d8b[_0x31df72](_0x1856('0x2a'));_0x237d8b[_0x31df72](_0x1856('0x2b'));if(queryQueues[_0x1856('0x2c')]('include')){delete queryQueues[_0x1856('0x2d')];}_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x2f')]['findAll'](queryQueues));_0x3ef572[_0x1856('0x2e')](db['ChatQueue'][_0x1856('0x10')](queryQueues));_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x30')][_0x1856('0x10')](queryQueues));_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x31')][_0x1856('0x10')](queryQueues));_0x3ef572['push'](db[_0x1856('0x32')][_0x1856('0x10')](queryQueues));_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x33')][_0x1856('0x10')](queryQueues));_0x3ef572['push'](db[_0x1856('0x34')][_0x1856('0x10')](queryQueues));_0x3ef572[_0x1856('0x2e')](db['User'][_0x1856('0x10')](queryTelephones));_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x35')][_0x1856('0x10')](queryTrunks));_0x3ef572[_0x1856('0x2e')](db['Campaign']['findAll'](queryCampaigns));_0x3ef572['push'](db[_0x1856('0x17')]['findAll'](queryAgents));break;case _0x1856('0x36'):_0x237d8b[_0x31df72](_0x1856('0x2a'));_0x237d8b[_0x31df72]('voice:outbound');_0x3ef572['push'](getAssociatedResources(_0x1856('0x37'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x2f')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources('ChatQueues',_0x2f3d8f[_0x1856('0x21')],_0x1856('0x38')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources(_0x1856('0xb'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x30')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources('SmsQueues',_0x2f3d8f[_0x1856('0x21')],_0x1856('0x31')));_0x3ef572['push'](getAssociatedResources(_0x1856('0x39'),_0x2f3d8f[_0x1856('0x21')],'MailQueue'));_0x3ef572['push'](getAssociatedResources(_0x1856('0xd'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x33')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources(_0x1856('0xe'),_0x2f3d8f[_0x1856('0x21')],'WhatsappQueue'));_0x3ef572[_0x1856('0x2e')](getAssociatedResources('Telephones',_0x2f3d8f[_0x1856('0x21')],_0x1856('0x17')));_0x3ef572['push'](getAssociatedResources(_0x1856('0x11'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x35')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources(_0x1856('0x12'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x3a')));_0x3ef572['push'](db['User'][_0x1856('0x10')](queryAgents));break;case'agent':_0x237d8b[_0x31df72]('voice:inbound');_0x237d8b[_0x31df72](_0x1856('0x2b'));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f['getVoiceQueues']({'attributes':['id',_0x1856('0x4')]}));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f[_0x1856('0x3b')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f[_0x1856('0x3c')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f[_0x1856('0x3d')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572['push'](_0x2f3d8f[_0x1856('0x3e')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f[_0x1856('0x3f')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572['push'](_0x2f3d8f[_0x1856('0x40')]({'attributes':['id',_0x1856('0x4')]}));break;}return BPromise[_0x1856('0x41')](_0x3ef572);}})[_0x1856('0x15')](function(_0x426ea5){if(_0x426ea5&&_0x426ea5['length']){for(var _0x942900=0x0;_0x942900<_0x426ea5[_0x1856('0x1b')];_0x942900+=0x1){for(var _0x3426ed=0x0;_0x3426ed<_0x426ea5[_0x942900]['length'];_0x3426ed+=0x1){switch(_0x942900){case 0x0:joinOrLeaveQueues(_0x237d8b,_0x31df72,'voice',_0x426ea5[_0x942900][_0x3426ed]);break;case 0x1:joinOrLeaveQueues(_0x237d8b,_0x31df72,'chat',_0x426ea5[_0x942900][_0x3426ed]);break;case 0x2:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x42'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x3:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x43'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x4:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x44'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x5:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x45'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x6:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x46'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x7:if(_0x4b867e['role']!==_0x1856('0x5'))_0x237d8b[_0x31df72](util[_0x1856('0x1a')](_0x1856('0x47'),_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x4')]));break;case 0x8:if(_0x4b867e['role']!==_0x1856('0x5'))_0x237d8b[_0x31df72](util[_0x1856('0x1a')]('trunk:%s',_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x4')]));break;case 0x9:if(_0x4b867e[_0x1856('0x20')]!==_0x1856('0x5'))_0x237d8b[_0x31df72](util[_0x1856('0x1a')](_0x1856('0x48'),_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x6')],_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x4')]));break;case 0xa:_0x237d8b[_0x31df72](util[_0x1856('0x1a')]('user:%s',_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x4')]));break;}}}}})['then'](function(){if(_0x31df72==='leave'){var _0xc8def7=_['map'](_0x4b867e[_0x1856('0x22')],'id');return _0x4b867e[_0x1856('0x49')](_0xc8def7)[_0x1856('0x15')](function(){for(var _0x3256ae=0x0;_0x3256ae<_0xc8def7[_0x1856('0x1b')];_0x3256ae+=0x1){_0x31dc64[_0x1856('0x4a')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0xc8def7[_0x3256ae]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x15')](function(){if(_0x31df72===_0x1856('0x4b')){var _0x5b3704=_[_0x1856('0x16')](_0x4b867e[_0x1856('0x4c')],'id');return _0x4b867e[_0x1856('0x4d')](_0x5b3704)[_0x1856('0x15')](function(){for(var _0x5beae8=0x0;_0x5beae8<_0x5b3704[_0x1856('0x1b')];_0x5beae8+=0x1){_0x31dc64[_0x1856('0x4a')](_0x1856('0x4e'),{'MailInteractionId':Number(_0x5b3704[_0x5beae8]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x15')](function(){if(_0x31df72===_0x1856('0x4b')){var _0x40e2f5=_['map'](_0x4b867e['FaxInteractions'],'id');return _0x4b867e[_0x1856('0x4f')](_0x40e2f5)[_0x1856('0x15')](function(){for(var _0x544d0a=0x0;_0x544d0a<_0x40e2f5[_0x1856('0x1b')];_0x544d0a+=0x1){_0x31dc64[_0x1856('0x4a')](_0x1856('0x50'),{'FaxInteractionId':Number(_0x40e2f5[_0x544d0a]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x15')](function(){if(_0x31df72===_0x1856('0x4b')){var _0x593e60=_[_0x1856('0x16')](_0x4b867e[_0x1856('0x51')],'id');return _0x4b867e[_0x1856('0x52')](_0x593e60)[_0x1856('0x15')](function(){for(var _0xec318d=0x0;_0xec318d<_0x593e60[_0x1856('0x1b')];_0xec318d+=0x1){_0x31dc64[_0x1856('0x4a')](_0x1856('0x53'),{'SmsInteractionId':Number(_0x593e60[_0xec318d]),'UserId':Number(_0x4b867e['id'])});}});}})['then'](function(){if(_0x31df72===_0x1856('0x4b')){var _0x24499a=_['map'](_0x4b867e[_0x1856('0x27')],'id');return _0x4b867e['removeOpenchannelInteractions'](_0x24499a)['then'](function(){for(var _0x2301ae=0x0;_0x2301ae<_0x24499a['length'];_0x2301ae+=0x1){_0x31dc64['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x24499a[_0x2301ae]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x15')](function(){if(_0x31df72===_0x1856('0x4b')){var _0x98740a=_[_0x1856('0x16')](_0x4b867e[_0x1856('0x29')],'id');return _0x4b867e[_0x1856('0x54')](_0x98740a)[_0x1856('0x15')](function(){for(var _0x53eee2=0x0;_0x53eee2<_0x98740a[_0x1856('0x1b')];_0x53eee2+=0x1){_0x31dc64[_0x1856('0x4a')](_0x1856('0x55'),{'WhatsappInteractionId':Number(_0x98740a[_0x53eee2]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x56')](function(_0x1fe02c){_0x237d8b[_0x1856('0x57')](_0x1fe02c);});}}function onDisconnect(_0x1b9d76,_0x5e553c){joinOrLeave(_0x1b9d76,_0x1856('0x4b'),_0x5e553c);}function onConnect(_0x4b421e){joinOrLeave(_0x4b421e,_0x1856('0x58'));}exports[_0x1856('0x59')]=function(_0x199401){_0x199401['on']('connection',function(_0x54376d){_0x54376d[_0x1856('0x5a')](0x0);_0x54376d['address']=_0x54376d['request'][_0x1856('0x5b')][_0x1856('0x5c')]+':'+_0x54376d[_0x1856('0x5d')][_0x1856('0x5b')][_0x1856('0x5e')];_0x54376d[_0x1856('0x5f')]=new Date();_0x54376d['log']=function(_0x18d5b3){console[_0x1856('0x57')]('SocketIO\x20'+_0x54376d[_0x1856('0x60')]['name']+'['+_0x54376d['address']+']',_0x18d5b3);};_0x54376d['on'](_0x1856('0x61'),function(){onDisconnect(_0x54376d,_0x199401);_0x54376d[_0x1856('0x57')](_0x1856('0x62'));});onConnect(_0x54376d);_0x54376d[_0x1856('0x57')](_0x1856('0x63'));});};