303d5f7f801d1ba61b1bdcfa6e054f90b2869333
[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 _0xa4e3=['setMaxListeners','address','request','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','./environment','name','Agents','User','role','agent','telephone','ivr','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','type','format','%s:queue:%s','length','user:%s','query','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','Trunk','user','userProfileId','VoiceQueue','SmsQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','all','voice','sms','mail','openchannel','whatsapp','campaign:%s:%s','leave','ChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','connection'];(function(_0x22d045,_0x13fd64){var _0x2460b1=function(_0x3e0ddf){while(--_0x3e0ddf){_0x22d045['push'](_0x22d045['shift']());}};_0x2460b1(++_0x13fd64);}(_0xa4e3,0x129));var _0x3a4e=function(_0xea860d,_0x2e012c){_0xea860d=_0xea860d-0x0;var _0xe43d14=_0xa4e3[_0xea860d];return _0xe43d14;};'use strict';var _=require(_0x3a4e('0x0'));var util=require('util');var BPromise=require(_0x3a4e('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x3a4e('0x2'));var queryQueues={'attributes':['id',_0x3a4e('0x3')],'include':[{'as':_0x3a4e('0x4'),'model':db[_0x3a4e('0x5')],'attributes':['id',_0x3a4e('0x3'),_0x3a4e('0x6')],'raw':!![],'where':{'role':_0x3a4e('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x3a4e('0x3')],'where':{'role':_0x3a4e('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x3a4e('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x3a4e('0x3')],'where':{'role':_0x3a4e('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x3a4e('0x3'),'type'],'where':{'type':_0x3a4e('0x9')}};function getAssociatedResources(_0x54b924,_0x4c5b69,_0x494185){return db['UserProfileSection'][_0x3a4e('0xa')]({'where':{'name':_0x54b924,'userProfileId':_0x4c5b69},'raw':!![]})[_0x3a4e('0xb')](function(_0x2f1e5e){if(_0x2f1e5e){if(_0x2f1e5e[_0x3a4e('0xc')]){switch(_0x54b924){case _0x3a4e('0xd'):case _0x3a4e('0xe'):case _0x3a4e('0xf'):case'SmsQueues':case _0x3a4e('0x10'):case _0x3a4e('0x11'):case _0x3a4e('0x12'):return db[_0x494185][_0x3a4e('0x13')](queryQueues);case _0x3a4e('0x14'):return db[_0x494185][_0x3a4e('0x13')](queryTelephones);case _0x3a4e('0x15'):return db[_0x494185][_0x3a4e('0x13')](queryTrunks);case _0x3a4e('0x16'):return db[_0x494185]['findAll'](queryCampaigns);}}else{return db[_0x3a4e('0x17')][_0x3a4e('0x13')]({'attributes':[_0x3a4e('0x18')],'where':{'sectionId':_0x2f1e5e['id']},'raw':!![]})['then'](function(_0x27f333){if(_0x27f333){var _0x1e55eb={'where':{'id':_[_0x3a4e('0x19')](_0x27f333,_0x3a4e('0x18'))},'raw':!![]};switch(_0x494185){case _0x3a4e('0x5'):_0x1e55eb[_0x3a4e('0x1a')][_0x3a4e('0x6')]=_0x3a4e('0x8');break;case _0x3a4e('0x1b'):_0x1e55eb[_0x3a4e('0x1a')][_0x3a4e('0x1c')]=_0x3a4e('0x9');break;}return db[_0x494185]['findAll'](_0x1e55eb);}else{return[];}});}}else{return[];}})[_0x3a4e('0xb')](function(_0x4fcbd4){return _0x4fcbd4;});}function joinOrLeaveQueues(_0x544054,_0x55bd0b,_0x1ea78b,_0x4063b6){_0x544054[_0x55bd0b](util[_0x3a4e('0x1d')](_0x3a4e('0x1e'),_0x1ea78b,_0x4063b6[_0x3a4e('0x3')]));if(_0x4063b6[_0x3a4e('0x4')]){for(var _0x398449=0x0;_0x398449<_0x4063b6[_0x3a4e('0x4')][_0x3a4e('0x1f')];_0x398449+=0x1){_0x544054[_0x55bd0b](util[_0x3a4e('0x1d')](_0x3a4e('0x20'),_0x4063b6['Agents'][_0x398449][_0x3a4e('0x3')]));}}}function joinOrLeave(_0x45421f,_0x11f047,_0x26df6f){var _0x1ab7c5;if(_0x45421f['handshake'][_0x3a4e('0x21')]['id']){db[_0x3a4e('0x5')]['find']({'attributes':['id','name',_0x3a4e('0x6'),'userProfileId'],'where':{'id':_0x45421f['handshake']['query']['id']},'include':[{'model':db[_0x3a4e('0x22')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x3a4e('0x23')],'as':_0x3a4e('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x3a4e('0x25')],'as':_0x3a4e('0x26'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x3a4e('0x27')],'as':_0x3a4e('0x28'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x3a4e('0x29'),'attributes':['id'],'raw':!![]}]})[_0x3a4e('0xb')](function(_0x21f13d){if(_0x21f13d){_0x1ab7c5=_0x21f13d;_0x45421f[_0x11f047](util[_0x3a4e('0x1d')](_0x3a4e('0x20'),_0x21f13d['name']));var _0x3e45c8=[];switch(_0x21f13d[_0x3a4e('0x6')]){case _0x3a4e('0x2a'):_0x45421f[_0x11f047](_0x3a4e('0x2b'));_0x45421f[_0x11f047](_0x3a4e('0x2c'));if(queryQueues['hasOwnProperty'](_0x3a4e('0x2d'))){delete queryQueues[_0x3a4e('0x2d')];}_0x3e45c8[_0x3a4e('0x2e')](db['VoiceQueue'][_0x3a4e('0x13')](queryQueues));_0x3e45c8[_0x3a4e('0x2e')](db[_0x3a4e('0x2f')][_0x3a4e('0x13')](queryQueues));_0x3e45c8[_0x3a4e('0x2e')](db[_0x3a4e('0x30')][_0x3a4e('0x13')](queryQueues));_0x3e45c8[_0x3a4e('0x2e')](db[_0x3a4e('0x31')][_0x3a4e('0x13')](queryQueues));_0x3e45c8[_0x3a4e('0x2e')](db[_0x3a4e('0x32')][_0x3a4e('0x13')](queryQueues));_0x3e45c8[_0x3a4e('0x2e')](db['OpenchannelQueue']['findAll'](queryQueues));_0x3e45c8[_0x3a4e('0x2e')](db['WhatsappQueue'][_0x3a4e('0x13')](queryQueues));_0x3e45c8[_0x3a4e('0x2e')](db[_0x3a4e('0x5')][_0x3a4e('0x13')](queryTelephones));_0x3e45c8['push'](db[_0x3a4e('0x33')]['findAll'](queryTrunks));_0x3e45c8[_0x3a4e('0x2e')](db[_0x3a4e('0x1b')]['findAll'](queryCampaigns));_0x3e45c8[_0x3a4e('0x2e')](db[_0x3a4e('0x5')][_0x3a4e('0x13')](queryAgents));break;case _0x3a4e('0x34'):_0x45421f[_0x11f047](_0x3a4e('0x2b'));_0x45421f[_0x11f047]('voice:outbound');_0x3e45c8[_0x3a4e('0x2e')](getAssociatedResources(_0x3a4e('0xd'),_0x21f13d[_0x3a4e('0x35')],_0x3a4e('0x36')));_0x3e45c8[_0x3a4e('0x2e')](getAssociatedResources(_0x3a4e('0xe'),_0x21f13d[_0x3a4e('0x35')],'ChatQueue'));_0x3e45c8[_0x3a4e('0x2e')](getAssociatedResources(_0x3a4e('0xf'),_0x21f13d['userProfileId'],'FaxQueue'));_0x3e45c8[_0x3a4e('0x2e')](getAssociatedResources(_0x3a4e('0x37'),_0x21f13d[_0x3a4e('0x35')],'SmsQueue'));_0x3e45c8[_0x3a4e('0x2e')](getAssociatedResources(_0x3a4e('0x10'),_0x21f13d[_0x3a4e('0x35')],_0x3a4e('0x32')));_0x3e45c8['push'](getAssociatedResources(_0x3a4e('0x11'),_0x21f13d[_0x3a4e('0x35')],'OpenchannelQueue'));_0x3e45c8['push'](getAssociatedResources(_0x3a4e('0x12'),_0x21f13d['userProfileId'],'WhatsappQueue'));_0x3e45c8[_0x3a4e('0x2e')](getAssociatedResources(_0x3a4e('0x14'),_0x21f13d[_0x3a4e('0x35')],_0x3a4e('0x5')));_0x3e45c8[_0x3a4e('0x2e')](getAssociatedResources(_0x3a4e('0x15'),_0x21f13d[_0x3a4e('0x35')],'Trunk'));_0x3e45c8['push'](getAssociatedResources(_0x3a4e('0x16'),_0x21f13d['userProfileId'],'Campaign'));_0x3e45c8[_0x3a4e('0x2e')](db[_0x3a4e('0x5')][_0x3a4e('0x13')](queryAgents));break;case'agent':_0x45421f[_0x11f047](_0x3a4e('0x2b'));_0x45421f[_0x11f047](_0x3a4e('0x2c'));_0x3e45c8[_0x3a4e('0x2e')](_0x21f13d[_0x3a4e('0x38')]({'attributes':['id','name']}));_0x3e45c8[_0x3a4e('0x2e')](_0x21f13d[_0x3a4e('0x39')]({'attributes':['id',_0x3a4e('0x3')]}));_0x3e45c8[_0x3a4e('0x2e')](_0x21f13d[_0x3a4e('0x3a')]({'attributes':['id',_0x3a4e('0x3')]}));_0x3e45c8[_0x3a4e('0x2e')](_0x21f13d[_0x3a4e('0x3b')]({'attributes':['id',_0x3a4e('0x3')]}));_0x3e45c8[_0x3a4e('0x2e')](_0x21f13d['getMailQueues']({'attributes':['id',_0x3a4e('0x3')]}));_0x3e45c8[_0x3a4e('0x2e')](_0x21f13d[_0x3a4e('0x3c')]({'attributes':['id',_0x3a4e('0x3')]}));_0x3e45c8['push'](_0x21f13d['getWhatsappQueues']({'attributes':['id',_0x3a4e('0x3')]}));break;}return BPromise[_0x3a4e('0x3d')](_0x3e45c8);}})[_0x3a4e('0xb')](function(_0x365807){if(_0x365807&&_0x365807[_0x3a4e('0x1f')]){for(var _0x3b90f2=0x0;_0x3b90f2<_0x365807['length'];_0x3b90f2+=0x1){for(var _0x20129b=0x0;_0x20129b<_0x365807[_0x3b90f2]['length'];_0x20129b+=0x1){switch(_0x3b90f2){case 0x0:joinOrLeaveQueues(_0x45421f,_0x11f047,_0x3a4e('0x3e'),_0x365807[_0x3b90f2][_0x20129b]);break;case 0x1:joinOrLeaveQueues(_0x45421f,_0x11f047,'chat',_0x365807[_0x3b90f2][_0x20129b]);break;case 0x2:joinOrLeaveQueues(_0x45421f,_0x11f047,'fax',_0x365807[_0x3b90f2][_0x20129b]);break;case 0x3:joinOrLeaveQueues(_0x45421f,_0x11f047,_0x3a4e('0x3f'),_0x365807[_0x3b90f2][_0x20129b]);break;case 0x4:joinOrLeaveQueues(_0x45421f,_0x11f047,_0x3a4e('0x40'),_0x365807[_0x3b90f2][_0x20129b]);break;case 0x5:joinOrLeaveQueues(_0x45421f,_0x11f047,_0x3a4e('0x41'),_0x365807[_0x3b90f2][_0x20129b]);break;case 0x6:joinOrLeaveQueues(_0x45421f,_0x11f047,_0x3a4e('0x42'),_0x365807[_0x3b90f2][_0x20129b]);break;case 0x7:if(_0x1ab7c5['role']!==_0x3a4e('0x7'))_0x45421f[_0x11f047](util['format']('telephone:%s',_0x365807[_0x3b90f2][_0x20129b][_0x3a4e('0x3')]));break;case 0x8:if(_0x1ab7c5[_0x3a4e('0x6')]!==_0x3a4e('0x7'))_0x45421f[_0x11f047](util[_0x3a4e('0x1d')]('trunk:%s',_0x365807[_0x3b90f2][_0x20129b][_0x3a4e('0x3')]));break;case 0x9:if(_0x1ab7c5['role']!==_0x3a4e('0x7'))_0x45421f[_0x11f047](util[_0x3a4e('0x1d')](_0x3a4e('0x43'),_0x365807[_0x3b90f2][_0x20129b][_0x3a4e('0x1c')],_0x365807[_0x3b90f2][_0x20129b][_0x3a4e('0x3')]));break;case 0xa:_0x45421f[_0x11f047](util['format'](_0x3a4e('0x20'),_0x365807[_0x3b90f2][_0x20129b][_0x3a4e('0x3')]));break;}}}}})['then'](function(){if(_0x11f047===_0x3a4e('0x44')){var _0x586f35=_[_0x3a4e('0x19')](_0x1ab7c5[_0x3a4e('0x45')],'id');return _0x1ab7c5['removeChatInteractions'](_0x586f35)['then'](function(){for(var _0x1935e8=0x0;_0x1935e8<_0x586f35['length'];_0x1935e8+=0x1){_0x26df6f[_0x3a4e('0x46')](_0x3a4e('0x47'),{'ChatInteractionId':Number(_0x586f35[_0x1935e8]),'UserId':Number(_0x1ab7c5['id'])});}});}})[_0x3a4e('0xb')](function(){if(_0x11f047==='leave'){var _0x528196=_[_0x3a4e('0x19')](_0x1ab7c5[_0x3a4e('0x24')],'id');return _0x1ab7c5[_0x3a4e('0x48')](_0x528196)[_0x3a4e('0xb')](function(){for(var _0x479b5d=0x0;_0x479b5d<_0x528196[_0x3a4e('0x1f')];_0x479b5d+=0x1){_0x26df6f[_0x3a4e('0x46')](_0x3a4e('0x49'),{'MailInteractionId':Number(_0x528196[_0x479b5d]),'UserId':Number(_0x1ab7c5['id'])});}});}})[_0x3a4e('0xb')](function(){if(_0x11f047==='leave'){var _0x267c86=_[_0x3a4e('0x19')](_0x1ab7c5['FaxInteractions'],'id');return _0x1ab7c5[_0x3a4e('0x4a')](_0x267c86)[_0x3a4e('0xb')](function(){for(var _0x2581a7=0x0;_0x2581a7<_0x267c86['length'];_0x2581a7+=0x1){_0x26df6f[_0x3a4e('0x46')](_0x3a4e('0x4b'),{'FaxInteractionId':Number(_0x267c86[_0x2581a7]),'UserId':Number(_0x1ab7c5['id'])});}});}})[_0x3a4e('0xb')](function(){if(_0x11f047==='leave'){var _0x220a62=_['map'](_0x1ab7c5[_0x3a4e('0x4c')],'id');return _0x1ab7c5[_0x3a4e('0x4d')](_0x220a62)[_0x3a4e('0xb')](function(){for(var _0x23bfed=0x0;_0x23bfed<_0x220a62[_0x3a4e('0x1f')];_0x23bfed+=0x1){_0x26df6f[_0x3a4e('0x46')](_0x3a4e('0x4e'),{'SmsInteractionId':Number(_0x220a62[_0x23bfed]),'UserId':Number(_0x1ab7c5['id'])});}});}})[_0x3a4e('0xb')](function(){if(_0x11f047===_0x3a4e('0x44')){var _0x534353=_[_0x3a4e('0x19')](_0x1ab7c5[_0x3a4e('0x28')],'id');return _0x1ab7c5[_0x3a4e('0x4f')](_0x534353)[_0x3a4e('0xb')](function(){for(var _0x31234e=0x0;_0x31234e<_0x534353[_0x3a4e('0x1f')];_0x31234e+=0x1){_0x26df6f[_0x3a4e('0x46')](_0x3a4e('0x50'),{'OpenchannelInteractionId':Number(_0x534353[_0x31234e]),'UserId':Number(_0x1ab7c5['id'])});}});}})[_0x3a4e('0xb')](function(){if(_0x11f047===_0x3a4e('0x44')){var _0x12bfdb=_[_0x3a4e('0x19')](_0x1ab7c5[_0x3a4e('0x29')],'id');return _0x1ab7c5[_0x3a4e('0x51')](_0x12bfdb)['then'](function(){for(var _0xf75b8c=0x0;_0xf75b8c<_0x12bfdb['length'];_0xf75b8c+=0x1){_0x26df6f['emit'](_0x3a4e('0x52'),{'WhatsappInteractionId':Number(_0x12bfdb[_0xf75b8c]),'UserId':Number(_0x1ab7c5['id'])});}});}})[_0x3a4e('0x53')](function(_0x14f89b){_0x45421f[_0x3a4e('0x54')](_0x14f89b);});}}function onDisconnect(_0x810e18,_0x1fdacd){joinOrLeave(_0x810e18,_0x3a4e('0x44'),_0x1fdacd);}function onConnect(_0x6445a9){joinOrLeave(_0x6445a9,_0x3a4e('0x55'));}exports['default']=function(_0x507479){_0x507479['on'](_0x3a4e('0x56'),function(_0x36e5d1){_0x36e5d1[_0x3a4e('0x57')](0x0);_0x36e5d1[_0x3a4e('0x58')]=_0x36e5d1[_0x3a4e('0x59')][_0x3a4e('0x56')]['remoteAddress']+':'+_0x36e5d1['request'][_0x3a4e('0x56')]['remotePort'];_0x36e5d1[_0x3a4e('0x5a')]=new Date();_0x36e5d1[_0x3a4e('0x54')]=function(_0x4290a1){console[_0x3a4e('0x54')](_0x3a4e('0x5b')+_0x36e5d1[_0x3a4e('0x5c')][_0x3a4e('0x3')]+'['+_0x36e5d1[_0x3a4e('0x58')]+']',_0x4290a1);};_0x36e5d1['on'](_0x3a4e('0x5d'),function(){onDisconnect(_0x36e5d1,_0x507479);_0x36e5d1[_0x3a4e('0x54')](_0x3a4e('0x5e'));});onConnect(_0x36e5d1);_0x36e5d1[_0x3a4e('0x54')](_0x3a4e('0x5f'));});};