e6769f6c28a0b9e72fb760d9ebe99a585cc27bfd
[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 _0x9303=['removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','connection','address','request','remoteAddress','connectedAt','SocketIO\x20','nsp','DISCONNECTED','CONNECTED','lodash','../mysqldb','name','role','agent','type','ivr','findOne','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','Telephones','findAll','Trunks','IvrCampaigns','resourceId','then','where','telephone','Campaign','format','%s:queue:%s','Agents','length','user:%s','handshake','query','User','userProfileId','ChatInteractions','MailInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','SmsQueue','OpenchannelQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all','voice','fax','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','map'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0x9303,0xd7));var _0x3930=function(_0x14fad0,_0x278d75){_0x14fad0=_0x14fad0-0x0;var _0x5c665f=_0x9303[_0x14fad0];return _0x5c665f;};'use strict';var _=require(_0x3930('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0x3930('0x1'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x3930('0x2')],'include':[{'as':'Agents','model':db['User'],'attributes':['id',_0x3930('0x2'),_0x3930('0x3')],'raw':!![],'where':{'role':_0x3930('0x4')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x3930('0x2')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x3930('0x2')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x3930('0x2'),_0x3930('0x5')],'where':{'type':_0x3930('0x6')}};function getAssociatedResources(_0xe6fe58,_0xf9b29e,_0x58e723){return db['UserProfileSection'][_0x3930('0x7')]({'where':{'name':_0xe6fe58,'userProfileId':_0xf9b29e},'raw':!![]})['then'](function(_0x5269b3){if(_0x5269b3){if(_0x5269b3['autoAssociation']){switch(_0xe6fe58){case _0x3930('0x8'):case _0x3930('0x9'):case _0x3930('0xa'):case _0x3930('0xb'):case _0x3930('0xc'):case'OpenchannelQueues':case _0x3930('0xd'):return db[_0x58e723]['findAll'](queryQueues);case _0x3930('0xe'):return db[_0x58e723][_0x3930('0xf')](queryTelephones);case _0x3930('0x10'):return db[_0x58e723]['findAll'](queryTrunks);case _0x3930('0x11'):return db[_0x58e723][_0x3930('0xf')](queryCampaigns);}}else{return db['UserProfileResource'][_0x3930('0xf')]({'attributes':[_0x3930('0x12')],'where':{'sectionId':_0x5269b3['id']},'raw':!![]})[_0x3930('0x13')](function(_0x135498){if(_0x135498){var _0x5db060={'where':{'id':_['map'](_0x135498,_0x3930('0x12'))},'raw':!![]};switch(_0x58e723){case'User':_0x5db060[_0x3930('0x14')]['role']=_0x3930('0x15');break;case _0x3930('0x16'):_0x5db060['where']['type']='ivr';break;}return db[_0x58e723][_0x3930('0xf')](_0x5db060);}else{return[];}});}}else{return[];}})[_0x3930('0x13')](function(_0x41f3b5){return _0x41f3b5;});}function joinOrLeaveQueues(_0x5b5f55,_0x5053ea,_0x4f4e2e,_0x5a2501){_0x5b5f55[_0x5053ea](util[_0x3930('0x17')](_0x3930('0x18'),_0x4f4e2e,_0x5a2501[_0x3930('0x2')]));if(_0x5a2501[_0x3930('0x19')]){for(var _0x3d2a2f=0x0;_0x3d2a2f<_0x5a2501['Agents'][_0x3930('0x1a')];_0x3d2a2f+=0x1){_0x5b5f55[_0x5053ea](util[_0x3930('0x17')](_0x3930('0x1b'),_0x5a2501['Agents'][_0x3d2a2f][_0x3930('0x2')]));}}}function joinOrLeave(_0x2ea386,_0x12eeb7,_0x3a0e16){var _0x2bcc3b;if(_0x2ea386[_0x3930('0x1c')][_0x3930('0x1d')]['id']){db[_0x3930('0x1e')]['find']({'attributes':['id',_0x3930('0x2'),_0x3930('0x3'),_0x3930('0x1f')],'where':{'id':_0x2ea386[_0x3930('0x1c')][_0x3930('0x1d')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x3930('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x3930('0x21')],'as':_0x3930('0x22'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x3930('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x3930('0x24')],'as':_0x3930('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x3930('0x26')],'as':_0x3930('0x27'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x3930('0x28'),'attributes':['id'],'raw':!![]}]})[_0x3930('0x13')](function(_0xca904a){if(_0xca904a){_0x2bcc3b=_0xca904a;_0x2ea386[_0x12eeb7](util['format'](_0x3930('0x1b'),_0xca904a[_0x3930('0x2')]));var _0x63acd5=[];switch(_0xca904a[_0x3930('0x3')]){case _0x3930('0x29'):_0x2ea386[_0x12eeb7](_0x3930('0x2a'));_0x2ea386[_0x12eeb7](_0x3930('0x2b'));if(queryQueues[_0x3930('0x2c')](_0x3930('0x2d'))){delete queryQueues[_0x3930('0x2d')];}_0x63acd5[_0x3930('0x2e')](db[_0x3930('0x2f')][_0x3930('0xf')](queryQueues));_0x63acd5[_0x3930('0x2e')](db[_0x3930('0x30')][_0x3930('0xf')](queryQueues));_0x63acd5[_0x3930('0x2e')](db[_0x3930('0x31')][_0x3930('0xf')](queryQueues));_0x63acd5[_0x3930('0x2e')](db['SmsQueue']['findAll'](queryQueues));_0x63acd5['push'](db[_0x3930('0x32')][_0x3930('0xf')](queryQueues));_0x63acd5['push'](db[_0x3930('0x33')][_0x3930('0xf')](queryQueues));_0x63acd5['push'](db[_0x3930('0x34')]['findAll'](queryQueues));_0x63acd5[_0x3930('0x2e')](db[_0x3930('0x1e')][_0x3930('0xf')](queryTelephones));_0x63acd5[_0x3930('0x2e')](db[_0x3930('0x35')][_0x3930('0xf')](queryTrunks));_0x63acd5[_0x3930('0x2e')](db[_0x3930('0x16')][_0x3930('0xf')](queryCampaigns));_0x63acd5[_0x3930('0x2e')](db[_0x3930('0x1e')][_0x3930('0xf')](queryAgents));break;case _0x3930('0x36'):_0x2ea386[_0x12eeb7](_0x3930('0x2a'));_0x2ea386[_0x12eeb7](_0x3930('0x2b'));_0x63acd5[_0x3930('0x2e')](getAssociatedResources('VoiceQueues',_0xca904a[_0x3930('0x1f')],'VoiceQueue'));_0x63acd5[_0x3930('0x2e')](getAssociatedResources('ChatQueues',_0xca904a[_0x3930('0x1f')],'ChatQueue'));_0x63acd5['push'](getAssociatedResources(_0x3930('0xa'),_0xca904a[_0x3930('0x1f')],'FaxQueue'));_0x63acd5['push'](getAssociatedResources(_0x3930('0xb'),_0xca904a['userProfileId'],_0x3930('0x37')));_0x63acd5[_0x3930('0x2e')](getAssociatedResources(_0x3930('0xc'),_0xca904a[_0x3930('0x1f')],_0x3930('0x32')));_0x63acd5[_0x3930('0x2e')](getAssociatedResources(_0x3930('0x38'),_0xca904a[_0x3930('0x1f')],'OpenchannelQueue'));_0x63acd5['push'](getAssociatedResources(_0x3930('0xd'),_0xca904a[_0x3930('0x1f')],'WhatsappQueue'));_0x63acd5['push'](getAssociatedResources(_0x3930('0xe'),_0xca904a[_0x3930('0x1f')],_0x3930('0x1e')));_0x63acd5['push'](getAssociatedResources('Trunks',_0xca904a[_0x3930('0x1f')],_0x3930('0x35')));_0x63acd5[_0x3930('0x2e')](getAssociatedResources(_0x3930('0x11'),_0xca904a['userProfileId'],'Campaign'));_0x63acd5[_0x3930('0x2e')](db['User'][_0x3930('0xf')](queryAgents));break;case _0x3930('0x4'):_0x2ea386[_0x12eeb7]('voice:inbound');_0x2ea386[_0x12eeb7](_0x3930('0x2b'));_0x63acd5['push'](_0xca904a[_0x3930('0x39')]({'attributes':['id',_0x3930('0x2')]}));_0x63acd5[_0x3930('0x2e')](_0xca904a[_0x3930('0x3a')]({'attributes':['id',_0x3930('0x2')]}));_0x63acd5[_0x3930('0x2e')](_0xca904a[_0x3930('0x3b')]({'attributes':['id',_0x3930('0x2')]}));_0x63acd5[_0x3930('0x2e')](_0xca904a[_0x3930('0x3c')]({'attributes':['id',_0x3930('0x2')]}));_0x63acd5[_0x3930('0x2e')](_0xca904a[_0x3930('0x3d')]({'attributes':['id',_0x3930('0x2')]}));_0x63acd5[_0x3930('0x2e')](_0xca904a['getOpenchannelQueues']({'attributes':['id',_0x3930('0x2')]}));_0x63acd5[_0x3930('0x2e')](_0xca904a[_0x3930('0x3e')]({'attributes':['id',_0x3930('0x2')]}));break;}return BPromise[_0x3930('0x3f')](_0x63acd5);}})[_0x3930('0x13')](function(_0x58ebb7){if(_0x58ebb7&&_0x58ebb7[_0x3930('0x1a')]){for(var _0xcb6e0=0x0;_0xcb6e0<_0x58ebb7[_0x3930('0x1a')];_0xcb6e0+=0x1){for(var _0xc8014a=0x0;_0xc8014a<_0x58ebb7[_0xcb6e0]['length'];_0xc8014a+=0x1){switch(_0xcb6e0){case 0x0:joinOrLeaveQueues(_0x2ea386,_0x12eeb7,_0x3930('0x40'),_0x58ebb7[_0xcb6e0][_0xc8014a]);break;case 0x1:joinOrLeaveQueues(_0x2ea386,_0x12eeb7,'chat',_0x58ebb7[_0xcb6e0][_0xc8014a]);break;case 0x2:joinOrLeaveQueues(_0x2ea386,_0x12eeb7,_0x3930('0x41'),_0x58ebb7[_0xcb6e0][_0xc8014a]);break;case 0x3:joinOrLeaveQueues(_0x2ea386,_0x12eeb7,'sms',_0x58ebb7[_0xcb6e0][_0xc8014a]);break;case 0x4:joinOrLeaveQueues(_0x2ea386,_0x12eeb7,'mail',_0x58ebb7[_0xcb6e0][_0xc8014a]);break;case 0x5:joinOrLeaveQueues(_0x2ea386,_0x12eeb7,_0x3930('0x42'),_0x58ebb7[_0xcb6e0][_0xc8014a]);break;case 0x6:joinOrLeaveQueues(_0x2ea386,_0x12eeb7,_0x3930('0x43'),_0x58ebb7[_0xcb6e0][_0xc8014a]);break;case 0x7:if(_0x2bcc3b['role']!==_0x3930('0x4'))_0x2ea386[_0x12eeb7](util[_0x3930('0x17')](_0x3930('0x44'),_0x58ebb7[_0xcb6e0][_0xc8014a][_0x3930('0x2')]));break;case 0x8:if(_0x2bcc3b['role']!==_0x3930('0x4'))_0x2ea386[_0x12eeb7](util[_0x3930('0x17')](_0x3930('0x45'),_0x58ebb7[_0xcb6e0][_0xc8014a][_0x3930('0x2')]));break;case 0x9:if(_0x2bcc3b['role']!==_0x3930('0x4'))_0x2ea386[_0x12eeb7](util[_0x3930('0x17')](_0x3930('0x46'),_0x58ebb7[_0xcb6e0][_0xc8014a][_0x3930('0x5')],_0x58ebb7[_0xcb6e0][_0xc8014a][_0x3930('0x2')]));break;case 0xa:_0x2ea386[_0x12eeb7](util[_0x3930('0x17')]('user:%s',_0x58ebb7[_0xcb6e0][_0xc8014a][_0x3930('0x2')]));break;}}}}})[_0x3930('0x13')](function(){if(_0x12eeb7==='leave'){var _0x937682=_['map'](_0x2bcc3b[_0x3930('0x20')],'id');return _0x2bcc3b[_0x3930('0x47')](_0x937682)[_0x3930('0x13')](function(){for(var _0x2d23e3=0x0;_0x2d23e3<_0x937682['length'];_0x2d23e3+=0x1){_0x3a0e16[_0x3930('0x48')](_0x3930('0x49'),{'ChatInteractionId':Number(_0x937682[_0x2d23e3]),'UserId':Number(_0x2bcc3b['id'])});}});}})[_0x3930('0x13')](function(){if(_0x12eeb7===_0x3930('0x4a')){var _0xb82796=_[_0x3930('0x4b')](_0x2bcc3b[_0x3930('0x22')],'id');return _0x2bcc3b[_0x3930('0x4c')](_0xb82796)[_0x3930('0x13')](function(){for(var _0x822979=0x0;_0x822979<_0xb82796['length'];_0x822979+=0x1){_0x3a0e16[_0x3930('0x48')](_0x3930('0x4d'),{'MailInteractionId':Number(_0xb82796[_0x822979]),'UserId':Number(_0x2bcc3b['id'])});}});}})[_0x3930('0x13')](function(){if(_0x12eeb7==='leave'){var _0x430e8c=_['map'](_0x2bcc3b[_0x3930('0x23')],'id');return _0x2bcc3b['removeFaxInteractions'](_0x430e8c)[_0x3930('0x13')](function(){for(var _0x1d0717=0x0;_0x1d0717<_0x430e8c[_0x3930('0x1a')];_0x1d0717+=0x1){_0x3a0e16[_0x3930('0x48')](_0x3930('0x4e'),{'FaxInteractionId':Number(_0x430e8c[_0x1d0717]),'UserId':Number(_0x2bcc3b['id'])});}});}})[_0x3930('0x13')](function(){if(_0x12eeb7===_0x3930('0x4a')){var _0x218592=_['map'](_0x2bcc3b['SmsInteractions'],'id');return _0x2bcc3b[_0x3930('0x4f')](_0x218592)[_0x3930('0x13')](function(){for(var _0x5121ed=0x0;_0x5121ed<_0x218592['length'];_0x5121ed+=0x1){_0x3a0e16[_0x3930('0x48')](_0x3930('0x50'),{'SmsInteractionId':Number(_0x218592[_0x5121ed]),'UserId':Number(_0x2bcc3b['id'])});}});}})[_0x3930('0x13')](function(){if(_0x12eeb7==='leave'){var _0x315f21=_[_0x3930('0x4b')](_0x2bcc3b[_0x3930('0x27')],'id');return _0x2bcc3b[_0x3930('0x51')](_0x315f21)[_0x3930('0x13')](function(){for(var _0x4f965a=0x0;_0x4f965a<_0x315f21['length'];_0x4f965a+=0x1){_0x3a0e16[_0x3930('0x48')](_0x3930('0x52'),{'OpenchannelInteractionId':Number(_0x315f21[_0x4f965a]),'UserId':Number(_0x2bcc3b['id'])});}});}})[_0x3930('0x13')](function(){if(_0x12eeb7==='leave'){var _0x4a4506=_['map'](_0x2bcc3b['WhatsappInteractions'],'id');return _0x2bcc3b[_0x3930('0x53')](_0x4a4506)[_0x3930('0x13')](function(){for(var _0x8489d2=0x0;_0x8489d2<_0x4a4506[_0x3930('0x1a')];_0x8489d2+=0x1){_0x3a0e16['emit'](_0x3930('0x54'),{'WhatsappInteractionId':Number(_0x4a4506[_0x8489d2]),'UserId':Number(_0x2bcc3b['id'])});}});}})[_0x3930('0x55')](function(_0x555d3b){_0x2ea386[_0x3930('0x56')](_0x555d3b);});}}function onDisconnect(_0x38aedd,_0x3a9cc2){joinOrLeave(_0x38aedd,_0x3930('0x4a'),_0x3a9cc2);}function onConnect(_0x3c3f7c){joinOrLeave(_0x3c3f7c,_0x3930('0x57'));}exports['default']=function(_0x2b8a55){_0x2b8a55['on'](_0x3930('0x58'),function(_0x10874b){_0x10874b['setMaxListeners'](0x0);_0x10874b[_0x3930('0x59')]=_0x10874b[_0x3930('0x5a')][_0x3930('0x58')][_0x3930('0x5b')]+':'+_0x10874b[_0x3930('0x5a')][_0x3930('0x58')]['remotePort'];_0x10874b[_0x3930('0x5c')]=new Date();_0x10874b['log']=function(_0x42719f){console['log'](_0x3930('0x5d')+_0x10874b[_0x3930('0x5e')][_0x3930('0x2')]+'['+_0x10874b['address']+']',_0x42719f);};_0x10874b['on']('disconnect',function(){onDisconnect(_0x10874b,_0x2b8a55);_0x10874b[_0x3930('0x56')](_0x3930('0x5f'));});onConnect(_0x10874b);_0x10874b[_0x3930('0x56')](_0x3930('0x60'));});};