364152cbbca8369df690828f2a302c234a664662
[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 _0x9750=['removeWhatsappInteractions','catch','default','connection','setMaxListeners','address','remoteAddress','request','remotePort','log','nsp','DISCONNECTED','CONNECTED','util','bluebird','./environment','User','name','role','agent','telephone','type','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','%s:queue:%s','Agents','length','format','user:%s','handshake','query','find','userProfileId','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','MailQueue','OpenchannelQueue','Trunk','user','ChatQueue','WhatsappQueue','Telephones','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','emit','user_has_fax_interactions:remove','removeSmsInteractions','user_has_openchannel_interactions:remove'];(function(_0x493812,_0xd01046){var _0x1c5e8e=function(_0x3f4a25){while(--_0x3f4a25){_0x493812['push'](_0x493812['shift']());}};_0x1c5e8e(++_0xd01046);}(_0x9750,0x199));var _0x0975=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x9750[_0x433a86];return _0x23000c;};'use strict';var _=require('lodash');var util=require(_0x0975('0x0'));var BPromise=require(_0x0975('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x0975('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0x0975('0x3')],'attributes':['id',_0x0975('0x4'),_0x0975('0x5')],'raw':!![],'where':{'role':_0x0975('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x0975('0x4')],'where':{'role':_0x0975('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x0975('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x0975('0x4')],'where':{'role':_0x0975('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x0975('0x8')],'where':{'type':_0x0975('0x9')}};function getAssociatedResources(_0x447f57,_0x122fa5,_0x1dcf72){return db[_0x0975('0xa')]['findOne']({'where':{'name':_0x447f57,'userProfileId':_0x122fa5},'raw':!![]})[_0x0975('0xb')](function(_0x43b3bd){if(_0x43b3bd){if(_0x43b3bd[_0x0975('0xc')]){switch(_0x447f57){case _0x0975('0xd'):case _0x0975('0xe'):case _0x0975('0xf'):case _0x0975('0x10'):case _0x0975('0x11'):case _0x0975('0x12'):case _0x0975('0x13'):return db[_0x1dcf72][_0x0975('0x14')](queryQueues);case'Telephones':return db[_0x1dcf72][_0x0975('0x14')](queryTelephones);case _0x0975('0x15'):return db[_0x1dcf72][_0x0975('0x14')](queryTrunks);case _0x0975('0x16'):return db[_0x1dcf72][_0x0975('0x14')](queryCampaigns);}}else{return db[_0x0975('0x17')][_0x0975('0x14')]({'attributes':[_0x0975('0x18')],'where':{'sectionId':_0x43b3bd['id']},'raw':!![]})[_0x0975('0xb')](function(_0x363fc2){if(_0x363fc2){var _0x510f3f={'where':{'id':_[_0x0975('0x19')](_0x363fc2,'resourceId')},'raw':!![]};switch(_0x1dcf72){case _0x0975('0x3'):_0x510f3f[_0x0975('0x1a')][_0x0975('0x5')]=_0x0975('0x7');break;case _0x0975('0x1b'):_0x510f3f[_0x0975('0x1a')][_0x0975('0x8')]=_0x0975('0x9');break;}return db[_0x1dcf72][_0x0975('0x14')](_0x510f3f);}else{return[];}});}}else{return[];}})[_0x0975('0xb')](function(_0x215d06){return _0x215d06;});}function joinOrLeaveQueues(_0x3f9a62,_0xa43a28,_0x481844,_0xe8bf29){_0x3f9a62[_0xa43a28](util['format'](_0x0975('0x1c'),_0x481844,_0xe8bf29[_0x0975('0x4')]));if(_0xe8bf29[_0x0975('0x1d')]){for(var _0x310174=0x0;_0x310174<_0xe8bf29[_0x0975('0x1d')][_0x0975('0x1e')];_0x310174+=0x1){_0x3f9a62[_0xa43a28](util[_0x0975('0x1f')](_0x0975('0x20'),_0xe8bf29[_0x0975('0x1d')][_0x310174]['name']));}}}function joinOrLeave(_0xec7e1e,_0x521890,_0x542d04){var _0x5f3ed1;if(_0xec7e1e[_0x0975('0x21')][_0x0975('0x22')]['id']){db[_0x0975('0x3')][_0x0975('0x23')]({'attributes':['id',_0x0975('0x4'),_0x0975('0x5'),_0x0975('0x24')],'where':{'id':_0xec7e1e[_0x0975('0x21')][_0x0975('0x22')]['id']},'include':[{'model':db['ChatInteraction'],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x0975('0x25')],'as':_0x0975('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x0975('0x27')],'as':_0x0975('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x0975('0x29')],'as':_0x0975('0x2a'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x0975('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x0975('0x2c')],'as':_0x0975('0x2d'),'attributes':['id'],'raw':!![]}]})[_0x0975('0xb')](function(_0x346f85){if(_0x346f85){_0x5f3ed1=_0x346f85;_0xec7e1e[_0x521890](util[_0x0975('0x1f')](_0x0975('0x20'),_0x346f85[_0x0975('0x4')]));var _0x2b1d8c=[];switch(_0x346f85[_0x0975('0x5')]){case _0x0975('0x2e'):_0xec7e1e[_0x521890](_0x0975('0x2f'));_0xec7e1e[_0x521890](_0x0975('0x30'));if(queryQueues[_0x0975('0x31')](_0x0975('0x32'))){delete queryQueues['include'];}_0x2b1d8c[_0x0975('0x33')](db[_0x0975('0x34')][_0x0975('0x14')](queryQueues));_0x2b1d8c[_0x0975('0x33')](db['ChatQueue']['findAll'](queryQueues));_0x2b1d8c[_0x0975('0x33')](db[_0x0975('0x35')]['findAll'](queryQueues));_0x2b1d8c['push'](db['SmsQueue'][_0x0975('0x14')](queryQueues));_0x2b1d8c['push'](db[_0x0975('0x36')][_0x0975('0x14')](queryQueues));_0x2b1d8c[_0x0975('0x33')](db[_0x0975('0x37')]['findAll'](queryQueues));_0x2b1d8c['push'](db['WhatsappQueue'][_0x0975('0x14')](queryQueues));_0x2b1d8c[_0x0975('0x33')](db[_0x0975('0x3')][_0x0975('0x14')](queryTelephones));_0x2b1d8c[_0x0975('0x33')](db[_0x0975('0x38')]['findAll'](queryTrunks));_0x2b1d8c[_0x0975('0x33')](db[_0x0975('0x1b')][_0x0975('0x14')](queryCampaigns));_0x2b1d8c[_0x0975('0x33')](db[_0x0975('0x3')][_0x0975('0x14')](queryAgents));break;case _0x0975('0x39'):_0xec7e1e[_0x521890](_0x0975('0x2f'));_0xec7e1e[_0x521890]('voice:outbound');_0x2b1d8c[_0x0975('0x33')](getAssociatedResources('VoiceQueues',_0x346f85[_0x0975('0x24')],_0x0975('0x34')));_0x2b1d8c[_0x0975('0x33')](getAssociatedResources('ChatQueues',_0x346f85[_0x0975('0x24')],_0x0975('0x3a')));_0x2b1d8c['push'](getAssociatedResources('FaxQueues',_0x346f85[_0x0975('0x24')],_0x0975('0x35')));_0x2b1d8c['push'](getAssociatedResources(_0x0975('0x10'),_0x346f85[_0x0975('0x24')],'SmsQueue'));_0x2b1d8c[_0x0975('0x33')](getAssociatedResources(_0x0975('0x11'),_0x346f85['userProfileId'],'MailQueue'));_0x2b1d8c['push'](getAssociatedResources(_0x0975('0x12'),_0x346f85[_0x0975('0x24')],'OpenchannelQueue'));_0x2b1d8c[_0x0975('0x33')](getAssociatedResources(_0x0975('0x13'),_0x346f85[_0x0975('0x24')],_0x0975('0x3b')));_0x2b1d8c[_0x0975('0x33')](getAssociatedResources(_0x0975('0x3c'),_0x346f85['userProfileId'],_0x0975('0x3')));_0x2b1d8c[_0x0975('0x33')](getAssociatedResources(_0x0975('0x15'),_0x346f85['userProfileId'],_0x0975('0x38')));_0x2b1d8c[_0x0975('0x33')](getAssociatedResources(_0x0975('0x16'),_0x346f85[_0x0975('0x24')],_0x0975('0x1b')));_0x2b1d8c[_0x0975('0x33')](db[_0x0975('0x3')]['findAll'](queryAgents));break;case _0x0975('0x6'):_0xec7e1e[_0x521890](_0x0975('0x2f'));_0xec7e1e[_0x521890](_0x0975('0x30'));_0x2b1d8c[_0x0975('0x33')](_0x346f85[_0x0975('0x3d')]({'attributes':['id',_0x0975('0x4')]}));_0x2b1d8c[_0x0975('0x33')](_0x346f85['getChatQueues']({'attributes':['id',_0x0975('0x4')]}));_0x2b1d8c[_0x0975('0x33')](_0x346f85[_0x0975('0x3e')]({'attributes':['id',_0x0975('0x4')]}));_0x2b1d8c['push'](_0x346f85[_0x0975('0x3f')]({'attributes':['id','name']}));_0x2b1d8c[_0x0975('0x33')](_0x346f85[_0x0975('0x40')]({'attributes':['id',_0x0975('0x4')]}));_0x2b1d8c[_0x0975('0x33')](_0x346f85[_0x0975('0x41')]({'attributes':['id',_0x0975('0x4')]}));_0x2b1d8c[_0x0975('0x33')](_0x346f85[_0x0975('0x42')]({'attributes':['id',_0x0975('0x4')]}));break;}return BPromise[_0x0975('0x43')](_0x2b1d8c);}})[_0x0975('0xb')](function(_0x27bc50){if(_0x27bc50&&_0x27bc50[_0x0975('0x1e')]){for(var _0xf1c323=0x0;_0xf1c323<_0x27bc50['length'];_0xf1c323+=0x1){for(var _0x48f218=0x0;_0x48f218<_0x27bc50[_0xf1c323][_0x0975('0x1e')];_0x48f218+=0x1){switch(_0xf1c323){case 0x0:joinOrLeaveQueues(_0xec7e1e,_0x521890,'voice',_0x27bc50[_0xf1c323][_0x48f218]);break;case 0x1:joinOrLeaveQueues(_0xec7e1e,_0x521890,_0x0975('0x44'),_0x27bc50[_0xf1c323][_0x48f218]);break;case 0x2:joinOrLeaveQueues(_0xec7e1e,_0x521890,'fax',_0x27bc50[_0xf1c323][_0x48f218]);break;case 0x3:joinOrLeaveQueues(_0xec7e1e,_0x521890,_0x0975('0x45'),_0x27bc50[_0xf1c323][_0x48f218]);break;case 0x4:joinOrLeaveQueues(_0xec7e1e,_0x521890,_0x0975('0x46'),_0x27bc50[_0xf1c323][_0x48f218]);break;case 0x5:joinOrLeaveQueues(_0xec7e1e,_0x521890,_0x0975('0x47'),_0x27bc50[_0xf1c323][_0x48f218]);break;case 0x6:joinOrLeaveQueues(_0xec7e1e,_0x521890,_0x0975('0x48'),_0x27bc50[_0xf1c323][_0x48f218]);break;case 0x7:_0xec7e1e[_0x521890](util[_0x0975('0x1f')](_0x0975('0x49'),_0x27bc50[_0xf1c323][_0x48f218][_0x0975('0x4')]));break;case 0x8:_0xec7e1e[_0x521890](util[_0x0975('0x1f')](_0x0975('0x4a'),_0x27bc50[_0xf1c323][_0x48f218][_0x0975('0x4')]));break;case 0x9:_0xec7e1e[_0x521890](util[_0x0975('0x1f')](_0x0975('0x4b'),_0x27bc50[_0xf1c323][_0x48f218][_0x0975('0x8')],_0x27bc50[_0xf1c323][_0x48f218][_0x0975('0x4')]));break;case 0xa:_0xec7e1e[_0x521890](util[_0x0975('0x1f')]('user:%s',_0x27bc50[_0xf1c323][_0x48f218]['name']));break;}}}}})['then'](function(){if(_0x521890===_0x0975('0x4c')){var _0x5fe2e7=_[_0x0975('0x19')](_0x5f3ed1['ChatInteractions'],'id');return _0x5f3ed1[_0x0975('0x4d')](_0x5fe2e7)[_0x0975('0xb')](function(){for(var _0x5ba3bc=0x0;_0x5ba3bc<_0x5fe2e7[_0x0975('0x1e')];_0x5ba3bc+=0x1){_0x542d04['emit'](_0x0975('0x4e'),{'ChatInteractionId':Number(_0x5fe2e7[_0x5ba3bc]),'UserId':Number(_0x5f3ed1['id'])});}});}})[_0x0975('0xb')](function(){if(_0x521890==='leave'){var _0x19b43b=_[_0x0975('0x19')](_0x5f3ed1[_0x0975('0x26')],'id');return _0x5f3ed1[_0x0975('0x4f')](_0x19b43b)['then'](function(){for(var _0x1c1d31=0x0;_0x1c1d31<_0x19b43b['length'];_0x1c1d31+=0x1){_0x542d04['emit'](_0x0975('0x50'),{'MailInteractionId':Number(_0x19b43b[_0x1c1d31]),'UserId':Number(_0x5f3ed1['id'])});}});}})['then'](function(){if(_0x521890===_0x0975('0x4c')){var _0x18e858=_[_0x0975('0x19')](_0x5f3ed1[_0x0975('0x28')],'id');return _0x5f3ed1[_0x0975('0x51')](_0x18e858)[_0x0975('0xb')](function(){for(var _0x27648a=0x0;_0x27648a<_0x18e858[_0x0975('0x1e')];_0x27648a+=0x1){_0x542d04[_0x0975('0x52')](_0x0975('0x53'),{'FaxInteractionId':Number(_0x18e858[_0x27648a]),'UserId':Number(_0x5f3ed1['id'])});}});}})[_0x0975('0xb')](function(){if(_0x521890===_0x0975('0x4c')){var _0x6dd7c3=_[_0x0975('0x19')](_0x5f3ed1[_0x0975('0x2a')],'id');return _0x5f3ed1[_0x0975('0x54')](_0x6dd7c3)['then'](function(){for(var _0x367126=0x0;_0x367126<_0x6dd7c3[_0x0975('0x1e')];_0x367126+=0x1){_0x542d04['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x6dd7c3[_0x367126]),'UserId':Number(_0x5f3ed1['id'])});}});}})['then'](function(){if(_0x521890===_0x0975('0x4c')){var _0xf1f7df=_['map'](_0x5f3ed1[_0x0975('0x2b')],'id');return _0x5f3ed1['removeOpenchannelInteractions'](_0xf1f7df)[_0x0975('0xb')](function(){for(var _0x4f13dc=0x0;_0x4f13dc<_0xf1f7df[_0x0975('0x1e')];_0x4f13dc+=0x1){_0x542d04['emit'](_0x0975('0x55'),{'OpenchannelInteractionId':Number(_0xf1f7df[_0x4f13dc]),'UserId':Number(_0x5f3ed1['id'])});}});}})['then'](function(){if(_0x521890===_0x0975('0x4c')){var _0x58049a=_[_0x0975('0x19')](_0x5f3ed1[_0x0975('0x2d')],'id');return _0x5f3ed1[_0x0975('0x56')](_0x58049a)['then'](function(){for(var _0x1870ce=0x0;_0x1870ce<_0x58049a[_0x0975('0x1e')];_0x1870ce+=0x1){_0x542d04['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x58049a[_0x1870ce]),'UserId':Number(_0x5f3ed1['id'])});}});}})[_0x0975('0x57')](function(_0x356478){_0xec7e1e['log'](_0x356478);});}}function onDisconnect(_0x1a9b4f,_0x3bad81){joinOrLeave(_0x1a9b4f,_0x0975('0x4c'),_0x3bad81);}function onConnect(_0x17bbfb){joinOrLeave(_0x17bbfb,'join');}exports[_0x0975('0x58')]=function(_0x37e0b3){_0x37e0b3['on'](_0x0975('0x59'),function(_0x25832f){_0x25832f[_0x0975('0x5a')](0x0);_0x25832f[_0x0975('0x5b')]=_0x25832f['request'][_0x0975('0x59')][_0x0975('0x5c')]+':'+_0x25832f[_0x0975('0x5d')][_0x0975('0x59')][_0x0975('0x5e')];_0x25832f['connectedAt']=new Date();_0x25832f[_0x0975('0x5f')]=function(_0x54f226){console[_0x0975('0x5f')]('SocketIO\x20'+_0x25832f[_0x0975('0x60')]['name']+'['+_0x25832f[_0x0975('0x5b')]+']',_0x54f226);};_0x25832f['on']('disconnect',function(){onDisconnect(_0x25832f,_0x37e0b3);_0x25832f['log'](_0x0975('0x61'));});onConnect(_0x25832f);_0x25832f[_0x0975('0x5f')](_0x0975('0x62'));});};