a2219525e6c6806ffb2f06e3c3928fae3362a46f
[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 _0xaf11=['setMaxListeners','address','request','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','bluebird','../mysqldb','name','Agents','User','role','agent','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','telephone','Campaign','format','%s:queue:%s','user:%s','handshake','query','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','Trunk','voice:outbound','VoiceQueues','userProfileId','VoiceQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Telephones','getVoiceQueues','getChatQueues','getFaxQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','chat','fax','sms','openchannel','telephone:%s','trunk:%s','type','leave','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','connection'];(function(_0x451e57,_0x4ee9f7){var _0x3179f4=function(_0x2c6e74){while(--_0x2c6e74){_0x451e57['push'](_0x451e57['shift']());}};_0x3179f4(++_0x4ee9f7);}(_0xaf11,0x12f));var _0x1af1=function(_0x5486c9,_0xdbda85){_0x5486c9=_0x5486c9-0x0;var _0x109253=_0xaf11[_0x5486c9];return _0x109253;};'use strict';var _=require(_0x1af1('0x0'));var util=require(_0x1af1('0x1'));var BPromise=require(_0x1af1('0x2'));var db=require(_0x1af1('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x1af1('0x4')],'include':[{'as':_0x1af1('0x5'),'model':db[_0x1af1('0x6')],'attributes':['id','name',_0x1af1('0x7')],'raw':!![],'where':{'role':_0x1af1('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x1af1('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x1af1('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x1af1('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x1af1('0x4'),'type'],'where':{'type':_0x1af1('0x9')}};function getAssociatedResources(_0x53ba26,_0x57a4d6,_0x2d8327){return db[_0x1af1('0xa')][_0x1af1('0xb')]({'where':{'name':_0x53ba26,'userProfileId':_0x57a4d6},'raw':!![]})[_0x1af1('0xc')](function(_0x3a9d4d){if(_0x3a9d4d){if(_0x3a9d4d[_0x1af1('0xd')]){switch(_0x53ba26){case'VoiceQueues':case _0x1af1('0xe'):case _0x1af1('0xf'):case _0x1af1('0x10'):case _0x1af1('0x11'):case _0x1af1('0x12'):case _0x1af1('0x13'):return db[_0x2d8327][_0x1af1('0x14')](queryQueues);case'Telephones':return db[_0x2d8327][_0x1af1('0x14')](queryTelephones);case _0x1af1('0x15'):return db[_0x2d8327][_0x1af1('0x14')](queryTrunks);case _0x1af1('0x16'):return db[_0x2d8327]['findAll'](queryCampaigns);}}else{return db[_0x1af1('0x17')][_0x1af1('0x14')]({'attributes':[_0x1af1('0x18')],'where':{'sectionId':_0x3a9d4d['id']},'raw':!![]})['then'](function(_0x1e756b){if(_0x1e756b){var _0x41b905={'where':{'id':_[_0x1af1('0x19')](_0x1e756b,_0x1af1('0x18'))},'raw':!![]};switch(_0x2d8327){case _0x1af1('0x6'):_0x41b905[_0x1af1('0x1a')][_0x1af1('0x7')]=_0x1af1('0x1b');break;case _0x1af1('0x1c'):_0x41b905[_0x1af1('0x1a')]['type']='ivr';break;}return db[_0x2d8327]['findAll'](_0x41b905);}else{return[];}});}}else{return[];}})[_0x1af1('0xc')](function(_0x4e921d){return _0x4e921d;});}function joinOrLeaveQueues(_0xf1c8ae,_0xe4c51d,_0x19aa3a,_0x35d257){_0xf1c8ae[_0xe4c51d](util[_0x1af1('0x1d')](_0x1af1('0x1e'),_0x19aa3a,_0x35d257['name']));if(_0x35d257[_0x1af1('0x5')]){for(var _0x2ef81a=0x0;_0x2ef81a<_0x35d257[_0x1af1('0x5')]['length'];_0x2ef81a+=0x1){_0xf1c8ae[_0xe4c51d](util[_0x1af1('0x1d')](_0x1af1('0x1f'),_0x35d257['Agents'][_0x2ef81a][_0x1af1('0x4')]));}}}function joinOrLeave(_0x10a35b,_0x187dd4,_0x51c213){var _0x8952cf;if(_0x10a35b[_0x1af1('0x20')]['query']['id']){db['User']['find']({'attributes':['id',_0x1af1('0x4'),'role','userProfileId'],'where':{'id':_0x10a35b[_0x1af1('0x20')][_0x1af1('0x21')]['id']},'include':[{'model':db[_0x1af1('0x22')],'as':_0x1af1('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x1af1('0x24')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1af1('0x25')],'as':_0x1af1('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x1af1('0x27')],'as':_0x1af1('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x1af1('0x29')],'as':_0x1af1('0x2a'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x1af1('0x2b'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x40630d){if(_0x40630d){_0x8952cf=_0x40630d;_0x10a35b[_0x187dd4](util[_0x1af1('0x1d')]('user:%s',_0x40630d['name']));var _0xe47522=[];switch(_0x40630d[_0x1af1('0x7')]){case _0x1af1('0x2c'):_0x10a35b[_0x187dd4](_0x1af1('0x2d'));_0x10a35b[_0x187dd4]('voice:outbound');if(queryQueues[_0x1af1('0x2e')](_0x1af1('0x2f'))){delete queryQueues['include'];}_0xe47522[_0x1af1('0x30')](db['VoiceQueue'][_0x1af1('0x14')](queryQueues));_0xe47522[_0x1af1('0x30')](db[_0x1af1('0x31')][_0x1af1('0x14')](queryQueues));_0xe47522['push'](db[_0x1af1('0x32')][_0x1af1('0x14')](queryQueues));_0xe47522[_0x1af1('0x30')](db['SmsQueue']['findAll'](queryQueues));_0xe47522[_0x1af1('0x30')](db['MailQueue'][_0x1af1('0x14')](queryQueues));_0xe47522[_0x1af1('0x30')](db['OpenchannelQueue']['findAll'](queryQueues));_0xe47522[_0x1af1('0x30')](db['WhatsappQueue'][_0x1af1('0x14')](queryQueues));_0xe47522[_0x1af1('0x30')](db[_0x1af1('0x6')][_0x1af1('0x14')](queryTelephones));_0xe47522['push'](db[_0x1af1('0x33')]['findAll'](queryTrunks));_0xe47522[_0x1af1('0x30')](db['Campaign'][_0x1af1('0x14')](queryCampaigns));_0xe47522[_0x1af1('0x30')](db[_0x1af1('0x6')][_0x1af1('0x14')](queryAgents));break;case'user':_0x10a35b[_0x187dd4](_0x1af1('0x2d'));_0x10a35b[_0x187dd4](_0x1af1('0x34'));_0xe47522[_0x1af1('0x30')](getAssociatedResources(_0x1af1('0x35'),_0x40630d[_0x1af1('0x36')],_0x1af1('0x37')));_0xe47522['push'](getAssociatedResources(_0x1af1('0xe'),_0x40630d[_0x1af1('0x36')],'ChatQueue'));_0xe47522[_0x1af1('0x30')](getAssociatedResources('FaxQueues',_0x40630d[_0x1af1('0x36')],_0x1af1('0x32')));_0xe47522[_0x1af1('0x30')](getAssociatedResources(_0x1af1('0x10'),_0x40630d[_0x1af1('0x36')],'SmsQueue'));_0xe47522['push'](getAssociatedResources(_0x1af1('0x11'),_0x40630d[_0x1af1('0x36')],_0x1af1('0x38')));_0xe47522[_0x1af1('0x30')](getAssociatedResources(_0x1af1('0x12'),_0x40630d['userProfileId'],_0x1af1('0x39')));_0xe47522['push'](getAssociatedResources(_0x1af1('0x13'),_0x40630d[_0x1af1('0x36')],_0x1af1('0x3a')));_0xe47522['push'](getAssociatedResources(_0x1af1('0x3b'),_0x40630d[_0x1af1('0x36')],_0x1af1('0x6')));_0xe47522[_0x1af1('0x30')](getAssociatedResources(_0x1af1('0x15'),_0x40630d['userProfileId'],_0x1af1('0x33')));_0xe47522[_0x1af1('0x30')](getAssociatedResources('IvrCampaigns',_0x40630d['userProfileId'],'Campaign'));_0xe47522['push'](db[_0x1af1('0x6')][_0x1af1('0x14')](queryAgents));break;case _0x1af1('0x8'):_0x10a35b[_0x187dd4]('voice:inbound');_0x10a35b[_0x187dd4](_0x1af1('0x34'));_0xe47522[_0x1af1('0x30')](_0x40630d[_0x1af1('0x3c')]({'attributes':['id',_0x1af1('0x4')]}));_0xe47522[_0x1af1('0x30')](_0x40630d[_0x1af1('0x3d')]({'attributes':['id','name']}));_0xe47522[_0x1af1('0x30')](_0x40630d[_0x1af1('0x3e')]({'attributes':['id',_0x1af1('0x4')]}));_0xe47522[_0x1af1('0x30')](_0x40630d['getSmsQueues']({'attributes':['id',_0x1af1('0x4')]}));_0xe47522[_0x1af1('0x30')](_0x40630d['getMailQueues']({'attributes':['id','name']}));_0xe47522[_0x1af1('0x30')](_0x40630d[_0x1af1('0x3f')]({'attributes':['id','name']}));_0xe47522[_0x1af1('0x30')](_0x40630d[_0x1af1('0x40')]({'attributes':['id','name']}));break;}return BPromise[_0x1af1('0x41')](_0xe47522);}})['then'](function(_0x277e9d){if(_0x277e9d&&_0x277e9d['length']){for(var _0x41d1e6=0x0;_0x41d1e6<_0x277e9d[_0x1af1('0x42')];_0x41d1e6+=0x1){for(var _0x4ccca3=0x0;_0x4ccca3<_0x277e9d[_0x41d1e6][_0x1af1('0x42')];_0x4ccca3+=0x1){switch(_0x41d1e6){case 0x0:joinOrLeaveQueues(_0x10a35b,_0x187dd4,_0x1af1('0x43'),_0x277e9d[_0x41d1e6][_0x4ccca3]);break;case 0x1:joinOrLeaveQueues(_0x10a35b,_0x187dd4,_0x1af1('0x44'),_0x277e9d[_0x41d1e6][_0x4ccca3]);break;case 0x2:joinOrLeaveQueues(_0x10a35b,_0x187dd4,_0x1af1('0x45'),_0x277e9d[_0x41d1e6][_0x4ccca3]);break;case 0x3:joinOrLeaveQueues(_0x10a35b,_0x187dd4,_0x1af1('0x46'),_0x277e9d[_0x41d1e6][_0x4ccca3]);break;case 0x4:joinOrLeaveQueues(_0x10a35b,_0x187dd4,'mail',_0x277e9d[_0x41d1e6][_0x4ccca3]);break;case 0x5:joinOrLeaveQueues(_0x10a35b,_0x187dd4,_0x1af1('0x47'),_0x277e9d[_0x41d1e6][_0x4ccca3]);break;case 0x6:joinOrLeaveQueues(_0x10a35b,_0x187dd4,'whatsapp',_0x277e9d[_0x41d1e6][_0x4ccca3]);break;case 0x7:if(_0x8952cf[_0x1af1('0x7')]!==_0x1af1('0x8'))_0x10a35b[_0x187dd4](util['format'](_0x1af1('0x48'),_0x277e9d[_0x41d1e6][_0x4ccca3][_0x1af1('0x4')]));break;case 0x8:if(_0x8952cf[_0x1af1('0x7')]!=='agent')_0x10a35b[_0x187dd4](util[_0x1af1('0x1d')](_0x1af1('0x49'),_0x277e9d[_0x41d1e6][_0x4ccca3][_0x1af1('0x4')]));break;case 0x9:if(_0x8952cf['role']!==_0x1af1('0x8'))_0x10a35b[_0x187dd4](util[_0x1af1('0x1d')]('campaign:%s:%s',_0x277e9d[_0x41d1e6][_0x4ccca3][_0x1af1('0x4a')],_0x277e9d[_0x41d1e6][_0x4ccca3][_0x1af1('0x4')]));break;case 0xa:_0x10a35b[_0x187dd4](util[_0x1af1('0x1d')]('user:%s',_0x277e9d[_0x41d1e6][_0x4ccca3][_0x1af1('0x4')]));break;}}}}})[_0x1af1('0xc')](function(){if(_0x187dd4===_0x1af1('0x4b')){var _0x52ff39=_['map'](_0x8952cf[_0x1af1('0x23')],'id');return _0x8952cf['removeChatInteractions'](_0x52ff39)['then'](function(){for(var _0x56dbde=0x0;_0x56dbde<_0x52ff39[_0x1af1('0x42')];_0x56dbde+=0x1){_0x51c213[_0x1af1('0x4c')](_0x1af1('0x4d'),{'ChatInteractionId':Number(_0x52ff39[_0x56dbde]),'UserId':Number(_0x8952cf['id'])});}});}})[_0x1af1('0xc')](function(){if(_0x187dd4==='leave'){var _0xf80376=_['map'](_0x8952cf['MailInteractions'],'id');return _0x8952cf[_0x1af1('0x4e')](_0xf80376)['then'](function(){for(var _0x3f8e30=0x0;_0x3f8e30<_0xf80376[_0x1af1('0x42')];_0x3f8e30+=0x1){_0x51c213[_0x1af1('0x4c')](_0x1af1('0x4f'),{'MailInteractionId':Number(_0xf80376[_0x3f8e30]),'UserId':Number(_0x8952cf['id'])});}});}})[_0x1af1('0xc')](function(){if(_0x187dd4===_0x1af1('0x4b')){var _0x32508c=_['map'](_0x8952cf[_0x1af1('0x26')],'id');return _0x8952cf[_0x1af1('0x50')](_0x32508c)[_0x1af1('0xc')](function(){for(var _0x50e809=0x0;_0x50e809<_0x32508c['length'];_0x50e809+=0x1){_0x51c213[_0x1af1('0x4c')](_0x1af1('0x51'),{'FaxInteractionId':Number(_0x32508c[_0x50e809]),'UserId':Number(_0x8952cf['id'])});}});}})[_0x1af1('0xc')](function(){if(_0x187dd4==='leave'){var _0x29d1ef=_[_0x1af1('0x19')](_0x8952cf[_0x1af1('0x28')],'id');return _0x8952cf['removeSmsInteractions'](_0x29d1ef)[_0x1af1('0xc')](function(){for(var _0x2a97b8=0x0;_0x2a97b8<_0x29d1ef[_0x1af1('0x42')];_0x2a97b8+=0x1){_0x51c213['emit'](_0x1af1('0x52'),{'SmsInteractionId':Number(_0x29d1ef[_0x2a97b8]),'UserId':Number(_0x8952cf['id'])});}});}})['then'](function(){if(_0x187dd4===_0x1af1('0x4b')){var _0x40c9a1=_['map'](_0x8952cf[_0x1af1('0x2a')],'id');return _0x8952cf[_0x1af1('0x53')](_0x40c9a1)['then'](function(){for(var _0x1a9ecc=0x0;_0x1a9ecc<_0x40c9a1['length'];_0x1a9ecc+=0x1){_0x51c213['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x40c9a1[_0x1a9ecc]),'UserId':Number(_0x8952cf['id'])});}});}})[_0x1af1('0xc')](function(){if(_0x187dd4===_0x1af1('0x4b')){var _0x13aa5c=_[_0x1af1('0x19')](_0x8952cf[_0x1af1('0x2b')],'id');return _0x8952cf[_0x1af1('0x54')](_0x13aa5c)[_0x1af1('0xc')](function(){for(var _0x48394d=0x0;_0x48394d<_0x13aa5c[_0x1af1('0x42')];_0x48394d+=0x1){_0x51c213[_0x1af1('0x4c')](_0x1af1('0x55'),{'WhatsappInteractionId':Number(_0x13aa5c[_0x48394d]),'UserId':Number(_0x8952cf['id'])});}});}})['catch'](function(_0x2615b0){_0x10a35b[_0x1af1('0x56')](_0x2615b0);});}}function onDisconnect(_0x31ae79,_0x650f1a){joinOrLeave(_0x31ae79,_0x1af1('0x4b'),_0x650f1a);}function onConnect(_0x5f236a){joinOrLeave(_0x5f236a,_0x1af1('0x57'));}exports['default']=function(_0x15caba){_0x15caba['on'](_0x1af1('0x58'),function(_0xdf4301){_0xdf4301[_0x1af1('0x59')](0x0);_0xdf4301[_0x1af1('0x5a')]=_0xdf4301[_0x1af1('0x5b')]['connection']['remoteAddress']+':'+_0xdf4301[_0x1af1('0x5b')][_0x1af1('0x58')][_0x1af1('0x5c')];_0xdf4301[_0x1af1('0x5d')]=new Date();_0xdf4301['log']=function(_0xc03c58){console[_0x1af1('0x56')](_0x1af1('0x5e')+_0xdf4301[_0x1af1('0x5f')]['name']+'['+_0xdf4301[_0x1af1('0x5a')]+']',_0xc03c58);};_0xdf4301['on'](_0x1af1('0x60'),function(){onDisconnect(_0xdf4301,_0x15caba);_0xdf4301[_0x1af1('0x56')]('DISCONNECTED');});onConnect(_0xdf4301);_0xdf4301[_0x1af1('0x56')](_0x1af1('0x61'));});};