7fd356d54d6daaa0663f22f5a979edfd60ca72e1
[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 _0x34dc=['UserProfileSection','findOne','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','then','map','telephone','where','length','format','user:%s','handshake','find','userProfileId','query','ChatInteraction','ChatInteractions','MailInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','VoiceQueue','ChatQueue','push','MailQueue','Campaign','SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','telephone:%s','trunk:%s','leave','removeChatInteractions','emit','MailInteractions','removeMailInteractions','user_has_fax_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','connection','setMaxListeners','address','request','remoteAddress','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','../mysqldb','name','Agents','User','role','agent','type','ivr'];(function(_0x96074,_0x328d5d){var _0x381f14=function(_0x2cfc5c){while(--_0x2cfc5c){_0x96074['push'](_0x96074['shift']());}};_0x381f14(++_0x328d5d);}(_0x34dc,0x113));var _0xc34d=function(_0x3f1a2e,_0x4da911){_0x3f1a2e=_0x3f1a2e-0x0;var _0x3fad9a=_0x34dc[_0x3f1a2e];return _0x3fad9a;};'use strict';var _=require(_0xc34d('0x0'));var util=require('util');var BPromise=require(_0xc34d('0x1'));var db=require(_0xc34d('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xc34d('0x3')],'include':[{'as':_0xc34d('0x4'),'model':db[_0xc34d('0x5')],'attributes':['id','name',_0xc34d('0x6')],'raw':!![],'where':{'role':_0xc34d('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xc34d('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0xc34d('0x3')],'where':{'role':_0xc34d('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xc34d('0x3'),_0xc34d('0x8')],'where':{'type':_0xc34d('0x9')}};function getAssociatedResources(_0x282273,_0x2aa099,_0x2311e2){return db[_0xc34d('0xa')][_0xc34d('0xb')]({'where':{'name':_0x282273,'userProfileId':_0x2aa099},'raw':!![]})['then'](function(_0x281cb4){if(_0x281cb4){if(_0x281cb4['autoAssociation']){switch(_0x282273){case _0xc34d('0xc'):case _0xc34d('0xd'):case _0xc34d('0xe'):case _0xc34d('0xf'):case _0xc34d('0x10'):case _0xc34d('0x11'):case _0xc34d('0x12'):return db[_0x2311e2][_0xc34d('0x13')](queryQueues);case _0xc34d('0x14'):return db[_0x2311e2]['findAll'](queryTelephones);case _0xc34d('0x15'):return db[_0x2311e2][_0xc34d('0x13')](queryTrunks);case _0xc34d('0x16'):return db[_0x2311e2]['findAll'](queryCampaigns);}}else{return db[_0xc34d('0x17')]['findAll']({'attributes':[_0xc34d('0x18')],'where':{'sectionId':_0x281cb4['id']},'raw':!![]})[_0xc34d('0x19')](function(_0x59908f){if(_0x59908f){var _0x253df2={'where':{'id':_[_0xc34d('0x1a')](_0x59908f,_0xc34d('0x18'))},'raw':!![]};switch(_0x2311e2){case'User':_0x253df2['where']['role']=_0xc34d('0x1b');break;case'Campaign':_0x253df2[_0xc34d('0x1c')][_0xc34d('0x8')]=_0xc34d('0x9');break;}return db[_0x2311e2][_0xc34d('0x13')](_0x253df2);}else{return[];}});}}else{return[];}})[_0xc34d('0x19')](function(_0x153182){return _0x153182;});}function joinOrLeaveQueues(_0x5bdd8c,_0x58075a,_0x1c5b8f,_0x369735){_0x5bdd8c[_0x58075a](util['format']('%s:queue:%s',_0x1c5b8f,_0x369735[_0xc34d('0x3')]));if(_0x369735[_0xc34d('0x4')]){for(var _0x447140=0x0;_0x447140<_0x369735['Agents'][_0xc34d('0x1d')];_0x447140+=0x1){_0x5bdd8c[_0x58075a](util[_0xc34d('0x1e')](_0xc34d('0x1f'),_0x369735[_0xc34d('0x4')][_0x447140][_0xc34d('0x3')]));}}}function joinOrLeave(_0x5b86f6,_0x54a566,_0x5317ee){var _0x3eae18;if(_0x5b86f6[_0xc34d('0x20')]['query']['id']){db[_0xc34d('0x5')][_0xc34d('0x21')]({'attributes':['id','name',_0xc34d('0x6'),_0xc34d('0x22')],'where':{'id':_0x5b86f6[_0xc34d('0x20')][_0xc34d('0x23')]['id']},'include':[{'model':db[_0xc34d('0x24')],'as':_0xc34d('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xc34d('0x26')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0xc34d('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xc34d('0x28')],'as':_0xc34d('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0xc34d('0x2a')],'as':_0xc34d('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0xc34d('0x2c')],'as':_0xc34d('0x2d'),'attributes':['id'],'raw':!![]}]})[_0xc34d('0x19')](function(_0x11fc43){if(_0x11fc43){_0x3eae18=_0x11fc43;_0x5b86f6[_0x54a566](util[_0xc34d('0x1e')](_0xc34d('0x1f'),_0x11fc43[_0xc34d('0x3')]));var _0x59e629=[];switch(_0x11fc43[_0xc34d('0x6')]){case'admin':_0x5b86f6[_0x54a566](_0xc34d('0x2e'));_0x5b86f6[_0x54a566](_0xc34d('0x2f'));if(queryQueues[_0xc34d('0x30')](_0xc34d('0x31'))){delete queryQueues[_0xc34d('0x31')];}_0x59e629['push'](db[_0xc34d('0x32')]['findAll'](queryQueues));_0x59e629['push'](db[_0xc34d('0x33')]['findAll'](queryQueues));_0x59e629['push'](db['FaxQueue'][_0xc34d('0x13')](queryQueues));_0x59e629['push'](db['SmsQueue']['findAll'](queryQueues));_0x59e629[_0xc34d('0x34')](db[_0xc34d('0x35')][_0xc34d('0x13')](queryQueues));_0x59e629['push'](db['OpenchannelQueue'][_0xc34d('0x13')](queryQueues));_0x59e629[_0xc34d('0x34')](db['WhatsappQueue']['findAll'](queryQueues));_0x59e629[_0xc34d('0x34')](db[_0xc34d('0x5')][_0xc34d('0x13')](queryTelephones));_0x59e629[_0xc34d('0x34')](db['Trunk'][_0xc34d('0x13')](queryTrunks));_0x59e629[_0xc34d('0x34')](db[_0xc34d('0x36')][_0xc34d('0x13')](queryCampaigns));_0x59e629[_0xc34d('0x34')](db['User'][_0xc34d('0x13')](queryAgents));break;case'user':_0x5b86f6[_0x54a566](_0xc34d('0x2e'));_0x5b86f6[_0x54a566](_0xc34d('0x2f'));_0x59e629['push'](getAssociatedResources('VoiceQueues',_0x11fc43[_0xc34d('0x22')],_0xc34d('0x32')));_0x59e629[_0xc34d('0x34')](getAssociatedResources('ChatQueues',_0x11fc43[_0xc34d('0x22')],_0xc34d('0x33')));_0x59e629[_0xc34d('0x34')](getAssociatedResources(_0xc34d('0xe'),_0x11fc43[_0xc34d('0x22')],'FaxQueue'));_0x59e629[_0xc34d('0x34')](getAssociatedResources(_0xc34d('0xf'),_0x11fc43[_0xc34d('0x22')],_0xc34d('0x37')));_0x59e629[_0xc34d('0x34')](getAssociatedResources(_0xc34d('0x10'),_0x11fc43[_0xc34d('0x22')],_0xc34d('0x35')));_0x59e629[_0xc34d('0x34')](getAssociatedResources(_0xc34d('0x11'),_0x11fc43[_0xc34d('0x22')],_0xc34d('0x38')));_0x59e629[_0xc34d('0x34')](getAssociatedResources(_0xc34d('0x12'),_0x11fc43[_0xc34d('0x22')],_0xc34d('0x39')));_0x59e629['push'](getAssociatedResources(_0xc34d('0x14'),_0x11fc43[_0xc34d('0x22')],_0xc34d('0x5')));_0x59e629[_0xc34d('0x34')](getAssociatedResources('Trunks',_0x11fc43['userProfileId'],_0xc34d('0x3a')));_0x59e629['push'](getAssociatedResources('IvrCampaigns',_0x11fc43[_0xc34d('0x22')],'Campaign'));_0x59e629[_0xc34d('0x34')](db[_0xc34d('0x5')][_0xc34d('0x13')](queryAgents));break;case _0xc34d('0x7'):_0x5b86f6[_0x54a566](_0xc34d('0x2e'));_0x5b86f6[_0x54a566](_0xc34d('0x2f'));_0x59e629[_0xc34d('0x34')](_0x11fc43[_0xc34d('0x3b')]({'attributes':['id',_0xc34d('0x3')]}));_0x59e629[_0xc34d('0x34')](_0x11fc43[_0xc34d('0x3c')]({'attributes':['id',_0xc34d('0x3')]}));_0x59e629[_0xc34d('0x34')](_0x11fc43[_0xc34d('0x3d')]({'attributes':['id',_0xc34d('0x3')]}));_0x59e629[_0xc34d('0x34')](_0x11fc43['getSmsQueues']({'attributes':['id',_0xc34d('0x3')]}));_0x59e629['push'](_0x11fc43[_0xc34d('0x3e')]({'attributes':['id','name']}));_0x59e629[_0xc34d('0x34')](_0x11fc43[_0xc34d('0x3f')]({'attributes':['id','name']}));_0x59e629[_0xc34d('0x34')](_0x11fc43[_0xc34d('0x40')]({'attributes':['id',_0xc34d('0x3')]}));break;}return BPromise[_0xc34d('0x41')](_0x59e629);}})[_0xc34d('0x19')](function(_0x56b2c2){if(_0x56b2c2&&_0x56b2c2[_0xc34d('0x1d')]){for(var _0x4ccdae=0x0;_0x4ccdae<_0x56b2c2[_0xc34d('0x1d')];_0x4ccdae+=0x1){for(var _0x11d08f=0x0;_0x11d08f<_0x56b2c2[_0x4ccdae][_0xc34d('0x1d')];_0x11d08f+=0x1){switch(_0x4ccdae){case 0x0:joinOrLeaveQueues(_0x5b86f6,_0x54a566,_0xc34d('0x42'),_0x56b2c2[_0x4ccdae][_0x11d08f]);break;case 0x1:joinOrLeaveQueues(_0x5b86f6,_0x54a566,_0xc34d('0x43'),_0x56b2c2[_0x4ccdae][_0x11d08f]);break;case 0x2:joinOrLeaveQueues(_0x5b86f6,_0x54a566,_0xc34d('0x44'),_0x56b2c2[_0x4ccdae][_0x11d08f]);break;case 0x3:joinOrLeaveQueues(_0x5b86f6,_0x54a566,_0xc34d('0x45'),_0x56b2c2[_0x4ccdae][_0x11d08f]);break;case 0x4:joinOrLeaveQueues(_0x5b86f6,_0x54a566,_0xc34d('0x46'),_0x56b2c2[_0x4ccdae][_0x11d08f]);break;case 0x5:joinOrLeaveQueues(_0x5b86f6,_0x54a566,_0xc34d('0x47'),_0x56b2c2[_0x4ccdae][_0x11d08f]);break;case 0x6:joinOrLeaveQueues(_0x5b86f6,_0x54a566,'whatsapp',_0x56b2c2[_0x4ccdae][_0x11d08f]);break;case 0x7:_0x5b86f6[_0x54a566](util['format'](_0xc34d('0x48'),_0x56b2c2[_0x4ccdae][_0x11d08f][_0xc34d('0x3')]));break;case 0x8:_0x5b86f6[_0x54a566](util['format'](_0xc34d('0x49'),_0x56b2c2[_0x4ccdae][_0x11d08f][_0xc34d('0x3')]));break;case 0x9:_0x5b86f6[_0x54a566](util['format']('campaign:%s:%s',_0x56b2c2[_0x4ccdae][_0x11d08f][_0xc34d('0x8')],_0x56b2c2[_0x4ccdae][_0x11d08f]['name']));break;case 0xa:_0x5b86f6[_0x54a566](util['format'](_0xc34d('0x1f'),_0x56b2c2[_0x4ccdae][_0x11d08f]['name']));break;}}}}})[_0xc34d('0x19')](function(){if(_0x54a566===_0xc34d('0x4a')){var _0x559ada=_[_0xc34d('0x1a')](_0x3eae18[_0xc34d('0x25')],'id');return _0x3eae18[_0xc34d('0x4b')](_0x559ada)[_0xc34d('0x19')](function(){for(var _0x2280d6=0x0;_0x2280d6<_0x559ada['length'];_0x2280d6+=0x1){_0x5317ee[_0xc34d('0x4c')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x559ada[_0x2280d6]),'UserId':Number(_0x3eae18['id'])});}});}})[_0xc34d('0x19')](function(){if(_0x54a566===_0xc34d('0x4a')){var _0x5d2738=_[_0xc34d('0x1a')](_0x3eae18[_0xc34d('0x4d')],'id');return _0x3eae18[_0xc34d('0x4e')](_0x5d2738)[_0xc34d('0x19')](function(){for(var _0x3f3ed3=0x0;_0x3f3ed3<_0x5d2738[_0xc34d('0x1d')];_0x3f3ed3+=0x1){_0x5317ee['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x5d2738[_0x3f3ed3]),'UserId':Number(_0x3eae18['id'])});}});}})[_0xc34d('0x19')](function(){if(_0x54a566===_0xc34d('0x4a')){var _0x3f7bed=_['map'](_0x3eae18['FaxInteractions'],'id');return _0x3eae18['removeFaxInteractions'](_0x3f7bed)[_0xc34d('0x19')](function(){for(var _0xf96f88=0x0;_0xf96f88<_0x3f7bed[_0xc34d('0x1d')];_0xf96f88+=0x1){_0x5317ee[_0xc34d('0x4c')](_0xc34d('0x4f'),{'FaxInteractionId':Number(_0x3f7bed[_0xf96f88]),'UserId':Number(_0x3eae18['id'])});}});}})[_0xc34d('0x19')](function(){if(_0x54a566===_0xc34d('0x4a')){var _0x39d96d=_['map'](_0x3eae18[_0xc34d('0x29')],'id');return _0x3eae18['removeSmsInteractions'](_0x39d96d)[_0xc34d('0x19')](function(){for(var _0x4a8316=0x0;_0x4a8316<_0x39d96d['length'];_0x4a8316+=0x1){_0x5317ee[_0xc34d('0x4c')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x39d96d[_0x4a8316]),'UserId':Number(_0x3eae18['id'])});}});}})['then'](function(){if(_0x54a566===_0xc34d('0x4a')){var _0x54ad82=_[_0xc34d('0x1a')](_0x3eae18[_0xc34d('0x2b')],'id');return _0x3eae18[_0xc34d('0x50')](_0x54ad82)[_0xc34d('0x19')](function(){for(var _0x5e8c08=0x0;_0x5e8c08<_0x54ad82['length'];_0x5e8c08+=0x1){_0x5317ee['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x54ad82[_0x5e8c08]),'UserId':Number(_0x3eae18['id'])});}});}})['then'](function(){if(_0x54a566===_0xc34d('0x4a')){var _0x3436a0=_[_0xc34d('0x1a')](_0x3eae18['WhatsappInteractions'],'id');return _0x3eae18[_0xc34d('0x51')](_0x3436a0)[_0xc34d('0x19')](function(){for(var _0x3573d8=0x0;_0x3573d8<_0x3436a0[_0xc34d('0x1d')];_0x3573d8+=0x1){_0x5317ee[_0xc34d('0x4c')](_0xc34d('0x52'),{'WhatsappInteractionId':Number(_0x3436a0[_0x3573d8]),'UserId':Number(_0x3eae18['id'])});}});}})[_0xc34d('0x53')](function(_0x4ccb64){_0x5b86f6[_0xc34d('0x54')](_0x4ccb64);});}}function onDisconnect(_0x18a2b0,_0x4b6c6b){joinOrLeave(_0x18a2b0,'leave',_0x4b6c6b);}function onConnect(_0x397490){joinOrLeave(_0x397490,'join');}exports['default']=function(_0x3997f9){_0x3997f9['on'](_0xc34d('0x55'),function(_0x15e058){_0x15e058[_0xc34d('0x56')](0x0);_0x15e058[_0xc34d('0x57')]=_0x15e058[_0xc34d('0x58')][_0xc34d('0x55')][_0xc34d('0x59')]+':'+_0x15e058[_0xc34d('0x58')]['connection']['remotePort'];_0x15e058['connectedAt']=new Date();_0x15e058['log']=function(_0x36728e){console[_0xc34d('0x54')](_0xc34d('0x5a')+_0x15e058[_0xc34d('0x5b')][_0xc34d('0x3')]+'['+_0x15e058[_0xc34d('0x57')]+']',_0x36728e);};_0x15e058['on'](_0xc34d('0x5c'),function(){onDisconnect(_0x15e058,_0x3997f9);_0x15e058[_0xc34d('0x54')](_0xc34d('0x5d'));});onConnect(_0x15e058);_0x15e058['log'](_0xc34d('0x5e'));});};