Built motion from commit (unavailable).|2.5.8
[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 _0xf58a=['getVoiceQueues','getChatQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','chat','fax','sms','mail','openchannel','telephone:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','emit','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','WhatsappInteractions','catch','default','connection','setMaxListeners','request','remoteAddress','remotePort','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','name','Agents','User','role','telephone','agent','type','ivr','UserProfileSection','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','then','map','where','format','%s:queue:%s','user:%s','handshake','query','userProfileId','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','user','ChatQueue','MailQueues','OpenchannelQueue','WhatsappQueues','Campaign'];(function(_0x18fdaf,_0x457de2){var _0x557a9b=function(_0x4a6b5a){while(--_0x4a6b5a){_0x18fdaf['push'](_0x18fdaf['shift']());}};_0x557a9b(++_0x457de2);}(_0xf58a,0x147));var _0xaf58=function(_0x6e4933,_0x49a335){_0x6e4933=_0x6e4933-0x0;var _0x47920b=_0xf58a[_0x6e4933];return _0x47920b;};'use strict';var _=require(_0xaf58('0x0'));var util=require(_0xaf58('0x1'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xaf58('0x2')],'include':[{'as':_0xaf58('0x3'),'model':db[_0xaf58('0x4')],'attributes':['id',_0xaf58('0x2'),_0xaf58('0x5')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xaf58('0x2')],'where':{'role':_0xaf58('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0xaf58('0x2')]};var queryAgents={'raw':!![],'attributes':['id',_0xaf58('0x2')],'where':{'role':_0xaf58('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xaf58('0x2'),_0xaf58('0x8')],'where':{'type':_0xaf58('0x9')}};function getAssociatedResources(_0x38a8c1,_0x57db0e,_0x301557){return db[_0xaf58('0xa')]['findOne']({'where':{'name':_0x38a8c1,'userProfileId':_0x57db0e},'raw':!![]})['then'](function(_0x3526b3){if(_0x3526b3){if(_0x3526b3[_0xaf58('0xb')]){switch(_0x38a8c1){case _0xaf58('0xc'):case _0xaf58('0xd'):case _0xaf58('0xe'):case _0xaf58('0xf'):case'MailQueues':case _0xaf58('0x10'):case'WhatsappQueues':return db[_0x301557][_0xaf58('0x11')](queryQueues);case _0xaf58('0x12'):return db[_0x301557][_0xaf58('0x11')](queryTelephones);case _0xaf58('0x13'):return db[_0x301557][_0xaf58('0x11')](queryTrunks);case _0xaf58('0x14'):return db[_0x301557]['findAll'](queryCampaigns);}}else{return db[_0xaf58('0x15')]['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x3526b3['id']},'raw':!![]})[_0xaf58('0x16')](function(_0x36e345){if(_0x36e345){var _0x17805a={'where':{'id':_[_0xaf58('0x17')](_0x36e345,'resourceId')},'raw':!![]};switch(_0x301557){case _0xaf58('0x4'):_0x17805a[_0xaf58('0x18')][_0xaf58('0x5')]=_0xaf58('0x6');break;case'Campaign':_0x17805a['where'][_0xaf58('0x8')]='ivr';break;}return db[_0x301557][_0xaf58('0x11')](_0x17805a);}else{return[];}});}}else{return[];}})[_0xaf58('0x16')](function(_0x575668){return _0x575668;});}function joinOrLeaveQueues(_0x17ce60,_0x1d7f1c,_0x511f80,_0x26133a){_0x17ce60[_0x1d7f1c](util[_0xaf58('0x19')](_0xaf58('0x1a'),_0x511f80,_0x26133a[_0xaf58('0x2')]));if(_0x26133a[_0xaf58('0x3')]){for(var _0x3b293d=0x0;_0x3b293d<_0x26133a[_0xaf58('0x3')]['length'];_0x3b293d+=0x1){_0x17ce60[_0x1d7f1c](util[_0xaf58('0x19')](_0xaf58('0x1b'),_0x26133a[_0xaf58('0x3')][_0x3b293d][_0xaf58('0x2')]));}}}function joinOrLeave(_0x30a6fc,_0x4124a9,_0x577c66){var _0x3e0870;if(_0x30a6fc[_0xaf58('0x1c')][_0xaf58('0x1d')]['id']){db[_0xaf58('0x4')]['find']({'attributes':['id','name',_0xaf58('0x5'),_0xaf58('0x1e')],'where':{'id':_0x30a6fc[_0xaf58('0x1c')][_0xaf58('0x1d')]['id']},'include':[{'model':db[_0xaf58('0x1f')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xaf58('0x20')],'as':_0xaf58('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0xaf58('0x22')],'as':_0xaf58('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xaf58('0x24')],'as':_0xaf58('0x25'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xaf58('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xaf58('0x27')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xaf58('0x16')](function(_0x1f11e6){if(_0x1f11e6){_0x3e0870=_0x1f11e6;_0x30a6fc[_0x4124a9](util[_0xaf58('0x19')]('user:%s',_0x1f11e6[_0xaf58('0x2')]));var _0x55d9b0=[];switch(_0x1f11e6[_0xaf58('0x5')]){case'admin':_0x30a6fc[_0x4124a9](_0xaf58('0x28'));_0x30a6fc[_0x4124a9](_0xaf58('0x29'));if(queryQueues[_0xaf58('0x2a')](_0xaf58('0x2b'))){delete queryQueues[_0xaf58('0x2b')];}_0x55d9b0[_0xaf58('0x2c')](db[_0xaf58('0x2d')][_0xaf58('0x11')](queryQueues));_0x55d9b0[_0xaf58('0x2c')](db['ChatQueue'][_0xaf58('0x11')](queryQueues));_0x55d9b0['push'](db[_0xaf58('0x2e')]['findAll'](queryQueues));_0x55d9b0[_0xaf58('0x2c')](db[_0xaf58('0x2f')]['findAll'](queryQueues));_0x55d9b0[_0xaf58('0x2c')](db[_0xaf58('0x30')][_0xaf58('0x11')](queryQueues));_0x55d9b0[_0xaf58('0x2c')](db['OpenchannelQueue'][_0xaf58('0x11')](queryQueues));_0x55d9b0[_0xaf58('0x2c')](db[_0xaf58('0x31')][_0xaf58('0x11')](queryQueues));_0x55d9b0['push'](db[_0xaf58('0x4')][_0xaf58('0x11')](queryTelephones));_0x55d9b0[_0xaf58('0x2c')](db[_0xaf58('0x32')]['findAll'](queryTrunks));_0x55d9b0[_0xaf58('0x2c')](db['Campaign'][_0xaf58('0x11')](queryCampaigns));_0x55d9b0['push'](db['User']['findAll'](queryAgents));break;case _0xaf58('0x33'):_0x30a6fc[_0x4124a9](_0xaf58('0x28'));_0x30a6fc[_0x4124a9]('voice:outbound');_0x55d9b0[_0xaf58('0x2c')](getAssociatedResources(_0xaf58('0xc'),_0x1f11e6[_0xaf58('0x1e')],'VoiceQueue'));_0x55d9b0[_0xaf58('0x2c')](getAssociatedResources('ChatQueues',_0x1f11e6[_0xaf58('0x1e')],_0xaf58('0x34')));_0x55d9b0['push'](getAssociatedResources(_0xaf58('0xe'),_0x1f11e6[_0xaf58('0x1e')],_0xaf58('0x2e')));_0x55d9b0[_0xaf58('0x2c')](getAssociatedResources(_0xaf58('0xf'),_0x1f11e6[_0xaf58('0x1e')],'SmsQueue'));_0x55d9b0['push'](getAssociatedResources(_0xaf58('0x35'),_0x1f11e6[_0xaf58('0x1e')],'MailQueue'));_0x55d9b0[_0xaf58('0x2c')](getAssociatedResources(_0xaf58('0x10'),_0x1f11e6[_0xaf58('0x1e')],_0xaf58('0x36')));_0x55d9b0[_0xaf58('0x2c')](getAssociatedResources(_0xaf58('0x37'),_0x1f11e6['userProfileId'],_0xaf58('0x31')));_0x55d9b0['push'](getAssociatedResources(_0xaf58('0x12'),_0x1f11e6[_0xaf58('0x1e')],'User'));_0x55d9b0[_0xaf58('0x2c')](getAssociatedResources('Trunks',_0x1f11e6[_0xaf58('0x1e')],_0xaf58('0x32')));_0x55d9b0[_0xaf58('0x2c')](getAssociatedResources(_0xaf58('0x14'),_0x1f11e6[_0xaf58('0x1e')],_0xaf58('0x38')));_0x55d9b0['push'](db[_0xaf58('0x4')][_0xaf58('0x11')](queryAgents));break;case'agent':_0x30a6fc[_0x4124a9](_0xaf58('0x28'));_0x30a6fc[_0x4124a9]('voice:outbound');_0x55d9b0[_0xaf58('0x2c')](_0x1f11e6[_0xaf58('0x39')]({'attributes':['id',_0xaf58('0x2')]}));_0x55d9b0['push'](_0x1f11e6[_0xaf58('0x3a')]({'attributes':['id',_0xaf58('0x2')]}));_0x55d9b0[_0xaf58('0x2c')](_0x1f11e6['getFaxQueues']({'attributes':['id',_0xaf58('0x2')]}));_0x55d9b0[_0xaf58('0x2c')](_0x1f11e6['getSmsQueues']({'attributes':['id',_0xaf58('0x2')]}));_0x55d9b0['push'](_0x1f11e6[_0xaf58('0x3b')]({'attributes':['id',_0xaf58('0x2')]}));_0x55d9b0[_0xaf58('0x2c')](_0x1f11e6[_0xaf58('0x3c')]({'attributes':['id',_0xaf58('0x2')]}));_0x55d9b0[_0xaf58('0x2c')](_0x1f11e6[_0xaf58('0x3d')]({'attributes':['id','name']}));break;}return BPromise[_0xaf58('0x3e')](_0x55d9b0);}})[_0xaf58('0x16')](function(_0x20fece){if(_0x20fece&&_0x20fece[_0xaf58('0x3f')]){for(var _0x412f45=0x0;_0x412f45<_0x20fece[_0xaf58('0x3f')];_0x412f45+=0x1){for(var _0x2e6137=0x0;_0x2e6137<_0x20fece[_0x412f45][_0xaf58('0x3f')];_0x2e6137+=0x1){switch(_0x412f45){case 0x0:joinOrLeaveQueues(_0x30a6fc,_0x4124a9,'voice',_0x20fece[_0x412f45][_0x2e6137]);break;case 0x1:joinOrLeaveQueues(_0x30a6fc,_0x4124a9,_0xaf58('0x40'),_0x20fece[_0x412f45][_0x2e6137]);break;case 0x2:joinOrLeaveQueues(_0x30a6fc,_0x4124a9,_0xaf58('0x41'),_0x20fece[_0x412f45][_0x2e6137]);break;case 0x3:joinOrLeaveQueues(_0x30a6fc,_0x4124a9,_0xaf58('0x42'),_0x20fece[_0x412f45][_0x2e6137]);break;case 0x4:joinOrLeaveQueues(_0x30a6fc,_0x4124a9,_0xaf58('0x43'),_0x20fece[_0x412f45][_0x2e6137]);break;case 0x5:joinOrLeaveQueues(_0x30a6fc,_0x4124a9,_0xaf58('0x44'),_0x20fece[_0x412f45][_0x2e6137]);break;case 0x6:joinOrLeaveQueues(_0x30a6fc,_0x4124a9,'whatsapp',_0x20fece[_0x412f45][_0x2e6137]);break;case 0x7:_0x30a6fc[_0x4124a9](util[_0xaf58('0x19')](_0xaf58('0x45'),_0x20fece[_0x412f45][_0x2e6137][_0xaf58('0x2')]));break;case 0x8:_0x30a6fc[_0x4124a9](util[_0xaf58('0x19')]('trunk:%s',_0x20fece[_0x412f45][_0x2e6137][_0xaf58('0x2')]));break;case 0x9:_0x30a6fc[_0x4124a9](util[_0xaf58('0x19')](_0xaf58('0x46'),_0x20fece[_0x412f45][_0x2e6137][_0xaf58('0x8')],_0x20fece[_0x412f45][_0x2e6137][_0xaf58('0x2')]));break;case 0xa:_0x30a6fc[_0x4124a9](util['format'](_0xaf58('0x1b'),_0x20fece[_0x412f45][_0x2e6137][_0xaf58('0x2')]));break;}}}}})['then'](function(){if(_0x4124a9===_0xaf58('0x47')){var _0x10685d=_['map'](_0x3e0870[_0xaf58('0x48')],'id');return _0x3e0870[_0xaf58('0x49')](_0x10685d)['then'](function(){for(var _0x4a760f=0x0;_0x4a760f<_0x10685d[_0xaf58('0x3f')];_0x4a760f+=0x1){_0x577c66[_0xaf58('0x4a')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x10685d[_0x4a760f]),'UserId':Number(_0x3e0870['id'])});}});}})[_0xaf58('0x16')](function(){if(_0x4124a9==='leave'){var _0x4496fc=_[_0xaf58('0x17')](_0x3e0870[_0xaf58('0x21')],'id');return _0x3e0870[_0xaf58('0x4b')](_0x4496fc)[_0xaf58('0x16')](function(){for(var _0x8001f1=0x0;_0x8001f1<_0x4496fc[_0xaf58('0x3f')];_0x8001f1+=0x1){_0x577c66[_0xaf58('0x4a')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4496fc[_0x8001f1]),'UserId':Number(_0x3e0870['id'])});}});}})[_0xaf58('0x16')](function(){if(_0x4124a9===_0xaf58('0x47')){var _0x26cf51=_[_0xaf58('0x17')](_0x3e0870[_0xaf58('0x23')],'id');return _0x3e0870[_0xaf58('0x4c')](_0x26cf51)[_0xaf58('0x16')](function(){for(var _0x2af179=0x0;_0x2af179<_0x26cf51[_0xaf58('0x3f')];_0x2af179+=0x1){_0x577c66[_0xaf58('0x4a')](_0xaf58('0x4d'),{'FaxInteractionId':Number(_0x26cf51[_0x2af179]),'UserId':Number(_0x3e0870['id'])});}});}})[_0xaf58('0x16')](function(){if(_0x4124a9===_0xaf58('0x47')){var _0x9b12f8=_[_0xaf58('0x17')](_0x3e0870[_0xaf58('0x25')],'id');return _0x3e0870[_0xaf58('0x4e')](_0x9b12f8)['then'](function(){for(var _0x5b065b=0x0;_0x5b065b<_0x9b12f8['length'];_0x5b065b+=0x1){_0x577c66['emit'](_0xaf58('0x4f'),{'SmsInteractionId':Number(_0x9b12f8[_0x5b065b]),'UserId':Number(_0x3e0870['id'])});}});}})[_0xaf58('0x16')](function(){if(_0x4124a9===_0xaf58('0x47')){var _0xafbe6e=_[_0xaf58('0x17')](_0x3e0870[_0xaf58('0x26')],'id');return _0x3e0870[_0xaf58('0x50')](_0xafbe6e)[_0xaf58('0x16')](function(){for(var _0x4df558=0x0;_0x4df558<_0xafbe6e[_0xaf58('0x3f')];_0x4df558+=0x1){_0x577c66[_0xaf58('0x4a')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0xafbe6e[_0x4df558]),'UserId':Number(_0x3e0870['id'])});}});}})[_0xaf58('0x16')](function(){if(_0x4124a9===_0xaf58('0x47')){var _0xe4c815=_[_0xaf58('0x17')](_0x3e0870[_0xaf58('0x51')],'id');return _0x3e0870['removeWhatsappInteractions'](_0xe4c815)[_0xaf58('0x16')](function(){for(var _0x4a3465=0x0;_0x4a3465<_0xe4c815[_0xaf58('0x3f')];_0x4a3465+=0x1){_0x577c66[_0xaf58('0x4a')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0xe4c815[_0x4a3465]),'UserId':Number(_0x3e0870['id'])});}});}})[_0xaf58('0x52')](function(_0x49cddb){_0x30a6fc['log'](_0x49cddb);});}}function onDisconnect(_0x5f13b8,_0x2f62ff){joinOrLeave(_0x5f13b8,_0xaf58('0x47'),_0x2f62ff);}function onConnect(_0x5301c8){joinOrLeave(_0x5301c8,'join');}exports[_0xaf58('0x53')]=function(_0x2a599e){_0x2a599e['on'](_0xaf58('0x54'),function(_0x326106){_0x326106[_0xaf58('0x55')](0x0);_0x326106['address']=_0x326106[_0xaf58('0x56')][_0xaf58('0x54')][_0xaf58('0x57')]+':'+_0x326106['request'][_0xaf58('0x54')][_0xaf58('0x58')];_0x326106['connectedAt']=new Date();_0x326106[_0xaf58('0x59')]=function(_0x2080e7){console[_0xaf58('0x59')](_0xaf58('0x5a')+_0x326106[_0xaf58('0x5b')][_0xaf58('0x2')]+'['+_0x326106[_0xaf58('0x5c')]+']',_0x2080e7);};_0x326106['on'](_0xaf58('0x5d'),function(){onDisconnect(_0x326106,_0x2a599e);_0x326106['log'](_0xaf58('0x5e'));});onConnect(_0x326106);_0x326106[_0xaf58('0x59')](_0xaf58('0x5f'));});};