Built motion from commit (unavailable).|2.5.25
[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 _0xab53=['voice','chat','fax','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','MailInteractions','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','connection','setMaxListeners','address','request','remoteAddress','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','User','role','UserProfileSection','findOne','then','autoAssociation','ChatQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','resourceId','map','where','Campaign','ivr','format','Agents','length','user:%s','handshake','query','find','userProfileId','ChatInteractions','FaxInteractions','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','push','VoiceQueue','ChatQueue','SmsQueue','WhatsappQueue','user','FaxQueues','FaxQueue','MailQueues','OpenchannelQueue','Telephones','Trunk','agent','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all'];(function(_0x15e73a,_0x44b0f8){var _0xfd368a=function(_0x5b2163){while(--_0x5b2163){_0x15e73a['push'](_0x15e73a['shift']());}};_0xfd368a(++_0x44b0f8);}(_0xab53,0xdf));var _0x3ab5=function(_0x45fc6a,_0x166adb){_0x45fc6a=_0x45fc6a-0x0;var _0x14bcfd=_0xab53[_0x45fc6a];return _0x14bcfd;};'use strict';var _=require(_0x3ab5('0x0'));var util=require(_0x3ab5('0x1'));var BPromise=require(_0x3ab5('0x2'));var db=require(_0x3ab5('0x3'))['db'];var config=require(_0x3ab5('0x4'));var queryQueues={'attributes':['id',_0x3ab5('0x5')],'include':[{'as':'Agents','model':db[_0x3ab5('0x6')],'attributes':['id',_0x3ab5('0x5'),_0x3ab5('0x7')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x3ab5('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x3ab5('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x3ab5('0x5')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x3ab5('0x5'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x5abd4b,_0x4515ee,_0x4a8255){return db[_0x3ab5('0x8')][_0x3ab5('0x9')]({'where':{'name':_0x5abd4b,'userProfileId':_0x4515ee},'raw':!![]})[_0x3ab5('0xa')](function(_0x5077b8){if(_0x5077b8){if(_0x5077b8[_0x3ab5('0xb')]){switch(_0x5abd4b){case'VoiceQueues':case _0x3ab5('0xc'):case'FaxQueues':case _0x3ab5('0xd'):case'MailQueues':case _0x3ab5('0xe'):case _0x3ab5('0xf'):return db[_0x4a8255][_0x3ab5('0x10')](queryQueues);case'Telephones':return db[_0x4a8255]['findAll'](queryTelephones);case _0x3ab5('0x11'):return db[_0x4a8255]['findAll'](queryTrunks);case _0x3ab5('0x12'):return db[_0x4a8255]['findAll'](queryCampaigns);}}else{return db['UserProfileResource'][_0x3ab5('0x10')]({'attributes':[_0x3ab5('0x13')],'where':{'sectionId':_0x5077b8['id']},'raw':!![]})[_0x3ab5('0xa')](function(_0x488bdb){if(_0x488bdb){var _0x14714a={'where':{'id':_[_0x3ab5('0x14')](_0x488bdb,_0x3ab5('0x13'))},'raw':!![]};switch(_0x4a8255){case _0x3ab5('0x6'):_0x14714a[_0x3ab5('0x15')][_0x3ab5('0x7')]='telephone';break;case _0x3ab5('0x16'):_0x14714a[_0x3ab5('0x15')]['type']=_0x3ab5('0x17');break;}return db[_0x4a8255][_0x3ab5('0x10')](_0x14714a);}else{return[];}});}}else{return[];}})[_0x3ab5('0xa')](function(_0x3c46f9){return _0x3c46f9;});}function joinOrLeaveQueues(_0x472378,_0x460bc4,_0x43b0b7,_0x559b50){_0x472378[_0x460bc4](util[_0x3ab5('0x18')]('%s:queue:%s',_0x43b0b7,_0x559b50['name']));if(_0x559b50['Agents']){for(var _0x4a498e=0x0;_0x4a498e<_0x559b50[_0x3ab5('0x19')][_0x3ab5('0x1a')];_0x4a498e+=0x1){_0x472378[_0x460bc4](util[_0x3ab5('0x18')](_0x3ab5('0x1b'),_0x559b50[_0x3ab5('0x19')][_0x4a498e][_0x3ab5('0x5')]));}}}function joinOrLeave(_0x1d3779,_0x208a8c,_0x1f0dad){var _0x683f23;if(_0x1d3779[_0x3ab5('0x1c')][_0x3ab5('0x1d')]['id']){db[_0x3ab5('0x6')][_0x3ab5('0x1e')]({'attributes':['id',_0x3ab5('0x5'),_0x3ab5('0x7'),_0x3ab5('0x1f')],'where':{'id':_0x1d3779[_0x3ab5('0x1c')][_0x3ab5('0x1d')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x3ab5('0x20'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x3ab5('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x3ab5('0x22')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x3ab5('0x23')],'as':_0x3ab5('0x24'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x3ab5('0x25'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x498c1b){if(_0x498c1b){_0x683f23=_0x498c1b;_0x1d3779[_0x208a8c](util['format'](_0x3ab5('0x1b'),_0x498c1b[_0x3ab5('0x5')]));var _0x29dcfc=[];switch(_0x498c1b[_0x3ab5('0x7')]){case _0x3ab5('0x26'):_0x1d3779[_0x208a8c](_0x3ab5('0x27'));_0x1d3779[_0x208a8c](_0x3ab5('0x28'));if(queryQueues[_0x3ab5('0x29')]('include')){delete queryQueues['include'];}_0x29dcfc[_0x3ab5('0x2a')](db[_0x3ab5('0x2b')][_0x3ab5('0x10')](queryQueues));_0x29dcfc[_0x3ab5('0x2a')](db[_0x3ab5('0x2c')][_0x3ab5('0x10')](queryQueues));_0x29dcfc[_0x3ab5('0x2a')](db['FaxQueue'][_0x3ab5('0x10')](queryQueues));_0x29dcfc[_0x3ab5('0x2a')](db[_0x3ab5('0x2d')][_0x3ab5('0x10')](queryQueues));_0x29dcfc['push'](db['MailQueue'][_0x3ab5('0x10')](queryQueues));_0x29dcfc['push'](db['OpenchannelQueue']['findAll'](queryQueues));_0x29dcfc[_0x3ab5('0x2a')](db[_0x3ab5('0x2e')][_0x3ab5('0x10')](queryQueues));_0x29dcfc[_0x3ab5('0x2a')](db[_0x3ab5('0x6')]['findAll'](queryTelephones));_0x29dcfc[_0x3ab5('0x2a')](db['Trunk'][_0x3ab5('0x10')](queryTrunks));_0x29dcfc[_0x3ab5('0x2a')](db['Campaign'][_0x3ab5('0x10')](queryCampaigns));_0x29dcfc['push'](db[_0x3ab5('0x6')][_0x3ab5('0x10')](queryAgents));break;case _0x3ab5('0x2f'):_0x1d3779[_0x208a8c]('voice:inbound');_0x1d3779[_0x208a8c](_0x3ab5('0x28'));_0x29dcfc[_0x3ab5('0x2a')](getAssociatedResources('VoiceQueues',_0x498c1b['userProfileId'],'VoiceQueue'));_0x29dcfc[_0x3ab5('0x2a')](getAssociatedResources(_0x3ab5('0xc'),_0x498c1b[_0x3ab5('0x1f')],_0x3ab5('0x2c')));_0x29dcfc[_0x3ab5('0x2a')](getAssociatedResources(_0x3ab5('0x30'),_0x498c1b['userProfileId'],_0x3ab5('0x31')));_0x29dcfc[_0x3ab5('0x2a')](getAssociatedResources('SmsQueues',_0x498c1b[_0x3ab5('0x1f')],_0x3ab5('0x2d')));_0x29dcfc['push'](getAssociatedResources(_0x3ab5('0x32'),_0x498c1b[_0x3ab5('0x1f')],'MailQueue'));_0x29dcfc['push'](getAssociatedResources(_0x3ab5('0xe'),_0x498c1b['userProfileId'],_0x3ab5('0x33')));_0x29dcfc['push'](getAssociatedResources(_0x3ab5('0xf'),_0x498c1b[_0x3ab5('0x1f')],_0x3ab5('0x2e')));_0x29dcfc[_0x3ab5('0x2a')](getAssociatedResources(_0x3ab5('0x34'),_0x498c1b['userProfileId'],_0x3ab5('0x6')));_0x29dcfc[_0x3ab5('0x2a')](getAssociatedResources(_0x3ab5('0x11'),_0x498c1b['userProfileId'],_0x3ab5('0x35')));_0x29dcfc[_0x3ab5('0x2a')](getAssociatedResources(_0x3ab5('0x12'),_0x498c1b[_0x3ab5('0x1f')],_0x3ab5('0x16')));_0x29dcfc[_0x3ab5('0x2a')](db[_0x3ab5('0x6')]['findAll'](queryAgents));break;case _0x3ab5('0x36'):_0x1d3779[_0x208a8c](_0x3ab5('0x27'));_0x1d3779[_0x208a8c](_0x3ab5('0x28'));_0x29dcfc[_0x3ab5('0x2a')](_0x498c1b[_0x3ab5('0x37')]({'attributes':['id',_0x3ab5('0x5')]}));_0x29dcfc[_0x3ab5('0x2a')](_0x498c1b[_0x3ab5('0x38')]({'attributes':['id',_0x3ab5('0x5')]}));_0x29dcfc[_0x3ab5('0x2a')](_0x498c1b[_0x3ab5('0x39')]({'attributes':['id','name']}));_0x29dcfc[_0x3ab5('0x2a')](_0x498c1b[_0x3ab5('0x3a')]({'attributes':['id',_0x3ab5('0x5')]}));_0x29dcfc['push'](_0x498c1b[_0x3ab5('0x3b')]({'attributes':['id',_0x3ab5('0x5')]}));_0x29dcfc[_0x3ab5('0x2a')](_0x498c1b['getOpenchannelQueues']({'attributes':['id','name']}));_0x29dcfc[_0x3ab5('0x2a')](_0x498c1b[_0x3ab5('0x3c')]({'attributes':['id',_0x3ab5('0x5')]}));break;}return BPromise[_0x3ab5('0x3d')](_0x29dcfc);}})['then'](function(_0x53c612){if(_0x53c612&&_0x53c612[_0x3ab5('0x1a')]){for(var _0x307474=0x0;_0x307474<_0x53c612[_0x3ab5('0x1a')];_0x307474+=0x1){for(var _0x3c4915=0x0;_0x3c4915<_0x53c612[_0x307474][_0x3ab5('0x1a')];_0x3c4915+=0x1){switch(_0x307474){case 0x0:joinOrLeaveQueues(_0x1d3779,_0x208a8c,_0x3ab5('0x3e'),_0x53c612[_0x307474][_0x3c4915]);break;case 0x1:joinOrLeaveQueues(_0x1d3779,_0x208a8c,_0x3ab5('0x3f'),_0x53c612[_0x307474][_0x3c4915]);break;case 0x2:joinOrLeaveQueues(_0x1d3779,_0x208a8c,_0x3ab5('0x40'),_0x53c612[_0x307474][_0x3c4915]);break;case 0x3:joinOrLeaveQueues(_0x1d3779,_0x208a8c,'sms',_0x53c612[_0x307474][_0x3c4915]);break;case 0x4:joinOrLeaveQueues(_0x1d3779,_0x208a8c,_0x3ab5('0x41'),_0x53c612[_0x307474][_0x3c4915]);break;case 0x5:joinOrLeaveQueues(_0x1d3779,_0x208a8c,'openchannel',_0x53c612[_0x307474][_0x3c4915]);break;case 0x6:joinOrLeaveQueues(_0x1d3779,_0x208a8c,_0x3ab5('0x42'),_0x53c612[_0x307474][_0x3c4915]);break;case 0x7:if(_0x683f23[_0x3ab5('0x7')]!==_0x3ab5('0x36'))_0x1d3779[_0x208a8c](util[_0x3ab5('0x18')](_0x3ab5('0x43'),_0x53c612[_0x307474][_0x3c4915][_0x3ab5('0x5')]));break;case 0x8:if(_0x683f23[_0x3ab5('0x7')]!==_0x3ab5('0x36'))_0x1d3779[_0x208a8c](util[_0x3ab5('0x18')](_0x3ab5('0x44'),_0x53c612[_0x307474][_0x3c4915][_0x3ab5('0x5')]));break;case 0x9:if(_0x683f23[_0x3ab5('0x7')]!==_0x3ab5('0x36'))_0x1d3779[_0x208a8c](util[_0x3ab5('0x18')](_0x3ab5('0x45'),_0x53c612[_0x307474][_0x3c4915]['type'],_0x53c612[_0x307474][_0x3c4915][_0x3ab5('0x5')]));break;case 0xa:_0x1d3779[_0x208a8c](util[_0x3ab5('0x18')](_0x3ab5('0x1b'),_0x53c612[_0x307474][_0x3c4915][_0x3ab5('0x5')]));break;}}}}})['then'](function(){if(_0x208a8c==='leave'){var _0x2b0429=_['map'](_0x683f23[_0x3ab5('0x20')],'id');return _0x683f23[_0x3ab5('0x46')](_0x2b0429)[_0x3ab5('0xa')](function(){for(var _0xbb916b=0x0;_0xbb916b<_0x2b0429[_0x3ab5('0x1a')];_0xbb916b+=0x1){_0x1f0dad[_0x3ab5('0x47')](_0x3ab5('0x48'),{'ChatInteractionId':Number(_0x2b0429[_0xbb916b]),'UserId':Number(_0x683f23['id'])});}});}})[_0x3ab5('0xa')](function(){if(_0x208a8c===_0x3ab5('0x49')){var _0x4e67b5=_[_0x3ab5('0x14')](_0x683f23[_0x3ab5('0x4a')],'id');return _0x683f23[_0x3ab5('0x4b')](_0x4e67b5)[_0x3ab5('0xa')](function(){for(var _0x1084d6=0x0;_0x1084d6<_0x4e67b5[_0x3ab5('0x1a')];_0x1084d6+=0x1){_0x1f0dad[_0x3ab5('0x47')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4e67b5[_0x1084d6]),'UserId':Number(_0x683f23['id'])});}});}})['then'](function(){if(_0x208a8c===_0x3ab5('0x49')){var _0xe311fb=_[_0x3ab5('0x14')](_0x683f23[_0x3ab5('0x21')],'id');return _0x683f23[_0x3ab5('0x4c')](_0xe311fb)[_0x3ab5('0xa')](function(){for(var _0x372e6d=0x0;_0x372e6d<_0xe311fb[_0x3ab5('0x1a')];_0x372e6d+=0x1){_0x1f0dad[_0x3ab5('0x47')](_0x3ab5('0x4d'),{'FaxInteractionId':Number(_0xe311fb[_0x372e6d]),'UserId':Number(_0x683f23['id'])});}});}})[_0x3ab5('0xa')](function(){if(_0x208a8c===_0x3ab5('0x49')){var _0x1d8690=_[_0x3ab5('0x14')](_0x683f23[_0x3ab5('0x4e')],'id');return _0x683f23['removeSmsInteractions'](_0x1d8690)[_0x3ab5('0xa')](function(){for(var _0x378c3d=0x0;_0x378c3d<_0x1d8690[_0x3ab5('0x1a')];_0x378c3d+=0x1){_0x1f0dad[_0x3ab5('0x47')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x1d8690[_0x378c3d]),'UserId':Number(_0x683f23['id'])});}});}})[_0x3ab5('0xa')](function(){if(_0x208a8c===_0x3ab5('0x49')){var _0x18a487=_[_0x3ab5('0x14')](_0x683f23[_0x3ab5('0x24')],'id');return _0x683f23[_0x3ab5('0x4f')](_0x18a487)[_0x3ab5('0xa')](function(){for(var _0x5ec248=0x0;_0x5ec248<_0x18a487[_0x3ab5('0x1a')];_0x5ec248+=0x1){_0x1f0dad[_0x3ab5('0x47')](_0x3ab5('0x50'),{'OpenchannelInteractionId':Number(_0x18a487[_0x5ec248]),'UserId':Number(_0x683f23['id'])});}});}})[_0x3ab5('0xa')](function(){if(_0x208a8c==='leave'){var _0x3357da=_[_0x3ab5('0x14')](_0x683f23[_0x3ab5('0x25')],'id');return _0x683f23['removeWhatsappInteractions'](_0x3357da)[_0x3ab5('0xa')](function(){for(var _0x36a299=0x0;_0x36a299<_0x3357da[_0x3ab5('0x1a')];_0x36a299+=0x1){_0x1f0dad[_0x3ab5('0x47')](_0x3ab5('0x51'),{'WhatsappInteractionId':Number(_0x3357da[_0x36a299]),'UserId':Number(_0x683f23['id'])});}});}})[_0x3ab5('0x52')](function(_0x25e18a){_0x1d3779[_0x3ab5('0x53')](_0x25e18a);});}}function onDisconnect(_0x407a3e,_0x3bb2b5){joinOrLeave(_0x407a3e,_0x3ab5('0x49'),_0x3bb2b5);}function onConnect(_0x31f866){joinOrLeave(_0x31f866,_0x3ab5('0x54'));}exports['default']=function(_0x2b67cb){_0x2b67cb['on'](_0x3ab5('0x55'),function(_0x3a8496){_0x3a8496[_0x3ab5('0x56')](0x0);_0x3a8496[_0x3ab5('0x57')]=_0x3a8496[_0x3ab5('0x58')]['connection'][_0x3ab5('0x59')]+':'+_0x3a8496[_0x3ab5('0x58')][_0x3ab5('0x55')]['remotePort'];_0x3a8496[_0x3ab5('0x5a')]=new Date();_0x3a8496[_0x3ab5('0x53')]=function(_0x4fc488){console['log'](_0x3ab5('0x5b')+_0x3a8496[_0x3ab5('0x5c')]['name']+'['+_0x3a8496['address']+']',_0x4fc488);};_0x3a8496['on'](_0x3ab5('0x5d'),function(){onDisconnect(_0x3a8496,_0x2b67cb);_0x3a8496[_0x3ab5('0x53')](_0x3ab5('0x5e'));});onConnect(_0x3a8496);_0x3a8496[_0x3ab5('0x53')]('CONNECTED');});};