Built motion from commit 2e4747fd.|2.6.7
[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 _0xb923=['WhatsappInteraction','WhatsappInteractions','format','voice:inbound','include','push','FaxQueue','SmsQueue','WhatsappQueue','Trunk','user','voice:outbound','userProfileId','VoiceQueue','ChatQueues','ChatQueue','SmsQueues','MailQueue','OpenchannelQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','telephone:%s','trunk:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','SocketIO\x20','nsp','DISCONNECTED','CONNECTED','lodash','util','bluebird','./environment','name','role','agent','telephone','ivr','findOne','then','autoAssociation','VoiceQueues','FaxQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','map','Campaign','where','type','%s:queue:%s','Agents','length','user:%s','handshake','query','User','find','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions'];(function(_0x1c5950,_0x49e128){var _0x2b720a=function(_0x4454f1){while(--_0x4454f1){_0x1c5950['push'](_0x1c5950['shift']());}};_0x2b720a(++_0x49e128);}(_0xb923,0xa2));var _0x3b92=function(_0x4a9abb,_0x3103cb){_0x4a9abb=_0x4a9abb-0x0;var _0x2c8490=_0xb923[_0x4a9abb];return _0x2c8490;};'use strict';var _=require(_0x3b92('0x0'));var util=require(_0x3b92('0x1'));var BPromise=require(_0x3b92('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x3b92('0x3'));var queryQueues={'attributes':['id',_0x3b92('0x4')],'include':[{'as':'Agents','model':db['User'],'attributes':['id','name',_0x3b92('0x5')],'raw':!![],'where':{'role':_0x3b92('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x3b92('0x4')],'where':{'role':_0x3b92('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x3b92('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x3b92('0x4')],'where':{'role':_0x3b92('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id','name','type'],'where':{'type':_0x3b92('0x8')}};function getAssociatedResources(_0x5976bf,_0x29a4eb,_0x43b28a){return db['UserProfileSection'][_0x3b92('0x9')]({'where':{'name':_0x5976bf,'userProfileId':_0x29a4eb},'raw':!![]})[_0x3b92('0xa')](function(_0x215039){if(_0x215039){if(_0x215039[_0x3b92('0xb')]){switch(_0x5976bf){case _0x3b92('0xc'):case'ChatQueues':case _0x3b92('0xd'):case'SmsQueues':case'MailQueues':case _0x3b92('0xe'):case _0x3b92('0xf'):return db[_0x43b28a][_0x3b92('0x10')](queryQueues);case _0x3b92('0x11'):return db[_0x43b28a]['findAll'](queryTelephones);case'Trunks':return db[_0x43b28a][_0x3b92('0x10')](queryTrunks);case'IvrCampaigns':return db[_0x43b28a]['findAll'](queryCampaigns);}}else{return db[_0x3b92('0x12')][_0x3b92('0x10')]({'attributes':[_0x3b92('0x13')],'where':{'sectionId':_0x215039['id']},'raw':!![]})[_0x3b92('0xa')](function(_0x38bcd7){if(_0x38bcd7){var _0x59bdfd={'where':{'id':_[_0x3b92('0x14')](_0x38bcd7,_0x3b92('0x13'))},'raw':!![]};switch(_0x43b28a){case'User':_0x59bdfd['where'][_0x3b92('0x5')]=_0x3b92('0x7');break;case _0x3b92('0x15'):_0x59bdfd[_0x3b92('0x16')][_0x3b92('0x17')]=_0x3b92('0x8');break;}return db[_0x43b28a][_0x3b92('0x10')](_0x59bdfd);}else{return[];}});}}else{return[];}})[_0x3b92('0xa')](function(_0x3689a0){return _0x3689a0;});}function joinOrLeaveQueues(_0x17225b,_0x316b82,_0xa82488,_0x1011a8){_0x17225b[_0x316b82](util['format'](_0x3b92('0x18'),_0xa82488,_0x1011a8[_0x3b92('0x4')]));if(_0x1011a8[_0x3b92('0x19')]){for(var _0x95e51c=0x0;_0x95e51c<_0x1011a8[_0x3b92('0x19')][_0x3b92('0x1a')];_0x95e51c+=0x1){_0x17225b[_0x316b82](util['format'](_0x3b92('0x1b'),_0x1011a8[_0x3b92('0x19')][_0x95e51c]['name']));}}}function joinOrLeave(_0x582dab,_0x51efee,_0x54ac98){var _0x450f2e;if(_0x582dab[_0x3b92('0x1c')][_0x3b92('0x1d')]['id']){db[_0x3b92('0x1e')][_0x3b92('0x1f')]({'attributes':['id',_0x3b92('0x4'),_0x3b92('0x5'),'userProfileId'],'where':{'id':_0x582dab[_0x3b92('0x1c')]['query']['id']},'include':[{'model':db[_0x3b92('0x20')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x3b92('0x21')],'as':_0x3b92('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x3b92('0x23')],'as':_0x3b92('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x3b92('0x25')],'as':_0x3b92('0x26'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x3b92('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x3b92('0x28')],'as':_0x3b92('0x29'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x4ac7b4){if(_0x4ac7b4){_0x450f2e=_0x4ac7b4;_0x582dab[_0x51efee](util[_0x3b92('0x2a')](_0x3b92('0x1b'),_0x4ac7b4['name']));var _0x5d35f8=[];switch(_0x4ac7b4[_0x3b92('0x5')]){case'admin':_0x582dab[_0x51efee](_0x3b92('0x2b'));_0x582dab[_0x51efee]('voice:outbound');if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0x3b92('0x2c')];}_0x5d35f8[_0x3b92('0x2d')](db['VoiceQueue'][_0x3b92('0x10')](queryQueues));_0x5d35f8[_0x3b92('0x2d')](db['ChatQueue'][_0x3b92('0x10')](queryQueues));_0x5d35f8[_0x3b92('0x2d')](db[_0x3b92('0x2e')]['findAll'](queryQueues));_0x5d35f8['push'](db[_0x3b92('0x2f')][_0x3b92('0x10')](queryQueues));_0x5d35f8[_0x3b92('0x2d')](db['MailQueue']['findAll'](queryQueues));_0x5d35f8[_0x3b92('0x2d')](db['OpenchannelQueue'][_0x3b92('0x10')](queryQueues));_0x5d35f8[_0x3b92('0x2d')](db[_0x3b92('0x30')][_0x3b92('0x10')](queryQueues));_0x5d35f8[_0x3b92('0x2d')](db[_0x3b92('0x1e')][_0x3b92('0x10')](queryTelephones));_0x5d35f8['push'](db[_0x3b92('0x31')][_0x3b92('0x10')](queryTrunks));_0x5d35f8[_0x3b92('0x2d')](db['Campaign'][_0x3b92('0x10')](queryCampaigns));_0x5d35f8[_0x3b92('0x2d')](db[_0x3b92('0x1e')][_0x3b92('0x10')](queryAgents));break;case _0x3b92('0x32'):_0x582dab[_0x51efee](_0x3b92('0x2b'));_0x582dab[_0x51efee](_0x3b92('0x33'));_0x5d35f8[_0x3b92('0x2d')](getAssociatedResources(_0x3b92('0xc'),_0x4ac7b4[_0x3b92('0x34')],_0x3b92('0x35')));_0x5d35f8[_0x3b92('0x2d')](getAssociatedResources(_0x3b92('0x36'),_0x4ac7b4[_0x3b92('0x34')],_0x3b92('0x37')));_0x5d35f8[_0x3b92('0x2d')](getAssociatedResources(_0x3b92('0xd'),_0x4ac7b4[_0x3b92('0x34')],_0x3b92('0x2e')));_0x5d35f8[_0x3b92('0x2d')](getAssociatedResources(_0x3b92('0x38'),_0x4ac7b4[_0x3b92('0x34')],_0x3b92('0x2f')));_0x5d35f8[_0x3b92('0x2d')](getAssociatedResources('MailQueues',_0x4ac7b4[_0x3b92('0x34')],_0x3b92('0x39')));_0x5d35f8['push'](getAssociatedResources(_0x3b92('0xe'),_0x4ac7b4[_0x3b92('0x34')],_0x3b92('0x3a')));_0x5d35f8[_0x3b92('0x2d')](getAssociatedResources(_0x3b92('0xf'),_0x4ac7b4[_0x3b92('0x34')],_0x3b92('0x30')));_0x5d35f8[_0x3b92('0x2d')](getAssociatedResources(_0x3b92('0x11'),_0x4ac7b4['userProfileId'],_0x3b92('0x1e')));_0x5d35f8[_0x3b92('0x2d')](getAssociatedResources('Trunks',_0x4ac7b4[_0x3b92('0x34')],'Trunk'));_0x5d35f8[_0x3b92('0x2d')](getAssociatedResources('IvrCampaigns',_0x4ac7b4[_0x3b92('0x34')],_0x3b92('0x15')));_0x5d35f8[_0x3b92('0x2d')](db[_0x3b92('0x1e')][_0x3b92('0x10')](queryAgents));break;case'agent':_0x582dab[_0x51efee](_0x3b92('0x2b'));_0x582dab[_0x51efee](_0x3b92('0x33'));_0x5d35f8[_0x3b92('0x2d')](_0x4ac7b4[_0x3b92('0x3b')]({'attributes':['id',_0x3b92('0x4')]}));_0x5d35f8[_0x3b92('0x2d')](_0x4ac7b4[_0x3b92('0x3c')]({'attributes':['id','name']}));_0x5d35f8[_0x3b92('0x2d')](_0x4ac7b4[_0x3b92('0x3d')]({'attributes':['id',_0x3b92('0x4')]}));_0x5d35f8['push'](_0x4ac7b4[_0x3b92('0x3e')]({'attributes':['id','name']}));_0x5d35f8[_0x3b92('0x2d')](_0x4ac7b4[_0x3b92('0x3f')]({'attributes':['id',_0x3b92('0x4')]}));_0x5d35f8[_0x3b92('0x2d')](_0x4ac7b4[_0x3b92('0x40')]({'attributes':['id','name']}));_0x5d35f8['push'](_0x4ac7b4[_0x3b92('0x41')]({'attributes':['id','name']}));break;}return BPromise[_0x3b92('0x42')](_0x5d35f8);}})['then'](function(_0x26dc8c){if(_0x26dc8c&&_0x26dc8c['length']){for(var _0x4355d7=0x0;_0x4355d7<_0x26dc8c[_0x3b92('0x1a')];_0x4355d7+=0x1){for(var _0x5e9cab=0x0;_0x5e9cab<_0x26dc8c[_0x4355d7][_0x3b92('0x1a')];_0x5e9cab+=0x1){switch(_0x4355d7){case 0x0:joinOrLeaveQueues(_0x582dab,_0x51efee,_0x3b92('0x43'),_0x26dc8c[_0x4355d7][_0x5e9cab]);break;case 0x1:joinOrLeaveQueues(_0x582dab,_0x51efee,_0x3b92('0x44'),_0x26dc8c[_0x4355d7][_0x5e9cab]);break;case 0x2:joinOrLeaveQueues(_0x582dab,_0x51efee,_0x3b92('0x45'),_0x26dc8c[_0x4355d7][_0x5e9cab]);break;case 0x3:joinOrLeaveQueues(_0x582dab,_0x51efee,_0x3b92('0x46'),_0x26dc8c[_0x4355d7][_0x5e9cab]);break;case 0x4:joinOrLeaveQueues(_0x582dab,_0x51efee,_0x3b92('0x47'),_0x26dc8c[_0x4355d7][_0x5e9cab]);break;case 0x5:joinOrLeaveQueues(_0x582dab,_0x51efee,'openchannel',_0x26dc8c[_0x4355d7][_0x5e9cab]);break;case 0x6:joinOrLeaveQueues(_0x582dab,_0x51efee,'whatsapp',_0x26dc8c[_0x4355d7][_0x5e9cab]);break;case 0x7:if(_0x450f2e[_0x3b92('0x5')]!==_0x3b92('0x6'))_0x582dab[_0x51efee](util[_0x3b92('0x2a')](_0x3b92('0x48'),_0x26dc8c[_0x4355d7][_0x5e9cab][_0x3b92('0x4')]));break;case 0x8:if(_0x450f2e[_0x3b92('0x5')]!==_0x3b92('0x6'))_0x582dab[_0x51efee](util['format'](_0x3b92('0x49'),_0x26dc8c[_0x4355d7][_0x5e9cab][_0x3b92('0x4')]));break;case 0x9:if(_0x450f2e[_0x3b92('0x5')]!==_0x3b92('0x6'))_0x582dab[_0x51efee](util[_0x3b92('0x2a')](_0x3b92('0x4a'),_0x26dc8c[_0x4355d7][_0x5e9cab][_0x3b92('0x17')],_0x26dc8c[_0x4355d7][_0x5e9cab][_0x3b92('0x4')]));break;case 0xa:_0x582dab[_0x51efee](util[_0x3b92('0x2a')](_0x3b92('0x1b'),_0x26dc8c[_0x4355d7][_0x5e9cab][_0x3b92('0x4')]));break;}}}}})['then'](function(){if(_0x51efee===_0x3b92('0x4b')){var _0x59347d=_[_0x3b92('0x14')](_0x450f2e[_0x3b92('0x4c')],'id');return _0x450f2e[_0x3b92('0x4d')](_0x59347d)[_0x3b92('0xa')](function(){for(var _0x3d5f2c=0x0;_0x3d5f2c<_0x59347d[_0x3b92('0x1a')];_0x3d5f2c+=0x1){_0x54ac98[_0x3b92('0x4e')](_0x3b92('0x4f'),{'ChatInteractionId':Number(_0x59347d[_0x3d5f2c]),'UserId':Number(_0x450f2e['id'])});}});}})[_0x3b92('0xa')](function(){if(_0x51efee===_0x3b92('0x4b')){var _0x400435=_['map'](_0x450f2e[_0x3b92('0x22')],'id');return _0x450f2e[_0x3b92('0x50')](_0x400435)['then'](function(){for(var _0x19e836=0x0;_0x19e836<_0x400435[_0x3b92('0x1a')];_0x19e836+=0x1){_0x54ac98[_0x3b92('0x4e')](_0x3b92('0x51'),{'MailInteractionId':Number(_0x400435[_0x19e836]),'UserId':Number(_0x450f2e['id'])});}});}})[_0x3b92('0xa')](function(){if(_0x51efee===_0x3b92('0x4b')){var _0x10ad1b=_[_0x3b92('0x14')](_0x450f2e['FaxInteractions'],'id');return _0x450f2e[_0x3b92('0x52')](_0x10ad1b)[_0x3b92('0xa')](function(){for(var _0xcb9c42=0x0;_0xcb9c42<_0x10ad1b['length'];_0xcb9c42+=0x1){_0x54ac98[_0x3b92('0x4e')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x10ad1b[_0xcb9c42]),'UserId':Number(_0x450f2e['id'])});}});}})[_0x3b92('0xa')](function(){if(_0x51efee===_0x3b92('0x4b')){var _0x2e6abc=_[_0x3b92('0x14')](_0x450f2e[_0x3b92('0x26')],'id');return _0x450f2e[_0x3b92('0x53')](_0x2e6abc)[_0x3b92('0xa')](function(){for(var _0x3df3b7=0x0;_0x3df3b7<_0x2e6abc[_0x3b92('0x1a')];_0x3df3b7+=0x1){_0x54ac98[_0x3b92('0x4e')](_0x3b92('0x54'),{'SmsInteractionId':Number(_0x2e6abc[_0x3df3b7]),'UserId':Number(_0x450f2e['id'])});}});}})[_0x3b92('0xa')](function(){if(_0x51efee===_0x3b92('0x4b')){var _0x3f0d58=_[_0x3b92('0x14')](_0x450f2e['OpenchannelInteractions'],'id');return _0x450f2e[_0x3b92('0x55')](_0x3f0d58)[_0x3b92('0xa')](function(){for(var _0x4eef83=0x0;_0x4eef83<_0x3f0d58[_0x3b92('0x1a')];_0x4eef83+=0x1){_0x54ac98[_0x3b92('0x4e')](_0x3b92('0x56'),{'OpenchannelInteractionId':Number(_0x3f0d58[_0x4eef83]),'UserId':Number(_0x450f2e['id'])});}});}})[_0x3b92('0xa')](function(){if(_0x51efee===_0x3b92('0x4b')){var _0x147439=_['map'](_0x450f2e['WhatsappInteractions'],'id');return _0x450f2e[_0x3b92('0x57')](_0x147439)[_0x3b92('0xa')](function(){for(var _0xe252f4=0x0;_0xe252f4<_0x147439[_0x3b92('0x1a')];_0xe252f4+=0x1){_0x54ac98[_0x3b92('0x4e')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x147439[_0xe252f4]),'UserId':Number(_0x450f2e['id'])});}});}})[_0x3b92('0x58')](function(_0x20cea7){_0x582dab[_0x3b92('0x59')](_0x20cea7);});}}function onDisconnect(_0x536858,_0x318f41){joinOrLeave(_0x536858,'leave',_0x318f41);}function onConnect(_0x1a2cc6){joinOrLeave(_0x1a2cc6,'join');}exports[_0x3b92('0x5a')]=function(_0x22b60c){_0x22b60c['on'](_0x3b92('0x5b'),function(_0x8c11a8){_0x8c11a8[_0x3b92('0x5c')](0x0);_0x8c11a8[_0x3b92('0x5d')]=_0x8c11a8[_0x3b92('0x5e')][_0x3b92('0x5b')][_0x3b92('0x5f')]+':'+_0x8c11a8[_0x3b92('0x5e')][_0x3b92('0x5b')][_0x3b92('0x60')];_0x8c11a8['connectedAt']=new Date();_0x8c11a8['log']=function(_0x5f08c0){console[_0x3b92('0x59')](_0x3b92('0x61')+_0x8c11a8[_0x3b92('0x62')][_0x3b92('0x4')]+'['+_0x8c11a8[_0x3b92('0x5d')]+']',_0x5f08c0);};_0x8c11a8['on']('disconnect',function(){onDisconnect(_0x8c11a8,_0x22b60c);_0x8c11a8['log'](_0x3b92('0x63'));});onConnect(_0x8c11a8);_0x8c11a8['log'](_0x3b92('0x64'));});};