Built motion from commit 85328c08.|2.5.50
[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 _0xf567=['UserProfileResource','resourceId','map','where','Campaign','format','Agents','length','user:%s','handshake','query','find','ChatInteractions','MailInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','admin','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','user','voice:inbound','userProfileId','WhatsappQueue','Trunk','voice:outbound','getChatQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','all','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','emit','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','lodash','util','bluebird','./environment','name','User','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns'];(function(_0x206f86,_0x279fcc){var _0x46bbf4=function(_0x6210b3){while(--_0x6210b3){_0x206f86['push'](_0x206f86['shift']());}};_0x46bbf4(++_0x279fcc);}(_0xf567,0x118));var _0x7f56=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xf567[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x7f56('0x0'));var util=require(_0x7f56('0x1'));var BPromise=require(_0x7f56('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x7f56('0x3'));var queryQueues={'attributes':['id',_0x7f56('0x4')],'include':[{'as':'Agents','model':db[_0x7f56('0x5')],'attributes':['id',_0x7f56('0x4'),_0x7f56('0x6')],'raw':!![],'where':{'role':_0x7f56('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x7f56('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x7f56('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x7f56('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x7f56('0x4'),_0x7f56('0x9')],'where':{'type':_0x7f56('0xa')}};function getAssociatedResources(_0x3927b7,_0x3ac422,_0x3ad7d5){return db[_0x7f56('0xb')][_0x7f56('0xc')]({'where':{'name':_0x3927b7,'userProfileId':_0x3ac422},'raw':!![]})[_0x7f56('0xd')](function(_0xe00be5){if(_0xe00be5){if(_0xe00be5[_0x7f56('0xe')]){switch(_0x3927b7){case _0x7f56('0xf'):case _0x7f56('0x10'):case _0x7f56('0x11'):case _0x7f56('0x12'):case _0x7f56('0x13'):case _0x7f56('0x14'):case _0x7f56('0x15'):return db[_0x3ad7d5][_0x7f56('0x16')](queryQueues);case _0x7f56('0x17'):return db[_0x3ad7d5][_0x7f56('0x16')](queryTelephones);case _0x7f56('0x18'):return db[_0x3ad7d5]['findAll'](queryTrunks);case _0x7f56('0x19'):return db[_0x3ad7d5][_0x7f56('0x16')](queryCampaigns);}}else{return db[_0x7f56('0x1a')]['findAll']({'attributes':[_0x7f56('0x1b')],'where':{'sectionId':_0xe00be5['id']},'raw':!![]})[_0x7f56('0xd')](function(_0x52e072){if(_0x52e072){var _0x5f9e3c={'where':{'id':_[_0x7f56('0x1c')](_0x52e072,'resourceId')},'raw':!![]};switch(_0x3ad7d5){case'User':_0x5f9e3c[_0x7f56('0x1d')]['role']=_0x7f56('0x8');break;case _0x7f56('0x1e'):_0x5f9e3c['where'][_0x7f56('0x9')]=_0x7f56('0xa');break;}return db[_0x3ad7d5][_0x7f56('0x16')](_0x5f9e3c);}else{return[];}});}}else{return[];}})[_0x7f56('0xd')](function(_0x3f609e){return _0x3f609e;});}function joinOrLeaveQueues(_0x24fe45,_0x4b1421,_0x32aa49,_0x48b56a){_0x24fe45[_0x4b1421](util[_0x7f56('0x1f')]('%s:queue:%s',_0x32aa49,_0x48b56a[_0x7f56('0x4')]));if(_0x48b56a[_0x7f56('0x20')]){for(var _0x289207=0x0;_0x289207<_0x48b56a[_0x7f56('0x20')][_0x7f56('0x21')];_0x289207+=0x1){_0x24fe45[_0x4b1421](util[_0x7f56('0x1f')](_0x7f56('0x22'),_0x48b56a[_0x7f56('0x20')][_0x289207][_0x7f56('0x4')]));}}}function joinOrLeave(_0x36151d,_0x52a902,_0x19bc9f){var _0xe8f270;if(_0x36151d[_0x7f56('0x23')][_0x7f56('0x24')]['id']){db[_0x7f56('0x5')][_0x7f56('0x25')]({'attributes':['id',_0x7f56('0x4'),'role','userProfileId'],'where':{'id':_0x36151d['handshake'][_0x7f56('0x24')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x7f56('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x7f56('0x27')],'as':_0x7f56('0x28'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x7f56('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x7f56('0x2a')],'as':_0x7f56('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x7f56('0x2c')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x7f56('0x2d')],'as':_0x7f56('0x2e'),'attributes':['id'],'raw':!![]}]})[_0x7f56('0xd')](function(_0x57d1db){if(_0x57d1db){_0xe8f270=_0x57d1db;_0x36151d[_0x52a902](util[_0x7f56('0x1f')](_0x7f56('0x22'),_0x57d1db['name']));var _0x5823bb=[];switch(_0x57d1db['role']){case _0x7f56('0x2f'):_0x36151d[_0x52a902]('voice:inbound');_0x36151d[_0x52a902]('voice:outbound');if(queryQueues[_0x7f56('0x30')]('include')){delete queryQueues[_0x7f56('0x31')];}_0x5823bb[_0x7f56('0x32')](db[_0x7f56('0x33')]['findAll'](queryQueues));_0x5823bb[_0x7f56('0x32')](db[_0x7f56('0x34')][_0x7f56('0x16')](queryQueues));_0x5823bb['push'](db[_0x7f56('0x35')][_0x7f56('0x16')](queryQueues));_0x5823bb[_0x7f56('0x32')](db[_0x7f56('0x36')][_0x7f56('0x16')](queryQueues));_0x5823bb[_0x7f56('0x32')](db[_0x7f56('0x37')][_0x7f56('0x16')](queryQueues));_0x5823bb[_0x7f56('0x32')](db[_0x7f56('0x38')][_0x7f56('0x16')](queryQueues));_0x5823bb[_0x7f56('0x32')](db['WhatsappQueue']['findAll'](queryQueues));_0x5823bb[_0x7f56('0x32')](db['User'][_0x7f56('0x16')](queryTelephones));_0x5823bb[_0x7f56('0x32')](db['Trunk'][_0x7f56('0x16')](queryTrunks));_0x5823bb[_0x7f56('0x32')](db['Campaign'][_0x7f56('0x16')](queryCampaigns));_0x5823bb[_0x7f56('0x32')](db['User'][_0x7f56('0x16')](queryAgents));break;case _0x7f56('0x39'):_0x36151d[_0x52a902](_0x7f56('0x3a'));_0x36151d[_0x52a902]('voice:outbound');_0x5823bb[_0x7f56('0x32')](getAssociatedResources('VoiceQueues',_0x57d1db[_0x7f56('0x3b')],'VoiceQueue'));_0x5823bb[_0x7f56('0x32')](getAssociatedResources(_0x7f56('0x10'),_0x57d1db['userProfileId'],'ChatQueue'));_0x5823bb['push'](getAssociatedResources(_0x7f56('0x11'),_0x57d1db[_0x7f56('0x3b')],'FaxQueue'));_0x5823bb[_0x7f56('0x32')](getAssociatedResources(_0x7f56('0x12'),_0x57d1db[_0x7f56('0x3b')],_0x7f56('0x36')));_0x5823bb[_0x7f56('0x32')](getAssociatedResources(_0x7f56('0x13'),_0x57d1db[_0x7f56('0x3b')],_0x7f56('0x37')));_0x5823bb[_0x7f56('0x32')](getAssociatedResources(_0x7f56('0x14'),_0x57d1db[_0x7f56('0x3b')],_0x7f56('0x38')));_0x5823bb[_0x7f56('0x32')](getAssociatedResources(_0x7f56('0x15'),_0x57d1db[_0x7f56('0x3b')],_0x7f56('0x3c')));_0x5823bb[_0x7f56('0x32')](getAssociatedResources(_0x7f56('0x17'),_0x57d1db[_0x7f56('0x3b')],_0x7f56('0x5')));_0x5823bb[_0x7f56('0x32')](getAssociatedResources(_0x7f56('0x18'),_0x57d1db['userProfileId'],_0x7f56('0x3d')));_0x5823bb['push'](getAssociatedResources('IvrCampaigns',_0x57d1db[_0x7f56('0x3b')],_0x7f56('0x1e')));_0x5823bb[_0x7f56('0x32')](db[_0x7f56('0x5')][_0x7f56('0x16')](queryAgents));break;case _0x7f56('0x7'):_0x36151d[_0x52a902]('voice:inbound');_0x36151d[_0x52a902](_0x7f56('0x3e'));_0x5823bb[_0x7f56('0x32')](_0x57d1db['getVoiceQueues']({'attributes':['id',_0x7f56('0x4')]}));_0x5823bb[_0x7f56('0x32')](_0x57d1db[_0x7f56('0x3f')]({'attributes':['id',_0x7f56('0x4')]}));_0x5823bb[_0x7f56('0x32')](_0x57d1db[_0x7f56('0x40')]({'attributes':['id',_0x7f56('0x4')]}));_0x5823bb[_0x7f56('0x32')](_0x57d1db[_0x7f56('0x41')]({'attributes':['id',_0x7f56('0x4')]}));_0x5823bb[_0x7f56('0x32')](_0x57d1db['getMailQueues']({'attributes':['id','name']}));_0x5823bb[_0x7f56('0x32')](_0x57d1db[_0x7f56('0x42')]({'attributes':['id','name']}));_0x5823bb[_0x7f56('0x32')](_0x57d1db['getWhatsappQueues']({'attributes':['id',_0x7f56('0x4')]}));break;}return BPromise[_0x7f56('0x43')](_0x5823bb);}})[_0x7f56('0xd')](function(_0x59db0d){if(_0x59db0d&&_0x59db0d[_0x7f56('0x21')]){for(var _0x59926e=0x0;_0x59926e<_0x59db0d['length'];_0x59926e+=0x1){for(var _0x3eed7c=0x0;_0x3eed7c<_0x59db0d[_0x59926e][_0x7f56('0x21')];_0x3eed7c+=0x1){switch(_0x59926e){case 0x0:joinOrLeaveQueues(_0x36151d,_0x52a902,'voice',_0x59db0d[_0x59926e][_0x3eed7c]);break;case 0x1:joinOrLeaveQueues(_0x36151d,_0x52a902,_0x7f56('0x44'),_0x59db0d[_0x59926e][_0x3eed7c]);break;case 0x2:joinOrLeaveQueues(_0x36151d,_0x52a902,'fax',_0x59db0d[_0x59926e][_0x3eed7c]);break;case 0x3:joinOrLeaveQueues(_0x36151d,_0x52a902,_0x7f56('0x45'),_0x59db0d[_0x59926e][_0x3eed7c]);break;case 0x4:joinOrLeaveQueues(_0x36151d,_0x52a902,_0x7f56('0x46'),_0x59db0d[_0x59926e][_0x3eed7c]);break;case 0x5:joinOrLeaveQueues(_0x36151d,_0x52a902,_0x7f56('0x47'),_0x59db0d[_0x59926e][_0x3eed7c]);break;case 0x6:joinOrLeaveQueues(_0x36151d,_0x52a902,_0x7f56('0x48'),_0x59db0d[_0x59926e][_0x3eed7c]);break;case 0x7:if(_0xe8f270['role']!==_0x7f56('0x7'))_0x36151d[_0x52a902](util[_0x7f56('0x1f')](_0x7f56('0x49'),_0x59db0d[_0x59926e][_0x3eed7c][_0x7f56('0x4')]));break;case 0x8:if(_0xe8f270[_0x7f56('0x6')]!==_0x7f56('0x7'))_0x36151d[_0x52a902](util[_0x7f56('0x1f')](_0x7f56('0x4a'),_0x59db0d[_0x59926e][_0x3eed7c][_0x7f56('0x4')]));break;case 0x9:if(_0xe8f270['role']!=='agent')_0x36151d[_0x52a902](util[_0x7f56('0x1f')]('campaign:%s:%s',_0x59db0d[_0x59926e][_0x3eed7c][_0x7f56('0x9')],_0x59db0d[_0x59926e][_0x3eed7c][_0x7f56('0x4')]));break;case 0xa:_0x36151d[_0x52a902](util['format'](_0x7f56('0x22'),_0x59db0d[_0x59926e][_0x3eed7c][_0x7f56('0x4')]));break;}}}}})['then'](function(){if(_0x52a902===_0x7f56('0x4b')){var _0x1efa1b=_[_0x7f56('0x1c')](_0xe8f270['ChatInteractions'],'id');return _0xe8f270[_0x7f56('0x4c')](_0x1efa1b)[_0x7f56('0xd')](function(){for(var _0x39b864=0x0;_0x39b864<_0x1efa1b[_0x7f56('0x21')];_0x39b864+=0x1){_0x19bc9f['emit'](_0x7f56('0x4d'),{'ChatInteractionId':Number(_0x1efa1b[_0x39b864]),'UserId':Number(_0xe8f270['id'])});}});}})['then'](function(){if(_0x52a902===_0x7f56('0x4b')){var _0x7e1323=_[_0x7f56('0x1c')](_0xe8f270[_0x7f56('0x28')],'id');return _0xe8f270[_0x7f56('0x4e')](_0x7e1323)[_0x7f56('0xd')](function(){for(var _0x14acdc=0x0;_0x14acdc<_0x7e1323[_0x7f56('0x21')];_0x14acdc+=0x1){_0x19bc9f[_0x7f56('0x4f')](_0x7f56('0x50'),{'MailInteractionId':Number(_0x7e1323[_0x14acdc]),'UserId':Number(_0xe8f270['id'])});}});}})[_0x7f56('0xd')](function(){if(_0x52a902===_0x7f56('0x4b')){var _0x36bf14=_[_0x7f56('0x1c')](_0xe8f270[_0x7f56('0x29')],'id');return _0xe8f270[_0x7f56('0x51')](_0x36bf14)[_0x7f56('0xd')](function(){for(var _0x42f6d8=0x0;_0x42f6d8<_0x36bf14['length'];_0x42f6d8+=0x1){_0x19bc9f[_0x7f56('0x4f')](_0x7f56('0x52'),{'FaxInteractionId':Number(_0x36bf14[_0x42f6d8]),'UserId':Number(_0xe8f270['id'])});}});}})['then'](function(){if(_0x52a902===_0x7f56('0x4b')){var _0x51b780=_[_0x7f56('0x1c')](_0xe8f270['SmsInteractions'],'id');return _0xe8f270[_0x7f56('0x53')](_0x51b780)['then'](function(){for(var _0x36d8a0=0x0;_0x36d8a0<_0x51b780[_0x7f56('0x21')];_0x36d8a0+=0x1){_0x19bc9f[_0x7f56('0x4f')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x51b780[_0x36d8a0]),'UserId':Number(_0xe8f270['id'])});}});}})[_0x7f56('0xd')](function(){if(_0x52a902===_0x7f56('0x4b')){var _0x2a58d2=_[_0x7f56('0x1c')](_0xe8f270[_0x7f56('0x54')],'id');return _0xe8f270[_0x7f56('0x55')](_0x2a58d2)[_0x7f56('0xd')](function(){for(var _0x61201d=0x0;_0x61201d<_0x2a58d2[_0x7f56('0x21')];_0x61201d+=0x1){_0x19bc9f[_0x7f56('0x4f')](_0x7f56('0x56'),{'OpenchannelInteractionId':Number(_0x2a58d2[_0x61201d]),'UserId':Number(_0xe8f270['id'])});}});}})[_0x7f56('0xd')](function(){if(_0x52a902===_0x7f56('0x4b')){var _0x3d3e48=_[_0x7f56('0x1c')](_0xe8f270[_0x7f56('0x2e')],'id');return _0xe8f270[_0x7f56('0x57')](_0x3d3e48)[_0x7f56('0xd')](function(){for(var _0x172f6a=0x0;_0x172f6a<_0x3d3e48[_0x7f56('0x21')];_0x172f6a+=0x1){_0x19bc9f[_0x7f56('0x4f')](_0x7f56('0x58'),{'WhatsappInteractionId':Number(_0x3d3e48[_0x172f6a]),'UserId':Number(_0xe8f270['id'])});}});}})[_0x7f56('0x59')](function(_0x36690d){_0x36151d[_0x7f56('0x5a')](_0x36690d);});}}function onDisconnect(_0x887246,_0x3dd472){joinOrLeave(_0x887246,_0x7f56('0x4b'),_0x3dd472);}function onConnect(_0x27b96b){joinOrLeave(_0x27b96b,_0x7f56('0x5b'));}exports['default']=function(_0x5ba889){_0x5ba889['on'](_0x7f56('0x5c'),function(_0x855891){_0x855891[_0x7f56('0x5d')](0x0);_0x855891[_0x7f56('0x5e')]=_0x855891[_0x7f56('0x5f')][_0x7f56('0x5c')][_0x7f56('0x60')]+':'+_0x855891[_0x7f56('0x5f')]['connection'][_0x7f56('0x61')];_0x855891[_0x7f56('0x62')]=new Date();_0x855891['log']=function(_0x9b7462){console[_0x7f56('0x5a')](_0x7f56('0x63')+_0x855891[_0x7f56('0x64')][_0x7f56('0x4')]+'['+_0x855891[_0x7f56('0x5e')]+']',_0x9b7462);};_0x855891['on'](_0x7f56('0x65'),function(){onDisconnect(_0x855891,_0x5ba889);_0x855891[_0x7f56('0x5a')]('DISCONNECTED');});onConnect(_0x855891);_0x855891[_0x7f56('0x5a')]('CONNECTED');});};