1a43c18147e7de48300867df1cb52d9141a1a5b3
[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 _0x090a=['role','agent','name','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','IvrCampaigns','UserProfileResource','resourceId','where','format','Agents','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','user','VoiceQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','map','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','connection','setMaxListeners','request','remoteAddress','connectedAt','SocketIO\x20','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','../mysqldb','./environment','User'];(function(_0x178c41,_0x264640){var _0x25bf5b=function(_0x27fab1){while(--_0x27fab1){_0x178c41['push'](_0x178c41['shift']());}};_0x25bf5b(++_0x264640);}(_0x090a,0x133));var _0xa090=function(_0x1dad3b,_0x2fe1df){_0x1dad3b=_0x1dad3b-0x0;var _0x4c42da=_0x090a[_0x1dad3b];return _0x4c42da;};'use strict';var _=require(_0xa090('0x0'));var util=require(_0xa090('0x1'));var BPromise=require('bluebird');var db=require(_0xa090('0x2'))['db'];var config=require(_0xa090('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0xa090('0x4')],'attributes':['id','name',_0xa090('0x5')],'raw':!![],'where':{'role':_0xa090('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xa090('0x7')],'where':{'role':_0xa090('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xa090('0x7')]};var queryAgents={'raw':!![],'attributes':['id',_0xa090('0x7')],'where':{'role':_0xa090('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xa090('0x7'),_0xa090('0x9')],'where':{'type':_0xa090('0xa')}};function getAssociatedResources(_0x39cb73,_0x358710,_0x134f90){return db[_0xa090('0xb')][_0xa090('0xc')]({'where':{'name':_0x39cb73,'userProfileId':_0x358710},'raw':!![]})[_0xa090('0xd')](function(_0x591b4c){if(_0x591b4c){if(_0x591b4c[_0xa090('0xe')]){switch(_0x39cb73){case'VoiceQueues':case _0xa090('0xf'):case _0xa090('0x10'):case'SmsQueues':case _0xa090('0x11'):case _0xa090('0x12'):case _0xa090('0x13'):return db[_0x134f90][_0xa090('0x14')](queryQueues);case _0xa090('0x15'):return db[_0x134f90][_0xa090('0x14')](queryTelephones);case'Trunks':return db[_0x134f90][_0xa090('0x14')](queryTrunks);case _0xa090('0x16'):return db[_0x134f90][_0xa090('0x14')](queryCampaigns);}}else{return db[_0xa090('0x17')][_0xa090('0x14')]({'attributes':[_0xa090('0x18')],'where':{'sectionId':_0x591b4c['id']},'raw':!![]})[_0xa090('0xd')](function(_0x297e21){if(_0x297e21){var _0x1a7314={'where':{'id':_['map'](_0x297e21,'resourceId')},'raw':!![]};switch(_0x134f90){case _0xa090('0x4'):_0x1a7314[_0xa090('0x19')][_0xa090('0x5')]=_0xa090('0x8');break;case'Campaign':_0x1a7314[_0xa090('0x19')][_0xa090('0x9')]=_0xa090('0xa');break;}return db[_0x134f90][_0xa090('0x14')](_0x1a7314);}else{return[];}});}}else{return[];}})['then'](function(_0x599f72){return _0x599f72;});}function joinOrLeaveQueues(_0x36afd8,_0x10adc1,_0x319457,_0xea9234){_0x36afd8[_0x10adc1](util[_0xa090('0x1a')]('%s:queue:%s',_0x319457,_0xea9234['name']));if(_0xea9234[_0xa090('0x1b')]){for(var _0x553d64=0x0;_0x553d64<_0xea9234['Agents'][_0xa090('0x1c')];_0x553d64+=0x1){_0x36afd8[_0x10adc1](util[_0xa090('0x1a')](_0xa090('0x1d'),_0xea9234[_0xa090('0x1b')][_0x553d64][_0xa090('0x7')]));}}}function joinOrLeave(_0x21b430,_0x474b6b,_0xc60bfd){var _0x2f587d;if(_0x21b430[_0xa090('0x1e')][_0xa090('0x1f')]['id']){db[_0xa090('0x4')][_0xa090('0x20')]({'attributes':['id','name','role',_0xa090('0x21')],'where':{'id':_0x21b430[_0xa090('0x1e')][_0xa090('0x1f')]['id']},'include':[{'model':db[_0xa090('0x22')],'as':_0xa090('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xa090('0x24')],'as':_0xa090('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xa090('0x26')],'as':_0xa090('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xa090('0x28')],'as':_0xa090('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0xa090('0x2a')],'as':_0xa090('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0xa090('0x2c')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xa090('0xd')](function(_0x3e69f8){if(_0x3e69f8){_0x2f587d=_0x3e69f8;_0x21b430[_0x474b6b](util[_0xa090('0x1a')](_0xa090('0x1d'),_0x3e69f8[_0xa090('0x7')]));var _0x24ed69=[];switch(_0x3e69f8[_0xa090('0x5')]){case _0xa090('0x2d'):_0x21b430[_0x474b6b](_0xa090('0x2e'));_0x21b430[_0x474b6b](_0xa090('0x2f'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0xa090('0x30')];}_0x24ed69[_0xa090('0x31')](db[_0xa090('0x32')][_0xa090('0x14')](queryQueues));_0x24ed69[_0xa090('0x31')](db[_0xa090('0x33')][_0xa090('0x14')](queryQueues));_0x24ed69[_0xa090('0x31')](db[_0xa090('0x34')][_0xa090('0x14')](queryQueues));_0x24ed69[_0xa090('0x31')](db[_0xa090('0x35')][_0xa090('0x14')](queryQueues));_0x24ed69['push'](db[_0xa090('0x36')]['findAll'](queryQueues));_0x24ed69[_0xa090('0x31')](db[_0xa090('0x37')][_0xa090('0x14')](queryQueues));_0x24ed69['push'](db[_0xa090('0x38')]['findAll'](queryQueues));_0x24ed69[_0xa090('0x31')](db['User']['findAll'](queryTelephones));_0x24ed69[_0xa090('0x31')](db[_0xa090('0x39')][_0xa090('0x14')](queryTrunks));_0x24ed69['push'](db[_0xa090('0x3a')]['findAll'](queryCampaigns));_0x24ed69[_0xa090('0x31')](db[_0xa090('0x4')][_0xa090('0x14')](queryAgents));break;case _0xa090('0x3b'):_0x21b430[_0x474b6b](_0xa090('0x2e'));_0x21b430[_0x474b6b](_0xa090('0x2f'));_0x24ed69[_0xa090('0x31')](getAssociatedResources(_0xa090('0x3c'),_0x3e69f8[_0xa090('0x21')],_0xa090('0x32')));_0x24ed69[_0xa090('0x31')](getAssociatedResources(_0xa090('0xf'),_0x3e69f8[_0xa090('0x21')],'ChatQueue'));_0x24ed69[_0xa090('0x31')](getAssociatedResources(_0xa090('0x10'),_0x3e69f8[_0xa090('0x21')],_0xa090('0x34')));_0x24ed69['push'](getAssociatedResources('SmsQueues',_0x3e69f8[_0xa090('0x21')],_0xa090('0x35')));_0x24ed69['push'](getAssociatedResources(_0xa090('0x11'),_0x3e69f8[_0xa090('0x21')],_0xa090('0x36')));_0x24ed69['push'](getAssociatedResources('OpenchannelQueues',_0x3e69f8[_0xa090('0x21')],_0xa090('0x37')));_0x24ed69[_0xa090('0x31')](getAssociatedResources(_0xa090('0x13'),_0x3e69f8['userProfileId'],_0xa090('0x38')));_0x24ed69[_0xa090('0x31')](getAssociatedResources('Telephones',_0x3e69f8[_0xa090('0x21')],_0xa090('0x4')));_0x24ed69[_0xa090('0x31')](getAssociatedResources('Trunks',_0x3e69f8[_0xa090('0x21')],_0xa090('0x39')));_0x24ed69['push'](getAssociatedResources(_0xa090('0x16'),_0x3e69f8[_0xa090('0x21')],_0xa090('0x3a')));_0x24ed69[_0xa090('0x31')](db[_0xa090('0x4')][_0xa090('0x14')](queryAgents));break;case _0xa090('0x6'):_0x21b430[_0x474b6b]('voice:inbound');_0x21b430[_0x474b6b]('voice:outbound');_0x24ed69[_0xa090('0x31')](_0x3e69f8[_0xa090('0x3d')]({'attributes':['id',_0xa090('0x7')]}));_0x24ed69[_0xa090('0x31')](_0x3e69f8[_0xa090('0x3e')]({'attributes':['id','name']}));_0x24ed69[_0xa090('0x31')](_0x3e69f8[_0xa090('0x3f')]({'attributes':['id',_0xa090('0x7')]}));_0x24ed69['push'](_0x3e69f8[_0xa090('0x40')]({'attributes':['id',_0xa090('0x7')]}));_0x24ed69[_0xa090('0x31')](_0x3e69f8[_0xa090('0x41')]({'attributes':['id',_0xa090('0x7')]}));_0x24ed69['push'](_0x3e69f8[_0xa090('0x42')]({'attributes':['id',_0xa090('0x7')]}));_0x24ed69[_0xa090('0x31')](_0x3e69f8[_0xa090('0x43')]({'attributes':['id',_0xa090('0x7')]}));break;}return BPromise[_0xa090('0x44')](_0x24ed69);}})[_0xa090('0xd')](function(_0xa2928e){if(_0xa2928e&&_0xa2928e[_0xa090('0x1c')]){for(var _0x51a660=0x0;_0x51a660<_0xa2928e[_0xa090('0x1c')];_0x51a660+=0x1){for(var _0x51c405=0x0;_0x51c405<_0xa2928e[_0x51a660][_0xa090('0x1c')];_0x51c405+=0x1){switch(_0x51a660){case 0x0:joinOrLeaveQueues(_0x21b430,_0x474b6b,_0xa090('0x45'),_0xa2928e[_0x51a660][_0x51c405]);break;case 0x1:joinOrLeaveQueues(_0x21b430,_0x474b6b,_0xa090('0x46'),_0xa2928e[_0x51a660][_0x51c405]);break;case 0x2:joinOrLeaveQueues(_0x21b430,_0x474b6b,'fax',_0xa2928e[_0x51a660][_0x51c405]);break;case 0x3:joinOrLeaveQueues(_0x21b430,_0x474b6b,_0xa090('0x47'),_0xa2928e[_0x51a660][_0x51c405]);break;case 0x4:joinOrLeaveQueues(_0x21b430,_0x474b6b,_0xa090('0x48'),_0xa2928e[_0x51a660][_0x51c405]);break;case 0x5:joinOrLeaveQueues(_0x21b430,_0x474b6b,_0xa090('0x49'),_0xa2928e[_0x51a660][_0x51c405]);break;case 0x6:joinOrLeaveQueues(_0x21b430,_0x474b6b,_0xa090('0x4a'),_0xa2928e[_0x51a660][_0x51c405]);break;case 0x7:if(_0x2f587d['role']!==_0xa090('0x6'))_0x21b430[_0x474b6b](util[_0xa090('0x1a')](_0xa090('0x4b'),_0xa2928e[_0x51a660][_0x51c405][_0xa090('0x7')]));break;case 0x8:if(_0x2f587d['role']!==_0xa090('0x6'))_0x21b430[_0x474b6b](util[_0xa090('0x1a')](_0xa090('0x4c'),_0xa2928e[_0x51a660][_0x51c405]['name']));break;case 0x9:if(_0x2f587d[_0xa090('0x5')]!==_0xa090('0x6'))_0x21b430[_0x474b6b](util[_0xa090('0x1a')](_0xa090('0x4d'),_0xa2928e[_0x51a660][_0x51c405][_0xa090('0x9')],_0xa2928e[_0x51a660][_0x51c405][_0xa090('0x7')]));break;case 0xa:_0x21b430[_0x474b6b](util['format'](_0xa090('0x1d'),_0xa2928e[_0x51a660][_0x51c405]['name']));break;}}}}})[_0xa090('0xd')](function(){if(_0x474b6b==='leave'){var _0x5d4cb2=_[_0xa090('0x4e')](_0x2f587d[_0xa090('0x23')],'id');return _0x2f587d[_0xa090('0x4f')](_0x5d4cb2)[_0xa090('0xd')](function(){for(var _0x37b31f=0x0;_0x37b31f<_0x5d4cb2[_0xa090('0x1c')];_0x37b31f+=0x1){_0xc60bfd[_0xa090('0x50')](_0xa090('0x51'),{'ChatInteractionId':Number(_0x5d4cb2[_0x37b31f]),'UserId':Number(_0x2f587d['id'])});}});}})[_0xa090('0xd')](function(){if(_0x474b6b===_0xa090('0x52')){var _0x28b032=_[_0xa090('0x4e')](_0x2f587d[_0xa090('0x25')],'id');return _0x2f587d[_0xa090('0x53')](_0x28b032)[_0xa090('0xd')](function(){for(var _0x295987=0x0;_0x295987<_0x28b032[_0xa090('0x1c')];_0x295987+=0x1){_0xc60bfd['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x28b032[_0x295987]),'UserId':Number(_0x2f587d['id'])});}});}})[_0xa090('0xd')](function(){if(_0x474b6b===_0xa090('0x52')){var _0x5d4f88=_[_0xa090('0x4e')](_0x2f587d['FaxInteractions'],'id');return _0x2f587d[_0xa090('0x54')](_0x5d4f88)[_0xa090('0xd')](function(){for(var _0x3f4e66=0x0;_0x3f4e66<_0x5d4f88[_0xa090('0x1c')];_0x3f4e66+=0x1){_0xc60bfd['emit'](_0xa090('0x55'),{'FaxInteractionId':Number(_0x5d4f88[_0x3f4e66]),'UserId':Number(_0x2f587d['id'])});}});}})[_0xa090('0xd')](function(){if(_0x474b6b===_0xa090('0x52')){var _0x50431e=_[_0xa090('0x4e')](_0x2f587d[_0xa090('0x29')],'id');return _0x2f587d['removeSmsInteractions'](_0x50431e)[_0xa090('0xd')](function(){for(var _0x3d6e54=0x0;_0x3d6e54<_0x50431e[_0xa090('0x1c')];_0x3d6e54+=0x1){_0xc60bfd['emit'](_0xa090('0x56'),{'SmsInteractionId':Number(_0x50431e[_0x3d6e54]),'UserId':Number(_0x2f587d['id'])});}});}})['then'](function(){if(_0x474b6b===_0xa090('0x52')){var _0xd1760c=_[_0xa090('0x4e')](_0x2f587d[_0xa090('0x2b')],'id');return _0x2f587d['removeOpenchannelInteractions'](_0xd1760c)[_0xa090('0xd')](function(){for(var _0x4a7ba4=0x0;_0x4a7ba4<_0xd1760c['length'];_0x4a7ba4+=0x1){_0xc60bfd[_0xa090('0x50')](_0xa090('0x57'),{'OpenchannelInteractionId':Number(_0xd1760c[_0x4a7ba4]),'UserId':Number(_0x2f587d['id'])});}});}})[_0xa090('0xd')](function(){if(_0x474b6b===_0xa090('0x52')){var _0x4d531b=_[_0xa090('0x4e')](_0x2f587d[_0xa090('0x58')],'id');return _0x2f587d[_0xa090('0x59')](_0x4d531b)[_0xa090('0xd')](function(){for(var _0x11d23c=0x0;_0x11d23c<_0x4d531b['length'];_0x11d23c+=0x1){_0xc60bfd[_0xa090('0x50')](_0xa090('0x5a'),{'WhatsappInteractionId':Number(_0x4d531b[_0x11d23c]),'UserId':Number(_0x2f587d['id'])});}});}})[_0xa090('0x5b')](function(_0x4b608c){_0x21b430[_0xa090('0x5c')](_0x4b608c);});}}function onDisconnect(_0x2b4681,_0x56d48d){joinOrLeave(_0x2b4681,'leave',_0x56d48d);}function onConnect(_0x651beb){joinOrLeave(_0x651beb,_0xa090('0x5d'));}exports['default']=function(_0xf6b050){_0xf6b050['on'](_0xa090('0x5e'),function(_0x51ffe4){_0x51ffe4[_0xa090('0x5f')](0x0);_0x51ffe4['address']=_0x51ffe4[_0xa090('0x60')][_0xa090('0x5e')][_0xa090('0x61')]+':'+_0x51ffe4['request'][_0xa090('0x5e')]['remotePort'];_0x51ffe4[_0xa090('0x62')]=new Date();_0x51ffe4[_0xa090('0x5c')]=function(_0x32c19f){console[_0xa090('0x5c')](_0xa090('0x63')+_0x51ffe4['nsp'][_0xa090('0x7')]+'['+_0x51ffe4[_0xa090('0x64')]+']',_0x32c19f);};_0x51ffe4['on'](_0xa090('0x65'),function(){onDisconnect(_0x51ffe4,_0xf6b050);_0x51ffe4[_0xa090('0x5c')](_0xa090('0x66'));});onConnect(_0x51ffe4);_0x51ffe4[_0xa090('0x5c')](_0xa090('0x67'));});};