8e7100dadceb4df3838a5a88a332505766ce4a44
[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 _0xfa75=['Agents','User','role','agent','telephone','type','ivr','then','autoAssociation','ChatQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','length','query','find','handshake','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','format','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','FaxQueue','SmsQueue','MailQueue','user','VoiceQueues','VoiceQueue','userProfileId','ChatQueue','FaxQueues','OpenchannelQueues','OpenchannelQueue','WhatsappQueue','Trunk','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','ChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','SocketIO\x20','disconnect','lodash','util','bluebird','./environment','name'];(function(_0x4acf74,_0x47c40b){var _0x38c882=function(_0x5ddd3a){while(--_0x5ddd3a){_0x4acf74['push'](_0x4acf74['shift']());}};_0x38c882(++_0x47c40b);}(_0xfa75,0x1ef));var _0x5fa7=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfa75[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x5fa7('0x0'));var util=require(_0x5fa7('0x1'));var BPromise=require(_0x5fa7('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x5fa7('0x3'));var queryQueues={'attributes':['id',_0x5fa7('0x4')],'include':[{'as':_0x5fa7('0x5'),'model':db[_0x5fa7('0x6')],'attributes':['id','name',_0x5fa7('0x7')],'raw':!![],'where':{'role':_0x5fa7('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x5fa7('0x4')],'where':{'role':_0x5fa7('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x5fa7('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x5fa7('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x5fa7('0xa')],'where':{'type':_0x5fa7('0xb')}};function getAssociatedResources(_0x2d5024,_0x27492d,_0x29b8d0){return db['UserProfileSection']['findOne']({'where':{'name':_0x2d5024,'userProfileId':_0x27492d},'raw':!![]})[_0x5fa7('0xc')](function(_0x4da680){if(_0x4da680){if(_0x4da680[_0x5fa7('0xd')]){switch(_0x2d5024){case'VoiceQueues':case _0x5fa7('0xe'):case'FaxQueues':case _0x5fa7('0xf'):case _0x5fa7('0x10'):case'OpenchannelQueues':case _0x5fa7('0x11'):return db[_0x29b8d0][_0x5fa7('0x12')](queryQueues);case _0x5fa7('0x13'):return db[_0x29b8d0][_0x5fa7('0x12')](queryTelephones);case _0x5fa7('0x14'):return db[_0x29b8d0][_0x5fa7('0x12')](queryTrunks);case _0x5fa7('0x15'):return db[_0x29b8d0][_0x5fa7('0x12')](queryCampaigns);}}else{return db[_0x5fa7('0x16')][_0x5fa7('0x12')]({'attributes':[_0x5fa7('0x17')],'where':{'sectionId':_0x4da680['id']},'raw':!![]})[_0x5fa7('0xc')](function(_0x5923ab){if(_0x5923ab){var _0x4b725a={'where':{'id':_[_0x5fa7('0x18')](_0x5923ab,_0x5fa7('0x17'))},'raw':!![]};switch(_0x29b8d0){case _0x5fa7('0x6'):_0x4b725a[_0x5fa7('0x19')]['role']='telephone';break;case _0x5fa7('0x1a'):_0x4b725a[_0x5fa7('0x19')][_0x5fa7('0xa')]='ivr';break;}return db[_0x29b8d0][_0x5fa7('0x12')](_0x4b725a);}else{return[];}});}}else{return[];}})[_0x5fa7('0xc')](function(_0x22c7fe){return _0x22c7fe;});}function joinOrLeaveQueues(_0x522caa,_0x26efd3,_0x308788,_0x3a3cce){_0x522caa[_0x26efd3](util['format']('%s:queue:%s',_0x308788,_0x3a3cce[_0x5fa7('0x4')]));if(_0x3a3cce[_0x5fa7('0x5')]){for(var _0x3ae4c1=0x0;_0x3ae4c1<_0x3a3cce[_0x5fa7('0x5')][_0x5fa7('0x1b')];_0x3ae4c1+=0x1){_0x522caa[_0x26efd3](util['format']('user:%s',_0x3a3cce[_0x5fa7('0x5')][_0x3ae4c1][_0x5fa7('0x4')]));}}}function joinOrLeave(_0x294cb0,_0xc77506,_0x29a661){var _0x551f58;if(_0x294cb0['handshake'][_0x5fa7('0x1c')]['id']){db[_0x5fa7('0x6')][_0x5fa7('0x1d')]({'attributes':['id','name',_0x5fa7('0x7'),'userProfileId'],'where':{'id':_0x294cb0[_0x5fa7('0x1e')][_0x5fa7('0x1c')]['id']},'include':[{'model':db[_0x5fa7('0x1f')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5fa7('0x20')],'as':_0x5fa7('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x5fa7('0x22')],'as':_0x5fa7('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x5fa7('0x24')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5fa7('0x25')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5fa7('0x26')],'as':_0x5fa7('0x27'),'attributes':['id'],'raw':!![]}]})[_0x5fa7('0xc')](function(_0x337d6f){if(_0x337d6f){_0x551f58=_0x337d6f;_0x294cb0[_0xc77506](util[_0x5fa7('0x28')](_0x5fa7('0x29'),_0x337d6f[_0x5fa7('0x4')]));var _0x220a5c=[];switch(_0x337d6f[_0x5fa7('0x7')]){case _0x5fa7('0x2a'):_0x294cb0[_0xc77506](_0x5fa7('0x2b'));_0x294cb0[_0xc77506](_0x5fa7('0x2c'));if(queryQueues[_0x5fa7('0x2d')]('include')){delete queryQueues[_0x5fa7('0x2e')];}_0x220a5c[_0x5fa7('0x2f')](db['VoiceQueue'][_0x5fa7('0x12')](queryQueues));_0x220a5c[_0x5fa7('0x2f')](db['ChatQueue'][_0x5fa7('0x12')](queryQueues));_0x220a5c[_0x5fa7('0x2f')](db[_0x5fa7('0x30')][_0x5fa7('0x12')](queryQueues));_0x220a5c[_0x5fa7('0x2f')](db[_0x5fa7('0x31')][_0x5fa7('0x12')](queryQueues));_0x220a5c[_0x5fa7('0x2f')](db[_0x5fa7('0x32')][_0x5fa7('0x12')](queryQueues));_0x220a5c['push'](db['OpenchannelQueue']['findAll'](queryQueues));_0x220a5c[_0x5fa7('0x2f')](db['WhatsappQueue']['findAll'](queryQueues));_0x220a5c['push'](db[_0x5fa7('0x6')][_0x5fa7('0x12')](queryTelephones));_0x220a5c[_0x5fa7('0x2f')](db['Trunk'][_0x5fa7('0x12')](queryTrunks));_0x220a5c[_0x5fa7('0x2f')](db[_0x5fa7('0x1a')][_0x5fa7('0x12')](queryCampaigns));_0x220a5c['push'](db[_0x5fa7('0x6')][_0x5fa7('0x12')](queryAgents));break;case _0x5fa7('0x33'):_0x294cb0[_0xc77506]('voice:inbound');_0x294cb0[_0xc77506](_0x5fa7('0x2c'));_0x220a5c[_0x5fa7('0x2f')](getAssociatedResources(_0x5fa7('0x34'),_0x337d6f['userProfileId'],_0x5fa7('0x35')));_0x220a5c[_0x5fa7('0x2f')](getAssociatedResources(_0x5fa7('0xe'),_0x337d6f[_0x5fa7('0x36')],_0x5fa7('0x37')));_0x220a5c['push'](getAssociatedResources(_0x5fa7('0x38'),_0x337d6f[_0x5fa7('0x36')],_0x5fa7('0x30')));_0x220a5c[_0x5fa7('0x2f')](getAssociatedResources(_0x5fa7('0xf'),_0x337d6f['userProfileId'],_0x5fa7('0x31')));_0x220a5c[_0x5fa7('0x2f')](getAssociatedResources(_0x5fa7('0x10'),_0x337d6f[_0x5fa7('0x36')],'MailQueue'));_0x220a5c[_0x5fa7('0x2f')](getAssociatedResources(_0x5fa7('0x39'),_0x337d6f[_0x5fa7('0x36')],_0x5fa7('0x3a')));_0x220a5c[_0x5fa7('0x2f')](getAssociatedResources(_0x5fa7('0x11'),_0x337d6f[_0x5fa7('0x36')],_0x5fa7('0x3b')));_0x220a5c['push'](getAssociatedResources('Telephones',_0x337d6f[_0x5fa7('0x36')],_0x5fa7('0x6')));_0x220a5c[_0x5fa7('0x2f')](getAssociatedResources('Trunks',_0x337d6f[_0x5fa7('0x36')],_0x5fa7('0x3c')));_0x220a5c[_0x5fa7('0x2f')](getAssociatedResources(_0x5fa7('0x15'),_0x337d6f[_0x5fa7('0x36')],'Campaign'));_0x220a5c[_0x5fa7('0x2f')](db[_0x5fa7('0x6')][_0x5fa7('0x12')](queryAgents));break;case _0x5fa7('0x8'):_0x294cb0[_0xc77506](_0x5fa7('0x2b'));_0x294cb0[_0xc77506]('voice:outbound');_0x220a5c[_0x5fa7('0x2f')](_0x337d6f['getVoiceQueues']({'attributes':['id','name']}));_0x220a5c[_0x5fa7('0x2f')](_0x337d6f[_0x5fa7('0x3d')]({'attributes':['id',_0x5fa7('0x4')]}));_0x220a5c[_0x5fa7('0x2f')](_0x337d6f[_0x5fa7('0x3e')]({'attributes':['id','name']}));_0x220a5c[_0x5fa7('0x2f')](_0x337d6f[_0x5fa7('0x3f')]({'attributes':['id',_0x5fa7('0x4')]}));_0x220a5c['push'](_0x337d6f[_0x5fa7('0x40')]({'attributes':['id','name']}));_0x220a5c[_0x5fa7('0x2f')](_0x337d6f[_0x5fa7('0x41')]({'attributes':['id',_0x5fa7('0x4')]}));_0x220a5c['push'](_0x337d6f['getWhatsappQueues']({'attributes':['id',_0x5fa7('0x4')]}));break;}return BPromise[_0x5fa7('0x42')](_0x220a5c);}})[_0x5fa7('0xc')](function(_0x4f6e69){if(_0x4f6e69&&_0x4f6e69[_0x5fa7('0x1b')]){for(var _0x514a8f=0x0;_0x514a8f<_0x4f6e69[_0x5fa7('0x1b')];_0x514a8f+=0x1){for(var _0x56aaf3=0x0;_0x56aaf3<_0x4f6e69[_0x514a8f][_0x5fa7('0x1b')];_0x56aaf3+=0x1){switch(_0x514a8f){case 0x0:joinOrLeaveQueues(_0x294cb0,_0xc77506,_0x5fa7('0x43'),_0x4f6e69[_0x514a8f][_0x56aaf3]);break;case 0x1:joinOrLeaveQueues(_0x294cb0,_0xc77506,_0x5fa7('0x44'),_0x4f6e69[_0x514a8f][_0x56aaf3]);break;case 0x2:joinOrLeaveQueues(_0x294cb0,_0xc77506,'fax',_0x4f6e69[_0x514a8f][_0x56aaf3]);break;case 0x3:joinOrLeaveQueues(_0x294cb0,_0xc77506,_0x5fa7('0x45'),_0x4f6e69[_0x514a8f][_0x56aaf3]);break;case 0x4:joinOrLeaveQueues(_0x294cb0,_0xc77506,_0x5fa7('0x46'),_0x4f6e69[_0x514a8f][_0x56aaf3]);break;case 0x5:joinOrLeaveQueues(_0x294cb0,_0xc77506,_0x5fa7('0x47'),_0x4f6e69[_0x514a8f][_0x56aaf3]);break;case 0x6:joinOrLeaveQueues(_0x294cb0,_0xc77506,_0x5fa7('0x48'),_0x4f6e69[_0x514a8f][_0x56aaf3]);break;case 0x7:if(_0x551f58['role']!==_0x5fa7('0x8'))_0x294cb0[_0xc77506](util[_0x5fa7('0x28')](_0x5fa7('0x49'),_0x4f6e69[_0x514a8f][_0x56aaf3]['name']));break;case 0x8:if(_0x551f58['role']!==_0x5fa7('0x8'))_0x294cb0[_0xc77506](util[_0x5fa7('0x28')](_0x5fa7('0x4a'),_0x4f6e69[_0x514a8f][_0x56aaf3][_0x5fa7('0x4')]));break;case 0x9:if(_0x551f58[_0x5fa7('0x7')]!==_0x5fa7('0x8'))_0x294cb0[_0xc77506](util['format'](_0x5fa7('0x4b'),_0x4f6e69[_0x514a8f][_0x56aaf3][_0x5fa7('0xa')],_0x4f6e69[_0x514a8f][_0x56aaf3][_0x5fa7('0x4')]));break;case 0xa:_0x294cb0[_0xc77506](util['format']('user:%s',_0x4f6e69[_0x514a8f][_0x56aaf3][_0x5fa7('0x4')]));break;}}}}})[_0x5fa7('0xc')](function(){if(_0xc77506===_0x5fa7('0x4c')){var _0x40c069=_[_0x5fa7('0x18')](_0x551f58[_0x5fa7('0x4d')],'id');return _0x551f58['removeChatInteractions'](_0x40c069)['then'](function(){for(var _0x1b6ec7=0x0;_0x1b6ec7<_0x40c069[_0x5fa7('0x1b')];_0x1b6ec7+=0x1){_0x29a661[_0x5fa7('0x4e')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x40c069[_0x1b6ec7]),'UserId':Number(_0x551f58['id'])});}});}})['then'](function(){if(_0xc77506===_0x5fa7('0x4c')){var _0x3436ce=_[_0x5fa7('0x18')](_0x551f58[_0x5fa7('0x21')],'id');return _0x551f58[_0x5fa7('0x4f')](_0x3436ce)[_0x5fa7('0xc')](function(){for(var _0x68555b=0x0;_0x68555b<_0x3436ce['length'];_0x68555b+=0x1){_0x29a661[_0x5fa7('0x4e')](_0x5fa7('0x50'),{'MailInteractionId':Number(_0x3436ce[_0x68555b]),'UserId':Number(_0x551f58['id'])});}});}})[_0x5fa7('0xc')](function(){if(_0xc77506===_0x5fa7('0x4c')){var _0x2f61c8=_['map'](_0x551f58['FaxInteractions'],'id');return _0x551f58['removeFaxInteractions'](_0x2f61c8)[_0x5fa7('0xc')](function(){for(var _0x27822a=0x0;_0x27822a<_0x2f61c8['length'];_0x27822a+=0x1){_0x29a661[_0x5fa7('0x4e')](_0x5fa7('0x51'),{'FaxInteractionId':Number(_0x2f61c8[_0x27822a]),'UserId':Number(_0x551f58['id'])});}});}})[_0x5fa7('0xc')](function(){if(_0xc77506===_0x5fa7('0x4c')){var _0x38a261=_['map'](_0x551f58[_0x5fa7('0x52')],'id');return _0x551f58[_0x5fa7('0x53')](_0x38a261)[_0x5fa7('0xc')](function(){for(var _0x2716b7=0x0;_0x2716b7<_0x38a261[_0x5fa7('0x1b')];_0x2716b7+=0x1){_0x29a661[_0x5fa7('0x4e')](_0x5fa7('0x54'),{'SmsInteractionId':Number(_0x38a261[_0x2716b7]),'UserId':Number(_0x551f58['id'])});}});}})[_0x5fa7('0xc')](function(){if(_0xc77506===_0x5fa7('0x4c')){var _0x5892c8=_[_0x5fa7('0x18')](_0x551f58[_0x5fa7('0x55')],'id');return _0x551f58[_0x5fa7('0x56')](_0x5892c8)[_0x5fa7('0xc')](function(){for(var _0x1bc9d8=0x0;_0x1bc9d8<_0x5892c8[_0x5fa7('0x1b')];_0x1bc9d8+=0x1){_0x29a661['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x5892c8[_0x1bc9d8]),'UserId':Number(_0x551f58['id'])});}});}})[_0x5fa7('0xc')](function(){if(_0xc77506==='leave'){var _0x3d1d9d=_[_0x5fa7('0x18')](_0x551f58[_0x5fa7('0x27')],'id');return _0x551f58[_0x5fa7('0x57')](_0x3d1d9d)[_0x5fa7('0xc')](function(){for(var _0x129a5e=0x0;_0x129a5e<_0x3d1d9d[_0x5fa7('0x1b')];_0x129a5e+=0x1){_0x29a661[_0x5fa7('0x4e')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x3d1d9d[_0x129a5e]),'UserId':Number(_0x551f58['id'])});}});}})[_0x5fa7('0x58')](function(_0x2966cb){_0x294cb0[_0x5fa7('0x59')](_0x2966cb);});}}function onDisconnect(_0x468d7b,_0x2527c1){joinOrLeave(_0x468d7b,_0x5fa7('0x4c'),_0x2527c1);}function onConnect(_0xdc68f0){joinOrLeave(_0xdc68f0,_0x5fa7('0x5a'));}exports[_0x5fa7('0x5b')]=function(_0x25c295){_0x25c295['on'](_0x5fa7('0x5c'),function(_0x552f2b){_0x552f2b[_0x5fa7('0x5d')](0x0);_0x552f2b[_0x5fa7('0x5e')]=_0x552f2b[_0x5fa7('0x5f')][_0x5fa7('0x5c')][_0x5fa7('0x60')]+':'+_0x552f2b[_0x5fa7('0x5f')][_0x5fa7('0x5c')][_0x5fa7('0x61')];_0x552f2b['connectedAt']=new Date();_0x552f2b['log']=function(_0x2b6e82){console[_0x5fa7('0x59')](_0x5fa7('0x62')+_0x552f2b['nsp']['name']+'['+_0x552f2b[_0x5fa7('0x5e')]+']',_0x2b6e82);};_0x552f2b['on'](_0x5fa7('0x63'),function(){onDisconnect(_0x552f2b,_0x25c295);_0x552f2b[_0x5fa7('0x59')]('DISCONNECTED');});onConnect(_0x552f2b);_0x552f2b[_0x5fa7('0x59')]('CONNECTED');});};