1d0c645ac53f18c01fdedbdf3079f16d020b736c
[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 _0xb7e2=['length','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','SmsQueue','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','emit','user_has_chat_interactions:remove','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','default','setMaxListeners','address','request','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','bluebird','./environment','Agents','name','role','agent','telephone','type','UserProfileSection','findOne','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','UserProfileResource','resourceId','map','User','where','ivr','then','format'];(function(_0x5efc60,_0x2b27fc){var _0x118e22=function(_0x297b1c){while(--_0x297b1c){_0x5efc60['push'](_0x5efc60['shift']());}};_0x118e22(++_0x2b27fc);}(_0xb7e2,0x103));var _0x2b7e=function(_0x2f6e44,_0x50000a){_0x2f6e44=_0x2f6e44-0x0;var _0xacdd53=_0xb7e2[_0x2f6e44];return _0xacdd53;};'use strict';var _=require(_0x2b7e('0x0'));var util=require('util');var BPromise=require(_0x2b7e('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x2b7e('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x2b7e('0x3'),'model':db['User'],'attributes':['id',_0x2b7e('0x4'),_0x2b7e('0x5')],'raw':!![],'where':{'role':_0x2b7e('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x2b7e('0x4')],'where':{'role':_0x2b7e('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x2b7e('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x2b7e('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x2b7e('0x4'),_0x2b7e('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x2cbe5e,_0x1019f5,_0x2f5991){return db[_0x2b7e('0x9')][_0x2b7e('0xa')]({'where':{'name':_0x2cbe5e,'userProfileId':_0x1019f5},'raw':!![]})['then'](function(_0x48ed94){if(_0x48ed94){if(_0x48ed94[_0x2b7e('0xb')]){switch(_0x2cbe5e){case _0x2b7e('0xc'):case _0x2b7e('0xd'):case _0x2b7e('0xe'):case _0x2b7e('0xf'):case _0x2b7e('0x10'):case _0x2b7e('0x11'):case'WhatsappQueues':return db[_0x2f5991][_0x2b7e('0x12')](queryQueues);case _0x2b7e('0x13'):return db[_0x2f5991][_0x2b7e('0x12')](queryTelephones);case _0x2b7e('0x14'):return db[_0x2f5991]['findAll'](queryTrunks);case'IvrCampaigns':return db[_0x2f5991]['findAll'](queryCampaigns);}}else{return db[_0x2b7e('0x15')]['findAll']({'attributes':[_0x2b7e('0x16')],'where':{'sectionId':_0x48ed94['id']},'raw':!![]})['then'](function(_0x1f5682){if(_0x1f5682){var _0x4b84b2={'where':{'id':_[_0x2b7e('0x17')](_0x1f5682,_0x2b7e('0x16'))},'raw':!![]};switch(_0x2f5991){case _0x2b7e('0x18'):_0x4b84b2['where'][_0x2b7e('0x5')]=_0x2b7e('0x7');break;case'Campaign':_0x4b84b2[_0x2b7e('0x19')][_0x2b7e('0x8')]=_0x2b7e('0x1a');break;}return db[_0x2f5991]['findAll'](_0x4b84b2);}else{return[];}});}}else{return[];}})[_0x2b7e('0x1b')](function(_0x2e9e7b){return _0x2e9e7b;});}function joinOrLeaveQueues(_0x627ca1,_0x2e3e6c,_0x94e7e3,_0x577b18){_0x627ca1[_0x2e3e6c](util[_0x2b7e('0x1c')]('%s:queue:%s',_0x94e7e3,_0x577b18['name']));if(_0x577b18[_0x2b7e('0x3')]){for(var _0x5dae66=0x0;_0x5dae66<_0x577b18[_0x2b7e('0x3')][_0x2b7e('0x1d')];_0x5dae66+=0x1){_0x627ca1[_0x2e3e6c](util['format'](_0x2b7e('0x1e'),_0x577b18['Agents'][_0x5dae66][_0x2b7e('0x4')]));}}}function joinOrLeave(_0x22b174,_0x51f854,_0x4a7e79){var _0x3548e3;if(_0x22b174[_0x2b7e('0x1f')][_0x2b7e('0x20')]['id']){db[_0x2b7e('0x18')][_0x2b7e('0x21')]({'attributes':['id',_0x2b7e('0x4'),_0x2b7e('0x5'),_0x2b7e('0x22')],'where':{'id':_0x22b174[_0x2b7e('0x1f')][_0x2b7e('0x20')]['id']},'include':[{'model':db[_0x2b7e('0x23')],'as':_0x2b7e('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x2b7e('0x25')],'as':_0x2b7e('0x26'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x2b7e('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x2b7e('0x28')],'as':_0x2b7e('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x2b7e('0x2a')],'as':_0x2b7e('0x2b'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x2b7e('0x2c'),'attributes':['id'],'raw':!![]}]})[_0x2b7e('0x1b')](function(_0x5871ac){if(_0x5871ac){_0x3548e3=_0x5871ac;_0x22b174[_0x51f854](util[_0x2b7e('0x1c')]('user:%s',_0x5871ac[_0x2b7e('0x4')]));var _0x585e25=[];switch(_0x5871ac[_0x2b7e('0x5')]){case _0x2b7e('0x2d'):_0x22b174[_0x51f854](_0x2b7e('0x2e'));_0x22b174[_0x51f854](_0x2b7e('0x2f'));if(queryQueues['hasOwnProperty'](_0x2b7e('0x30'))){delete queryQueues[_0x2b7e('0x30')];}_0x585e25[_0x2b7e('0x31')](db[_0x2b7e('0x32')][_0x2b7e('0x12')](queryQueues));_0x585e25[_0x2b7e('0x31')](db[_0x2b7e('0x33')]['findAll'](queryQueues));_0x585e25[_0x2b7e('0x31')](db[_0x2b7e('0x34')][_0x2b7e('0x12')](queryQueues));_0x585e25['push'](db['SmsQueue'][_0x2b7e('0x12')](queryQueues));_0x585e25[_0x2b7e('0x31')](db[_0x2b7e('0x35')][_0x2b7e('0x12')](queryQueues));_0x585e25[_0x2b7e('0x31')](db[_0x2b7e('0x36')][_0x2b7e('0x12')](queryQueues));_0x585e25['push'](db[_0x2b7e('0x37')][_0x2b7e('0x12')](queryQueues));_0x585e25[_0x2b7e('0x31')](db[_0x2b7e('0x18')][_0x2b7e('0x12')](queryTelephones));_0x585e25['push'](db[_0x2b7e('0x38')]['findAll'](queryTrunks));_0x585e25['push'](db[_0x2b7e('0x39')]['findAll'](queryCampaigns));_0x585e25[_0x2b7e('0x31')](db['User'][_0x2b7e('0x12')](queryAgents));break;case'user':_0x22b174[_0x51f854](_0x2b7e('0x2e'));_0x22b174[_0x51f854](_0x2b7e('0x2f'));_0x585e25[_0x2b7e('0x31')](getAssociatedResources('VoiceQueues',_0x5871ac[_0x2b7e('0x22')],_0x2b7e('0x32')));_0x585e25[_0x2b7e('0x31')](getAssociatedResources('ChatQueues',_0x5871ac['userProfileId'],'ChatQueue'));_0x585e25[_0x2b7e('0x31')](getAssociatedResources('FaxQueues',_0x5871ac[_0x2b7e('0x22')],_0x2b7e('0x34')));_0x585e25[_0x2b7e('0x31')](getAssociatedResources('SmsQueues',_0x5871ac[_0x2b7e('0x22')],_0x2b7e('0x3a')));_0x585e25[_0x2b7e('0x31')](getAssociatedResources(_0x2b7e('0x10'),_0x5871ac[_0x2b7e('0x22')],'MailQueue'));_0x585e25['push'](getAssociatedResources(_0x2b7e('0x11'),_0x5871ac['userProfileId'],'OpenchannelQueue'));_0x585e25[_0x2b7e('0x31')](getAssociatedResources('WhatsappQueues',_0x5871ac[_0x2b7e('0x22')],'WhatsappQueue'));_0x585e25[_0x2b7e('0x31')](getAssociatedResources('Telephones',_0x5871ac[_0x2b7e('0x22')],_0x2b7e('0x18')));_0x585e25['push'](getAssociatedResources(_0x2b7e('0x14'),_0x5871ac[_0x2b7e('0x22')],'Trunk'));_0x585e25[_0x2b7e('0x31')](getAssociatedResources('IvrCampaigns',_0x5871ac[_0x2b7e('0x22')],_0x2b7e('0x39')));_0x585e25['push'](db[_0x2b7e('0x18')][_0x2b7e('0x12')](queryAgents));break;case'agent':_0x22b174[_0x51f854](_0x2b7e('0x2e'));_0x22b174[_0x51f854](_0x2b7e('0x2f'));_0x585e25['push'](_0x5871ac[_0x2b7e('0x3b')]({'attributes':['id',_0x2b7e('0x4')]}));_0x585e25[_0x2b7e('0x31')](_0x5871ac[_0x2b7e('0x3c')]({'attributes':['id',_0x2b7e('0x4')]}));_0x585e25[_0x2b7e('0x31')](_0x5871ac['getFaxQueues']({'attributes':['id',_0x2b7e('0x4')]}));_0x585e25[_0x2b7e('0x31')](_0x5871ac[_0x2b7e('0x3d')]({'attributes':['id',_0x2b7e('0x4')]}));_0x585e25['push'](_0x5871ac[_0x2b7e('0x3e')]({'attributes':['id',_0x2b7e('0x4')]}));_0x585e25[_0x2b7e('0x31')](_0x5871ac['getOpenchannelQueues']({'attributes':['id',_0x2b7e('0x4')]}));_0x585e25['push'](_0x5871ac[_0x2b7e('0x3f')]({'attributes':['id',_0x2b7e('0x4')]}));break;}return BPromise[_0x2b7e('0x40')](_0x585e25);}})[_0x2b7e('0x1b')](function(_0x4106f7){if(_0x4106f7&&_0x4106f7[_0x2b7e('0x1d')]){for(var _0x306ba1=0x0;_0x306ba1<_0x4106f7[_0x2b7e('0x1d')];_0x306ba1+=0x1){for(var _0x4c1fb1=0x0;_0x4c1fb1<_0x4106f7[_0x306ba1][_0x2b7e('0x1d')];_0x4c1fb1+=0x1){switch(_0x306ba1){case 0x0:joinOrLeaveQueues(_0x22b174,_0x51f854,_0x2b7e('0x41'),_0x4106f7[_0x306ba1][_0x4c1fb1]);break;case 0x1:joinOrLeaveQueues(_0x22b174,_0x51f854,_0x2b7e('0x42'),_0x4106f7[_0x306ba1][_0x4c1fb1]);break;case 0x2:joinOrLeaveQueues(_0x22b174,_0x51f854,_0x2b7e('0x43'),_0x4106f7[_0x306ba1][_0x4c1fb1]);break;case 0x3:joinOrLeaveQueues(_0x22b174,_0x51f854,_0x2b7e('0x44'),_0x4106f7[_0x306ba1][_0x4c1fb1]);break;case 0x4:joinOrLeaveQueues(_0x22b174,_0x51f854,_0x2b7e('0x45'),_0x4106f7[_0x306ba1][_0x4c1fb1]);break;case 0x5:joinOrLeaveQueues(_0x22b174,_0x51f854,_0x2b7e('0x46'),_0x4106f7[_0x306ba1][_0x4c1fb1]);break;case 0x6:joinOrLeaveQueues(_0x22b174,_0x51f854,_0x2b7e('0x47'),_0x4106f7[_0x306ba1][_0x4c1fb1]);break;case 0x7:if(_0x3548e3[_0x2b7e('0x5')]!==_0x2b7e('0x6'))_0x22b174[_0x51f854](util[_0x2b7e('0x1c')](_0x2b7e('0x48'),_0x4106f7[_0x306ba1][_0x4c1fb1][_0x2b7e('0x4')]));break;case 0x8:if(_0x3548e3[_0x2b7e('0x5')]!==_0x2b7e('0x6'))_0x22b174[_0x51f854](util[_0x2b7e('0x1c')]('trunk:%s',_0x4106f7[_0x306ba1][_0x4c1fb1]['name']));break;case 0x9:if(_0x3548e3[_0x2b7e('0x5')]!==_0x2b7e('0x6'))_0x22b174[_0x51f854](util[_0x2b7e('0x1c')](_0x2b7e('0x49'),_0x4106f7[_0x306ba1][_0x4c1fb1]['type'],_0x4106f7[_0x306ba1][_0x4c1fb1][_0x2b7e('0x4')]));break;case 0xa:_0x22b174[_0x51f854](util[_0x2b7e('0x1c')]('user:%s',_0x4106f7[_0x306ba1][_0x4c1fb1][_0x2b7e('0x4')]));break;}}}}})[_0x2b7e('0x1b')](function(){if(_0x51f854===_0x2b7e('0x4a')){var _0xdb4085=_[_0x2b7e('0x17')](_0x3548e3[_0x2b7e('0x24')],'id');return _0x3548e3['removeChatInteractions'](_0xdb4085)[_0x2b7e('0x1b')](function(){for(var _0x377e8f=0x0;_0x377e8f<_0xdb4085[_0x2b7e('0x1d')];_0x377e8f+=0x1){_0x4a7e79[_0x2b7e('0x4b')](_0x2b7e('0x4c'),{'ChatInteractionId':Number(_0xdb4085[_0x377e8f]),'UserId':Number(_0x3548e3['id'])});}});}})['then'](function(){if(_0x51f854==='leave'){var _0x5d84b6=_[_0x2b7e('0x17')](_0x3548e3[_0x2b7e('0x26')],'id');return _0x3548e3[_0x2b7e('0x4d')](_0x5d84b6)[_0x2b7e('0x1b')](function(){for(var _0x52bb2e=0x0;_0x52bb2e<_0x5d84b6['length'];_0x52bb2e+=0x1){_0x4a7e79[_0x2b7e('0x4b')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x5d84b6[_0x52bb2e]),'UserId':Number(_0x3548e3['id'])});}});}})[_0x2b7e('0x1b')](function(){if(_0x51f854===_0x2b7e('0x4a')){var _0x44b4ec=_[_0x2b7e('0x17')](_0x3548e3[_0x2b7e('0x27')],'id');return _0x3548e3[_0x2b7e('0x4e')](_0x44b4ec)[_0x2b7e('0x1b')](function(){for(var _0x24c1d6=0x0;_0x24c1d6<_0x44b4ec[_0x2b7e('0x1d')];_0x24c1d6+=0x1){_0x4a7e79[_0x2b7e('0x4b')](_0x2b7e('0x4f'),{'FaxInteractionId':Number(_0x44b4ec[_0x24c1d6]),'UserId':Number(_0x3548e3['id'])});}});}})[_0x2b7e('0x1b')](function(){if(_0x51f854==='leave'){var _0x502ad9=_[_0x2b7e('0x17')](_0x3548e3[_0x2b7e('0x29')],'id');return _0x3548e3['removeSmsInteractions'](_0x502ad9)[_0x2b7e('0x1b')](function(){for(var _0x1278b6=0x0;_0x1278b6<_0x502ad9[_0x2b7e('0x1d')];_0x1278b6+=0x1){_0x4a7e79[_0x2b7e('0x4b')](_0x2b7e('0x50'),{'SmsInteractionId':Number(_0x502ad9[_0x1278b6]),'UserId':Number(_0x3548e3['id'])});}});}})[_0x2b7e('0x1b')](function(){if(_0x51f854===_0x2b7e('0x4a')){var _0x241d90=_[_0x2b7e('0x17')](_0x3548e3['OpenchannelInteractions'],'id');return _0x3548e3[_0x2b7e('0x51')](_0x241d90)[_0x2b7e('0x1b')](function(){for(var _0x15077e=0x0;_0x15077e<_0x241d90[_0x2b7e('0x1d')];_0x15077e+=0x1){_0x4a7e79[_0x2b7e('0x4b')](_0x2b7e('0x52'),{'OpenchannelInteractionId':Number(_0x241d90[_0x15077e]),'UserId':Number(_0x3548e3['id'])});}});}})[_0x2b7e('0x1b')](function(){if(_0x51f854===_0x2b7e('0x4a')){var _0x5e50ed=_[_0x2b7e('0x17')](_0x3548e3[_0x2b7e('0x2c')],'id');return _0x3548e3['removeWhatsappInteractions'](_0x5e50ed)['then'](function(){for(var _0x37748f=0x0;_0x37748f<_0x5e50ed['length'];_0x37748f+=0x1){_0x4a7e79[_0x2b7e('0x4b')](_0x2b7e('0x53'),{'WhatsappInteractionId':Number(_0x5e50ed[_0x37748f]),'UserId':Number(_0x3548e3['id'])});}});}})[_0x2b7e('0x54')](function(_0x51110a){_0x22b174[_0x2b7e('0x55')](_0x51110a);});}}function onDisconnect(_0x522fb4,_0x522be8){joinOrLeave(_0x522fb4,_0x2b7e('0x4a'),_0x522be8);}function onConnect(_0xd95de0){joinOrLeave(_0xd95de0,_0x2b7e('0x56'));}exports[_0x2b7e('0x57')]=function(_0x488c37){_0x488c37['on']('connection',function(_0x1c5375){_0x1c5375[_0x2b7e('0x58')](0x0);_0x1c5375[_0x2b7e('0x59')]=_0x1c5375[_0x2b7e('0x5a')]['connection']['remoteAddress']+':'+_0x1c5375[_0x2b7e('0x5a')]['connection']['remotePort'];_0x1c5375[_0x2b7e('0x5b')]=new Date();_0x1c5375[_0x2b7e('0x55')]=function(_0x2e7c19){console['log'](_0x2b7e('0x5c')+_0x1c5375[_0x2b7e('0x5d')]['name']+'['+_0x1c5375['address']+']',_0x2e7c19);};_0x1c5375['on'](_0x2b7e('0x5e'),function(){onDisconnect(_0x1c5375,_0x488c37);_0x1c5375[_0x2b7e('0x55')](_0x2b7e('0x5f'));});onConnect(_0x1c5375);_0x1c5375[_0x2b7e('0x55')]('CONNECTED');});};