Built motion from commit (unavailable).|2.5.14
[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 _0x0047=['request','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','util','../mysqldb','name','Agents','User','telephone','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','where','role','format','%s:queue:%s','length','user:%s','handshake','find','userProfileId','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','voice:outbound','OpenchannelQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','voice','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','map','emit','user_has_mail_interactions:remove','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','log','join','default','connection','setMaxListeners','address','remoteAddress'];(function(_0x4a81f4,_0x3e7b7f){var _0x3119d7=function(_0x277f35){while(--_0x277f35){_0x4a81f4['push'](_0x4a81f4['shift']());}};_0x3119d7(++_0x3e7b7f);}(_0x0047,0x69));var _0x7004=function(_0x19115e,_0x507bab){_0x19115e=_0x19115e-0x0;var _0x45bbd4=_0x0047[_0x19115e];return _0x45bbd4;};'use strict';var _=require(_0x7004('0x0'));var util=require(_0x7004('0x1'));var BPromise=require('bluebird');var db=require(_0x7004('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x7004('0x3')],'include':[{'as':_0x7004('0x4'),'model':db[_0x7004('0x5')],'attributes':['id',_0x7004('0x3'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x7004('0x3')],'where':{'role':_0x7004('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0x7004('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x7004('0x3')],'where':{'role':_0x7004('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x7004('0x3'),_0x7004('0x8')],'where':{'type':_0x7004('0x9')}};function getAssociatedResources(_0x3c09e5,_0x17f526,_0x746319){return db[_0x7004('0xa')][_0x7004('0xb')]({'where':{'name':_0x3c09e5,'userProfileId':_0x17f526},'raw':!![]})[_0x7004('0xc')](function(_0xb6e356){if(_0xb6e356){if(_0xb6e356[_0x7004('0xd')]){switch(_0x3c09e5){case _0x7004('0xe'):case _0x7004('0xf'):case _0x7004('0x10'):case _0x7004('0x11'):case _0x7004('0x12'):case'OpenchannelQueues':case _0x7004('0x13'):return db[_0x746319][_0x7004('0x14')](queryQueues);case _0x7004('0x15'):return db[_0x746319][_0x7004('0x14')](queryTelephones);case _0x7004('0x16'):return db[_0x746319]['findAll'](queryTrunks);case _0x7004('0x17'):return db[_0x746319][_0x7004('0x14')](queryCampaigns);}}else{return db['UserProfileResource'][_0x7004('0x14')]({'attributes':[_0x7004('0x18')],'where':{'sectionId':_0xb6e356['id']},'raw':!![]})[_0x7004('0xc')](function(_0x58ed62){if(_0x58ed62){var _0x3288ae={'where':{'id':_['map'](_0x58ed62,_0x7004('0x18'))},'raw':!![]};switch(_0x746319){case _0x7004('0x5'):_0x3288ae[_0x7004('0x19')][_0x7004('0x1a')]=_0x7004('0x6');break;case'Campaign':_0x3288ae[_0x7004('0x19')][_0x7004('0x8')]=_0x7004('0x9');break;}return db[_0x746319][_0x7004('0x14')](_0x3288ae);}else{return[];}});}}else{return[];}})[_0x7004('0xc')](function(_0x2747e9){return _0x2747e9;});}function joinOrLeaveQueues(_0x5f29c0,_0x2f4ec2,_0x236953,_0x2058ec){_0x5f29c0[_0x2f4ec2](util[_0x7004('0x1b')](_0x7004('0x1c'),_0x236953,_0x2058ec[_0x7004('0x3')]));if(_0x2058ec[_0x7004('0x4')]){for(var _0x2ade13=0x0;_0x2ade13<_0x2058ec[_0x7004('0x4')][_0x7004('0x1d')];_0x2ade13+=0x1){_0x5f29c0[_0x2f4ec2](util[_0x7004('0x1b')](_0x7004('0x1e'),_0x2058ec[_0x7004('0x4')][_0x2ade13]['name']));}}}function joinOrLeave(_0x4bd6d1,_0x4cca7f,_0x57dc42){var _0x2e98d8;if(_0x4bd6d1[_0x7004('0x1f')]['query']['id']){db[_0x7004('0x5')][_0x7004('0x20')]({'attributes':['id',_0x7004('0x3'),_0x7004('0x1a'),_0x7004('0x21')],'where':{'id':_0x4bd6d1[_0x7004('0x1f')]['query']['id']},'include':[{'model':db[_0x7004('0x22')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x7004('0x23')],'as':_0x7004('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x7004('0x25')],'as':_0x7004('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x7004('0x27')],'as':_0x7004('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x7004('0x29')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x7004('0x2a')],'as':_0x7004('0x2b'),'attributes':['id'],'raw':!![]}]})[_0x7004('0xc')](function(_0x136817){if(_0x136817){_0x2e98d8=_0x136817;_0x4bd6d1[_0x4cca7f](util[_0x7004('0x1b')](_0x7004('0x1e'),_0x136817[_0x7004('0x3')]));var _0x3e033a=[];switch(_0x136817[_0x7004('0x1a')]){case _0x7004('0x2c'):_0x4bd6d1[_0x4cca7f](_0x7004('0x2d'));_0x4bd6d1[_0x4cca7f]('voice:outbound');if(queryQueues['hasOwnProperty'](_0x7004('0x2e'))){delete queryQueues[_0x7004('0x2e')];}_0x3e033a[_0x7004('0x2f')](db[_0x7004('0x30')][_0x7004('0x14')](queryQueues));_0x3e033a[_0x7004('0x2f')](db[_0x7004('0x31')][_0x7004('0x14')](queryQueues));_0x3e033a[_0x7004('0x2f')](db[_0x7004('0x32')][_0x7004('0x14')](queryQueues));_0x3e033a[_0x7004('0x2f')](db[_0x7004('0x33')][_0x7004('0x14')](queryQueues));_0x3e033a[_0x7004('0x2f')](db[_0x7004('0x34')]['findAll'](queryQueues));_0x3e033a['push'](db[_0x7004('0x35')]['findAll'](queryQueues));_0x3e033a[_0x7004('0x2f')](db[_0x7004('0x36')]['findAll'](queryQueues));_0x3e033a['push'](db['User'][_0x7004('0x14')](queryTelephones));_0x3e033a[_0x7004('0x2f')](db[_0x7004('0x37')][_0x7004('0x14')](queryTrunks));_0x3e033a[_0x7004('0x2f')](db[_0x7004('0x38')][_0x7004('0x14')](queryCampaigns));_0x3e033a['push'](db[_0x7004('0x5')]['findAll'](queryAgents));break;case'user':_0x4bd6d1[_0x4cca7f](_0x7004('0x2d'));_0x4bd6d1[_0x4cca7f](_0x7004('0x39'));_0x3e033a[_0x7004('0x2f')](getAssociatedResources(_0x7004('0xe'),_0x136817[_0x7004('0x21')],_0x7004('0x30')));_0x3e033a['push'](getAssociatedResources(_0x7004('0xf'),_0x136817['userProfileId'],_0x7004('0x31')));_0x3e033a[_0x7004('0x2f')](getAssociatedResources('FaxQueues',_0x136817['userProfileId'],_0x7004('0x32')));_0x3e033a[_0x7004('0x2f')](getAssociatedResources(_0x7004('0x11'),_0x136817[_0x7004('0x21')],_0x7004('0x33')));_0x3e033a[_0x7004('0x2f')](getAssociatedResources(_0x7004('0x12'),_0x136817[_0x7004('0x21')],_0x7004('0x34')));_0x3e033a['push'](getAssociatedResources(_0x7004('0x3a'),_0x136817[_0x7004('0x21')],_0x7004('0x35')));_0x3e033a['push'](getAssociatedResources(_0x7004('0x13'),_0x136817['userProfileId'],'WhatsappQueue'));_0x3e033a[_0x7004('0x2f')](getAssociatedResources(_0x7004('0x15'),_0x136817[_0x7004('0x21')],'User'));_0x3e033a['push'](getAssociatedResources('Trunks',_0x136817[_0x7004('0x21')],_0x7004('0x37')));_0x3e033a['push'](getAssociatedResources(_0x7004('0x17'),_0x136817[_0x7004('0x21')],_0x7004('0x38')));_0x3e033a['push'](db[_0x7004('0x5')][_0x7004('0x14')](queryAgents));break;case _0x7004('0x7'):_0x4bd6d1[_0x4cca7f](_0x7004('0x2d'));_0x4bd6d1[_0x4cca7f](_0x7004('0x39'));_0x3e033a['push'](_0x136817[_0x7004('0x3b')]({'attributes':['id','name']}));_0x3e033a[_0x7004('0x2f')](_0x136817[_0x7004('0x3c')]({'attributes':['id',_0x7004('0x3')]}));_0x3e033a[_0x7004('0x2f')](_0x136817[_0x7004('0x3d')]({'attributes':['id',_0x7004('0x3')]}));_0x3e033a[_0x7004('0x2f')](_0x136817[_0x7004('0x3e')]({'attributes':['id','name']}));_0x3e033a[_0x7004('0x2f')](_0x136817[_0x7004('0x3f')]({'attributes':['id',_0x7004('0x3')]}));_0x3e033a[_0x7004('0x2f')](_0x136817['getOpenchannelQueues']({'attributes':['id',_0x7004('0x3')]}));_0x3e033a[_0x7004('0x2f')](_0x136817[_0x7004('0x40')]({'attributes':['id',_0x7004('0x3')]}));break;}return BPromise['all'](_0x3e033a);}})[_0x7004('0xc')](function(_0x5bab21){if(_0x5bab21&&_0x5bab21[_0x7004('0x1d')]){for(var _0x10189a=0x0;_0x10189a<_0x5bab21[_0x7004('0x1d')];_0x10189a+=0x1){for(var _0x5ceb08=0x0;_0x5ceb08<_0x5bab21[_0x10189a][_0x7004('0x1d')];_0x5ceb08+=0x1){switch(_0x10189a){case 0x0:joinOrLeaveQueues(_0x4bd6d1,_0x4cca7f,_0x7004('0x41'),_0x5bab21[_0x10189a][_0x5ceb08]);break;case 0x1:joinOrLeaveQueues(_0x4bd6d1,_0x4cca7f,_0x7004('0x42'),_0x5bab21[_0x10189a][_0x5ceb08]);break;case 0x2:joinOrLeaveQueues(_0x4bd6d1,_0x4cca7f,_0x7004('0x43'),_0x5bab21[_0x10189a][_0x5ceb08]);break;case 0x3:joinOrLeaveQueues(_0x4bd6d1,_0x4cca7f,_0x7004('0x44'),_0x5bab21[_0x10189a][_0x5ceb08]);break;case 0x4:joinOrLeaveQueues(_0x4bd6d1,_0x4cca7f,_0x7004('0x45'),_0x5bab21[_0x10189a][_0x5ceb08]);break;case 0x5:joinOrLeaveQueues(_0x4bd6d1,_0x4cca7f,'openchannel',_0x5bab21[_0x10189a][_0x5ceb08]);break;case 0x6:joinOrLeaveQueues(_0x4bd6d1,_0x4cca7f,_0x7004('0x46'),_0x5bab21[_0x10189a][_0x5ceb08]);break;case 0x7:_0x4bd6d1[_0x4cca7f](util[_0x7004('0x1b')](_0x7004('0x47'),_0x5bab21[_0x10189a][_0x5ceb08][_0x7004('0x3')]));break;case 0x8:_0x4bd6d1[_0x4cca7f](util[_0x7004('0x1b')](_0x7004('0x48'),_0x5bab21[_0x10189a][_0x5ceb08][_0x7004('0x3')]));break;case 0x9:_0x4bd6d1[_0x4cca7f](util[_0x7004('0x1b')](_0x7004('0x49'),_0x5bab21[_0x10189a][_0x5ceb08][_0x7004('0x8')],_0x5bab21[_0x10189a][_0x5ceb08][_0x7004('0x3')]));break;case 0xa:_0x4bd6d1[_0x4cca7f](util['format'](_0x7004('0x1e'),_0x5bab21[_0x10189a][_0x5ceb08]['name']));break;}}}}})['then'](function(){if(_0x4cca7f===_0x7004('0x4a')){var _0x3e8e4c=_['map'](_0x2e98d8['ChatInteractions'],'id');return _0x2e98d8[_0x7004('0x4b')](_0x3e8e4c)[_0x7004('0xc')](function(){for(var _0x53af94=0x0;_0x53af94<_0x3e8e4c[_0x7004('0x1d')];_0x53af94+=0x1){_0x57dc42['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x3e8e4c[_0x53af94]),'UserId':Number(_0x2e98d8['id'])});}});}})[_0x7004('0xc')](function(){if(_0x4cca7f===_0x7004('0x4a')){var _0x37a141=_[_0x7004('0x4c')](_0x2e98d8[_0x7004('0x24')],'id');return _0x2e98d8['removeMailInteractions'](_0x37a141)['then'](function(){for(var _0x31f1a4=0x0;_0x31f1a4<_0x37a141[_0x7004('0x1d')];_0x31f1a4+=0x1){_0x57dc42[_0x7004('0x4d')](_0x7004('0x4e'),{'MailInteractionId':Number(_0x37a141[_0x31f1a4]),'UserId':Number(_0x2e98d8['id'])});}});}})[_0x7004('0xc')](function(){if(_0x4cca7f==='leave'){var _0xe24989=_[_0x7004('0x4c')](_0x2e98d8[_0x7004('0x26')],'id');return _0x2e98d8[_0x7004('0x4f')](_0xe24989)[_0x7004('0xc')](function(){for(var _0x143d4f=0x0;_0x143d4f<_0xe24989['length'];_0x143d4f+=0x1){_0x57dc42['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0xe24989[_0x143d4f]),'UserId':Number(_0x2e98d8['id'])});}});}})[_0x7004('0xc')](function(){if(_0x4cca7f===_0x7004('0x4a')){var _0x6f8f8b=_[_0x7004('0x4c')](_0x2e98d8[_0x7004('0x28')],'id');return _0x2e98d8[_0x7004('0x50')](_0x6f8f8b)['then'](function(){for(var _0x19c371=0x0;_0x19c371<_0x6f8f8b[_0x7004('0x1d')];_0x19c371+=0x1){_0x57dc42[_0x7004('0x4d')](_0x7004('0x51'),{'SmsInteractionId':Number(_0x6f8f8b[_0x19c371]),'UserId':Number(_0x2e98d8['id'])});}});}})[_0x7004('0xc')](function(){if(_0x4cca7f===_0x7004('0x4a')){var _0x50619e=_['map'](_0x2e98d8[_0x7004('0x52')],'id');return _0x2e98d8[_0x7004('0x53')](_0x50619e)[_0x7004('0xc')](function(){for(var _0x4a0589=0x0;_0x4a0589<_0x50619e['length'];_0x4a0589+=0x1){_0x57dc42[_0x7004('0x4d')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x50619e[_0x4a0589]),'UserId':Number(_0x2e98d8['id'])});}});}})[_0x7004('0xc')](function(){if(_0x4cca7f==='leave'){var _0x2207c3=_[_0x7004('0x4c')](_0x2e98d8[_0x7004('0x2b')],'id');return _0x2e98d8['removeWhatsappInteractions'](_0x2207c3)['then'](function(){for(var _0xd8764c=0x0;_0xd8764c<_0x2207c3[_0x7004('0x1d')];_0xd8764c+=0x1){_0x57dc42['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x2207c3[_0xd8764c]),'UserId':Number(_0x2e98d8['id'])});}});}})['catch'](function(_0x14fb58){_0x4bd6d1[_0x7004('0x54')](_0x14fb58);});}}function onDisconnect(_0x40da75,_0x321566){joinOrLeave(_0x40da75,_0x7004('0x4a'),_0x321566);}function onConnect(_0x53b932){joinOrLeave(_0x53b932,_0x7004('0x55'));}exports[_0x7004('0x56')]=function(_0x5aa52a){_0x5aa52a['on'](_0x7004('0x57'),function(_0x24e658){_0x24e658[_0x7004('0x58')](0x0);_0x24e658[_0x7004('0x59')]=_0x24e658['request']['connection'][_0x7004('0x5a')]+':'+_0x24e658[_0x7004('0x5b')][_0x7004('0x57')][_0x7004('0x5c')];_0x24e658[_0x7004('0x5d')]=new Date();_0x24e658[_0x7004('0x54')]=function(_0x3da45d){console['log'](_0x7004('0x5e')+_0x24e658[_0x7004('0x5f')][_0x7004('0x3')]+'['+_0x24e658[_0x7004('0x59')]+']',_0x3da45d);};_0x24e658['on'](_0x7004('0x60'),function(){onDisconnect(_0x24e658,_0x5aa52a);_0x24e658[_0x7004('0x54')](_0x7004('0x61'));});onConnect(_0x24e658);_0x24e658[_0x7004('0x54')]('CONNECTED');});};