133302f5d961edd03e44259d9c7639d56e16d62b
[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 _0xcc6d=['user:%s','voice:inbound','hasOwnProperty','include','push','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:outbound','userProfileId','ChatQueue','FaxQueues','getChatQueues','getFaxQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeSmsInteractions','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','join','default','connection','request','remoteAddress','remotePort','connectedAt','log','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','Agents','role','name','agent','type','ivr','findOne','ChatQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','map','where','telephone','Campaign','then','format','length','query','User','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','WhatsappInteraction','WhatsappInteractions'];(function(_0xb81593,_0x53ffad){var _0x57bfae=function(_0x2f67d5){while(--_0x2f67d5){_0xb81593['push'](_0xb81593['shift']());}};_0x57bfae(++_0x53ffad);}(_0xcc6d,0x1a9));var _0xdcc6=function(_0x3520ce,_0x4e0252){_0x3520ce=_0x3520ce-0x0;var _0x19e5e7=_0xcc6d[_0x3520ce];return _0x19e5e7;};'use strict';var _=require(_0xdcc6('0x0'));var util=require(_0xdcc6('0x1'));var BPromise=require(_0xdcc6('0x2'));var db=require(_0xdcc6('0x3'))['db'];var config=require(_0xdcc6('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0xdcc6('0x5'),'model':db['User'],'attributes':['id','name',_0xdcc6('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xdcc6('0x7')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xdcc6('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0xdcc6('0x9')],'where':{'type':_0xdcc6('0xa')}};function getAssociatedResources(_0x195e2a,_0x911d24,_0x45fa41){return db['UserProfileSection'][_0xdcc6('0xb')]({'where':{'name':_0x195e2a,'userProfileId':_0x911d24},'raw':!![]})['then'](function(_0x5e1249){if(_0x5e1249){if(_0x5e1249['autoAssociation']){switch(_0x195e2a){case'VoiceQueues':case _0xdcc6('0xc'):case'FaxQueues':case'SmsQueues':case _0xdcc6('0xd'):case _0xdcc6('0xe'):case _0xdcc6('0xf'):return db[_0x45fa41][_0xdcc6('0x10')](queryQueues);case _0xdcc6('0x11'):return db[_0x45fa41][_0xdcc6('0x10')](queryTelephones);case _0xdcc6('0x12'):return db[_0x45fa41][_0xdcc6('0x10')](queryTrunks);case _0xdcc6('0x13'):return db[_0x45fa41][_0xdcc6('0x10')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0xdcc6('0x14')],'where':{'sectionId':_0x5e1249['id']},'raw':!![]})['then'](function(_0x1936e1){if(_0x1936e1){var _0x472308={'where':{'id':_[_0xdcc6('0x15')](_0x1936e1,_0xdcc6('0x14'))},'raw':!![]};switch(_0x45fa41){case'User':_0x472308[_0xdcc6('0x16')][_0xdcc6('0x6')]=_0xdcc6('0x17');break;case _0xdcc6('0x18'):_0x472308[_0xdcc6('0x16')]['type']=_0xdcc6('0xa');break;}return db[_0x45fa41][_0xdcc6('0x10')](_0x472308);}else{return[];}});}}else{return[];}})[_0xdcc6('0x19')](function(_0x3c801d){return _0x3c801d;});}function joinOrLeaveQueues(_0xb20c60,_0x52be46,_0x51ef83,_0x29995b){_0xb20c60[_0x52be46](util[_0xdcc6('0x1a')]('%s:queue:%s',_0x51ef83,_0x29995b['name']));if(_0x29995b['Agents']){for(var _0x27f067=0x0;_0x27f067<_0x29995b[_0xdcc6('0x5')][_0xdcc6('0x1b')];_0x27f067+=0x1){_0xb20c60[_0x52be46](util[_0xdcc6('0x1a')]('user:%s',_0x29995b[_0xdcc6('0x5')][_0x27f067][_0xdcc6('0x7')]));}}}function joinOrLeave(_0x384c77,_0x4115fd,_0x4d44e2){var _0x51a96d;if(_0x384c77['handshake'][_0xdcc6('0x1c')]['id']){db[_0xdcc6('0x1d')]['find']({'attributes':['id',_0xdcc6('0x7'),_0xdcc6('0x6'),'userProfileId'],'where':{'id':_0x384c77['handshake'][_0xdcc6('0x1c')]['id']},'include':[{'model':db[_0xdcc6('0x1e')],'as':_0xdcc6('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0xdcc6('0x20')],'as':_0xdcc6('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0xdcc6('0x22')],'as':_0xdcc6('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xdcc6('0x24')],'as':_0xdcc6('0x25'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xdcc6('0x26')],'as':_0xdcc6('0x27'),'attributes':['id'],'raw':!![]}]})[_0xdcc6('0x19')](function(_0xfd50e1){if(_0xfd50e1){_0x51a96d=_0xfd50e1;_0x384c77[_0x4115fd](util[_0xdcc6('0x1a')](_0xdcc6('0x28'),_0xfd50e1[_0xdcc6('0x7')]));var _0x29019d=[];switch(_0xfd50e1[_0xdcc6('0x6')]){case'admin':_0x384c77[_0x4115fd](_0xdcc6('0x29'));_0x384c77[_0x4115fd]('voice:outbound');if(queryQueues[_0xdcc6('0x2a')]('include')){delete queryQueues[_0xdcc6('0x2b')];}_0x29019d[_0xdcc6('0x2c')](db['VoiceQueue'][_0xdcc6('0x10')](queryQueues));_0x29019d['push'](db['ChatQueue'][_0xdcc6('0x10')](queryQueues));_0x29019d[_0xdcc6('0x2c')](db['FaxQueue'][_0xdcc6('0x10')](queryQueues));_0x29019d[_0xdcc6('0x2c')](db[_0xdcc6('0x2d')][_0xdcc6('0x10')](queryQueues));_0x29019d[_0xdcc6('0x2c')](db[_0xdcc6('0x2e')][_0xdcc6('0x10')](queryQueues));_0x29019d[_0xdcc6('0x2c')](db[_0xdcc6('0x2f')]['findAll'](queryQueues));_0x29019d[_0xdcc6('0x2c')](db[_0xdcc6('0x30')][_0xdcc6('0x10')](queryQueues));_0x29019d[_0xdcc6('0x2c')](db['User']['findAll'](queryTelephones));_0x29019d[_0xdcc6('0x2c')](db[_0xdcc6('0x31')][_0xdcc6('0x10')](queryTrunks));_0x29019d['push'](db[_0xdcc6('0x18')][_0xdcc6('0x10')](queryCampaigns));_0x29019d[_0xdcc6('0x2c')](db['User'][_0xdcc6('0x10')](queryAgents));break;case _0xdcc6('0x32'):_0x384c77[_0x4115fd]('voice:inbound');_0x384c77[_0x4115fd](_0xdcc6('0x33'));_0x29019d['push'](getAssociatedResources('VoiceQueues',_0xfd50e1[_0xdcc6('0x34')],'VoiceQueue'));_0x29019d[_0xdcc6('0x2c')](getAssociatedResources('ChatQueues',_0xfd50e1[_0xdcc6('0x34')],_0xdcc6('0x35')));_0x29019d[_0xdcc6('0x2c')](getAssociatedResources(_0xdcc6('0x36'),_0xfd50e1[_0xdcc6('0x34')],'FaxQueue'));_0x29019d[_0xdcc6('0x2c')](getAssociatedResources('SmsQueues',_0xfd50e1[_0xdcc6('0x34')],_0xdcc6('0x2d')));_0x29019d['push'](getAssociatedResources(_0xdcc6('0xd'),_0xfd50e1[_0xdcc6('0x34')],_0xdcc6('0x2e')));_0x29019d['push'](getAssociatedResources(_0xdcc6('0xe'),_0xfd50e1[_0xdcc6('0x34')],_0xdcc6('0x2f')));_0x29019d[_0xdcc6('0x2c')](getAssociatedResources(_0xdcc6('0xf'),_0xfd50e1[_0xdcc6('0x34')],_0xdcc6('0x30')));_0x29019d['push'](getAssociatedResources(_0xdcc6('0x11'),_0xfd50e1['userProfileId'],_0xdcc6('0x1d')));_0x29019d['push'](getAssociatedResources('Trunks',_0xfd50e1[_0xdcc6('0x34')],'Trunk'));_0x29019d['push'](getAssociatedResources('IvrCampaigns',_0xfd50e1[_0xdcc6('0x34')],_0xdcc6('0x18')));_0x29019d[_0xdcc6('0x2c')](db[_0xdcc6('0x1d')]['findAll'](queryAgents));break;case _0xdcc6('0x8'):_0x384c77[_0x4115fd](_0xdcc6('0x29'));_0x384c77[_0x4115fd](_0xdcc6('0x33'));_0x29019d[_0xdcc6('0x2c')](_0xfd50e1['getVoiceQueues']({'attributes':['id',_0xdcc6('0x7')]}));_0x29019d[_0xdcc6('0x2c')](_0xfd50e1[_0xdcc6('0x37')]({'attributes':['id',_0xdcc6('0x7')]}));_0x29019d[_0xdcc6('0x2c')](_0xfd50e1[_0xdcc6('0x38')]({'attributes':['id',_0xdcc6('0x7')]}));_0x29019d[_0xdcc6('0x2c')](_0xfd50e1['getSmsQueues']({'attributes':['id',_0xdcc6('0x7')]}));_0x29019d[_0xdcc6('0x2c')](_0xfd50e1['getMailQueues']({'attributes':['id',_0xdcc6('0x7')]}));_0x29019d[_0xdcc6('0x2c')](_0xfd50e1[_0xdcc6('0x39')]({'attributes':['id',_0xdcc6('0x7')]}));_0x29019d[_0xdcc6('0x2c')](_0xfd50e1[_0xdcc6('0x3a')]({'attributes':['id',_0xdcc6('0x7')]}));break;}return BPromise[_0xdcc6('0x3b')](_0x29019d);}})[_0xdcc6('0x19')](function(_0x1cf772){if(_0x1cf772&&_0x1cf772[_0xdcc6('0x1b')]){for(var _0x5c990d=0x0;_0x5c990d<_0x1cf772[_0xdcc6('0x1b')];_0x5c990d+=0x1){for(var _0x24ee42=0x0;_0x24ee42<_0x1cf772[_0x5c990d][_0xdcc6('0x1b')];_0x24ee42+=0x1){switch(_0x5c990d){case 0x0:joinOrLeaveQueues(_0x384c77,_0x4115fd,_0xdcc6('0x3c'),_0x1cf772[_0x5c990d][_0x24ee42]);break;case 0x1:joinOrLeaveQueues(_0x384c77,_0x4115fd,'chat',_0x1cf772[_0x5c990d][_0x24ee42]);break;case 0x2:joinOrLeaveQueues(_0x384c77,_0x4115fd,_0xdcc6('0x3d'),_0x1cf772[_0x5c990d][_0x24ee42]);break;case 0x3:joinOrLeaveQueues(_0x384c77,_0x4115fd,_0xdcc6('0x3e'),_0x1cf772[_0x5c990d][_0x24ee42]);break;case 0x4:joinOrLeaveQueues(_0x384c77,_0x4115fd,_0xdcc6('0x3f'),_0x1cf772[_0x5c990d][_0x24ee42]);break;case 0x5:joinOrLeaveQueues(_0x384c77,_0x4115fd,'openchannel',_0x1cf772[_0x5c990d][_0x24ee42]);break;case 0x6:joinOrLeaveQueues(_0x384c77,_0x4115fd,_0xdcc6('0x40'),_0x1cf772[_0x5c990d][_0x24ee42]);break;case 0x7:if(_0x51a96d[_0xdcc6('0x6')]!=='agent')_0x384c77[_0x4115fd](util['format'](_0xdcc6('0x41'),_0x1cf772[_0x5c990d][_0x24ee42][_0xdcc6('0x7')]));break;case 0x8:if(_0x51a96d[_0xdcc6('0x6')]!==_0xdcc6('0x8'))_0x384c77[_0x4115fd](util['format'](_0xdcc6('0x42'),_0x1cf772[_0x5c990d][_0x24ee42][_0xdcc6('0x7')]));break;case 0x9:if(_0x51a96d[_0xdcc6('0x6')]!==_0xdcc6('0x8'))_0x384c77[_0x4115fd](util[_0xdcc6('0x1a')](_0xdcc6('0x43'),_0x1cf772[_0x5c990d][_0x24ee42]['type'],_0x1cf772[_0x5c990d][_0x24ee42][_0xdcc6('0x7')]));break;case 0xa:_0x384c77[_0x4115fd](util['format'](_0xdcc6('0x28'),_0x1cf772[_0x5c990d][_0x24ee42][_0xdcc6('0x7')]));break;}}}}})[_0xdcc6('0x19')](function(){if(_0x4115fd===_0xdcc6('0x44')){var _0x384fc6=_['map'](_0x51a96d[_0xdcc6('0x1f')],'id');return _0x51a96d[_0xdcc6('0x45')](_0x384fc6)[_0xdcc6('0x19')](function(){for(var _0x3d2c48=0x0;_0x3d2c48<_0x384fc6[_0xdcc6('0x1b')];_0x3d2c48+=0x1){_0x4d44e2[_0xdcc6('0x46')](_0xdcc6('0x47'),{'ChatInteractionId':Number(_0x384fc6[_0x3d2c48]),'UserId':Number(_0x51a96d['id'])});}});}})['then'](function(){if(_0x4115fd===_0xdcc6('0x44')){var _0x23f2be=_[_0xdcc6('0x15')](_0x51a96d['MailInteractions'],'id');return _0x51a96d[_0xdcc6('0x48')](_0x23f2be)[_0xdcc6('0x19')](function(){for(var _0x53d162=0x0;_0x53d162<_0x23f2be[_0xdcc6('0x1b')];_0x53d162+=0x1){_0x4d44e2[_0xdcc6('0x46')](_0xdcc6('0x49'),{'MailInteractionId':Number(_0x23f2be[_0x53d162]),'UserId':Number(_0x51a96d['id'])});}});}})[_0xdcc6('0x19')](function(){if(_0x4115fd===_0xdcc6('0x44')){var _0x127bc0=_[_0xdcc6('0x15')](_0x51a96d[_0xdcc6('0x23')],'id');return _0x51a96d['removeFaxInteractions'](_0x127bc0)[_0xdcc6('0x19')](function(){for(var _0x2114b9=0x0;_0x2114b9<_0x127bc0[_0xdcc6('0x1b')];_0x2114b9+=0x1){_0x4d44e2[_0xdcc6('0x46')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x127bc0[_0x2114b9]),'UserId':Number(_0x51a96d['id'])});}});}})['then'](function(){if(_0x4115fd===_0xdcc6('0x44')){var _0x2c7db7=_[_0xdcc6('0x15')](_0x51a96d[_0xdcc6('0x25')],'id');return _0x51a96d[_0xdcc6('0x4a')](_0x2c7db7)[_0xdcc6('0x19')](function(){for(var _0x48a945=0x0;_0x48a945<_0x2c7db7[_0xdcc6('0x1b')];_0x48a945+=0x1){_0x4d44e2[_0xdcc6('0x46')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x2c7db7[_0x48a945]),'UserId':Number(_0x51a96d['id'])});}});}})[_0xdcc6('0x19')](function(){if(_0x4115fd===_0xdcc6('0x44')){var _0x247fff=_['map'](_0x51a96d[_0xdcc6('0x4b')],'id');return _0x51a96d[_0xdcc6('0x4c')](_0x247fff)[_0xdcc6('0x19')](function(){for(var _0x106e14=0x0;_0x106e14<_0x247fff[_0xdcc6('0x1b')];_0x106e14+=0x1){_0x4d44e2[_0xdcc6('0x46')](_0xdcc6('0x4d'),{'OpenchannelInteractionId':Number(_0x247fff[_0x106e14]),'UserId':Number(_0x51a96d['id'])});}});}})['then'](function(){if(_0x4115fd==='leave'){var _0x2d4657=_[_0xdcc6('0x15')](_0x51a96d[_0xdcc6('0x27')],'id');return _0x51a96d['removeWhatsappInteractions'](_0x2d4657)[_0xdcc6('0x19')](function(){for(var _0x10a9e3=0x0;_0x10a9e3<_0x2d4657['length'];_0x10a9e3+=0x1){_0x4d44e2[_0xdcc6('0x46')](_0xdcc6('0x4e'),{'WhatsappInteractionId':Number(_0x2d4657[_0x10a9e3]),'UserId':Number(_0x51a96d['id'])});}});}})[_0xdcc6('0x4f')](function(_0x3a4e4e){_0x384c77['log'](_0x3a4e4e);});}}function onDisconnect(_0x41cf6e,_0x2b5f65){joinOrLeave(_0x41cf6e,_0xdcc6('0x44'),_0x2b5f65);}function onConnect(_0x4fb7a7){joinOrLeave(_0x4fb7a7,_0xdcc6('0x50'));}exports[_0xdcc6('0x51')]=function(_0x31f43c){_0x31f43c['on'](_0xdcc6('0x52'),function(_0x16fdc2){_0x16fdc2['setMaxListeners'](0x0);_0x16fdc2['address']=_0x16fdc2[_0xdcc6('0x53')][_0xdcc6('0x52')][_0xdcc6('0x54')]+':'+_0x16fdc2[_0xdcc6('0x53')]['connection'][_0xdcc6('0x55')];_0x16fdc2[_0xdcc6('0x56')]=new Date();_0x16fdc2[_0xdcc6('0x57')]=function(_0x28736f){console[_0xdcc6('0x57')]('SocketIO\x20'+_0x16fdc2[_0xdcc6('0x58')]['name']+'['+_0x16fdc2[_0xdcc6('0x59')]+']',_0x28736f);};_0x16fdc2['on'](_0xdcc6('0x5a'),function(){onDisconnect(_0x16fdc2,_0x31f43c);_0x16fdc2[_0xdcc6('0x57')](_0xdcc6('0x5b'));});onConnect(_0x16fdc2);_0x16fdc2['log'](_0xdcc6('0x5c'));});};