8ddfcee0c7b296d40e9b37e22e58fb35b1e23d41
[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 _0x930b=['SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','user:%s','admin','voice:inbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','voice:outbound','OpenchannelQueue','WhatsappQueues','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','length','voice','chat','fax','sms','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','leave','removeFaxInteractions','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','log','join','default','connection','setMaxListeners','address','request','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','util','../mysqldb','./environment','name','role','agent','telephone','type','ivr','findOne','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','Telephones','Trunks','findAll','UserProfileResource','resourceId','map','User','Campaign','where','then','%s:queue:%s','Agents','format','handshake','query','userProfileId','ChatInteraction','MailInteractions','FaxInteraction','FaxInteractions'];(function(_0x2385b6,_0x3182de){var _0x22df53=function(_0x1886f9){while(--_0x1886f9){_0x2385b6['push'](_0x2385b6['shift']());}};_0x22df53(++_0x3182de);}(_0x930b,0x106));var _0xb930=function(_0x35f0e1,_0x152011){_0x35f0e1=_0x35f0e1-0x0;var _0x1a4f0f=_0x930b[_0x35f0e1];return _0x1a4f0f;};'use strict';var _=require(_0xb930('0x0'));var util=require(_0xb930('0x1'));var BPromise=require('bluebird');var db=require(_0xb930('0x2'))['db'];var config=require(_0xb930('0x3'));var queryQueues={'attributes':['id',_0xb930('0x4')],'include':[{'as':'Agents','model':db['User'],'attributes':['id',_0xb930('0x4'),_0xb930('0x5')],'raw':!![],'where':{'role':_0xb930('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xb930('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0xb930('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xb930('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb930('0x4'),_0xb930('0x8')],'where':{'type':_0xb930('0x9')}};function getAssociatedResources(_0xb5f26f,_0x1614d3,_0x48a7e1){return db['UserProfileSection'][_0xb930('0xa')]({'where':{'name':_0xb5f26f,'userProfileId':_0x1614d3},'raw':!![]})['then'](function(_0x400032){if(_0x400032){if(_0x400032[_0xb930('0xb')]){switch(_0xb5f26f){case _0xb930('0xc'):case _0xb930('0xd'):case _0xb930('0xe'):case _0xb930('0xf'):case _0xb930('0x10'):case _0xb930('0x11'):case'WhatsappQueues':return db[_0x48a7e1]['findAll'](queryQueues);case _0xb930('0x12'):return db[_0x48a7e1]['findAll'](queryTelephones);case _0xb930('0x13'):return db[_0x48a7e1][_0xb930('0x14')](queryTrunks);case'IvrCampaigns':return db[_0x48a7e1][_0xb930('0x14')](queryCampaigns);}}else{return db[_0xb930('0x15')][_0xb930('0x14')]({'attributes':[_0xb930('0x16')],'where':{'sectionId':_0x400032['id']},'raw':!![]})['then'](function(_0x465c2c){if(_0x465c2c){var _0x2631c9={'where':{'id':_[_0xb930('0x17')](_0x465c2c,_0xb930('0x16'))},'raw':!![]};switch(_0x48a7e1){case _0xb930('0x18'):_0x2631c9['where'][_0xb930('0x5')]=_0xb930('0x7');break;case _0xb930('0x19'):_0x2631c9[_0xb930('0x1a')][_0xb930('0x8')]=_0xb930('0x9');break;}return db[_0x48a7e1][_0xb930('0x14')](_0x2631c9);}else{return[];}});}}else{return[];}})[_0xb930('0x1b')](function(_0x343068){return _0x343068;});}function joinOrLeaveQueues(_0x1fcc73,_0x4771ec,_0x56281b,_0x134c7f){_0x1fcc73[_0x4771ec](util['format'](_0xb930('0x1c'),_0x56281b,_0x134c7f[_0xb930('0x4')]));if(_0x134c7f[_0xb930('0x1d')]){for(var _0x1b7a77=0x0;_0x1b7a77<_0x134c7f[_0xb930('0x1d')]['length'];_0x1b7a77+=0x1){_0x1fcc73[_0x4771ec](util[_0xb930('0x1e')]('user:%s',_0x134c7f[_0xb930('0x1d')][_0x1b7a77]['name']));}}}function joinOrLeave(_0x46df92,_0x20f8df,_0x231517){var _0x17b135;if(_0x46df92[_0xb930('0x1f')][_0xb930('0x20')]['id']){db[_0xb930('0x18')]['find']({'attributes':['id',_0xb930('0x4'),_0xb930('0x5'),_0xb930('0x21')],'where':{'id':_0x46df92[_0xb930('0x1f')]['query']['id']},'include':[{'model':db[_0xb930('0x22')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xb930('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xb930('0x24')],'as':_0xb930('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xb930('0x26')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb930('0x27')],'as':_0xb930('0x28'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xb930('0x29'),'attributes':['id'],'raw':!![]}]})[_0xb930('0x1b')](function(_0x3d45c2){if(_0x3d45c2){_0x17b135=_0x3d45c2;_0x46df92[_0x20f8df](util[_0xb930('0x1e')](_0xb930('0x2a'),_0x3d45c2[_0xb930('0x4')]));var _0x36a00e=[];switch(_0x3d45c2[_0xb930('0x5')]){case _0xb930('0x2b'):_0x46df92[_0x20f8df](_0xb930('0x2c'));_0x46df92[_0x20f8df]('voice:outbound');if(queryQueues[_0xb930('0x2d')](_0xb930('0x2e'))){delete queryQueues[_0xb930('0x2e')];}_0x36a00e[_0xb930('0x2f')](db[_0xb930('0x30')]['findAll'](queryQueues));_0x36a00e['push'](db[_0xb930('0x31')]['findAll'](queryQueues));_0x36a00e[_0xb930('0x2f')](db[_0xb930('0x32')][_0xb930('0x14')](queryQueues));_0x36a00e[_0xb930('0x2f')](db[_0xb930('0x33')][_0xb930('0x14')](queryQueues));_0x36a00e[_0xb930('0x2f')](db[_0xb930('0x34')][_0xb930('0x14')](queryQueues));_0x36a00e[_0xb930('0x2f')](db['OpenchannelQueue'][_0xb930('0x14')](queryQueues));_0x36a00e['push'](db[_0xb930('0x35')][_0xb930('0x14')](queryQueues));_0x36a00e[_0xb930('0x2f')](db[_0xb930('0x18')][_0xb930('0x14')](queryTelephones));_0x36a00e[_0xb930('0x2f')](db[_0xb930('0x36')][_0xb930('0x14')](queryTrunks));_0x36a00e[_0xb930('0x2f')](db['Campaign']['findAll'](queryCampaigns));_0x36a00e[_0xb930('0x2f')](db[_0xb930('0x18')][_0xb930('0x14')](queryAgents));break;case'user':_0x46df92[_0x20f8df](_0xb930('0x2c'));_0x46df92[_0x20f8df](_0xb930('0x37'));_0x36a00e['push'](getAssociatedResources(_0xb930('0xc'),_0x3d45c2['userProfileId'],'VoiceQueue'));_0x36a00e[_0xb930('0x2f')](getAssociatedResources(_0xb930('0xd'),_0x3d45c2[_0xb930('0x21')],'ChatQueue'));_0x36a00e['push'](getAssociatedResources(_0xb930('0xe'),_0x3d45c2[_0xb930('0x21')],_0xb930('0x32')));_0x36a00e[_0xb930('0x2f')](getAssociatedResources(_0xb930('0xf'),_0x3d45c2['userProfileId'],_0xb930('0x33')));_0x36a00e[_0xb930('0x2f')](getAssociatedResources(_0xb930('0x10'),_0x3d45c2[_0xb930('0x21')],'MailQueue'));_0x36a00e[_0xb930('0x2f')](getAssociatedResources(_0xb930('0x11'),_0x3d45c2[_0xb930('0x21')],_0xb930('0x38')));_0x36a00e[_0xb930('0x2f')](getAssociatedResources(_0xb930('0x39'),_0x3d45c2['userProfileId'],_0xb930('0x35')));_0x36a00e[_0xb930('0x2f')](getAssociatedResources('Telephones',_0x3d45c2[_0xb930('0x21')],_0xb930('0x18')));_0x36a00e[_0xb930('0x2f')](getAssociatedResources(_0xb930('0x13'),_0x3d45c2[_0xb930('0x21')],_0xb930('0x36')));_0x36a00e[_0xb930('0x2f')](getAssociatedResources(_0xb930('0x3a'),_0x3d45c2[_0xb930('0x21')],_0xb930('0x19')));_0x36a00e[_0xb930('0x2f')](db[_0xb930('0x18')][_0xb930('0x14')](queryAgents));break;case'agent':_0x46df92[_0x20f8df](_0xb930('0x2c'));_0x46df92[_0x20f8df](_0xb930('0x37'));_0x36a00e[_0xb930('0x2f')](_0x3d45c2[_0xb930('0x3b')]({'attributes':['id','name']}));_0x36a00e[_0xb930('0x2f')](_0x3d45c2[_0xb930('0x3c')]({'attributes':['id',_0xb930('0x4')]}));_0x36a00e[_0xb930('0x2f')](_0x3d45c2[_0xb930('0x3d')]({'attributes':['id','name']}));_0x36a00e[_0xb930('0x2f')](_0x3d45c2[_0xb930('0x3e')]({'attributes':['id',_0xb930('0x4')]}));_0x36a00e[_0xb930('0x2f')](_0x3d45c2[_0xb930('0x3f')]({'attributes':['id','name']}));_0x36a00e[_0xb930('0x2f')](_0x3d45c2[_0xb930('0x40')]({'attributes':['id',_0xb930('0x4')]}));_0x36a00e['push'](_0x3d45c2[_0xb930('0x41')]({'attributes':['id',_0xb930('0x4')]}));break;}return BPromise['all'](_0x36a00e);}})[_0xb930('0x1b')](function(_0xa83bf7){if(_0xa83bf7&&_0xa83bf7[_0xb930('0x42')]){for(var _0x83ec8f=0x0;_0x83ec8f<_0xa83bf7['length'];_0x83ec8f+=0x1){for(var _0x2c6034=0x0;_0x2c6034<_0xa83bf7[_0x83ec8f][_0xb930('0x42')];_0x2c6034+=0x1){switch(_0x83ec8f){case 0x0:joinOrLeaveQueues(_0x46df92,_0x20f8df,_0xb930('0x43'),_0xa83bf7[_0x83ec8f][_0x2c6034]);break;case 0x1:joinOrLeaveQueues(_0x46df92,_0x20f8df,_0xb930('0x44'),_0xa83bf7[_0x83ec8f][_0x2c6034]);break;case 0x2:joinOrLeaveQueues(_0x46df92,_0x20f8df,_0xb930('0x45'),_0xa83bf7[_0x83ec8f][_0x2c6034]);break;case 0x3:joinOrLeaveQueues(_0x46df92,_0x20f8df,_0xb930('0x46'),_0xa83bf7[_0x83ec8f][_0x2c6034]);break;case 0x4:joinOrLeaveQueues(_0x46df92,_0x20f8df,'mail',_0xa83bf7[_0x83ec8f][_0x2c6034]);break;case 0x5:joinOrLeaveQueues(_0x46df92,_0x20f8df,_0xb930('0x47'),_0xa83bf7[_0x83ec8f][_0x2c6034]);break;case 0x6:joinOrLeaveQueues(_0x46df92,_0x20f8df,_0xb930('0x48'),_0xa83bf7[_0x83ec8f][_0x2c6034]);break;case 0x7:if(_0x17b135[_0xb930('0x5')]!==_0xb930('0x6'))_0x46df92[_0x20f8df](util[_0xb930('0x1e')](_0xb930('0x49'),_0xa83bf7[_0x83ec8f][_0x2c6034][_0xb930('0x4')]));break;case 0x8:if(_0x17b135[_0xb930('0x5')]!==_0xb930('0x6'))_0x46df92[_0x20f8df](util[_0xb930('0x1e')](_0xb930('0x4a'),_0xa83bf7[_0x83ec8f][_0x2c6034]['name']));break;case 0x9:if(_0x17b135[_0xb930('0x5')]!==_0xb930('0x6'))_0x46df92[_0x20f8df](util['format'](_0xb930('0x4b'),_0xa83bf7[_0x83ec8f][_0x2c6034][_0xb930('0x8')],_0xa83bf7[_0x83ec8f][_0x2c6034]['name']));break;case 0xa:_0x46df92[_0x20f8df](util[_0xb930('0x1e')](_0xb930('0x2a'),_0xa83bf7[_0x83ec8f][_0x2c6034]['name']));break;}}}}})['then'](function(){if(_0x20f8df==='leave'){var _0x1de39d=_[_0xb930('0x17')](_0x17b135['ChatInteractions'],'id');return _0x17b135[_0xb930('0x4c')](_0x1de39d)[_0xb930('0x1b')](function(){for(var _0x3f60d6=0x0;_0x3f60d6<_0x1de39d[_0xb930('0x42')];_0x3f60d6+=0x1){_0x231517[_0xb930('0x4d')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x1de39d[_0x3f60d6]),'UserId':Number(_0x17b135['id'])});}});}})[_0xb930('0x1b')](function(){if(_0x20f8df==='leave'){var _0x1e813d=_[_0xb930('0x17')](_0x17b135['MailInteractions'],'id');return _0x17b135[_0xb930('0x4e')](_0x1e813d)[_0xb930('0x1b')](function(){for(var _0x2f3f76=0x0;_0x2f3f76<_0x1e813d[_0xb930('0x42')];_0x2f3f76+=0x1){_0x231517[_0xb930('0x4d')](_0xb930('0x4f'),{'MailInteractionId':Number(_0x1e813d[_0x2f3f76]),'UserId':Number(_0x17b135['id'])});}});}})['then'](function(){if(_0x20f8df===_0xb930('0x50')){var _0x54f527=_[_0xb930('0x17')](_0x17b135['FaxInteractions'],'id');return _0x17b135[_0xb930('0x51')](_0x54f527)['then'](function(){for(var _0x552a97=0x0;_0x552a97<_0x54f527[_0xb930('0x42')];_0x552a97+=0x1){_0x231517[_0xb930('0x4d')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x54f527[_0x552a97]),'UserId':Number(_0x17b135['id'])});}});}})[_0xb930('0x1b')](function(){if(_0x20f8df===_0xb930('0x50')){var _0x59d4ea=_['map'](_0x17b135[_0xb930('0x52')],'id');return _0x17b135[_0xb930('0x53')](_0x59d4ea)[_0xb930('0x1b')](function(){for(var _0x55a929=0x0;_0x55a929<_0x59d4ea[_0xb930('0x42')];_0x55a929+=0x1){_0x231517['emit'](_0xb930('0x54'),{'SmsInteractionId':Number(_0x59d4ea[_0x55a929]),'UserId':Number(_0x17b135['id'])});}});}})['then'](function(){if(_0x20f8df===_0xb930('0x50')){var _0x54fcde=_[_0xb930('0x17')](_0x17b135[_0xb930('0x28')],'id');return _0x17b135[_0xb930('0x55')](_0x54fcde)[_0xb930('0x1b')](function(){for(var _0x2ac4fc=0x0;_0x2ac4fc<_0x54fcde[_0xb930('0x42')];_0x2ac4fc+=0x1){_0x231517[_0xb930('0x4d')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x54fcde[_0x2ac4fc]),'UserId':Number(_0x17b135['id'])});}});}})['then'](function(){if(_0x20f8df===_0xb930('0x50')){var _0x263b8e=_[_0xb930('0x17')](_0x17b135[_0xb930('0x29')],'id');return _0x17b135[_0xb930('0x56')](_0x263b8e)[_0xb930('0x1b')](function(){for(var _0x77800c=0x0;_0x77800c<_0x263b8e['length'];_0x77800c+=0x1){_0x231517[_0xb930('0x4d')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x263b8e[_0x77800c]),'UserId':Number(_0x17b135['id'])});}});}})['catch'](function(_0x4c7779){_0x46df92[_0xb930('0x57')](_0x4c7779);});}}function onDisconnect(_0x47b7bf,_0x6dbe76){joinOrLeave(_0x47b7bf,_0xb930('0x50'),_0x6dbe76);}function onConnect(_0x114be2){joinOrLeave(_0x114be2,_0xb930('0x58'));}exports[_0xb930('0x59')]=function(_0x2091fb){_0x2091fb['on'](_0xb930('0x5a'),function(_0x54fc1d){_0x54fc1d[_0xb930('0x5b')](0x0);_0x54fc1d[_0xb930('0x5c')]=_0x54fc1d[_0xb930('0x5d')]['connection']['remoteAddress']+':'+_0x54fc1d[_0xb930('0x5d')][_0xb930('0x5a')][_0xb930('0x5e')];_0x54fc1d[_0xb930('0x5f')]=new Date();_0x54fc1d[_0xb930('0x57')]=function(_0x4c1de6){console[_0xb930('0x57')](_0xb930('0x60')+_0x54fc1d[_0xb930('0x61')][_0xb930('0x4')]+'['+_0x54fc1d[_0xb930('0x5c')]+']',_0x4c1de6);};_0x54fc1d['on'](_0xb930('0x62'),function(){onDisconnect(_0x54fc1d,_0x2091fb);_0x54fc1d[_0xb930('0x57')](_0xb930('0x63'));});onConnect(_0x54fc1d);_0x54fc1d[_0xb930('0x57')]('CONNECTED');});};