2e52c42a823845dbb48ae91f57cbbaec620eafef
[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 _0xcf10=['removeMailInteractions','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','connection','setMaxListeners','address','request','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','./environment','User','name','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','map','where','Campaign','%s:queue:%s','Agents','length','format','handshake','query','find','userProfileId','ChatInteractions','MailInteraction','MailInteractions','FaxInteractions','SmsInteractions','OpenchannelInteraction','WhatsappInteractions','admin','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:inbound','Trunks','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','voice','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','user:%s','leave','removeChatInteractions','emit'];(function(_0x348f6f,_0x2072e8){var _0x1a11af=function(_0x243309){while(--_0x243309){_0x348f6f['push'](_0x348f6f['shift']());}};_0x1a11af(++_0x2072e8);}(_0xcf10,0xd4));var _0x0cf1=function(_0xb3b452,_0x582e8e){_0xb3b452=_0xb3b452-0x0;var _0x238983=_0xcf10[_0xb3b452];return _0x238983;};'use strict';var _=require(_0x0cf1('0x0'));var util=require(_0x0cf1('0x1'));var BPromise=require(_0x0cf1('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x0cf1('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0x0cf1('0x4')],'attributes':['id',_0x0cf1('0x5'),_0x0cf1('0x6')],'raw':!![],'where':{'role':_0x0cf1('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x0cf1('0x5')],'where':{'role':_0x0cf1('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x0cf1('0x5')],'where':{'role':_0x0cf1('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x0cf1('0x5'),_0x0cf1('0x9')],'where':{'type':_0x0cf1('0xa')}};function getAssociatedResources(_0x3c0aac,_0x4ad3aa,_0x41c5f0){return db[_0x0cf1('0xb')][_0x0cf1('0xc')]({'where':{'name':_0x3c0aac,'userProfileId':_0x4ad3aa},'raw':!![]})[_0x0cf1('0xd')](function(_0x304e80){if(_0x304e80){if(_0x304e80['autoAssociation']){switch(_0x3c0aac){case _0x0cf1('0xe'):case _0x0cf1('0xf'):case _0x0cf1('0x10'):case _0x0cf1('0x11'):case _0x0cf1('0x12'):case _0x0cf1('0x13'):case _0x0cf1('0x14'):return db[_0x41c5f0][_0x0cf1('0x15')](queryQueues);case _0x0cf1('0x16'):return db[_0x41c5f0]['findAll'](queryTelephones);case'Trunks':return db[_0x41c5f0][_0x0cf1('0x15')](queryTrunks);case'IvrCampaigns':return db[_0x41c5f0][_0x0cf1('0x15')](queryCampaigns);}}else{return db[_0x0cf1('0x17')]['findAll']({'attributes':[_0x0cf1('0x18')],'where':{'sectionId':_0x304e80['id']},'raw':!![]})['then'](function(_0x1bd550){if(_0x1bd550){var _0x3fb273={'where':{'id':_[_0x0cf1('0x19')](_0x1bd550,'resourceId')},'raw':!![]};switch(_0x41c5f0){case _0x0cf1('0x4'):_0x3fb273[_0x0cf1('0x1a')]['role']='telephone';break;case _0x0cf1('0x1b'):_0x3fb273[_0x0cf1('0x1a')][_0x0cf1('0x9')]='ivr';break;}return db[_0x41c5f0][_0x0cf1('0x15')](_0x3fb273);}else{return[];}});}}else{return[];}})[_0x0cf1('0xd')](function(_0x53bcb1){return _0x53bcb1;});}function joinOrLeaveQueues(_0xece977,_0x211c57,_0xff3f82,_0x52c887){_0xece977[_0x211c57](util['format'](_0x0cf1('0x1c'),_0xff3f82,_0x52c887[_0x0cf1('0x5')]));if(_0x52c887['Agents']){for(var _0x4bec92=0x0;_0x4bec92<_0x52c887[_0x0cf1('0x1d')][_0x0cf1('0x1e')];_0x4bec92+=0x1){_0xece977[_0x211c57](util[_0x0cf1('0x1f')]('user:%s',_0x52c887[_0x0cf1('0x1d')][_0x4bec92][_0x0cf1('0x5')]));}}}function joinOrLeave(_0x206973,_0x108980,_0x14db1b){var _0x12b8d3;if(_0x206973[_0x0cf1('0x20')][_0x0cf1('0x21')]['id']){db[_0x0cf1('0x4')][_0x0cf1('0x22')]({'attributes':['id',_0x0cf1('0x5'),_0x0cf1('0x6'),_0x0cf1('0x23')],'where':{'id':_0x206973[_0x0cf1('0x20')][_0x0cf1('0x21')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x0cf1('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x0cf1('0x25')],'as':_0x0cf1('0x26'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x0cf1('0x27'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x0cf1('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x0cf1('0x29')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x0cf1('0x2a'),'attributes':['id'],'raw':!![]}]})[_0x0cf1('0xd')](function(_0x45c0b6){if(_0x45c0b6){_0x12b8d3=_0x45c0b6;_0x206973[_0x108980](util[_0x0cf1('0x1f')]('user:%s',_0x45c0b6['name']));var _0x24822b=[];switch(_0x45c0b6[_0x0cf1('0x6')]){case _0x0cf1('0x2b'):_0x206973[_0x108980]('voice:inbound');_0x206973[_0x108980](_0x0cf1('0x2c'));if(queryQueues['hasOwnProperty'](_0x0cf1('0x2d'))){delete queryQueues[_0x0cf1('0x2d')];}_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x2f')][_0x0cf1('0x15')](queryQueues));_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x30')][_0x0cf1('0x15')](queryQueues));_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x31')][_0x0cf1('0x15')](queryQueues));_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x32')][_0x0cf1('0x15')](queryQueues));_0x24822b['push'](db[_0x0cf1('0x33')][_0x0cf1('0x15')](queryQueues));_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x34')][_0x0cf1('0x15')](queryQueues));_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x35')]['findAll'](queryQueues));_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x4')][_0x0cf1('0x15')](queryTelephones));_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x36')][_0x0cf1('0x15')](queryTrunks));_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x1b')]['findAll'](queryCampaigns));_0x24822b['push'](db[_0x0cf1('0x4')][_0x0cf1('0x15')](queryAgents));break;case _0x0cf1('0x37'):_0x206973[_0x108980](_0x0cf1('0x38'));_0x206973[_0x108980](_0x0cf1('0x2c'));_0x24822b[_0x0cf1('0x2e')](getAssociatedResources('VoiceQueues',_0x45c0b6['userProfileId'],_0x0cf1('0x2f')));_0x24822b[_0x0cf1('0x2e')](getAssociatedResources(_0x0cf1('0xf'),_0x45c0b6[_0x0cf1('0x23')],'ChatQueue'));_0x24822b[_0x0cf1('0x2e')](getAssociatedResources(_0x0cf1('0x10'),_0x45c0b6[_0x0cf1('0x23')],_0x0cf1('0x31')));_0x24822b[_0x0cf1('0x2e')](getAssociatedResources(_0x0cf1('0x11'),_0x45c0b6[_0x0cf1('0x23')],'SmsQueue'));_0x24822b[_0x0cf1('0x2e')](getAssociatedResources(_0x0cf1('0x12'),_0x45c0b6[_0x0cf1('0x23')],_0x0cf1('0x33')));_0x24822b[_0x0cf1('0x2e')](getAssociatedResources(_0x0cf1('0x13'),_0x45c0b6['userProfileId'],_0x0cf1('0x34')));_0x24822b['push'](getAssociatedResources(_0x0cf1('0x14'),_0x45c0b6[_0x0cf1('0x23')],'WhatsappQueue'));_0x24822b[_0x0cf1('0x2e')](getAssociatedResources(_0x0cf1('0x16'),_0x45c0b6[_0x0cf1('0x23')],_0x0cf1('0x4')));_0x24822b[_0x0cf1('0x2e')](getAssociatedResources(_0x0cf1('0x39'),_0x45c0b6[_0x0cf1('0x23')],_0x0cf1('0x36')));_0x24822b[_0x0cf1('0x2e')](getAssociatedResources(_0x0cf1('0x3a'),_0x45c0b6[_0x0cf1('0x23')],_0x0cf1('0x1b')));_0x24822b[_0x0cf1('0x2e')](db[_0x0cf1('0x4')][_0x0cf1('0x15')](queryAgents));break;case'agent':_0x206973[_0x108980](_0x0cf1('0x38'));_0x206973[_0x108980](_0x0cf1('0x2c'));_0x24822b[_0x0cf1('0x2e')](_0x45c0b6[_0x0cf1('0x3b')]({'attributes':['id',_0x0cf1('0x5')]}));_0x24822b[_0x0cf1('0x2e')](_0x45c0b6[_0x0cf1('0x3c')]({'attributes':['id',_0x0cf1('0x5')]}));_0x24822b['push'](_0x45c0b6[_0x0cf1('0x3d')]({'attributes':['id',_0x0cf1('0x5')]}));_0x24822b[_0x0cf1('0x2e')](_0x45c0b6[_0x0cf1('0x3e')]({'attributes':['id',_0x0cf1('0x5')]}));_0x24822b[_0x0cf1('0x2e')](_0x45c0b6['getMailQueues']({'attributes':['id',_0x0cf1('0x5')]}));_0x24822b[_0x0cf1('0x2e')](_0x45c0b6['getOpenchannelQueues']({'attributes':['id',_0x0cf1('0x5')]}));_0x24822b['push'](_0x45c0b6['getWhatsappQueues']({'attributes':['id',_0x0cf1('0x5')]}));break;}return BPromise['all'](_0x24822b);}})['then'](function(_0x3dc5ed){if(_0x3dc5ed&&_0x3dc5ed[_0x0cf1('0x1e')]){for(var _0x29b5e4=0x0;_0x29b5e4<_0x3dc5ed[_0x0cf1('0x1e')];_0x29b5e4+=0x1){for(var _0x5149d2=0x0;_0x5149d2<_0x3dc5ed[_0x29b5e4][_0x0cf1('0x1e')];_0x5149d2+=0x1){switch(_0x29b5e4){case 0x0:joinOrLeaveQueues(_0x206973,_0x108980,_0x0cf1('0x3f'),_0x3dc5ed[_0x29b5e4][_0x5149d2]);break;case 0x1:joinOrLeaveQueues(_0x206973,_0x108980,_0x0cf1('0x40'),_0x3dc5ed[_0x29b5e4][_0x5149d2]);break;case 0x2:joinOrLeaveQueues(_0x206973,_0x108980,_0x0cf1('0x41'),_0x3dc5ed[_0x29b5e4][_0x5149d2]);break;case 0x3:joinOrLeaveQueues(_0x206973,_0x108980,_0x0cf1('0x42'),_0x3dc5ed[_0x29b5e4][_0x5149d2]);break;case 0x4:joinOrLeaveQueues(_0x206973,_0x108980,_0x0cf1('0x43'),_0x3dc5ed[_0x29b5e4][_0x5149d2]);break;case 0x5:joinOrLeaveQueues(_0x206973,_0x108980,'openchannel',_0x3dc5ed[_0x29b5e4][_0x5149d2]);break;case 0x6:joinOrLeaveQueues(_0x206973,_0x108980,_0x0cf1('0x44'),_0x3dc5ed[_0x29b5e4][_0x5149d2]);break;case 0x7:_0x206973[_0x108980](util[_0x0cf1('0x1f')](_0x0cf1('0x45'),_0x3dc5ed[_0x29b5e4][_0x5149d2]['name']));break;case 0x8:_0x206973[_0x108980](util[_0x0cf1('0x1f')](_0x0cf1('0x46'),_0x3dc5ed[_0x29b5e4][_0x5149d2][_0x0cf1('0x5')]));break;case 0x9:_0x206973[_0x108980](util[_0x0cf1('0x1f')](_0x0cf1('0x47'),_0x3dc5ed[_0x29b5e4][_0x5149d2][_0x0cf1('0x9')],_0x3dc5ed[_0x29b5e4][_0x5149d2][_0x0cf1('0x5')]));break;case 0xa:_0x206973[_0x108980](util[_0x0cf1('0x1f')](_0x0cf1('0x48'),_0x3dc5ed[_0x29b5e4][_0x5149d2][_0x0cf1('0x5')]));break;}}}}})['then'](function(){if(_0x108980===_0x0cf1('0x49')){var _0x382193=_[_0x0cf1('0x19')](_0x12b8d3['ChatInteractions'],'id');return _0x12b8d3[_0x0cf1('0x4a')](_0x382193)[_0x0cf1('0xd')](function(){for(var _0x5f0c0c=0x0;_0x5f0c0c<_0x382193[_0x0cf1('0x1e')];_0x5f0c0c+=0x1){_0x14db1b[_0x0cf1('0x4b')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x382193[_0x5f0c0c]),'UserId':Number(_0x12b8d3['id'])});}});}})[_0x0cf1('0xd')](function(){if(_0x108980===_0x0cf1('0x49')){var _0x5dcf36=_[_0x0cf1('0x19')](_0x12b8d3[_0x0cf1('0x26')],'id');return _0x12b8d3[_0x0cf1('0x4c')](_0x5dcf36)['then'](function(){for(var _0xf473d3=0x0;_0xf473d3<_0x5dcf36['length'];_0xf473d3+=0x1){_0x14db1b['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x5dcf36[_0xf473d3]),'UserId':Number(_0x12b8d3['id'])});}});}})[_0x0cf1('0xd')](function(){if(_0x108980===_0x0cf1('0x49')){var _0x5257f7=_[_0x0cf1('0x19')](_0x12b8d3[_0x0cf1('0x27')],'id');return _0x12b8d3[_0x0cf1('0x4d')](_0x5257f7)[_0x0cf1('0xd')](function(){for(var _0x436baf=0x0;_0x436baf<_0x5257f7[_0x0cf1('0x1e')];_0x436baf+=0x1){_0x14db1b[_0x0cf1('0x4b')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x5257f7[_0x436baf]),'UserId':Number(_0x12b8d3['id'])});}});}})[_0x0cf1('0xd')](function(){if(_0x108980===_0x0cf1('0x49')){var _0x5a4f72=_[_0x0cf1('0x19')](_0x12b8d3[_0x0cf1('0x28')],'id');return _0x12b8d3[_0x0cf1('0x4e')](_0x5a4f72)[_0x0cf1('0xd')](function(){for(var _0x47ce75=0x0;_0x47ce75<_0x5a4f72[_0x0cf1('0x1e')];_0x47ce75+=0x1){_0x14db1b['emit'](_0x0cf1('0x4f'),{'SmsInteractionId':Number(_0x5a4f72[_0x47ce75]),'UserId':Number(_0x12b8d3['id'])});}});}})[_0x0cf1('0xd')](function(){if(_0x108980===_0x0cf1('0x49')){var _0x198ab8=_[_0x0cf1('0x19')](_0x12b8d3['OpenchannelInteractions'],'id');return _0x12b8d3[_0x0cf1('0x50')](_0x198ab8)[_0x0cf1('0xd')](function(){for(var _0x5e3b53=0x0;_0x5e3b53<_0x198ab8['length'];_0x5e3b53+=0x1){_0x14db1b['emit'](_0x0cf1('0x51'),{'OpenchannelInteractionId':Number(_0x198ab8[_0x5e3b53]),'UserId':Number(_0x12b8d3['id'])});}});}})[_0x0cf1('0xd')](function(){if(_0x108980==='leave'){var _0x14d907=_[_0x0cf1('0x19')](_0x12b8d3['WhatsappInteractions'],'id');return _0x12b8d3['removeWhatsappInteractions'](_0x14d907)[_0x0cf1('0xd')](function(){for(var _0x51914f=0x0;_0x51914f<_0x14d907['length'];_0x51914f+=0x1){_0x14db1b['emit'](_0x0cf1('0x52'),{'WhatsappInteractionId':Number(_0x14d907[_0x51914f]),'UserId':Number(_0x12b8d3['id'])});}});}})[_0x0cf1('0x53')](function(_0x65d3f6){_0x206973[_0x0cf1('0x54')](_0x65d3f6);});}}function onDisconnect(_0x423a73,_0x276e27){joinOrLeave(_0x423a73,_0x0cf1('0x49'),_0x276e27);}function onConnect(_0x4c8e99){joinOrLeave(_0x4c8e99,_0x0cf1('0x55'));}exports['default']=function(_0x405c63){_0x405c63['on'](_0x0cf1('0x56'),function(_0x2a41e6){_0x2a41e6[_0x0cf1('0x57')](0x0);_0x2a41e6[_0x0cf1('0x58')]=_0x2a41e6[_0x0cf1('0x59')]['connection']['remoteAddress']+':'+_0x2a41e6[_0x0cf1('0x59')][_0x0cf1('0x56')][_0x0cf1('0x5a')];_0x2a41e6[_0x0cf1('0x5b')]=new Date();_0x2a41e6[_0x0cf1('0x54')]=function(_0x5e536d){console['log']('SocketIO\x20'+_0x2a41e6[_0x0cf1('0x5c')][_0x0cf1('0x5')]+'['+_0x2a41e6[_0x0cf1('0x58')]+']',_0x5e536d);};_0x2a41e6['on'](_0x0cf1('0x5d'),function(){onDisconnect(_0x2a41e6,_0x405c63);_0x2a41e6['log'](_0x0cf1('0x5e'));});onConnect(_0x2a41e6);_0x2a41e6[_0x0cf1('0x54')](_0x0cf1('0x5f'));});};