Built motion from commit 3e059bc2.|2.5.32
[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 _0x2525=['SmsQueue','MailQueue','WhatsappQueue','userProfileId','VoiceQueue','OpenchannelQueue','Trunk','getChatQueues','getFaxQueues','getSmsQueues','getWhatsappQueues','all','chat','sms','mail','openchannel','telephone:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','connection','setMaxListeners','address','request','remotePort','log','SocketIO\x20','nsp','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','telephone','agent','ivr','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','map','Campaign','where','type','format','length','handshake','query','find','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteractions','OpenchannelInteractions','user:%s','role','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue'];(function(_0x40bbe2,_0x4b69d7){var _0x1a1b99=function(_0x54a830){while(--_0x54a830){_0x40bbe2['push'](_0x40bbe2['shift']());}};_0x1a1b99(++_0x4b69d7);}(_0x2525,0x1f0));var _0x5252=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2525[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x5252('0x0'));var util=require(_0x5252('0x1'));var BPromise=require(_0x5252('0x2'));var db=require(_0x5252('0x3'))['db'];var config=require(_0x5252('0x4'));var queryQueues={'attributes':['id',_0x5252('0x5')],'include':[{'as':_0x5252('0x6'),'model':db[_0x5252('0x7')],'attributes':['id',_0x5252('0x5'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x5252('0x5')],'where':{'role':_0x5252('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x5252('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x5252('0x5')],'where':{'role':_0x5252('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x5252('0x5'),'type'],'where':{'type':_0x5252('0xa')}};function getAssociatedResources(_0x551912,_0x149787,_0x3c8d35){return db['UserProfileSection']['findOne']({'where':{'name':_0x551912,'userProfileId':_0x149787},'raw':!![]})[_0x5252('0xb')](function(_0x5289ce){if(_0x5289ce){if(_0x5289ce[_0x5252('0xc')]){switch(_0x551912){case _0x5252('0xd'):case _0x5252('0xe'):case _0x5252('0xf'):case _0x5252('0x10'):case _0x5252('0x11'):case _0x5252('0x12'):case _0x5252('0x13'):return db[_0x3c8d35][_0x5252('0x14')](queryQueues);case _0x5252('0x15'):return db[_0x3c8d35][_0x5252('0x14')](queryTelephones);case _0x5252('0x16'):return db[_0x3c8d35][_0x5252('0x14')](queryTrunks);case _0x5252('0x17'):return db[_0x3c8d35]['findAll'](queryCampaigns);}}else{return db['UserProfileResource'][_0x5252('0x14')]({'attributes':[_0x5252('0x18')],'where':{'sectionId':_0x5289ce['id']},'raw':!![]})[_0x5252('0xb')](function(_0x9ddda){if(_0x9ddda){var _0x399a71={'where':{'id':_[_0x5252('0x19')](_0x9ddda,_0x5252('0x18'))},'raw':!![]};switch(_0x3c8d35){case'User':_0x399a71['where']['role']=_0x5252('0x8');break;case _0x5252('0x1a'):_0x399a71[_0x5252('0x1b')][_0x5252('0x1c')]=_0x5252('0xa');break;}return db[_0x3c8d35][_0x5252('0x14')](_0x399a71);}else{return[];}});}}else{return[];}})[_0x5252('0xb')](function(_0x4c18d0){return _0x4c18d0;});}function joinOrLeaveQueues(_0x26faf5,_0x151108,_0xb0131b,_0x428553){_0x26faf5[_0x151108](util[_0x5252('0x1d')]('%s:queue:%s',_0xb0131b,_0x428553[_0x5252('0x5')]));if(_0x428553[_0x5252('0x6')]){for(var _0x3f77ff=0x0;_0x3f77ff<_0x428553[_0x5252('0x6')][_0x5252('0x1e')];_0x3f77ff+=0x1){_0x26faf5[_0x151108](util[_0x5252('0x1d')]('user:%s',_0x428553[_0x5252('0x6')][_0x3f77ff][_0x5252('0x5')]));}}}function joinOrLeave(_0x57ec1b,_0x5377b0,_0x531417){var _0x509055;if(_0x57ec1b[_0x5252('0x1f')][_0x5252('0x20')]['id']){db['User'][_0x5252('0x21')]({'attributes':['id',_0x5252('0x5'),'role','userProfileId'],'where':{'id':_0x57ec1b[_0x5252('0x1f')]['query']['id']},'include':[{'model':db[_0x5252('0x22')],'as':_0x5252('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x5252('0x24')],'as':_0x5252('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x5252('0x26')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x5252('0x27'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x5252('0x28'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})['then'](function(_0x4ac8b8){if(_0x4ac8b8){_0x509055=_0x4ac8b8;_0x57ec1b[_0x5377b0](util[_0x5252('0x1d')](_0x5252('0x29'),_0x4ac8b8[_0x5252('0x5')]));var _0x55f3b5=[];switch(_0x4ac8b8[_0x5252('0x2a')]){case _0x5252('0x2b'):_0x57ec1b[_0x5377b0](_0x5252('0x2c'));_0x57ec1b[_0x5377b0](_0x5252('0x2d'));if(queryQueues[_0x5252('0x2e')](_0x5252('0x2f'))){delete queryQueues[_0x5252('0x2f')];}_0x55f3b5[_0x5252('0x30')](db['VoiceQueue'][_0x5252('0x14')](queryQueues));_0x55f3b5['push'](db[_0x5252('0x31')][_0x5252('0x14')](queryQueues));_0x55f3b5[_0x5252('0x30')](db['FaxQueue'][_0x5252('0x14')](queryQueues));_0x55f3b5['push'](db[_0x5252('0x32')][_0x5252('0x14')](queryQueues));_0x55f3b5[_0x5252('0x30')](db[_0x5252('0x33')]['findAll'](queryQueues));_0x55f3b5[_0x5252('0x30')](db['OpenchannelQueue']['findAll'](queryQueues));_0x55f3b5['push'](db[_0x5252('0x34')]['findAll'](queryQueues));_0x55f3b5[_0x5252('0x30')](db[_0x5252('0x7')][_0x5252('0x14')](queryTelephones));_0x55f3b5[_0x5252('0x30')](db['Trunk']['findAll'](queryTrunks));_0x55f3b5['push'](db['Campaign'][_0x5252('0x14')](queryCampaigns));_0x55f3b5[_0x5252('0x30')](db[_0x5252('0x7')][_0x5252('0x14')](queryAgents));break;case'user':_0x57ec1b[_0x5377b0](_0x5252('0x2c'));_0x57ec1b[_0x5377b0](_0x5252('0x2d'));_0x55f3b5['push'](getAssociatedResources(_0x5252('0xd'),_0x4ac8b8[_0x5252('0x35')],_0x5252('0x36')));_0x55f3b5['push'](getAssociatedResources('ChatQueues',_0x4ac8b8[_0x5252('0x35')],_0x5252('0x31')));_0x55f3b5[_0x5252('0x30')](getAssociatedResources(_0x5252('0xf'),_0x4ac8b8[_0x5252('0x35')],'FaxQueue'));_0x55f3b5[_0x5252('0x30')](getAssociatedResources(_0x5252('0x10'),_0x4ac8b8['userProfileId'],_0x5252('0x32')));_0x55f3b5[_0x5252('0x30')](getAssociatedResources('MailQueues',_0x4ac8b8[_0x5252('0x35')],_0x5252('0x33')));_0x55f3b5[_0x5252('0x30')](getAssociatedResources(_0x5252('0x12'),_0x4ac8b8[_0x5252('0x35')],_0x5252('0x37')));_0x55f3b5['push'](getAssociatedResources('WhatsappQueues',_0x4ac8b8[_0x5252('0x35')],'WhatsappQueue'));_0x55f3b5[_0x5252('0x30')](getAssociatedResources('Telephones',_0x4ac8b8[_0x5252('0x35')],_0x5252('0x7')));_0x55f3b5['push'](getAssociatedResources(_0x5252('0x16'),_0x4ac8b8['userProfileId'],_0x5252('0x38')));_0x55f3b5[_0x5252('0x30')](getAssociatedResources(_0x5252('0x17'),_0x4ac8b8[_0x5252('0x35')],_0x5252('0x1a')));_0x55f3b5[_0x5252('0x30')](db['User']['findAll'](queryAgents));break;case _0x5252('0x9'):_0x57ec1b[_0x5377b0](_0x5252('0x2c'));_0x57ec1b[_0x5377b0](_0x5252('0x2d'));_0x55f3b5[_0x5252('0x30')](_0x4ac8b8['getVoiceQueues']({'attributes':['id','name']}));_0x55f3b5[_0x5252('0x30')](_0x4ac8b8[_0x5252('0x39')]({'attributes':['id',_0x5252('0x5')]}));_0x55f3b5['push'](_0x4ac8b8[_0x5252('0x3a')]({'attributes':['id',_0x5252('0x5')]}));_0x55f3b5['push'](_0x4ac8b8[_0x5252('0x3b')]({'attributes':['id',_0x5252('0x5')]}));_0x55f3b5[_0x5252('0x30')](_0x4ac8b8['getMailQueues']({'attributes':['id',_0x5252('0x5')]}));_0x55f3b5[_0x5252('0x30')](_0x4ac8b8['getOpenchannelQueues']({'attributes':['id',_0x5252('0x5')]}));_0x55f3b5['push'](_0x4ac8b8[_0x5252('0x3c')]({'attributes':['id','name']}));break;}return BPromise[_0x5252('0x3d')](_0x55f3b5);}})['then'](function(_0x2b6b5f){if(_0x2b6b5f&&_0x2b6b5f[_0x5252('0x1e')]){for(var _0x2eba22=0x0;_0x2eba22<_0x2b6b5f[_0x5252('0x1e')];_0x2eba22+=0x1){for(var _0x2219d8=0x0;_0x2219d8<_0x2b6b5f[_0x2eba22][_0x5252('0x1e')];_0x2219d8+=0x1){switch(_0x2eba22){case 0x0:joinOrLeaveQueues(_0x57ec1b,_0x5377b0,'voice',_0x2b6b5f[_0x2eba22][_0x2219d8]);break;case 0x1:joinOrLeaveQueues(_0x57ec1b,_0x5377b0,_0x5252('0x3e'),_0x2b6b5f[_0x2eba22][_0x2219d8]);break;case 0x2:joinOrLeaveQueues(_0x57ec1b,_0x5377b0,'fax',_0x2b6b5f[_0x2eba22][_0x2219d8]);break;case 0x3:joinOrLeaveQueues(_0x57ec1b,_0x5377b0,_0x5252('0x3f'),_0x2b6b5f[_0x2eba22][_0x2219d8]);break;case 0x4:joinOrLeaveQueues(_0x57ec1b,_0x5377b0,_0x5252('0x40'),_0x2b6b5f[_0x2eba22][_0x2219d8]);break;case 0x5:joinOrLeaveQueues(_0x57ec1b,_0x5377b0,_0x5252('0x41'),_0x2b6b5f[_0x2eba22][_0x2219d8]);break;case 0x6:joinOrLeaveQueues(_0x57ec1b,_0x5377b0,'whatsapp',_0x2b6b5f[_0x2eba22][_0x2219d8]);break;case 0x7:if(_0x509055['role']!==_0x5252('0x9'))_0x57ec1b[_0x5377b0](util['format'](_0x5252('0x42'),_0x2b6b5f[_0x2eba22][_0x2219d8]['name']));break;case 0x8:if(_0x509055[_0x5252('0x2a')]!==_0x5252('0x9'))_0x57ec1b[_0x5377b0](util[_0x5252('0x1d')]('trunk:%s',_0x2b6b5f[_0x2eba22][_0x2219d8][_0x5252('0x5')]));break;case 0x9:if(_0x509055[_0x5252('0x2a')]!=='agent')_0x57ec1b[_0x5377b0](util['format']('campaign:%s:%s',_0x2b6b5f[_0x2eba22][_0x2219d8]['type'],_0x2b6b5f[_0x2eba22][_0x2219d8][_0x5252('0x5')]));break;case 0xa:_0x57ec1b[_0x5377b0](util[_0x5252('0x1d')]('user:%s',_0x2b6b5f[_0x2eba22][_0x2219d8]['name']));break;}}}}})['then'](function(){if(_0x5377b0===_0x5252('0x43')){var _0x41423e=_[_0x5252('0x19')](_0x509055[_0x5252('0x23')],'id');return _0x509055[_0x5252('0x44')](_0x41423e)['then'](function(){for(var _0x5275b7=0x0;_0x5275b7<_0x41423e[_0x5252('0x1e')];_0x5275b7+=0x1){_0x531417[_0x5252('0x45')](_0x5252('0x46'),{'ChatInteractionId':Number(_0x41423e[_0x5275b7]),'UserId':Number(_0x509055['id'])});}});}})[_0x5252('0xb')](function(){if(_0x5377b0==='leave'){var _0x3d4c87=_[_0x5252('0x19')](_0x509055['MailInteractions'],'id');return _0x509055[_0x5252('0x47')](_0x3d4c87)[_0x5252('0xb')](function(){for(var _0x24576b=0x0;_0x24576b<_0x3d4c87['length'];_0x24576b+=0x1){_0x531417[_0x5252('0x45')](_0x5252('0x48'),{'MailInteractionId':Number(_0x3d4c87[_0x24576b]),'UserId':Number(_0x509055['id'])});}});}})[_0x5252('0xb')](function(){if(_0x5377b0==='leave'){var _0x5e706c=_['map'](_0x509055[_0x5252('0x49')],'id');return _0x509055[_0x5252('0x4a')](_0x5e706c)[_0x5252('0xb')](function(){for(var _0x30c64e=0x0;_0x30c64e<_0x5e706c[_0x5252('0x1e')];_0x30c64e+=0x1){_0x531417[_0x5252('0x45')](_0x5252('0x4b'),{'FaxInteractionId':Number(_0x5e706c[_0x30c64e]),'UserId':Number(_0x509055['id'])});}});}})[_0x5252('0xb')](function(){if(_0x5377b0===_0x5252('0x43')){var _0x516dae=_['map'](_0x509055[_0x5252('0x27')],'id');return _0x509055['removeSmsInteractions'](_0x516dae)[_0x5252('0xb')](function(){for(var _0x871f5c=0x0;_0x871f5c<_0x516dae['length'];_0x871f5c+=0x1){_0x531417[_0x5252('0x45')](_0x5252('0x4c'),{'SmsInteractionId':Number(_0x516dae[_0x871f5c]),'UserId':Number(_0x509055['id'])});}});}})[_0x5252('0xb')](function(){if(_0x5377b0==='leave'){var _0x287418=_['map'](_0x509055[_0x5252('0x28')],'id');return _0x509055['removeOpenchannelInteractions'](_0x287418)[_0x5252('0xb')](function(){for(var _0x1ff9a9=0x0;_0x1ff9a9<_0x287418[_0x5252('0x1e')];_0x1ff9a9+=0x1){_0x531417[_0x5252('0x45')](_0x5252('0x4d'),{'OpenchannelInteractionId':Number(_0x287418[_0x1ff9a9]),'UserId':Number(_0x509055['id'])});}});}})[_0x5252('0xb')](function(){if(_0x5377b0===_0x5252('0x43')){var _0x1b4e84=_[_0x5252('0x19')](_0x509055[_0x5252('0x4e')],'id');return _0x509055[_0x5252('0x4f')](_0x1b4e84)['then'](function(){for(var _0x3da40c=0x0;_0x3da40c<_0x1b4e84[_0x5252('0x1e')];_0x3da40c+=0x1){_0x531417[_0x5252('0x45')](_0x5252('0x50'),{'WhatsappInteractionId':Number(_0x1b4e84[_0x3da40c]),'UserId':Number(_0x509055['id'])});}});}})['catch'](function(_0xe613bc){_0x57ec1b['log'](_0xe613bc);});}}function onDisconnect(_0x385bbe,_0x3041c8){joinOrLeave(_0x385bbe,'leave',_0x3041c8);}function onConnect(_0xc66377){joinOrLeave(_0xc66377,'join');}exports['default']=function(_0x2a4c81){_0x2a4c81['on'](_0x5252('0x51'),function(_0x3728e8){_0x3728e8[_0x5252('0x52')](0x0);_0x3728e8[_0x5252('0x53')]=_0x3728e8['request'][_0x5252('0x51')]['remoteAddress']+':'+_0x3728e8[_0x5252('0x54')]['connection'][_0x5252('0x55')];_0x3728e8['connectedAt']=new Date();_0x3728e8[_0x5252('0x56')]=function(_0x2f663f){console['log'](_0x5252('0x57')+_0x3728e8[_0x5252('0x58')][_0x5252('0x5')]+'['+_0x3728e8[_0x5252('0x53')]+']',_0x2f663f);};_0x3728e8['on']('disconnect',function(){onDisconnect(_0x3728e8,_0x2a4c81);_0x3728e8['log'](_0x5252('0x59'));});onConnect(_0x3728e8);_0x3728e8[_0x5252('0x56')](_0x5252('0x5a'));});};