Built motion from commit 00bf23f6.|2.6.16
[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 _0xc401=['VoiceQueue','ChatQueue','push','FaxQueue','SmsQueue','user','MailQueue','OpenchannelQueue','WhatsappQueue','IvrCampaigns','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','trunk:%s','removeChatInteractions','user_has_chat_interactions:remove','leave','emit','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','setMaxListeners','connection','remoteAddress','request','remotePort','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','util','bluebird','../mysqldb','./environment','name','Agents','User','role','telephone','agent','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','Trunks','resourceId','map','where','Campaign','type','format','%s:queue:%s','length','user:%s','query','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','include'];(function(_0x1b4b23,_0x5dd6d6){var _0x2a325b=function(_0x175462){while(--_0x175462){_0x1b4b23['push'](_0x1b4b23['shift']());}};_0x2a325b(++_0x5dd6d6);}(_0xc401,0x15d));var _0x1c40=function(_0x1f789c,_0x4defdd){_0x1f789c=_0x1f789c-0x0;var _0x1a7ebf=_0xc401[_0x1f789c];return _0x1a7ebf;};'use strict';var _=require('lodash');var util=require(_0x1c40('0x0'));var BPromise=require(_0x1c40('0x1'));var db=require(_0x1c40('0x2'))['db'];var config=require(_0x1c40('0x3'));var queryQueues={'attributes':['id',_0x1c40('0x4')],'include':[{'as':_0x1c40('0x5'),'model':db[_0x1c40('0x6')],'attributes':['id',_0x1c40('0x4'),_0x1c40('0x7')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x1c40('0x4')],'where':{'role':_0x1c40('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x1c40('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x1c40('0x4'),'type'],'where':{'type':_0x1c40('0xa')}};function getAssociatedResources(_0x3b82af,_0x5bdd3f,_0x1b2d27){return db[_0x1c40('0xb')]['findOne']({'where':{'name':_0x3b82af,'userProfileId':_0x5bdd3f},'raw':!![]})[_0x1c40('0xc')](function(_0x516f60){if(_0x516f60){if(_0x516f60[_0x1c40('0xd')]){switch(_0x3b82af){case _0x1c40('0xe'):case _0x1c40('0xf'):case _0x1c40('0x10'):case _0x1c40('0x11'):case _0x1c40('0x12'):case _0x1c40('0x13'):case _0x1c40('0x14'):return db[_0x1b2d27]['findAll'](queryQueues);case _0x1c40('0x15'):return db[_0x1b2d27][_0x1c40('0x16')](queryTelephones);case _0x1c40('0x17'):return db[_0x1b2d27][_0x1c40('0x16')](queryTrunks);case'IvrCampaigns':return db[_0x1b2d27][_0x1c40('0x16')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0x1c40('0x18')],'where':{'sectionId':_0x516f60['id']},'raw':!![]})[_0x1c40('0xc')](function(_0x4a3efa){if(_0x4a3efa){var _0x3b5209={'where':{'id':_[_0x1c40('0x19')](_0x4a3efa,_0x1c40('0x18'))},'raw':!![]};switch(_0x1b2d27){case _0x1c40('0x6'):_0x3b5209[_0x1c40('0x1a')]['role']=_0x1c40('0x8');break;case _0x1c40('0x1b'):_0x3b5209[_0x1c40('0x1a')][_0x1c40('0x1c')]=_0x1c40('0xa');break;}return db[_0x1b2d27]['findAll'](_0x3b5209);}else{return[];}});}}else{return[];}})[_0x1c40('0xc')](function(_0x5c8d4b){return _0x5c8d4b;});}function joinOrLeaveQueues(_0x4cd09f,_0x206453,_0x56ba0b,_0x3f314d){_0x4cd09f[_0x206453](util[_0x1c40('0x1d')](_0x1c40('0x1e'),_0x56ba0b,_0x3f314d[_0x1c40('0x4')]));if(_0x3f314d['Agents']){for(var _0x105e9c=0x0;_0x105e9c<_0x3f314d[_0x1c40('0x5')][_0x1c40('0x1f')];_0x105e9c+=0x1){_0x4cd09f[_0x206453](util[_0x1c40('0x1d')](_0x1c40('0x20'),_0x3f314d[_0x1c40('0x5')][_0x105e9c][_0x1c40('0x4')]));}}}function joinOrLeave(_0x333668,_0x41d29f,_0x154859){var _0x5058f5;if(_0x333668['handshake'][_0x1c40('0x21')]['id']){db[_0x1c40('0x6')]['find']({'attributes':['id','name',_0x1c40('0x7'),_0x1c40('0x22')],'where':{'id':_0x333668[_0x1c40('0x23')][_0x1c40('0x21')]['id']},'include':[{'model':db[_0x1c40('0x24')],'as':_0x1c40('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x1c40('0x26')],'as':_0x1c40('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x1c40('0x28')],'as':_0x1c40('0x29'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x1c40('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x1c40('0x2b')],'as':_0x1c40('0x2c'),'attributes':['id'],'raw':!![]},{'model':db[_0x1c40('0x2d')],'as':_0x1c40('0x2e'),'attributes':['id'],'raw':!![]}]})[_0x1c40('0xc')](function(_0x40facf){if(_0x40facf){_0x5058f5=_0x40facf;_0x333668[_0x41d29f](util[_0x1c40('0x1d')]('user:%s',_0x40facf[_0x1c40('0x4')]));var _0xe8bff9=[];switch(_0x40facf[_0x1c40('0x7')]){case _0x1c40('0x2f'):_0x333668[_0x41d29f](_0x1c40('0x30'));_0x333668[_0x41d29f](_0x1c40('0x31'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0x1c40('0x32')];}_0xe8bff9['push'](db[_0x1c40('0x33')][_0x1c40('0x16')](queryQueues));_0xe8bff9['push'](db[_0x1c40('0x34')][_0x1c40('0x16')](queryQueues));_0xe8bff9[_0x1c40('0x35')](db[_0x1c40('0x36')][_0x1c40('0x16')](queryQueues));_0xe8bff9[_0x1c40('0x35')](db[_0x1c40('0x37')][_0x1c40('0x16')](queryQueues));_0xe8bff9[_0x1c40('0x35')](db['MailQueue'][_0x1c40('0x16')](queryQueues));_0xe8bff9[_0x1c40('0x35')](db['OpenchannelQueue'][_0x1c40('0x16')](queryQueues));_0xe8bff9[_0x1c40('0x35')](db['WhatsappQueue']['findAll'](queryQueues));_0xe8bff9[_0x1c40('0x35')](db[_0x1c40('0x6')][_0x1c40('0x16')](queryTelephones));_0xe8bff9[_0x1c40('0x35')](db['Trunk'][_0x1c40('0x16')](queryTrunks));_0xe8bff9[_0x1c40('0x35')](db[_0x1c40('0x1b')][_0x1c40('0x16')](queryCampaigns));_0xe8bff9[_0x1c40('0x35')](db['User'][_0x1c40('0x16')](queryAgents));break;case _0x1c40('0x38'):_0x333668[_0x41d29f](_0x1c40('0x30'));_0x333668[_0x41d29f](_0x1c40('0x31'));_0xe8bff9[_0x1c40('0x35')](getAssociatedResources('VoiceQueues',_0x40facf[_0x1c40('0x22')],_0x1c40('0x33')));_0xe8bff9[_0x1c40('0x35')](getAssociatedResources(_0x1c40('0xf'),_0x40facf[_0x1c40('0x22')],_0x1c40('0x34')));_0xe8bff9[_0x1c40('0x35')](getAssociatedResources(_0x1c40('0x10'),_0x40facf[_0x1c40('0x22')],_0x1c40('0x36')));_0xe8bff9[_0x1c40('0x35')](getAssociatedResources(_0x1c40('0x11'),_0x40facf[_0x1c40('0x22')],_0x1c40('0x37')));_0xe8bff9[_0x1c40('0x35')](getAssociatedResources(_0x1c40('0x12'),_0x40facf[_0x1c40('0x22')],_0x1c40('0x39')));_0xe8bff9['push'](getAssociatedResources(_0x1c40('0x13'),_0x40facf[_0x1c40('0x22')],_0x1c40('0x3a')));_0xe8bff9['push'](getAssociatedResources('WhatsappQueues',_0x40facf[_0x1c40('0x22')],_0x1c40('0x3b')));_0xe8bff9['push'](getAssociatedResources('Telephones',_0x40facf[_0x1c40('0x22')],_0x1c40('0x6')));_0xe8bff9[_0x1c40('0x35')](getAssociatedResources(_0x1c40('0x17'),_0x40facf['userProfileId'],'Trunk'));_0xe8bff9[_0x1c40('0x35')](getAssociatedResources(_0x1c40('0x3c'),_0x40facf['userProfileId'],_0x1c40('0x1b')));_0xe8bff9['push'](db[_0x1c40('0x6')][_0x1c40('0x16')](queryAgents));break;case _0x1c40('0x9'):_0x333668[_0x41d29f](_0x1c40('0x30'));_0x333668[_0x41d29f](_0x1c40('0x31'));_0xe8bff9['push'](_0x40facf[_0x1c40('0x3d')]({'attributes':['id',_0x1c40('0x4')]}));_0xe8bff9[_0x1c40('0x35')](_0x40facf['getChatQueues']({'attributes':['id','name']}));_0xe8bff9[_0x1c40('0x35')](_0x40facf[_0x1c40('0x3e')]({'attributes':['id',_0x1c40('0x4')]}));_0xe8bff9[_0x1c40('0x35')](_0x40facf[_0x1c40('0x3f')]({'attributes':['id',_0x1c40('0x4')]}));_0xe8bff9[_0x1c40('0x35')](_0x40facf[_0x1c40('0x40')]({'attributes':['id','name']}));_0xe8bff9[_0x1c40('0x35')](_0x40facf[_0x1c40('0x41')]({'attributes':['id',_0x1c40('0x4')]}));_0xe8bff9['push'](_0x40facf[_0x1c40('0x42')]({'attributes':['id','name']}));break;}return BPromise[_0x1c40('0x43')](_0xe8bff9);}})[_0x1c40('0xc')](function(_0x110dc1){if(_0x110dc1&&_0x110dc1['length']){for(var _0x9c82e3=0x0;_0x9c82e3<_0x110dc1[_0x1c40('0x1f')];_0x9c82e3+=0x1){for(var _0x44ad74=0x0;_0x44ad74<_0x110dc1[_0x9c82e3][_0x1c40('0x1f')];_0x44ad74+=0x1){switch(_0x9c82e3){case 0x0:joinOrLeaveQueues(_0x333668,_0x41d29f,_0x1c40('0x44'),_0x110dc1[_0x9c82e3][_0x44ad74]);break;case 0x1:joinOrLeaveQueues(_0x333668,_0x41d29f,_0x1c40('0x45'),_0x110dc1[_0x9c82e3][_0x44ad74]);break;case 0x2:joinOrLeaveQueues(_0x333668,_0x41d29f,_0x1c40('0x46'),_0x110dc1[_0x9c82e3][_0x44ad74]);break;case 0x3:joinOrLeaveQueues(_0x333668,_0x41d29f,_0x1c40('0x47'),_0x110dc1[_0x9c82e3][_0x44ad74]);break;case 0x4:joinOrLeaveQueues(_0x333668,_0x41d29f,_0x1c40('0x48'),_0x110dc1[_0x9c82e3][_0x44ad74]);break;case 0x5:joinOrLeaveQueues(_0x333668,_0x41d29f,_0x1c40('0x49'),_0x110dc1[_0x9c82e3][_0x44ad74]);break;case 0x6:joinOrLeaveQueues(_0x333668,_0x41d29f,_0x1c40('0x4a'),_0x110dc1[_0x9c82e3][_0x44ad74]);break;case 0x7:if(_0x5058f5[_0x1c40('0x7')]!=='agent')_0x333668[_0x41d29f](util['format']('telephone:%s',_0x110dc1[_0x9c82e3][_0x44ad74]['name']));break;case 0x8:if(_0x5058f5[_0x1c40('0x7')]!==_0x1c40('0x9'))_0x333668[_0x41d29f](util['format'](_0x1c40('0x4b'),_0x110dc1[_0x9c82e3][_0x44ad74][_0x1c40('0x4')]));break;case 0x9:if(_0x5058f5[_0x1c40('0x7')]!==_0x1c40('0x9'))_0x333668[_0x41d29f](util[_0x1c40('0x1d')]('campaign:%s:%s',_0x110dc1[_0x9c82e3][_0x44ad74][_0x1c40('0x1c')],_0x110dc1[_0x9c82e3][_0x44ad74][_0x1c40('0x4')]));break;case 0xa:_0x333668[_0x41d29f](util[_0x1c40('0x1d')](_0x1c40('0x20'),_0x110dc1[_0x9c82e3][_0x44ad74]['name']));break;}}}}})[_0x1c40('0xc')](function(){if(_0x41d29f==='leave'){var _0x42d885=_[_0x1c40('0x19')](_0x5058f5[_0x1c40('0x25')],'id');return _0x5058f5[_0x1c40('0x4c')](_0x42d885)[_0x1c40('0xc')](function(){for(var _0x10cfbb=0x0;_0x10cfbb<_0x42d885[_0x1c40('0x1f')];_0x10cfbb+=0x1){_0x154859['emit'](_0x1c40('0x4d'),{'ChatInteractionId':Number(_0x42d885[_0x10cfbb]),'UserId':Number(_0x5058f5['id'])});}});}})[_0x1c40('0xc')](function(){if(_0x41d29f==='leave'){var _0x1ed296=_[_0x1c40('0x19')](_0x5058f5[_0x1c40('0x27')],'id');return _0x5058f5['removeMailInteractions'](_0x1ed296)['then'](function(){for(var _0x10e529=0x0;_0x10e529<_0x1ed296[_0x1c40('0x1f')];_0x10e529+=0x1){_0x154859['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1ed296[_0x10e529]),'UserId':Number(_0x5058f5['id'])});}});}})[_0x1c40('0xc')](function(){if(_0x41d29f===_0x1c40('0x4e')){var _0x203740=_[_0x1c40('0x19')](_0x5058f5[_0x1c40('0x29')],'id');return _0x5058f5['removeFaxInteractions'](_0x203740)[_0x1c40('0xc')](function(){for(var _0x131d36=0x0;_0x131d36<_0x203740[_0x1c40('0x1f')];_0x131d36+=0x1){_0x154859[_0x1c40('0x4f')](_0x1c40('0x50'),{'FaxInteractionId':Number(_0x203740[_0x131d36]),'UserId':Number(_0x5058f5['id'])});}});}})[_0x1c40('0xc')](function(){if(_0x41d29f===_0x1c40('0x4e')){var _0x41f234=_[_0x1c40('0x19')](_0x5058f5['SmsInteractions'],'id');return _0x5058f5[_0x1c40('0x51')](_0x41f234)[_0x1c40('0xc')](function(){for(var _0x150423=0x0;_0x150423<_0x41f234[_0x1c40('0x1f')];_0x150423+=0x1){_0x154859[_0x1c40('0x4f')](_0x1c40('0x52'),{'SmsInteractionId':Number(_0x41f234[_0x150423]),'UserId':Number(_0x5058f5['id'])});}});}})[_0x1c40('0xc')](function(){if(_0x41d29f===_0x1c40('0x4e')){var _0x289bfe=_['map'](_0x5058f5['OpenchannelInteractions'],'id');return _0x5058f5[_0x1c40('0x53')](_0x289bfe)[_0x1c40('0xc')](function(){for(var _0x4ebfba=0x0;_0x4ebfba<_0x289bfe[_0x1c40('0x1f')];_0x4ebfba+=0x1){_0x154859[_0x1c40('0x4f')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x289bfe[_0x4ebfba]),'UserId':Number(_0x5058f5['id'])});}});}})[_0x1c40('0xc')](function(){if(_0x41d29f===_0x1c40('0x4e')){var _0x943593=_['map'](_0x5058f5[_0x1c40('0x2e')],'id');return _0x5058f5[_0x1c40('0x54')](_0x943593)['then'](function(){for(var _0x59909a=0x0;_0x59909a<_0x943593[_0x1c40('0x1f')];_0x59909a+=0x1){_0x154859[_0x1c40('0x4f')](_0x1c40('0x55'),{'WhatsappInteractionId':Number(_0x943593[_0x59909a]),'UserId':Number(_0x5058f5['id'])});}});}})[_0x1c40('0x56')](function(_0x3e4e7b){_0x333668['log'](_0x3e4e7b);});}}function onDisconnect(_0x11e775,_0x4f8fbd){joinOrLeave(_0x11e775,_0x1c40('0x4e'),_0x4f8fbd);}function onConnect(_0x1942f7){joinOrLeave(_0x1942f7,_0x1c40('0x57'));}exports['default']=function(_0x180442){_0x180442['on']('connection',function(_0x4263cd){_0x4263cd[_0x1c40('0x58')](0x0);_0x4263cd['address']=_0x4263cd['request'][_0x1c40('0x59')][_0x1c40('0x5a')]+':'+_0x4263cd[_0x1c40('0x5b')][_0x1c40('0x59')][_0x1c40('0x5c')];_0x4263cd['connectedAt']=new Date();_0x4263cd[_0x1c40('0x5d')]=function(_0x3ac71d){console[_0x1c40('0x5d')](_0x1c40('0x5e')+_0x4263cd[_0x1c40('0x5f')]['name']+'['+_0x4263cd[_0x1c40('0x60')]+']',_0x3ac71d);};_0x4263cd['on'](_0x1c40('0x61'),function(){onDisconnect(_0x4263cd,_0x180442);_0x4263cd[_0x1c40('0x5d')](_0x1c40('0x62'));});onConnect(_0x4263cd);_0x4263cd[_0x1c40('0x5d')](_0x1c40('0x63'));});};