24fd98beb0c305dac735b2cd5ed95e7b1010adfb
[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 _0x151b=['hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','OpenchannelQueue','WhatsappQueue','user','voice:inbound','VoiceQueues','MailQueue','WhatsappQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','length','voice','chat','fax','sms','mail','openchannel','whatsapp','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','FaxInteractions','emit','removeSmsInteractions','user_has_sms_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','connectedAt','disconnect','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','User','role','agent','type','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','map','resourceId','where','telephone','Campaign','format','%s:queue:%s','Agents','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteractions','admin','voice:outbound'];(function(_0x2a4a61,_0x3c3cae){var _0x308182=function(_0x5dd985){while(--_0x5dd985){_0x2a4a61['push'](_0x2a4a61['shift']());}};_0x308182(++_0x3c3cae);}(_0x151b,0x152));var _0xb151=function(_0x123b15,_0x503ac6){_0x123b15=_0x123b15-0x0;var _0x3724d3=_0x151b[_0x123b15];return _0x3724d3;};'use strict';var _=require(_0xb151('0x0'));var util=require(_0xb151('0x1'));var BPromise=require(_0xb151('0x2'));var db=require(_0xb151('0x3'))['db'];var config=require(_0xb151('0x4'));var queryQueues={'attributes':['id',_0xb151('0x5')],'include':[{'as':'Agents','model':db[_0xb151('0x6')],'attributes':['id','name',_0xb151('0x7')],'raw':!![],'where':{'role':_0xb151('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xb151('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xb151('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xb151('0x5')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb151('0x5'),_0xb151('0x9')],'where':{'type':'ivr'}};function getAssociatedResources(_0x51e8fe,_0x2d38a3,_0x492e76){return db[_0xb151('0xa')][_0xb151('0xb')]({'where':{'name':_0x51e8fe,'userProfileId':_0x2d38a3},'raw':!![]})[_0xb151('0xc')](function(_0x2421a7){if(_0x2421a7){if(_0x2421a7[_0xb151('0xd')]){switch(_0x51e8fe){case'VoiceQueues':case _0xb151('0xe'):case _0xb151('0xf'):case _0xb151('0x10'):case _0xb151('0x11'):case _0xb151('0x12'):case'WhatsappQueues':return db[_0x492e76][_0xb151('0x13')](queryQueues);case _0xb151('0x14'):return db[_0x492e76]['findAll'](queryTelephones);case _0xb151('0x15'):return db[_0x492e76][_0xb151('0x13')](queryTrunks);case _0xb151('0x16'):return db[_0x492e76]['findAll'](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x2421a7['id']},'raw':!![]})[_0xb151('0xc')](function(_0x352834){if(_0x352834){var _0xe73c36={'where':{'id':_[_0xb151('0x17')](_0x352834,_0xb151('0x18'))},'raw':!![]};switch(_0x492e76){case'User':_0xe73c36[_0xb151('0x19')][_0xb151('0x7')]=_0xb151('0x1a');break;case _0xb151('0x1b'):_0xe73c36[_0xb151('0x19')][_0xb151('0x9')]='ivr';break;}return db[_0x492e76][_0xb151('0x13')](_0xe73c36);}else{return[];}});}}else{return[];}})[_0xb151('0xc')](function(_0x5aa911){return _0x5aa911;});}function joinOrLeaveQueues(_0x265b69,_0x2916a1,_0x49d160,_0x30beb4){_0x265b69[_0x2916a1](util[_0xb151('0x1c')](_0xb151('0x1d'),_0x49d160,_0x30beb4[_0xb151('0x5')]));if(_0x30beb4[_0xb151('0x1e')]){for(var _0x3392cb=0x0;_0x3392cb<_0x30beb4[_0xb151('0x1e')]['length'];_0x3392cb+=0x1){_0x265b69[_0x2916a1](util[_0xb151('0x1c')](_0xb151('0x1f'),_0x30beb4['Agents'][_0x3392cb]['name']));}}}function joinOrLeave(_0x1feb70,_0x2dee53,_0x47bac0){var _0x2ccf8a;if(_0x1feb70[_0xb151('0x20')][_0xb151('0x21')]['id']){db['User'][_0xb151('0x22')]({'attributes':['id',_0xb151('0x5'),_0xb151('0x7'),_0xb151('0x23')],'where':{'id':_0x1feb70[_0xb151('0x20')][_0xb151('0x21')]['id']},'include':[{'model':db[_0xb151('0x24')],'as':_0xb151('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xb151('0x26')],'as':_0xb151('0x27'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb151('0x28')],'as':_0xb151('0x29'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xb151('0x2a'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xb151('0x2b'),'attributes':['id'],'raw':!![]}]})['then'](function(_0xa177ba){if(_0xa177ba){_0x2ccf8a=_0xa177ba;_0x1feb70[_0x2dee53](util[_0xb151('0x1c')]('user:%s',_0xa177ba[_0xb151('0x5')]));var _0x505f6a=[];switch(_0xa177ba[_0xb151('0x7')]){case _0xb151('0x2c'):_0x1feb70[_0x2dee53]('voice:inbound');_0x1feb70[_0x2dee53](_0xb151('0x2d'));if(queryQueues[_0xb151('0x2e')](_0xb151('0x2f'))){delete queryQueues[_0xb151('0x2f')];}_0x505f6a['push'](db[_0xb151('0x30')][_0xb151('0x13')](queryQueues));_0x505f6a[_0xb151('0x31')](db[_0xb151('0x32')][_0xb151('0x13')](queryQueues));_0x505f6a[_0xb151('0x31')](db[_0xb151('0x33')][_0xb151('0x13')](queryQueues));_0x505f6a[_0xb151('0x31')](db['SmsQueue'][_0xb151('0x13')](queryQueues));_0x505f6a[_0xb151('0x31')](db['MailQueue'][_0xb151('0x13')](queryQueues));_0x505f6a['push'](db[_0xb151('0x34')][_0xb151('0x13')](queryQueues));_0x505f6a[_0xb151('0x31')](db[_0xb151('0x35')]['findAll'](queryQueues));_0x505f6a[_0xb151('0x31')](db[_0xb151('0x6')]['findAll'](queryTelephones));_0x505f6a[_0xb151('0x31')](db['Trunk'][_0xb151('0x13')](queryTrunks));_0x505f6a['push'](db[_0xb151('0x1b')][_0xb151('0x13')](queryCampaigns));_0x505f6a[_0xb151('0x31')](db[_0xb151('0x6')][_0xb151('0x13')](queryAgents));break;case _0xb151('0x36'):_0x1feb70[_0x2dee53](_0xb151('0x37'));_0x1feb70[_0x2dee53]('voice:outbound');_0x505f6a[_0xb151('0x31')](getAssociatedResources(_0xb151('0x38'),_0xa177ba[_0xb151('0x23')],'VoiceQueue'));_0x505f6a[_0xb151('0x31')](getAssociatedResources('ChatQueues',_0xa177ba[_0xb151('0x23')],_0xb151('0x32')));_0x505f6a['push'](getAssociatedResources(_0xb151('0xf'),_0xa177ba[_0xb151('0x23')],_0xb151('0x33')));_0x505f6a[_0xb151('0x31')](getAssociatedResources('SmsQueues',_0xa177ba[_0xb151('0x23')],'SmsQueue'));_0x505f6a['push'](getAssociatedResources(_0xb151('0x11'),_0xa177ba[_0xb151('0x23')],_0xb151('0x39')));_0x505f6a[_0xb151('0x31')](getAssociatedResources('OpenchannelQueues',_0xa177ba[_0xb151('0x23')],_0xb151('0x34')));_0x505f6a[_0xb151('0x31')](getAssociatedResources(_0xb151('0x3a'),_0xa177ba[_0xb151('0x23')],_0xb151('0x35')));_0x505f6a[_0xb151('0x31')](getAssociatedResources(_0xb151('0x14'),_0xa177ba[_0xb151('0x23')],_0xb151('0x6')));_0x505f6a[_0xb151('0x31')](getAssociatedResources(_0xb151('0x15'),_0xa177ba['userProfileId'],'Trunk'));_0x505f6a['push'](getAssociatedResources(_0xb151('0x16'),_0xa177ba[_0xb151('0x23')],_0xb151('0x1b')));_0x505f6a[_0xb151('0x31')](db[_0xb151('0x6')][_0xb151('0x13')](queryAgents));break;case _0xb151('0x8'):_0x1feb70[_0x2dee53](_0xb151('0x37'));_0x1feb70[_0x2dee53](_0xb151('0x2d'));_0x505f6a[_0xb151('0x31')](_0xa177ba['getVoiceQueues']({'attributes':['id',_0xb151('0x5')]}));_0x505f6a[_0xb151('0x31')](_0xa177ba[_0xb151('0x3b')]({'attributes':['id',_0xb151('0x5')]}));_0x505f6a[_0xb151('0x31')](_0xa177ba[_0xb151('0x3c')]({'attributes':['id',_0xb151('0x5')]}));_0x505f6a[_0xb151('0x31')](_0xa177ba[_0xb151('0x3d')]({'attributes':['id',_0xb151('0x5')]}));_0x505f6a['push'](_0xa177ba[_0xb151('0x3e')]({'attributes':['id',_0xb151('0x5')]}));_0x505f6a[_0xb151('0x31')](_0xa177ba[_0xb151('0x3f')]({'attributes':['id',_0xb151('0x5')]}));_0x505f6a[_0xb151('0x31')](_0xa177ba['getWhatsappQueues']({'attributes':['id',_0xb151('0x5')]}));break;}return BPromise[_0xb151('0x40')](_0x505f6a);}})[_0xb151('0xc')](function(_0x218ecf){if(_0x218ecf&&_0x218ecf[_0xb151('0x41')]){for(var _0x4a74dd=0x0;_0x4a74dd<_0x218ecf[_0xb151('0x41')];_0x4a74dd+=0x1){for(var _0x1fef7a=0x0;_0x1fef7a<_0x218ecf[_0x4a74dd]['length'];_0x1fef7a+=0x1){switch(_0x4a74dd){case 0x0:joinOrLeaveQueues(_0x1feb70,_0x2dee53,_0xb151('0x42'),_0x218ecf[_0x4a74dd][_0x1fef7a]);break;case 0x1:joinOrLeaveQueues(_0x1feb70,_0x2dee53,_0xb151('0x43'),_0x218ecf[_0x4a74dd][_0x1fef7a]);break;case 0x2:joinOrLeaveQueues(_0x1feb70,_0x2dee53,_0xb151('0x44'),_0x218ecf[_0x4a74dd][_0x1fef7a]);break;case 0x3:joinOrLeaveQueues(_0x1feb70,_0x2dee53,_0xb151('0x45'),_0x218ecf[_0x4a74dd][_0x1fef7a]);break;case 0x4:joinOrLeaveQueues(_0x1feb70,_0x2dee53,_0xb151('0x46'),_0x218ecf[_0x4a74dd][_0x1fef7a]);break;case 0x5:joinOrLeaveQueues(_0x1feb70,_0x2dee53,_0xb151('0x47'),_0x218ecf[_0x4a74dd][_0x1fef7a]);break;case 0x6:joinOrLeaveQueues(_0x1feb70,_0x2dee53,_0xb151('0x48'),_0x218ecf[_0x4a74dd][_0x1fef7a]);break;case 0x7:if(_0x2ccf8a[_0xb151('0x7')]!==_0xb151('0x8'))_0x1feb70[_0x2dee53](util[_0xb151('0x1c')]('telephone:%s',_0x218ecf[_0x4a74dd][_0x1fef7a][_0xb151('0x5')]));break;case 0x8:if(_0x2ccf8a[_0xb151('0x7')]!==_0xb151('0x8'))_0x1feb70[_0x2dee53](util[_0xb151('0x1c')](_0xb151('0x49'),_0x218ecf[_0x4a74dd][_0x1fef7a][_0xb151('0x5')]));break;case 0x9:if(_0x2ccf8a[_0xb151('0x7')]!==_0xb151('0x8'))_0x1feb70[_0x2dee53](util[_0xb151('0x1c')](_0xb151('0x4a'),_0x218ecf[_0x4a74dd][_0x1fef7a][_0xb151('0x9')],_0x218ecf[_0x4a74dd][_0x1fef7a][_0xb151('0x5')]));break;case 0xa:_0x1feb70[_0x2dee53](util[_0xb151('0x1c')](_0xb151('0x1f'),_0x218ecf[_0x4a74dd][_0x1fef7a][_0xb151('0x5')]));break;}}}}})[_0xb151('0xc')](function(){if(_0x2dee53===_0xb151('0x4b')){var _0x3be19a=_[_0xb151('0x17')](_0x2ccf8a[_0xb151('0x25')],'id');return _0x2ccf8a[_0xb151('0x4c')](_0x3be19a)[_0xb151('0xc')](function(){for(var _0x27abb1=0x0;_0x27abb1<_0x3be19a['length'];_0x27abb1+=0x1){_0x47bac0['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x3be19a[_0x27abb1]),'UserId':Number(_0x2ccf8a['id'])});}});}})[_0xb151('0xc')](function(){if(_0x2dee53===_0xb151('0x4b')){var _0x28cd10=_[_0xb151('0x17')](_0x2ccf8a[_0xb151('0x27')],'id');return _0x2ccf8a['removeMailInteractions'](_0x28cd10)[_0xb151('0xc')](function(){for(var _0x5c4dd0=0x0;_0x5c4dd0<_0x28cd10[_0xb151('0x41')];_0x5c4dd0+=0x1){_0x47bac0['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x28cd10[_0x5c4dd0]),'UserId':Number(_0x2ccf8a['id'])});}});}})[_0xb151('0xc')](function(){if(_0x2dee53===_0xb151('0x4b')){var _0x4759bd=_[_0xb151('0x17')](_0x2ccf8a[_0xb151('0x4d')],'id');return _0x2ccf8a['removeFaxInteractions'](_0x4759bd)[_0xb151('0xc')](function(){for(var _0x28e1f=0x0;_0x28e1f<_0x4759bd[_0xb151('0x41')];_0x28e1f+=0x1){_0x47bac0[_0xb151('0x4e')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x4759bd[_0x28e1f]),'UserId':Number(_0x2ccf8a['id'])});}});}})[_0xb151('0xc')](function(){if(_0x2dee53===_0xb151('0x4b')){var _0xf8f0fe=_['map'](_0x2ccf8a[_0xb151('0x29')],'id');return _0x2ccf8a[_0xb151('0x4f')](_0xf8f0fe)[_0xb151('0xc')](function(){for(var _0x1dabd1=0x0;_0x1dabd1<_0xf8f0fe[_0xb151('0x41')];_0x1dabd1+=0x1){_0x47bac0[_0xb151('0x4e')](_0xb151('0x50'),{'SmsInteractionId':Number(_0xf8f0fe[_0x1dabd1]),'UserId':Number(_0x2ccf8a['id'])});}});}})[_0xb151('0xc')](function(){if(_0x2dee53==='leave'){var _0x363120=_['map'](_0x2ccf8a['OpenchannelInteractions'],'id');return _0x2ccf8a['removeOpenchannelInteractions'](_0x363120)[_0xb151('0xc')](function(){for(var _0x4f1cb5=0x0;_0x4f1cb5<_0x363120[_0xb151('0x41')];_0x4f1cb5+=0x1){_0x47bac0[_0xb151('0x4e')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x363120[_0x4f1cb5]),'UserId':Number(_0x2ccf8a['id'])});}});}})[_0xb151('0xc')](function(){if(_0x2dee53===_0xb151('0x4b')){var _0x2135bf=_[_0xb151('0x17')](_0x2ccf8a[_0xb151('0x2b')],'id');return _0x2ccf8a[_0xb151('0x51')](_0x2135bf)[_0xb151('0xc')](function(){for(var _0x5e2c08=0x0;_0x5e2c08<_0x2135bf[_0xb151('0x41')];_0x5e2c08+=0x1){_0x47bac0[_0xb151('0x4e')](_0xb151('0x52'),{'WhatsappInteractionId':Number(_0x2135bf[_0x5e2c08]),'UserId':Number(_0x2ccf8a['id'])});}});}})[_0xb151('0x53')](function(_0x43fe04){_0x1feb70[_0xb151('0x54')](_0x43fe04);});}}function onDisconnect(_0x5a3bd2,_0x44b6ee){joinOrLeave(_0x5a3bd2,_0xb151('0x4b'),_0x44b6ee);}function onConnect(_0x565841){joinOrLeave(_0x565841,_0xb151('0x55'));}exports[_0xb151('0x56')]=function(_0x2c552c){_0x2c552c['on']('connection',function(_0x483487){_0x483487[_0xb151('0x57')](0x0);_0x483487[_0xb151('0x58')]=_0x483487[_0xb151('0x59')][_0xb151('0x5a')][_0xb151('0x5b')]+':'+_0x483487['request'][_0xb151('0x5a')][_0xb151('0x5c')];_0x483487[_0xb151('0x5d')]=new Date();_0x483487[_0xb151('0x54')]=function(_0x58f0a7){console['log']('SocketIO\x20'+_0x483487['nsp'][_0xb151('0x5')]+'['+_0x483487['address']+']',_0x58f0a7);};_0x483487['on'](_0xb151('0x5e'),function(){onDisconnect(_0x483487,_0x2c552c);_0x483487['log']('DISCONNECTED');});onConnect(_0x483487);_0x483487[_0xb151('0x54')](_0xb151('0x5f'));});};