9fdf0014935b5d3a332ac90282acfc5d43115ecf
[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 _0x6d5e=['SmsQueue','MailQueue','OpenchannelQueue','Trunk','user','VoiceQueues','FaxQueues','WhatsappQueue','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getWhatsappQueues','all','voice','chat','sms','openchannel','telephone:%s','trunk:%s','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','MailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','WhatsappInteractions','log','join','connection','setMaxListeners','request','remoteAddress','remotePort','connectedAt','nsp','address','disconnect','DISCONNECTED','lodash','util','../mysqldb','./environment','name','Agents','User','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','format','%s:queue:%s','length','handshake','query','find','userProfileId','ChatInteraction','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','WhatsappInteraction','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x6d5e,0xf4));var _0xe6d5=function(_0x389749,_0x22e59e){_0x389749=_0x389749-0x0;var _0x1d002e=_0x6d5e[_0x389749];return _0x1d002e;};'use strict';var _=require(_0xe6d5('0x0'));var util=require(_0xe6d5('0x1'));var BPromise=require('bluebird');var db=require(_0xe6d5('0x2'))['db'];var config=require(_0xe6d5('0x3'));var queryQueues={'attributes':['id',_0xe6d5('0x4')],'include':[{'as':_0xe6d5('0x5'),'model':db[_0xe6d5('0x6')],'attributes':['id','name',_0xe6d5('0x7')],'raw':!![],'where':{'role':_0xe6d5('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xe6d5('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0xe6d5('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xe6d5('0x4')],'where':{'role':_0xe6d5('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xe6d5('0x4'),_0xe6d5('0xa')],'where':{'type':_0xe6d5('0xb')}};function getAssociatedResources(_0x4b85d4,_0x3f97c,_0x207f56){return db[_0xe6d5('0xc')][_0xe6d5('0xd')]({'where':{'name':_0x4b85d4,'userProfileId':_0x3f97c},'raw':!![]})[_0xe6d5('0xe')](function(_0x44888b){if(_0x44888b){if(_0x44888b[_0xe6d5('0xf')]){switch(_0x4b85d4){case'VoiceQueues':case'ChatQueues':case'FaxQueues':case _0xe6d5('0x10'):case _0xe6d5('0x11'):case _0xe6d5('0x12'):case _0xe6d5('0x13'):return db[_0x207f56][_0xe6d5('0x14')](queryQueues);case _0xe6d5('0x15'):return db[_0x207f56]['findAll'](queryTelephones);case _0xe6d5('0x16'):return db[_0x207f56][_0xe6d5('0x14')](queryTrunks);case _0xe6d5('0x17'):return db[_0x207f56][_0xe6d5('0x14')](queryCampaigns);}}else{return db[_0xe6d5('0x18')][_0xe6d5('0x14')]({'attributes':[_0xe6d5('0x19')],'where':{'sectionId':_0x44888b['id']},'raw':!![]})[_0xe6d5('0xe')](function(_0x2bd6d2){if(_0x2bd6d2){var _0x93f6b6={'where':{'id':_[_0xe6d5('0x1a')](_0x2bd6d2,_0xe6d5('0x19'))},'raw':!![]};switch(_0x207f56){case'User':_0x93f6b6[_0xe6d5('0x1b')][_0xe6d5('0x7')]=_0xe6d5('0x9');break;case _0xe6d5('0x1c'):_0x93f6b6['where']['type']='ivr';break;}return db[_0x207f56][_0xe6d5('0x14')](_0x93f6b6);}else{return[];}});}}else{return[];}})[_0xe6d5('0xe')](function(_0x94d0cf){return _0x94d0cf;});}function joinOrLeaveQueues(_0x879002,_0x230af6,_0x2b21f7,_0x21b165){_0x879002[_0x230af6](util[_0xe6d5('0x1d')](_0xe6d5('0x1e'),_0x2b21f7,_0x21b165[_0xe6d5('0x4')]));if(_0x21b165[_0xe6d5('0x5')]){for(var _0x2f6f12=0x0;_0x2f6f12<_0x21b165[_0xe6d5('0x5')][_0xe6d5('0x1f')];_0x2f6f12+=0x1){_0x879002[_0x230af6](util[_0xe6d5('0x1d')]('user:%s',_0x21b165['Agents'][_0x2f6f12][_0xe6d5('0x4')]));}}}function joinOrLeave(_0x178c80,_0xf66cff,_0x103073){var _0x51132c;if(_0x178c80[_0xe6d5('0x20')][_0xe6d5('0x21')]['id']){db[_0xe6d5('0x6')][_0xe6d5('0x22')]({'attributes':['id',_0xe6d5('0x4'),_0xe6d5('0x7'),_0xe6d5('0x23')],'where':{'id':_0x178c80[_0xe6d5('0x20')][_0xe6d5('0x21')]['id']},'include':[{'model':db[_0xe6d5('0x24')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe6d5('0x25')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe6d5('0x26')],'as':_0xe6d5('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xe6d5('0x28')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe6d5('0x29')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe6d5('0x2a')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xe6d5('0xe')](function(_0x698120){if(_0x698120){_0x51132c=_0x698120;_0x178c80[_0xf66cff](util[_0xe6d5('0x1d')](_0xe6d5('0x2b'),_0x698120['name']));var _0x4865f8=[];switch(_0x698120[_0xe6d5('0x7')]){case _0xe6d5('0x2c'):_0x178c80[_0xf66cff](_0xe6d5('0x2d'));_0x178c80[_0xf66cff](_0xe6d5('0x2e'));if(queryQueues[_0xe6d5('0x2f')](_0xe6d5('0x30'))){delete queryQueues[_0xe6d5('0x30')];}_0x4865f8[_0xe6d5('0x31')](db[_0xe6d5('0x32')][_0xe6d5('0x14')](queryQueues));_0x4865f8[_0xe6d5('0x31')](db[_0xe6d5('0x33')][_0xe6d5('0x14')](queryQueues));_0x4865f8[_0xe6d5('0x31')](db[_0xe6d5('0x34')][_0xe6d5('0x14')](queryQueues));_0x4865f8[_0xe6d5('0x31')](db[_0xe6d5('0x35')][_0xe6d5('0x14')](queryQueues));_0x4865f8['push'](db[_0xe6d5('0x36')][_0xe6d5('0x14')](queryQueues));_0x4865f8[_0xe6d5('0x31')](db[_0xe6d5('0x37')]['findAll'](queryQueues));_0x4865f8[_0xe6d5('0x31')](db['WhatsappQueue'][_0xe6d5('0x14')](queryQueues));_0x4865f8['push'](db[_0xe6d5('0x6')][_0xe6d5('0x14')](queryTelephones));_0x4865f8[_0xe6d5('0x31')](db[_0xe6d5('0x38')]['findAll'](queryTrunks));_0x4865f8[_0xe6d5('0x31')](db[_0xe6d5('0x1c')]['findAll'](queryCampaigns));_0x4865f8[_0xe6d5('0x31')](db[_0xe6d5('0x6')][_0xe6d5('0x14')](queryAgents));break;case _0xe6d5('0x39'):_0x178c80[_0xf66cff]('voice:inbound');_0x178c80[_0xf66cff](_0xe6d5('0x2e'));_0x4865f8[_0xe6d5('0x31')](getAssociatedResources(_0xe6d5('0x3a'),_0x698120[_0xe6d5('0x23')],_0xe6d5('0x32')));_0x4865f8[_0xe6d5('0x31')](getAssociatedResources('ChatQueues',_0x698120[_0xe6d5('0x23')],_0xe6d5('0x33')));_0x4865f8['push'](getAssociatedResources(_0xe6d5('0x3b'),_0x698120['userProfileId'],_0xe6d5('0x34')));_0x4865f8[_0xe6d5('0x31')](getAssociatedResources(_0xe6d5('0x10'),_0x698120[_0xe6d5('0x23')],_0xe6d5('0x35')));_0x4865f8[_0xe6d5('0x31')](getAssociatedResources('MailQueues',_0x698120[_0xe6d5('0x23')],_0xe6d5('0x36')));_0x4865f8[_0xe6d5('0x31')](getAssociatedResources('OpenchannelQueues',_0x698120[_0xe6d5('0x23')],_0xe6d5('0x37')));_0x4865f8['push'](getAssociatedResources(_0xe6d5('0x13'),_0x698120['userProfileId'],_0xe6d5('0x3c')));_0x4865f8['push'](getAssociatedResources(_0xe6d5('0x15'),_0x698120['userProfileId'],_0xe6d5('0x6')));_0x4865f8['push'](getAssociatedResources(_0xe6d5('0x16'),_0x698120[_0xe6d5('0x23')],_0xe6d5('0x38')));_0x4865f8[_0xe6d5('0x31')](getAssociatedResources(_0xe6d5('0x17'),_0x698120[_0xe6d5('0x23')],'Campaign'));_0x4865f8[_0xe6d5('0x31')](db['User'][_0xe6d5('0x14')](queryAgents));break;case _0xe6d5('0x8'):_0x178c80[_0xf66cff](_0xe6d5('0x2d'));_0x178c80[_0xf66cff](_0xe6d5('0x2e'));_0x4865f8[_0xe6d5('0x31')](_0x698120[_0xe6d5('0x3d')]({'attributes':['id','name']}));_0x4865f8[_0xe6d5('0x31')](_0x698120[_0xe6d5('0x3e')]({'attributes':['id',_0xe6d5('0x4')]}));_0x4865f8['push'](_0x698120[_0xe6d5('0x3f')]({'attributes':['id','name']}));_0x4865f8[_0xe6d5('0x31')](_0x698120['getSmsQueues']({'attributes':['id',_0xe6d5('0x4')]}));_0x4865f8[_0xe6d5('0x31')](_0x698120[_0xe6d5('0x40')]({'attributes':['id',_0xe6d5('0x4')]}));_0x4865f8[_0xe6d5('0x31')](_0x698120['getOpenchannelQueues']({'attributes':['id',_0xe6d5('0x4')]}));_0x4865f8[_0xe6d5('0x31')](_0x698120[_0xe6d5('0x41')]({'attributes':['id',_0xe6d5('0x4')]}));break;}return BPromise[_0xe6d5('0x42')](_0x4865f8);}})[_0xe6d5('0xe')](function(_0x393089){if(_0x393089&&_0x393089[_0xe6d5('0x1f')]){for(var _0x5e5a3e=0x0;_0x5e5a3e<_0x393089[_0xe6d5('0x1f')];_0x5e5a3e+=0x1){for(var _0x590f31=0x0;_0x590f31<_0x393089[_0x5e5a3e][_0xe6d5('0x1f')];_0x590f31+=0x1){switch(_0x5e5a3e){case 0x0:joinOrLeaveQueues(_0x178c80,_0xf66cff,_0xe6d5('0x43'),_0x393089[_0x5e5a3e][_0x590f31]);break;case 0x1:joinOrLeaveQueues(_0x178c80,_0xf66cff,_0xe6d5('0x44'),_0x393089[_0x5e5a3e][_0x590f31]);break;case 0x2:joinOrLeaveQueues(_0x178c80,_0xf66cff,'fax',_0x393089[_0x5e5a3e][_0x590f31]);break;case 0x3:joinOrLeaveQueues(_0x178c80,_0xf66cff,_0xe6d5('0x45'),_0x393089[_0x5e5a3e][_0x590f31]);break;case 0x4:joinOrLeaveQueues(_0x178c80,_0xf66cff,'mail',_0x393089[_0x5e5a3e][_0x590f31]);break;case 0x5:joinOrLeaveQueues(_0x178c80,_0xf66cff,_0xe6d5('0x46'),_0x393089[_0x5e5a3e][_0x590f31]);break;case 0x6:joinOrLeaveQueues(_0x178c80,_0xf66cff,'whatsapp',_0x393089[_0x5e5a3e][_0x590f31]);break;case 0x7:_0x178c80[_0xf66cff](util[_0xe6d5('0x1d')](_0xe6d5('0x47'),_0x393089[_0x5e5a3e][_0x590f31][_0xe6d5('0x4')]));break;case 0x8:_0x178c80[_0xf66cff](util[_0xe6d5('0x1d')](_0xe6d5('0x48'),_0x393089[_0x5e5a3e][_0x590f31][_0xe6d5('0x4')]));break;case 0x9:_0x178c80[_0xf66cff](util[_0xe6d5('0x1d')](_0xe6d5('0x49'),_0x393089[_0x5e5a3e][_0x590f31][_0xe6d5('0xa')],_0x393089[_0x5e5a3e][_0x590f31][_0xe6d5('0x4')]));break;case 0xa:_0x178c80[_0xf66cff](util[_0xe6d5('0x1d')](_0xe6d5('0x2b'),_0x393089[_0x5e5a3e][_0x590f31][_0xe6d5('0x4')]));break;}}}}})[_0xe6d5('0xe')](function(){if(_0xf66cff===_0xe6d5('0x4a')){var _0x48b0a7=_[_0xe6d5('0x1a')](_0x51132c[_0xe6d5('0x4b')],'id');return _0x51132c[_0xe6d5('0x4c')](_0x48b0a7)[_0xe6d5('0xe')](function(){for(var _0x103f47=0x0;_0x103f47<_0x48b0a7[_0xe6d5('0x1f')];_0x103f47+=0x1){_0x103073[_0xe6d5('0x4d')](_0xe6d5('0x4e'),{'ChatInteractionId':Number(_0x48b0a7[_0x103f47]),'UserId':Number(_0x51132c['id'])});}});}})[_0xe6d5('0xe')](function(){if(_0xf66cff===_0xe6d5('0x4a')){var _0x1a23c2=_[_0xe6d5('0x1a')](_0x51132c[_0xe6d5('0x4f')],'id');return _0x51132c['removeMailInteractions'](_0x1a23c2)[_0xe6d5('0xe')](function(){for(var _0x4b5e8b=0x0;_0x4b5e8b<_0x1a23c2['length'];_0x4b5e8b+=0x1){_0x103073[_0xe6d5('0x4d')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1a23c2[_0x4b5e8b]),'UserId':Number(_0x51132c['id'])});}});}})[_0xe6d5('0xe')](function(){if(_0xf66cff===_0xe6d5('0x4a')){var _0x1b68eb=_['map'](_0x51132c['FaxInteractions'],'id');return _0x51132c[_0xe6d5('0x50')](_0x1b68eb)['then'](function(){for(var _0x459be5=0x0;_0x459be5<_0x1b68eb[_0xe6d5('0x1f')];_0x459be5+=0x1){_0x103073[_0xe6d5('0x4d')](_0xe6d5('0x51'),{'FaxInteractionId':Number(_0x1b68eb[_0x459be5]),'UserId':Number(_0x51132c['id'])});}});}})[_0xe6d5('0xe')](function(){if(_0xf66cff===_0xe6d5('0x4a')){var _0x70aa47=_['map'](_0x51132c[_0xe6d5('0x52')],'id');return _0x51132c[_0xe6d5('0x53')](_0x70aa47)[_0xe6d5('0xe')](function(){for(var _0x160bf6=0x0;_0x160bf6<_0x70aa47[_0xe6d5('0x1f')];_0x160bf6+=0x1){_0x103073['emit'](_0xe6d5('0x54'),{'SmsInteractionId':Number(_0x70aa47[_0x160bf6]),'UserId':Number(_0x51132c['id'])});}});}})['then'](function(){if(_0xf66cff===_0xe6d5('0x4a')){var _0x57fa96=_[_0xe6d5('0x1a')](_0x51132c['OpenchannelInteractions'],'id');return _0x51132c[_0xe6d5('0x55')](_0x57fa96)['then'](function(){for(var _0x192b96=0x0;_0x192b96<_0x57fa96[_0xe6d5('0x1f')];_0x192b96+=0x1){_0x103073[_0xe6d5('0x4d')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x57fa96[_0x192b96]),'UserId':Number(_0x51132c['id'])});}});}})[_0xe6d5('0xe')](function(){if(_0xf66cff===_0xe6d5('0x4a')){var _0x5f014c=_[_0xe6d5('0x1a')](_0x51132c[_0xe6d5('0x56')],'id');return _0x51132c['removeWhatsappInteractions'](_0x5f014c)[_0xe6d5('0xe')](function(){for(var _0x40f021=0x0;_0x40f021<_0x5f014c[_0xe6d5('0x1f')];_0x40f021+=0x1){_0x103073[_0xe6d5('0x4d')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x5f014c[_0x40f021]),'UserId':Number(_0x51132c['id'])});}});}})['catch'](function(_0xd61a29){_0x178c80[_0xe6d5('0x57')](_0xd61a29);});}}function onDisconnect(_0x33b12e,_0x367ef1){joinOrLeave(_0x33b12e,'leave',_0x367ef1);}function onConnect(_0x48b854){joinOrLeave(_0x48b854,_0xe6d5('0x58'));}exports['default']=function(_0x33dff0){_0x33dff0['on'](_0xe6d5('0x59'),function(_0x38158f){_0x38158f[_0xe6d5('0x5a')](0x0);_0x38158f['address']=_0x38158f[_0xe6d5('0x5b')][_0xe6d5('0x59')][_0xe6d5('0x5c')]+':'+_0x38158f['request'][_0xe6d5('0x59')][_0xe6d5('0x5d')];_0x38158f[_0xe6d5('0x5e')]=new Date();_0x38158f[_0xe6d5('0x57')]=function(_0x3f9d39){console[_0xe6d5('0x57')]('SocketIO\x20'+_0x38158f[_0xe6d5('0x5f')][_0xe6d5('0x4')]+'['+_0x38158f[_0xe6d5('0x60')]+']',_0x3f9d39);};_0x38158f['on'](_0xe6d5('0x61'),function(){onDisconnect(_0x38158f,_0x33dff0);_0x38158f[_0xe6d5('0x57')](_0xe6d5('0x62'));});onConnect(_0x38158f);_0x38158f[_0xe6d5('0x57')]('CONNECTED');});};