Built motion from commit bbec7235.|2.6.20
[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 _0x1189=['type','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','telephone','format','%s:queue:%s','length','user:%s','query','find','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:outbound','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','Trunk','Campaign','voice:inbound','FaxQueues','OpenchannelQueue','WhatsappQueues','WhatsappQueue','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','fax','sms','openchannel','telephone:%s','trunk:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','user_has_mail_interactions:remove','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','util','bluebird','../mysqldb','name','Agents','User','role','agent'];(function(_0x8a0496,_0x382fd9){var _0x43c918=function(_0x590135){while(--_0x590135){_0x8a0496['push'](_0x8a0496['shift']());}};_0x43c918(++_0x382fd9);}(_0x1189,0x17f));var _0x9118=function(_0x3eb450,_0x592b0a){_0x3eb450=_0x3eb450-0x0;var _0x2c4cfd=_0x1189[_0x3eb450];return _0x2c4cfd;};'use strict';var _=require(_0x9118('0x0'));var util=require(_0x9118('0x1'));var BPromise=require(_0x9118('0x2'));var db=require(_0x9118('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x9118('0x4')],'include':[{'as':_0x9118('0x5'),'model':db[_0x9118('0x6')],'attributes':['id',_0x9118('0x4'),_0x9118('0x7')],'raw':!![],'where':{'role':_0x9118('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x9118('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x9118('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x9118('0x4')],'where':{'role':_0x9118('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x9118('0x4'),_0x9118('0x9')],'where':{'type':_0x9118('0xa')}};function getAssociatedResources(_0x5cfd42,_0x3de6a2,_0x227eea){return db[_0x9118('0xb')][_0x9118('0xc')]({'where':{'name':_0x5cfd42,'userProfileId':_0x3de6a2},'raw':!![]})[_0x9118('0xd')](function(_0x319690){if(_0x319690){if(_0x319690[_0x9118('0xe')]){switch(_0x5cfd42){case'VoiceQueues':case _0x9118('0xf'):case'FaxQueues':case'SmsQueues':case _0x9118('0x10'):case _0x9118('0x11'):case'WhatsappQueues':return db[_0x227eea][_0x9118('0x12')](queryQueues);case _0x9118('0x13'):return db[_0x227eea][_0x9118('0x12')](queryTelephones);case _0x9118('0x14'):return db[_0x227eea][_0x9118('0x12')](queryTrunks);case _0x9118('0x15'):return db[_0x227eea][_0x9118('0x12')](queryCampaigns);}}else{return db[_0x9118('0x16')][_0x9118('0x12')]({'attributes':[_0x9118('0x17')],'where':{'sectionId':_0x319690['id']},'raw':!![]})[_0x9118('0xd')](function(_0x48e13a){if(_0x48e13a){var _0x5c403d={'where':{'id':_[_0x9118('0x18')](_0x48e13a,'resourceId')},'raw':!![]};switch(_0x227eea){case _0x9118('0x6'):_0x5c403d[_0x9118('0x19')][_0x9118('0x7')]=_0x9118('0x1a');break;case'Campaign':_0x5c403d[_0x9118('0x19')]['type']=_0x9118('0xa');break;}return db[_0x227eea]['findAll'](_0x5c403d);}else{return[];}});}}else{return[];}})[_0x9118('0xd')](function(_0x3f30a0){return _0x3f30a0;});}function joinOrLeaveQueues(_0x4d4826,_0x2763a3,_0x1e133b,_0x2a3b29){_0x4d4826[_0x2763a3](util[_0x9118('0x1b')](_0x9118('0x1c'),_0x1e133b,_0x2a3b29['name']));if(_0x2a3b29[_0x9118('0x5')]){for(var _0x178b01=0x0;_0x178b01<_0x2a3b29[_0x9118('0x5')][_0x9118('0x1d')];_0x178b01+=0x1){_0x4d4826[_0x2763a3](util[_0x9118('0x1b')](_0x9118('0x1e'),_0x2a3b29[_0x9118('0x5')][_0x178b01][_0x9118('0x4')]));}}}function joinOrLeave(_0x3d77de,_0x47177b,_0x5613dc){var _0x2f338e;if(_0x3d77de['handshake'][_0x9118('0x1f')]['id']){db[_0x9118('0x6')][_0x9118('0x20')]({'attributes':['id','name','role',_0x9118('0x21')],'where':{'id':_0x3d77de[_0x9118('0x22')]['query']['id']},'include':[{'model':db[_0x9118('0x23')],'as':_0x9118('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x9118('0x25')],'as':_0x9118('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x9118('0x27')],'as':_0x9118('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x9118('0x29')],'as':_0x9118('0x2a'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x9118('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x9118('0x2c')],'as':_0x9118('0x2d'),'attributes':['id'],'raw':!![]}]})[_0x9118('0xd')](function(_0x2f72bb){if(_0x2f72bb){_0x2f338e=_0x2f72bb;_0x3d77de[_0x47177b](util[_0x9118('0x1b')](_0x9118('0x1e'),_0x2f72bb[_0x9118('0x4')]));var _0x57c5d2=[];switch(_0x2f72bb[_0x9118('0x7')]){case _0x9118('0x2e'):_0x3d77de[_0x47177b]('voice:inbound');_0x3d77de[_0x47177b](_0x9118('0x2f'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues['include'];}_0x57c5d2[_0x9118('0x30')](db[_0x9118('0x31')][_0x9118('0x12')](queryQueues));_0x57c5d2[_0x9118('0x30')](db[_0x9118('0x32')][_0x9118('0x12')](queryQueues));_0x57c5d2[_0x9118('0x30')](db[_0x9118('0x33')]['findAll'](queryQueues));_0x57c5d2[_0x9118('0x30')](db[_0x9118('0x34')][_0x9118('0x12')](queryQueues));_0x57c5d2['push'](db[_0x9118('0x35')][_0x9118('0x12')](queryQueues));_0x57c5d2[_0x9118('0x30')](db['OpenchannelQueue'][_0x9118('0x12')](queryQueues));_0x57c5d2['push'](db['WhatsappQueue'][_0x9118('0x12')](queryQueues));_0x57c5d2['push'](db[_0x9118('0x6')][_0x9118('0x12')](queryTelephones));_0x57c5d2[_0x9118('0x30')](db[_0x9118('0x36')][_0x9118('0x12')](queryTrunks));_0x57c5d2[_0x9118('0x30')](db[_0x9118('0x37')]['findAll'](queryCampaigns));_0x57c5d2['push'](db[_0x9118('0x6')][_0x9118('0x12')](queryAgents));break;case'user':_0x3d77de[_0x47177b](_0x9118('0x38'));_0x3d77de[_0x47177b](_0x9118('0x2f'));_0x57c5d2[_0x9118('0x30')](getAssociatedResources('VoiceQueues',_0x2f72bb[_0x9118('0x21')],_0x9118('0x31')));_0x57c5d2[_0x9118('0x30')](getAssociatedResources(_0x9118('0xf'),_0x2f72bb[_0x9118('0x21')],_0x9118('0x32')));_0x57c5d2[_0x9118('0x30')](getAssociatedResources(_0x9118('0x39'),_0x2f72bb['userProfileId'],_0x9118('0x33')));_0x57c5d2['push'](getAssociatedResources('SmsQueues',_0x2f72bb[_0x9118('0x21')],_0x9118('0x34')));_0x57c5d2[_0x9118('0x30')](getAssociatedResources(_0x9118('0x10'),_0x2f72bb[_0x9118('0x21')],'MailQueue'));_0x57c5d2['push'](getAssociatedResources('OpenchannelQueues',_0x2f72bb['userProfileId'],_0x9118('0x3a')));_0x57c5d2['push'](getAssociatedResources(_0x9118('0x3b'),_0x2f72bb[_0x9118('0x21')],_0x9118('0x3c')));_0x57c5d2['push'](getAssociatedResources(_0x9118('0x13'),_0x2f72bb[_0x9118('0x21')],'User'));_0x57c5d2['push'](getAssociatedResources(_0x9118('0x14'),_0x2f72bb[_0x9118('0x21')],'Trunk'));_0x57c5d2[_0x9118('0x30')](getAssociatedResources(_0x9118('0x15'),_0x2f72bb['userProfileId'],_0x9118('0x37')));_0x57c5d2[_0x9118('0x30')](db[_0x9118('0x6')][_0x9118('0x12')](queryAgents));break;case'agent':_0x3d77de[_0x47177b](_0x9118('0x38'));_0x3d77de[_0x47177b](_0x9118('0x2f'));_0x57c5d2[_0x9118('0x30')](_0x2f72bb['getVoiceQueues']({'attributes':['id',_0x9118('0x4')]}));_0x57c5d2[_0x9118('0x30')](_0x2f72bb[_0x9118('0x3d')]({'attributes':['id','name']}));_0x57c5d2[_0x9118('0x30')](_0x2f72bb[_0x9118('0x3e')]({'attributes':['id',_0x9118('0x4')]}));_0x57c5d2[_0x9118('0x30')](_0x2f72bb[_0x9118('0x3f')]({'attributes':['id',_0x9118('0x4')]}));_0x57c5d2['push'](_0x2f72bb[_0x9118('0x40')]({'attributes':['id',_0x9118('0x4')]}));_0x57c5d2[_0x9118('0x30')](_0x2f72bb[_0x9118('0x41')]({'attributes':['id','name']}));_0x57c5d2[_0x9118('0x30')](_0x2f72bb[_0x9118('0x42')]({'attributes':['id',_0x9118('0x4')]}));break;}return BPromise[_0x9118('0x43')](_0x57c5d2);}})[_0x9118('0xd')](function(_0x2475a9){if(_0x2475a9&&_0x2475a9[_0x9118('0x1d')]){for(var _0x1fc9b5=0x0;_0x1fc9b5<_0x2475a9['length'];_0x1fc9b5+=0x1){for(var _0x1b6f40=0x0;_0x1b6f40<_0x2475a9[_0x1fc9b5][_0x9118('0x1d')];_0x1b6f40+=0x1){switch(_0x1fc9b5){case 0x0:joinOrLeaveQueues(_0x3d77de,_0x47177b,_0x9118('0x44'),_0x2475a9[_0x1fc9b5][_0x1b6f40]);break;case 0x1:joinOrLeaveQueues(_0x3d77de,_0x47177b,'chat',_0x2475a9[_0x1fc9b5][_0x1b6f40]);break;case 0x2:joinOrLeaveQueues(_0x3d77de,_0x47177b,_0x9118('0x45'),_0x2475a9[_0x1fc9b5][_0x1b6f40]);break;case 0x3:joinOrLeaveQueues(_0x3d77de,_0x47177b,_0x9118('0x46'),_0x2475a9[_0x1fc9b5][_0x1b6f40]);break;case 0x4:joinOrLeaveQueues(_0x3d77de,_0x47177b,'mail',_0x2475a9[_0x1fc9b5][_0x1b6f40]);break;case 0x5:joinOrLeaveQueues(_0x3d77de,_0x47177b,_0x9118('0x47'),_0x2475a9[_0x1fc9b5][_0x1b6f40]);break;case 0x6:joinOrLeaveQueues(_0x3d77de,_0x47177b,'whatsapp',_0x2475a9[_0x1fc9b5][_0x1b6f40]);break;case 0x7:if(_0x2f338e['role']!=='agent')_0x3d77de[_0x47177b](util[_0x9118('0x1b')](_0x9118('0x48'),_0x2475a9[_0x1fc9b5][_0x1b6f40][_0x9118('0x4')]));break;case 0x8:if(_0x2f338e[_0x9118('0x7')]!==_0x9118('0x8'))_0x3d77de[_0x47177b](util[_0x9118('0x1b')](_0x9118('0x49'),_0x2475a9[_0x1fc9b5][_0x1b6f40]['name']));break;case 0x9:if(_0x2f338e['role']!==_0x9118('0x8'))_0x3d77de[_0x47177b](util[_0x9118('0x1b')]('campaign:%s:%s',_0x2475a9[_0x1fc9b5][_0x1b6f40]['type'],_0x2475a9[_0x1fc9b5][_0x1b6f40][_0x9118('0x4')]));break;case 0xa:_0x3d77de[_0x47177b](util['format']('user:%s',_0x2475a9[_0x1fc9b5][_0x1b6f40][_0x9118('0x4')]));break;}}}}})[_0x9118('0xd')](function(){if(_0x47177b===_0x9118('0x4a')){var _0x4018b8=_[_0x9118('0x18')](_0x2f338e[_0x9118('0x24')],'id');return _0x2f338e[_0x9118('0x4b')](_0x4018b8)[_0x9118('0xd')](function(){for(var _0x170ff5=0x0;_0x170ff5<_0x4018b8['length'];_0x170ff5+=0x1){_0x5613dc[_0x9118('0x4c')](_0x9118('0x4d'),{'ChatInteractionId':Number(_0x4018b8[_0x170ff5]),'UserId':Number(_0x2f338e['id'])});}});}})[_0x9118('0xd')](function(){if(_0x47177b==='leave'){var _0x52ca84=_[_0x9118('0x18')](_0x2f338e[_0x9118('0x26')],'id');return _0x2f338e['removeMailInteractions'](_0x52ca84)[_0x9118('0xd')](function(){for(var _0x3d8692=0x0;_0x3d8692<_0x52ca84['length'];_0x3d8692+=0x1){_0x5613dc[_0x9118('0x4c')](_0x9118('0x4e'),{'MailInteractionId':Number(_0x52ca84[_0x3d8692]),'UserId':Number(_0x2f338e['id'])});}});}})[_0x9118('0xd')](function(){if(_0x47177b===_0x9118('0x4a')){var _0x2a19e4=_[_0x9118('0x18')](_0x2f338e[_0x9118('0x28')],'id');return _0x2f338e['removeFaxInteractions'](_0x2a19e4)[_0x9118('0xd')](function(){for(var _0x115322=0x0;_0x115322<_0x2a19e4['length'];_0x115322+=0x1){_0x5613dc[_0x9118('0x4c')](_0x9118('0x4f'),{'FaxInteractionId':Number(_0x2a19e4[_0x115322]),'UserId':Number(_0x2f338e['id'])});}});}})[_0x9118('0xd')](function(){if(_0x47177b===_0x9118('0x4a')){var _0x38ce4d=_['map'](_0x2f338e[_0x9118('0x2a')],'id');return _0x2f338e[_0x9118('0x50')](_0x38ce4d)[_0x9118('0xd')](function(){for(var _0x2e7adc=0x0;_0x2e7adc<_0x38ce4d[_0x9118('0x1d')];_0x2e7adc+=0x1){_0x5613dc['emit'](_0x9118('0x51'),{'SmsInteractionId':Number(_0x38ce4d[_0x2e7adc]),'UserId':Number(_0x2f338e['id'])});}});}})[_0x9118('0xd')](function(){if(_0x47177b===_0x9118('0x4a')){var _0x418f27=_['map'](_0x2f338e[_0x9118('0x2b')],'id');return _0x2f338e[_0x9118('0x52')](_0x418f27)[_0x9118('0xd')](function(){for(var _0x337513=0x0;_0x337513<_0x418f27[_0x9118('0x1d')];_0x337513+=0x1){_0x5613dc[_0x9118('0x4c')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x418f27[_0x337513]),'UserId':Number(_0x2f338e['id'])});}});}})[_0x9118('0xd')](function(){if(_0x47177b===_0x9118('0x4a')){var _0x2767b6=_[_0x9118('0x18')](_0x2f338e[_0x9118('0x2d')],'id');return _0x2f338e[_0x9118('0x53')](_0x2767b6)[_0x9118('0xd')](function(){for(var _0x3ce059=0x0;_0x3ce059<_0x2767b6[_0x9118('0x1d')];_0x3ce059+=0x1){_0x5613dc[_0x9118('0x4c')](_0x9118('0x54'),{'WhatsappInteractionId':Number(_0x2767b6[_0x3ce059]),'UserId':Number(_0x2f338e['id'])});}});}})[_0x9118('0x55')](function(_0x5b7cde){_0x3d77de['log'](_0x5b7cde);});}}function onDisconnect(_0x280bdb,_0x3809d4){joinOrLeave(_0x280bdb,_0x9118('0x4a'),_0x3809d4);}function onConnect(_0x54641f){joinOrLeave(_0x54641f,'join');}exports['default']=function(_0x41271d){_0x41271d['on'](_0x9118('0x56'),function(_0x2ab6d6){_0x2ab6d6[_0x9118('0x57')](0x0);_0x2ab6d6[_0x9118('0x58')]=_0x2ab6d6[_0x9118('0x59')][_0x9118('0x56')][_0x9118('0x5a')]+':'+_0x2ab6d6[_0x9118('0x59')]['connection'][_0x9118('0x5b')];_0x2ab6d6[_0x9118('0x5c')]=new Date();_0x2ab6d6[_0x9118('0x5d')]=function(_0x57a3ec){console[_0x9118('0x5d')](_0x9118('0x5e')+_0x2ab6d6[_0x9118('0x5f')][_0x9118('0x4')]+'['+_0x2ab6d6[_0x9118('0x58')]+']',_0x57a3ec);};_0x2ab6d6['on'](_0x9118('0x60'),function(){onDisconnect(_0x2ab6d6,_0x41271d);_0x2ab6d6[_0x9118('0x5d')](_0x9118('0x61'));});onConnect(_0x2ab6d6);_0x2ab6d6[_0x9118('0x5d')]('CONNECTED');});};