Built motion from commit 87cd5f02.|2.5.48
[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 _0xd290=['%s:queue:%s','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','MailInteractions','FaxInteractions','OpenchannelInteraction','WhatsappInteraction','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','user','VoiceQueues','FaxQueues','WhatsappQueue','Telephones','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all','voice','chat','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','user_has_chat_interactions:remove','map','removeMailInteractions','user_has_mail_interactions:remove','emit','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','WhatsappInteractions','catch','log','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','../mysqldb','Agents','User','name','role','agent','telephone','ivr','UserProfileSection','findOne','autoAssociation','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','then','resourceId','where','Campaign','type','format'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xd290,0x165));var _0x0d29=function(_0x2d1c6d,_0x27c29b){_0x2d1c6d=_0x2d1c6d-0x0;var _0x208a5a=_0xd290[_0x2d1c6d];return _0x208a5a;};'use strict';var _=require(_0x0d29('0x0'));var util=require(_0x0d29('0x1'));var BPromise=require('bluebird');var db=require(_0x0d29('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0x0d29('0x3'),'model':db[_0x0d29('0x4')],'attributes':['id',_0x0d29('0x5'),_0x0d29('0x6')],'raw':!![],'where':{'role':_0x0d29('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x0d29('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x0d29('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x0d29('0x5')],'where':{'role':_0x0d29('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x0d29('0x5'),'type'],'where':{'type':_0x0d29('0x9')}};function getAssociatedResources(_0x3c7b70,_0xbc7500,_0x4b876e){return db[_0x0d29('0xa')][_0x0d29('0xb')]({'where':{'name':_0x3c7b70,'userProfileId':_0xbc7500},'raw':!![]})['then'](function(_0x3b5660){if(_0x3b5660){if(_0x3b5660[_0x0d29('0xc')]){switch(_0x3c7b70){case'VoiceQueues':case _0x0d29('0xd'):case'FaxQueues':case _0x0d29('0xe'):case _0x0d29('0xf'):case _0x0d29('0x10'):case _0x0d29('0x11'):return db[_0x4b876e][_0x0d29('0x12')](queryQueues);case'Telephones':return db[_0x4b876e][_0x0d29('0x12')](queryTelephones);case _0x0d29('0x13'):return db[_0x4b876e][_0x0d29('0x12')](queryTrunks);case _0x0d29('0x14'):return db[_0x4b876e][_0x0d29('0x12')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x3b5660['id']},'raw':!![]})[_0x0d29('0x15')](function(_0x4acfd6){if(_0x4acfd6){var _0x44fe29={'where':{'id':_['map'](_0x4acfd6,_0x0d29('0x16'))},'raw':!![]};switch(_0x4b876e){case _0x0d29('0x4'):_0x44fe29[_0x0d29('0x17')][_0x0d29('0x6')]=_0x0d29('0x8');break;case _0x0d29('0x18'):_0x44fe29['where'][_0x0d29('0x19')]=_0x0d29('0x9');break;}return db[_0x4b876e][_0x0d29('0x12')](_0x44fe29);}else{return[];}});}}else{return[];}})[_0x0d29('0x15')](function(_0xd3ccf3){return _0xd3ccf3;});}function joinOrLeaveQueues(_0x244351,_0x37dbc5,_0x5c6607,_0x39722d){_0x244351[_0x37dbc5](util[_0x0d29('0x1a')](_0x0d29('0x1b'),_0x5c6607,_0x39722d[_0x0d29('0x5')]));if(_0x39722d[_0x0d29('0x3')]){for(var _0x20b278=0x0;_0x20b278<_0x39722d[_0x0d29('0x3')][_0x0d29('0x1c')];_0x20b278+=0x1){_0x244351[_0x37dbc5](util[_0x0d29('0x1a')](_0x0d29('0x1d'),_0x39722d[_0x0d29('0x3')][_0x20b278][_0x0d29('0x5')]));}}}function joinOrLeave(_0xb9fffc,_0x5856df,_0x30e109){var _0x1b78b7;if(_0xb9fffc[_0x0d29('0x1e')][_0x0d29('0x1f')]['id']){db['User'][_0x0d29('0x20')]({'attributes':['id',_0x0d29('0x5'),_0x0d29('0x6'),_0x0d29('0x21')],'where':{'id':_0xb9fffc[_0x0d29('0x1e')][_0x0d29('0x1f')]['id']},'include':[{'model':db[_0x0d29('0x22')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x0d29('0x23'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x0d29('0x24'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x0d29('0x25')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x0d29('0x26')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x0d29('0x15')](function(_0x2f7202){if(_0x2f7202){_0x1b78b7=_0x2f7202;_0xb9fffc[_0x5856df](util['format'](_0x0d29('0x1d'),_0x2f7202[_0x0d29('0x5')]));var _0x362ad9=[];switch(_0x2f7202['role']){case _0x0d29('0x27'):_0xb9fffc[_0x5856df](_0x0d29('0x28'));_0xb9fffc[_0x5856df](_0x0d29('0x29'));if(queryQueues[_0x0d29('0x2a')](_0x0d29('0x2b'))){delete queryQueues[_0x0d29('0x2b')];}_0x362ad9[_0x0d29('0x2c')](db[_0x0d29('0x2d')][_0x0d29('0x12')](queryQueues));_0x362ad9[_0x0d29('0x2c')](db['ChatQueue'][_0x0d29('0x12')](queryQueues));_0x362ad9[_0x0d29('0x2c')](db[_0x0d29('0x2e')][_0x0d29('0x12')](queryQueues));_0x362ad9[_0x0d29('0x2c')](db[_0x0d29('0x2f')]['findAll'](queryQueues));_0x362ad9[_0x0d29('0x2c')](db[_0x0d29('0x30')][_0x0d29('0x12')](queryQueues));_0x362ad9[_0x0d29('0x2c')](db[_0x0d29('0x31')][_0x0d29('0x12')](queryQueues));_0x362ad9[_0x0d29('0x2c')](db['WhatsappQueue'][_0x0d29('0x12')](queryQueues));_0x362ad9[_0x0d29('0x2c')](db[_0x0d29('0x4')][_0x0d29('0x12')](queryTelephones));_0x362ad9[_0x0d29('0x2c')](db[_0x0d29('0x32')]['findAll'](queryTrunks));_0x362ad9[_0x0d29('0x2c')](db['Campaign'][_0x0d29('0x12')](queryCampaigns));_0x362ad9[_0x0d29('0x2c')](db[_0x0d29('0x4')][_0x0d29('0x12')](queryAgents));break;case _0x0d29('0x33'):_0xb9fffc[_0x5856df]('voice:inbound');_0xb9fffc[_0x5856df](_0x0d29('0x29'));_0x362ad9[_0x0d29('0x2c')](getAssociatedResources(_0x0d29('0x34'),_0x2f7202['userProfileId'],_0x0d29('0x2d')));_0x362ad9[_0x0d29('0x2c')](getAssociatedResources(_0x0d29('0xd'),_0x2f7202['userProfileId'],'ChatQueue'));_0x362ad9[_0x0d29('0x2c')](getAssociatedResources(_0x0d29('0x35'),_0x2f7202[_0x0d29('0x21')],_0x0d29('0x2e')));_0x362ad9['push'](getAssociatedResources(_0x0d29('0xe'),_0x2f7202[_0x0d29('0x21')],_0x0d29('0x2f')));_0x362ad9['push'](getAssociatedResources('MailQueues',_0x2f7202['userProfileId'],'MailQueue'));_0x362ad9[_0x0d29('0x2c')](getAssociatedResources(_0x0d29('0x10'),_0x2f7202['userProfileId'],_0x0d29('0x31')));_0x362ad9[_0x0d29('0x2c')](getAssociatedResources(_0x0d29('0x11'),_0x2f7202[_0x0d29('0x21')],_0x0d29('0x36')));_0x362ad9[_0x0d29('0x2c')](getAssociatedResources(_0x0d29('0x37'),_0x2f7202[_0x0d29('0x21')],_0x0d29('0x4')));_0x362ad9['push'](getAssociatedResources(_0x0d29('0x13'),_0x2f7202['userProfileId'],_0x0d29('0x32')));_0x362ad9[_0x0d29('0x2c')](getAssociatedResources(_0x0d29('0x14'),_0x2f7202[_0x0d29('0x21')],_0x0d29('0x18')));_0x362ad9[_0x0d29('0x2c')](db[_0x0d29('0x4')][_0x0d29('0x12')](queryAgents));break;case _0x0d29('0x7'):_0xb9fffc[_0x5856df](_0x0d29('0x28'));_0xb9fffc[_0x5856df]('voice:outbound');_0x362ad9[_0x0d29('0x2c')](_0x2f7202['getVoiceQueues']({'attributes':['id','name']}));_0x362ad9[_0x0d29('0x2c')](_0x2f7202['getChatQueues']({'attributes':['id',_0x0d29('0x5')]}));_0x362ad9[_0x0d29('0x2c')](_0x2f7202[_0x0d29('0x38')]({'attributes':['id',_0x0d29('0x5')]}));_0x362ad9[_0x0d29('0x2c')](_0x2f7202[_0x0d29('0x39')]({'attributes':['id',_0x0d29('0x5')]}));_0x362ad9['push'](_0x2f7202[_0x0d29('0x3a')]({'attributes':['id','name']}));_0x362ad9[_0x0d29('0x2c')](_0x2f7202['getOpenchannelQueues']({'attributes':['id','name']}));_0x362ad9[_0x0d29('0x2c')](_0x2f7202[_0x0d29('0x3b')]({'attributes':['id',_0x0d29('0x5')]}));break;}return BPromise[_0x0d29('0x3c')](_0x362ad9);}})[_0x0d29('0x15')](function(_0x35a95b){if(_0x35a95b&&_0x35a95b['length']){for(var _0x1cdd60=0x0;_0x1cdd60<_0x35a95b['length'];_0x1cdd60+=0x1){for(var _0x51f2c4=0x0;_0x51f2c4<_0x35a95b[_0x1cdd60][_0x0d29('0x1c')];_0x51f2c4+=0x1){switch(_0x1cdd60){case 0x0:joinOrLeaveQueues(_0xb9fffc,_0x5856df,_0x0d29('0x3d'),_0x35a95b[_0x1cdd60][_0x51f2c4]);break;case 0x1:joinOrLeaveQueues(_0xb9fffc,_0x5856df,_0x0d29('0x3e'),_0x35a95b[_0x1cdd60][_0x51f2c4]);break;case 0x2:joinOrLeaveQueues(_0xb9fffc,_0x5856df,'fax',_0x35a95b[_0x1cdd60][_0x51f2c4]);break;case 0x3:joinOrLeaveQueues(_0xb9fffc,_0x5856df,'sms',_0x35a95b[_0x1cdd60][_0x51f2c4]);break;case 0x4:joinOrLeaveQueues(_0xb9fffc,_0x5856df,_0x0d29('0x3f'),_0x35a95b[_0x1cdd60][_0x51f2c4]);break;case 0x5:joinOrLeaveQueues(_0xb9fffc,_0x5856df,_0x0d29('0x40'),_0x35a95b[_0x1cdd60][_0x51f2c4]);break;case 0x6:joinOrLeaveQueues(_0xb9fffc,_0x5856df,_0x0d29('0x41'),_0x35a95b[_0x1cdd60][_0x51f2c4]);break;case 0x7:if(_0x1b78b7[_0x0d29('0x6')]!=='agent')_0xb9fffc[_0x5856df](util[_0x0d29('0x1a')](_0x0d29('0x42'),_0x35a95b[_0x1cdd60][_0x51f2c4]['name']));break;case 0x8:if(_0x1b78b7[_0x0d29('0x6')]!==_0x0d29('0x7'))_0xb9fffc[_0x5856df](util[_0x0d29('0x1a')](_0x0d29('0x43'),_0x35a95b[_0x1cdd60][_0x51f2c4]['name']));break;case 0x9:if(_0x1b78b7[_0x0d29('0x6')]!=='agent')_0xb9fffc[_0x5856df](util[_0x0d29('0x1a')](_0x0d29('0x44'),_0x35a95b[_0x1cdd60][_0x51f2c4][_0x0d29('0x19')],_0x35a95b[_0x1cdd60][_0x51f2c4][_0x0d29('0x5')]));break;case 0xa:_0xb9fffc[_0x5856df](util[_0x0d29('0x1a')](_0x0d29('0x1d'),_0x35a95b[_0x1cdd60][_0x51f2c4][_0x0d29('0x5')]));break;}}}}})[_0x0d29('0x15')](function(){if(_0x5856df===_0x0d29('0x45')){var _0x44847d=_['map'](_0x1b78b7[_0x0d29('0x46')],'id');return _0x1b78b7[_0x0d29('0x47')](_0x44847d)[_0x0d29('0x15')](function(){for(var _0xd2b30b=0x0;_0xd2b30b<_0x44847d['length'];_0xd2b30b+=0x1){_0x30e109['emit'](_0x0d29('0x48'),{'ChatInteractionId':Number(_0x44847d[_0xd2b30b]),'UserId':Number(_0x1b78b7['id'])});}});}})['then'](function(){if(_0x5856df==='leave'){var _0x2ad4e3=_[_0x0d29('0x49')](_0x1b78b7['MailInteractions'],'id');return _0x1b78b7[_0x0d29('0x4a')](_0x2ad4e3)[_0x0d29('0x15')](function(){for(var _0x5f4397=0x0;_0x5f4397<_0x2ad4e3[_0x0d29('0x1c')];_0x5f4397+=0x1){_0x30e109['emit'](_0x0d29('0x4b'),{'MailInteractionId':Number(_0x2ad4e3[_0x5f4397]),'UserId':Number(_0x1b78b7['id'])});}});}})[_0x0d29('0x15')](function(){if(_0x5856df==='leave'){var _0x3f28a2=_[_0x0d29('0x49')](_0x1b78b7[_0x0d29('0x24')],'id');return _0x1b78b7['removeFaxInteractions'](_0x3f28a2)[_0x0d29('0x15')](function(){for(var _0x5cb03f=0x0;_0x5cb03f<_0x3f28a2['length'];_0x5cb03f+=0x1){_0x30e109[_0x0d29('0x4c')](_0x0d29('0x4d'),{'FaxInteractionId':Number(_0x3f28a2[_0x5cb03f]),'UserId':Number(_0x1b78b7['id'])});}});}})[_0x0d29('0x15')](function(){if(_0x5856df==='leave'){var _0x1aadcf=_[_0x0d29('0x49')](_0x1b78b7['SmsInteractions'],'id');return _0x1b78b7[_0x0d29('0x4e')](_0x1aadcf)[_0x0d29('0x15')](function(){for(var _0x4691c7=0x0;_0x4691c7<_0x1aadcf['length'];_0x4691c7+=0x1){_0x30e109[_0x0d29('0x4c')](_0x0d29('0x4f'),{'SmsInteractionId':Number(_0x1aadcf[_0x4691c7]),'UserId':Number(_0x1b78b7['id'])});}});}})[_0x0d29('0x15')](function(){if(_0x5856df==='leave'){var _0x5f09d2=_[_0x0d29('0x49')](_0x1b78b7[_0x0d29('0x50')],'id');return _0x1b78b7['removeOpenchannelInteractions'](_0x5f09d2)[_0x0d29('0x15')](function(){for(var _0x499e6a=0x0;_0x499e6a<_0x5f09d2[_0x0d29('0x1c')];_0x499e6a+=0x1){_0x30e109[_0x0d29('0x4c')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x5f09d2[_0x499e6a]),'UserId':Number(_0x1b78b7['id'])});}});}})[_0x0d29('0x15')](function(){if(_0x5856df===_0x0d29('0x45')){var _0x1ec7d2=_['map'](_0x1b78b7[_0x0d29('0x51')],'id');return _0x1b78b7['removeWhatsappInteractions'](_0x1ec7d2)[_0x0d29('0x15')](function(){for(var _0x31dbed=0x0;_0x31dbed<_0x1ec7d2[_0x0d29('0x1c')];_0x31dbed+=0x1){_0x30e109[_0x0d29('0x4c')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x1ec7d2[_0x31dbed]),'UserId':Number(_0x1b78b7['id'])});}});}})[_0x0d29('0x52')](function(_0x576dcb){_0xb9fffc[_0x0d29('0x53')](_0x576dcb);});}}function onDisconnect(_0x412f6c,_0x12caa5){joinOrLeave(_0x412f6c,_0x0d29('0x45'),_0x12caa5);}function onConnect(_0x58dd19){joinOrLeave(_0x58dd19,'join');}exports['default']=function(_0x5bc895){_0x5bc895['on'](_0x0d29('0x54'),function(_0x3e7f03){_0x3e7f03[_0x0d29('0x55')](0x0);_0x3e7f03[_0x0d29('0x56')]=_0x3e7f03[_0x0d29('0x57')][_0x0d29('0x54')][_0x0d29('0x58')]+':'+_0x3e7f03['request'][_0x0d29('0x54')][_0x0d29('0x59')];_0x3e7f03[_0x0d29('0x5a')]=new Date();_0x3e7f03['log']=function(_0x2362c9){console[_0x0d29('0x53')](_0x0d29('0x5b')+_0x3e7f03[_0x0d29('0x5c')][_0x0d29('0x5')]+'['+_0x3e7f03[_0x0d29('0x56')]+']',_0x2362c9);};_0x3e7f03['on'](_0x0d29('0x5d'),function(){onDisconnect(_0x3e7f03,_0x5bc895);_0x3e7f03['log'](_0x0d29('0x5e'));});onConnect(_0x3e7f03);_0x3e7f03['log'](_0x0d29('0x5f'));});};