Built motion from commit a61a4a20.|2.5.46
[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 _0x8ad6=['UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','IvrCampaigns','UserProfileResource','resourceId','map','User','where','telephone','Campaign','type','ivr','format','%s:queue:%s','length','handshake','query','find','userProfileId','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','user','ChatQueue','OpenchannelQueue','Trunks','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','fax','sms','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','default','connection','address','request','remotePort','connectedAt','SocketIO\x20','lodash','util','bluebird','../mysqldb','./environment','name','Agents','role','agent'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x8ad6,0x123));var _0x68ad=function(_0x19429b,_0x1709d0){_0x19429b=_0x19429b-0x0;var _0x13fcbf=_0x8ad6[_0x19429b];return _0x13fcbf;};'use strict';var _=require(_0x68ad('0x0'));var util=require(_0x68ad('0x1'));var BPromise=require(_0x68ad('0x2'));var db=require(_0x68ad('0x3'))['db'];var config=require(_0x68ad('0x4'));var queryQueues={'attributes':['id',_0x68ad('0x5')],'include':[{'as':_0x68ad('0x6'),'model':db['User'],'attributes':['id',_0x68ad('0x5'),_0x68ad('0x7')],'raw':!![],'where':{'role':_0x68ad('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x68ad('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x68ad('0x5')],'where':{'role':_0x68ad('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x68ad('0x5'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x44e620,_0x2b04d3,_0x2fd475){return db[_0x68ad('0x9')][_0x68ad('0xa')]({'where':{'name':_0x44e620,'userProfileId':_0x2b04d3},'raw':!![]})[_0x68ad('0xb')](function(_0x4d3d98){if(_0x4d3d98){if(_0x4d3d98[_0x68ad('0xc')]){switch(_0x44e620){case _0x68ad('0xd'):case _0x68ad('0xe'):case _0x68ad('0xf'):case _0x68ad('0x10'):case _0x68ad('0x11'):case'OpenchannelQueues':case _0x68ad('0x12'):return db[_0x2fd475][_0x68ad('0x13')](queryQueues);case _0x68ad('0x14'):return db[_0x2fd475][_0x68ad('0x13')](queryTelephones);case'Trunks':return db[_0x2fd475]['findAll'](queryTrunks);case _0x68ad('0x15'):return db[_0x2fd475]['findAll'](queryCampaigns);}}else{return db[_0x68ad('0x16')][_0x68ad('0x13')]({'attributes':[_0x68ad('0x17')],'where':{'sectionId':_0x4d3d98['id']},'raw':!![]})[_0x68ad('0xb')](function(_0x4fc1d9){if(_0x4fc1d9){var _0x4c6f8e={'where':{'id':_[_0x68ad('0x18')](_0x4fc1d9,'resourceId')},'raw':!![]};switch(_0x2fd475){case _0x68ad('0x19'):_0x4c6f8e[_0x68ad('0x1a')][_0x68ad('0x7')]=_0x68ad('0x1b');break;case _0x68ad('0x1c'):_0x4c6f8e[_0x68ad('0x1a')][_0x68ad('0x1d')]=_0x68ad('0x1e');break;}return db[_0x2fd475][_0x68ad('0x13')](_0x4c6f8e);}else{return[];}});}}else{return[];}})[_0x68ad('0xb')](function(_0x492405){return _0x492405;});}function joinOrLeaveQueues(_0x436d77,_0x49fe93,_0x185d03,_0xe62add){_0x436d77[_0x49fe93](util[_0x68ad('0x1f')](_0x68ad('0x20'),_0x185d03,_0xe62add[_0x68ad('0x5')]));if(_0xe62add[_0x68ad('0x6')]){for(var _0x2c0a88=0x0;_0x2c0a88<_0xe62add[_0x68ad('0x6')][_0x68ad('0x21')];_0x2c0a88+=0x1){_0x436d77[_0x49fe93](util[_0x68ad('0x1f')]('user:%s',_0xe62add['Agents'][_0x2c0a88][_0x68ad('0x5')]));}}}function joinOrLeave(_0x4959d3,_0x1dd361,_0x22d84c){var _0x26e7e7;if(_0x4959d3[_0x68ad('0x22')][_0x68ad('0x23')]['id']){db['User'][_0x68ad('0x24')]({'attributes':['id',_0x68ad('0x5'),'role',_0x68ad('0x25')],'where':{'id':_0x4959d3[_0x68ad('0x22')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x68ad('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x68ad('0x27')],'as':_0x68ad('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x68ad('0x29')],'as':_0x68ad('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x68ad('0x2b')],'as':_0x68ad('0x2c'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x68ad('0xb')](function(_0x1f7846){if(_0x1f7846){_0x26e7e7=_0x1f7846;_0x4959d3[_0x1dd361](util[_0x68ad('0x1f')](_0x68ad('0x2d'),_0x1f7846[_0x68ad('0x5')]));var _0xf8660e=[];switch(_0x1f7846[_0x68ad('0x7')]){case _0x68ad('0x2e'):_0x4959d3[_0x1dd361](_0x68ad('0x2f'));_0x4959d3[_0x1dd361](_0x68ad('0x30'));if(queryQueues[_0x68ad('0x31')]('include')){delete queryQueues[_0x68ad('0x32')];}_0xf8660e[_0x68ad('0x33')](db[_0x68ad('0x34')][_0x68ad('0x13')](queryQueues));_0xf8660e[_0x68ad('0x33')](db['ChatQueue']['findAll'](queryQueues));_0xf8660e['push'](db[_0x68ad('0x35')][_0x68ad('0x13')](queryQueues));_0xf8660e['push'](db[_0x68ad('0x36')]['findAll'](queryQueues));_0xf8660e[_0x68ad('0x33')](db[_0x68ad('0x37')][_0x68ad('0x13')](queryQueues));_0xf8660e[_0x68ad('0x33')](db['OpenchannelQueue'][_0x68ad('0x13')](queryQueues));_0xf8660e[_0x68ad('0x33')](db[_0x68ad('0x38')][_0x68ad('0x13')](queryQueues));_0xf8660e[_0x68ad('0x33')](db[_0x68ad('0x19')]['findAll'](queryTelephones));_0xf8660e[_0x68ad('0x33')](db[_0x68ad('0x39')][_0x68ad('0x13')](queryTrunks));_0xf8660e[_0x68ad('0x33')](db['Campaign'][_0x68ad('0x13')](queryCampaigns));_0xf8660e[_0x68ad('0x33')](db[_0x68ad('0x19')][_0x68ad('0x13')](queryAgents));break;case _0x68ad('0x3a'):_0x4959d3[_0x1dd361](_0x68ad('0x2f'));_0x4959d3[_0x1dd361](_0x68ad('0x30'));_0xf8660e[_0x68ad('0x33')](getAssociatedResources(_0x68ad('0xd'),_0x1f7846[_0x68ad('0x25')],_0x68ad('0x34')));_0xf8660e[_0x68ad('0x33')](getAssociatedResources(_0x68ad('0xe'),_0x1f7846[_0x68ad('0x25')],_0x68ad('0x3b')));_0xf8660e[_0x68ad('0x33')](getAssociatedResources(_0x68ad('0xf'),_0x1f7846[_0x68ad('0x25')],_0x68ad('0x35')));_0xf8660e[_0x68ad('0x33')](getAssociatedResources('SmsQueues',_0x1f7846[_0x68ad('0x25')],_0x68ad('0x36')));_0xf8660e[_0x68ad('0x33')](getAssociatedResources(_0x68ad('0x11'),_0x1f7846[_0x68ad('0x25')],_0x68ad('0x37')));_0xf8660e[_0x68ad('0x33')](getAssociatedResources('OpenchannelQueues',_0x1f7846[_0x68ad('0x25')],_0x68ad('0x3c')));_0xf8660e[_0x68ad('0x33')](getAssociatedResources(_0x68ad('0x12'),_0x1f7846[_0x68ad('0x25')],_0x68ad('0x38')));_0xf8660e['push'](getAssociatedResources(_0x68ad('0x14'),_0x1f7846['userProfileId'],_0x68ad('0x19')));_0xf8660e[_0x68ad('0x33')](getAssociatedResources(_0x68ad('0x3d'),_0x1f7846[_0x68ad('0x25')],_0x68ad('0x39')));_0xf8660e['push'](getAssociatedResources('IvrCampaigns',_0x1f7846[_0x68ad('0x25')],_0x68ad('0x1c')));_0xf8660e[_0x68ad('0x33')](db['User'][_0x68ad('0x13')](queryAgents));break;case'agent':_0x4959d3[_0x1dd361]('voice:inbound');_0x4959d3[_0x1dd361](_0x68ad('0x30'));_0xf8660e[_0x68ad('0x33')](_0x1f7846[_0x68ad('0x3e')]({'attributes':['id',_0x68ad('0x5')]}));_0xf8660e[_0x68ad('0x33')](_0x1f7846[_0x68ad('0x3f')]({'attributes':['id','name']}));_0xf8660e[_0x68ad('0x33')](_0x1f7846[_0x68ad('0x40')]({'attributes':['id',_0x68ad('0x5')]}));_0xf8660e[_0x68ad('0x33')](_0x1f7846['getSmsQueues']({'attributes':['id',_0x68ad('0x5')]}));_0xf8660e['push'](_0x1f7846[_0x68ad('0x41')]({'attributes':['id',_0x68ad('0x5')]}));_0xf8660e[_0x68ad('0x33')](_0x1f7846[_0x68ad('0x42')]({'attributes':['id',_0x68ad('0x5')]}));_0xf8660e[_0x68ad('0x33')](_0x1f7846['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0x68ad('0x43')](_0xf8660e);}})[_0x68ad('0xb')](function(_0x322129){if(_0x322129&&_0x322129[_0x68ad('0x21')]){for(var _0x37c6c4=0x0;_0x37c6c4<_0x322129[_0x68ad('0x21')];_0x37c6c4+=0x1){for(var _0xf7b20f=0x0;_0xf7b20f<_0x322129[_0x37c6c4][_0x68ad('0x21')];_0xf7b20f+=0x1){switch(_0x37c6c4){case 0x0:joinOrLeaveQueues(_0x4959d3,_0x1dd361,_0x68ad('0x44'),_0x322129[_0x37c6c4][_0xf7b20f]);break;case 0x1:joinOrLeaveQueues(_0x4959d3,_0x1dd361,_0x68ad('0x45'),_0x322129[_0x37c6c4][_0xf7b20f]);break;case 0x2:joinOrLeaveQueues(_0x4959d3,_0x1dd361,_0x68ad('0x46'),_0x322129[_0x37c6c4][_0xf7b20f]);break;case 0x3:joinOrLeaveQueues(_0x4959d3,_0x1dd361,_0x68ad('0x47'),_0x322129[_0x37c6c4][_0xf7b20f]);break;case 0x4:joinOrLeaveQueues(_0x4959d3,_0x1dd361,'mail',_0x322129[_0x37c6c4][_0xf7b20f]);break;case 0x5:joinOrLeaveQueues(_0x4959d3,_0x1dd361,_0x68ad('0x48'),_0x322129[_0x37c6c4][_0xf7b20f]);break;case 0x6:joinOrLeaveQueues(_0x4959d3,_0x1dd361,_0x68ad('0x49'),_0x322129[_0x37c6c4][_0xf7b20f]);break;case 0x7:if(_0x26e7e7[_0x68ad('0x7')]!==_0x68ad('0x8'))_0x4959d3[_0x1dd361](util[_0x68ad('0x1f')](_0x68ad('0x4a'),_0x322129[_0x37c6c4][_0xf7b20f][_0x68ad('0x5')]));break;case 0x8:if(_0x26e7e7['role']!==_0x68ad('0x8'))_0x4959d3[_0x1dd361](util['format']('trunk:%s',_0x322129[_0x37c6c4][_0xf7b20f][_0x68ad('0x5')]));break;case 0x9:if(_0x26e7e7[_0x68ad('0x7')]!==_0x68ad('0x8'))_0x4959d3[_0x1dd361](util[_0x68ad('0x1f')](_0x68ad('0x4b'),_0x322129[_0x37c6c4][_0xf7b20f]['type'],_0x322129[_0x37c6c4][_0xf7b20f]['name']));break;case 0xa:_0x4959d3[_0x1dd361](util['format']('user:%s',_0x322129[_0x37c6c4][_0xf7b20f][_0x68ad('0x5')]));break;}}}}})[_0x68ad('0xb')](function(){if(_0x1dd361===_0x68ad('0x4c')){var _0x24f003=_[_0x68ad('0x18')](_0x26e7e7[_0x68ad('0x4d')],'id');return _0x26e7e7[_0x68ad('0x4e')](_0x24f003)[_0x68ad('0xb')](function(){for(var _0x2e5210=0x0;_0x2e5210<_0x24f003[_0x68ad('0x21')];_0x2e5210+=0x1){_0x22d84c[_0x68ad('0x4f')](_0x68ad('0x50'),{'ChatInteractionId':Number(_0x24f003[_0x2e5210]),'UserId':Number(_0x26e7e7['id'])});}});}})[_0x68ad('0xb')](function(){if(_0x1dd361===_0x68ad('0x4c')){var _0x5f0c45=_[_0x68ad('0x18')](_0x26e7e7[_0x68ad('0x26')],'id');return _0x26e7e7[_0x68ad('0x51')](_0x5f0c45)['then'](function(){for(var _0x381ea8=0x0;_0x381ea8<_0x5f0c45[_0x68ad('0x21')];_0x381ea8+=0x1){_0x22d84c[_0x68ad('0x4f')](_0x68ad('0x52'),{'MailInteractionId':Number(_0x5f0c45[_0x381ea8]),'UserId':Number(_0x26e7e7['id'])});}});}})['then'](function(){if(_0x1dd361==='leave'){var _0x5371e4=_['map'](_0x26e7e7[_0x68ad('0x28')],'id');return _0x26e7e7[_0x68ad('0x53')](_0x5371e4)['then'](function(){for(var _0x2470da=0x0;_0x2470da<_0x5371e4['length'];_0x2470da+=0x1){_0x22d84c[_0x68ad('0x4f')](_0x68ad('0x54'),{'FaxInteractionId':Number(_0x5371e4[_0x2470da]),'UserId':Number(_0x26e7e7['id'])});}});}})[_0x68ad('0xb')](function(){if(_0x1dd361===_0x68ad('0x4c')){var _0x4699f1=_[_0x68ad('0x18')](_0x26e7e7[_0x68ad('0x2a')],'id');return _0x26e7e7[_0x68ad('0x55')](_0x4699f1)['then'](function(){for(var _0x1cbd0a=0x0;_0x1cbd0a<_0x4699f1[_0x68ad('0x21')];_0x1cbd0a+=0x1){_0x22d84c[_0x68ad('0x4f')](_0x68ad('0x56'),{'SmsInteractionId':Number(_0x4699f1[_0x1cbd0a]),'UserId':Number(_0x26e7e7['id'])});}});}})['then'](function(){if(_0x1dd361===_0x68ad('0x4c')){var _0x3fbb6a=_[_0x68ad('0x18')](_0x26e7e7[_0x68ad('0x2c')],'id');return _0x26e7e7[_0x68ad('0x57')](_0x3fbb6a)[_0x68ad('0xb')](function(){for(var _0x2cb5e7=0x0;_0x2cb5e7<_0x3fbb6a['length'];_0x2cb5e7+=0x1){_0x22d84c[_0x68ad('0x4f')](_0x68ad('0x58'),{'OpenchannelInteractionId':Number(_0x3fbb6a[_0x2cb5e7]),'UserId':Number(_0x26e7e7['id'])});}});}})['then'](function(){if(_0x1dd361===_0x68ad('0x4c')){var _0x24f857=_[_0x68ad('0x18')](_0x26e7e7[_0x68ad('0x59')],'id');return _0x26e7e7[_0x68ad('0x5a')](_0x24f857)[_0x68ad('0xb')](function(){for(var _0x193831=0x0;_0x193831<_0x24f857[_0x68ad('0x21')];_0x193831+=0x1){_0x22d84c[_0x68ad('0x4f')](_0x68ad('0x5b'),{'WhatsappInteractionId':Number(_0x24f857[_0x193831]),'UserId':Number(_0x26e7e7['id'])});}});}})['catch'](function(_0x112d0b){_0x4959d3[_0x68ad('0x5c')](_0x112d0b);});}}function onDisconnect(_0x503444,_0x42539b){joinOrLeave(_0x503444,'leave',_0x42539b);}function onConnect(_0x45dde3){joinOrLeave(_0x45dde3,'join');}exports[_0x68ad('0x5d')]=function(_0x38f57a){_0x38f57a['on'](_0x68ad('0x5e'),function(_0xa50aa7){_0xa50aa7['setMaxListeners'](0x0);_0xa50aa7[_0x68ad('0x5f')]=_0xa50aa7['request'][_0x68ad('0x5e')]['remoteAddress']+':'+_0xa50aa7[_0x68ad('0x60')]['connection'][_0x68ad('0x61')];_0xa50aa7[_0x68ad('0x62')]=new Date();_0xa50aa7[_0x68ad('0x5c')]=function(_0x511fcd){console[_0x68ad('0x5c')](_0x68ad('0x63')+_0xa50aa7['nsp'][_0x68ad('0x5')]+'['+_0xa50aa7['address']+']',_0x511fcd);};_0xa50aa7['on']('disconnect',function(){onDisconnect(_0xa50aa7,_0x38f57a);_0xa50aa7[_0x68ad('0x5c')]('DISCONNECTED');});onConnect(_0xa50aa7);_0xa50aa7['log']('CONNECTED');});};