Built motion from commit (unavailable).|2.5.16
[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 _0x6e12=['getWhatsappQueues','all','length','voice','chat','sms','mail','whatsapp','telephone:%s','campaign:%s:%s','map','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','MailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','setMaxListeners','address','request','connection','remoteAddress','connectedAt','SocketIO\x20','nsp','disconnect','log','DISCONNECTED','CONNECTED','util','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','telephone','type','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','where','Campaign','ivr','format','%s:queue:%s','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteractions','voice:outbound','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','voice:inbound','SmsQueues','MailQueues','OpenchannelQueues','Trunk','getVoiceQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6e12,0xf2));var _0x26e1=function(_0x44186b,_0x151b94){_0x44186b=_0x44186b-0x0;var _0x1043b0=_0x6e12[_0x44186b];return _0x1043b0;};'use strict';var _=require('lodash');var util=require(_0x26e1('0x0'));var BPromise=require(_0x26e1('0x1'));var db=require(_0x26e1('0x2'))['db'];var config=require(_0x26e1('0x3'));var queryQueues={'attributes':['id',_0x26e1('0x4')],'include':[{'as':_0x26e1('0x5'),'model':db[_0x26e1('0x6')],'attributes':['id',_0x26e1('0x4'),_0x26e1('0x7')],'raw':!![],'where':{'role':_0x26e1('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x26e1('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x26e1('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x26e1('0x4')],'where':{'role':_0x26e1('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x26e1('0x4'),_0x26e1('0xa')],'where':{'type':'ivr'}};function getAssociatedResources(_0x388d2d,_0x4e8077,_0x325f2e){return db['UserProfileSection'][_0x26e1('0xb')]({'where':{'name':_0x388d2d,'userProfileId':_0x4e8077},'raw':!![]})[_0x26e1('0xc')](function(_0xea59df){if(_0xea59df){if(_0xea59df[_0x26e1('0xd')]){switch(_0x388d2d){case _0x26e1('0xe'):case _0x26e1('0xf'):case _0x26e1('0x10'):case'SmsQueues':case'MailQueues':case'OpenchannelQueues':case _0x26e1('0x11'):return db[_0x325f2e][_0x26e1('0x12')](queryQueues);case _0x26e1('0x13'):return db[_0x325f2e]['findAll'](queryTelephones);case _0x26e1('0x14'):return db[_0x325f2e][_0x26e1('0x12')](queryTrunks);case _0x26e1('0x15'):return db[_0x325f2e][_0x26e1('0x12')](queryCampaigns);}}else{return db[_0x26e1('0x16')]['findAll']({'attributes':[_0x26e1('0x17')],'where':{'sectionId':_0xea59df['id']},'raw':!![]})[_0x26e1('0xc')](function(_0x3d6dee){if(_0x3d6dee){var _0x392719={'where':{'id':_['map'](_0x3d6dee,_0x26e1('0x17'))},'raw':!![]};switch(_0x325f2e){case _0x26e1('0x6'):_0x392719[_0x26e1('0x18')]['role']=_0x26e1('0x9');break;case _0x26e1('0x19'):_0x392719[_0x26e1('0x18')][_0x26e1('0xa')]=_0x26e1('0x1a');break;}return db[_0x325f2e]['findAll'](_0x392719);}else{return[];}});}}else{return[];}})[_0x26e1('0xc')](function(_0x422318){return _0x422318;});}function joinOrLeaveQueues(_0x15f19b,_0x4e406f,_0x2fea99,_0xbebd23){_0x15f19b[_0x4e406f](util[_0x26e1('0x1b')](_0x26e1('0x1c'),_0x2fea99,_0xbebd23[_0x26e1('0x4')]));if(_0xbebd23[_0x26e1('0x5')]){for(var _0xaf6494=0x0;_0xaf6494<_0xbebd23[_0x26e1('0x5')]['length'];_0xaf6494+=0x1){_0x15f19b[_0x4e406f](util['format'](_0x26e1('0x1d'),_0xbebd23[_0x26e1('0x5')][_0xaf6494][_0x26e1('0x4')]));}}}function joinOrLeave(_0x457552,_0x1c17d6,_0x413de6){var _0x1a0ede;if(_0x457552[_0x26e1('0x1e')][_0x26e1('0x1f')]['id']){db[_0x26e1('0x6')][_0x26e1('0x20')]({'attributes':['id',_0x26e1('0x4'),_0x26e1('0x7'),_0x26e1('0x21')],'where':{'id':_0x457552[_0x26e1('0x1e')][_0x26e1('0x1f')]['id']},'include':[{'model':db[_0x26e1('0x22')],'as':_0x26e1('0x23'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x26e1('0x24')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x26e1('0x25')],'as':_0x26e1('0x26'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x26e1('0x27'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x26e1('0xc')](function(_0x542b03){if(_0x542b03){_0x1a0ede=_0x542b03;_0x457552[_0x1c17d6](util[_0x26e1('0x1b')]('user:%s',_0x542b03[_0x26e1('0x4')]));var _0x997874=[];switch(_0x542b03[_0x26e1('0x7')]){case'admin':_0x457552[_0x1c17d6]('voice:inbound');_0x457552[_0x1c17d6](_0x26e1('0x28'));if(queryQueues[_0x26e1('0x29')](_0x26e1('0x2a'))){delete queryQueues[_0x26e1('0x2a')];}_0x997874['push'](db[_0x26e1('0x2b')][_0x26e1('0x12')](queryQueues));_0x997874[_0x26e1('0x2c')](db[_0x26e1('0x2d')]['findAll'](queryQueues));_0x997874[_0x26e1('0x2c')](db[_0x26e1('0x2e')][_0x26e1('0x12')](queryQueues));_0x997874['push'](db[_0x26e1('0x2f')]['findAll'](queryQueues));_0x997874['push'](db[_0x26e1('0x30')][_0x26e1('0x12')](queryQueues));_0x997874[_0x26e1('0x2c')](db[_0x26e1('0x31')][_0x26e1('0x12')](queryQueues));_0x997874[_0x26e1('0x2c')](db[_0x26e1('0x32')][_0x26e1('0x12')](queryQueues));_0x997874[_0x26e1('0x2c')](db[_0x26e1('0x6')][_0x26e1('0x12')](queryTelephones));_0x997874['push'](db['Trunk'][_0x26e1('0x12')](queryTrunks));_0x997874[_0x26e1('0x2c')](db['Campaign'][_0x26e1('0x12')](queryCampaigns));_0x997874[_0x26e1('0x2c')](db['User'][_0x26e1('0x12')](queryAgents));break;case _0x26e1('0x33'):_0x457552[_0x1c17d6](_0x26e1('0x34'));_0x457552[_0x1c17d6](_0x26e1('0x28'));_0x997874[_0x26e1('0x2c')](getAssociatedResources(_0x26e1('0xe'),_0x542b03['userProfileId'],_0x26e1('0x2b')));_0x997874[_0x26e1('0x2c')](getAssociatedResources(_0x26e1('0xf'),_0x542b03[_0x26e1('0x21')],'ChatQueue'));_0x997874[_0x26e1('0x2c')](getAssociatedResources(_0x26e1('0x10'),_0x542b03[_0x26e1('0x21')],_0x26e1('0x2e')));_0x997874['push'](getAssociatedResources(_0x26e1('0x35'),_0x542b03[_0x26e1('0x21')],'SmsQueue'));_0x997874[_0x26e1('0x2c')](getAssociatedResources(_0x26e1('0x36'),_0x542b03[_0x26e1('0x21')],'MailQueue'));_0x997874['push'](getAssociatedResources(_0x26e1('0x37'),_0x542b03['userProfileId'],_0x26e1('0x31')));_0x997874[_0x26e1('0x2c')](getAssociatedResources(_0x26e1('0x11'),_0x542b03[_0x26e1('0x21')],_0x26e1('0x32')));_0x997874[_0x26e1('0x2c')](getAssociatedResources('Telephones',_0x542b03[_0x26e1('0x21')],_0x26e1('0x6')));_0x997874[_0x26e1('0x2c')](getAssociatedResources(_0x26e1('0x14'),_0x542b03['userProfileId'],_0x26e1('0x38')));_0x997874['push'](getAssociatedResources(_0x26e1('0x15'),_0x542b03[_0x26e1('0x21')],'Campaign'));_0x997874[_0x26e1('0x2c')](db[_0x26e1('0x6')]['findAll'](queryAgents));break;case'agent':_0x457552[_0x1c17d6](_0x26e1('0x34'));_0x457552[_0x1c17d6](_0x26e1('0x28'));_0x997874[_0x26e1('0x2c')](_0x542b03[_0x26e1('0x39')]({'attributes':['id','name']}));_0x997874['push'](_0x542b03['getChatQueues']({'attributes':['id','name']}));_0x997874[_0x26e1('0x2c')](_0x542b03[_0x26e1('0x3a')]({'attributes':['id',_0x26e1('0x4')]}));_0x997874[_0x26e1('0x2c')](_0x542b03[_0x26e1('0x3b')]({'attributes':['id','name']}));_0x997874['push'](_0x542b03['getMailQueues']({'attributes':['id','name']}));_0x997874['push'](_0x542b03[_0x26e1('0x3c')]({'attributes':['id',_0x26e1('0x4')]}));_0x997874[_0x26e1('0x2c')](_0x542b03[_0x26e1('0x3d')]({'attributes':['id',_0x26e1('0x4')]}));break;}return BPromise[_0x26e1('0x3e')](_0x997874);}})[_0x26e1('0xc')](function(_0x3339a1){if(_0x3339a1&&_0x3339a1['length']){for(var _0x4f2918=0x0;_0x4f2918<_0x3339a1[_0x26e1('0x3f')];_0x4f2918+=0x1){for(var _0x33db99=0x0;_0x33db99<_0x3339a1[_0x4f2918]['length'];_0x33db99+=0x1){switch(_0x4f2918){case 0x0:joinOrLeaveQueues(_0x457552,_0x1c17d6,_0x26e1('0x40'),_0x3339a1[_0x4f2918][_0x33db99]);break;case 0x1:joinOrLeaveQueues(_0x457552,_0x1c17d6,_0x26e1('0x41'),_0x3339a1[_0x4f2918][_0x33db99]);break;case 0x2:joinOrLeaveQueues(_0x457552,_0x1c17d6,'fax',_0x3339a1[_0x4f2918][_0x33db99]);break;case 0x3:joinOrLeaveQueues(_0x457552,_0x1c17d6,_0x26e1('0x42'),_0x3339a1[_0x4f2918][_0x33db99]);break;case 0x4:joinOrLeaveQueues(_0x457552,_0x1c17d6,_0x26e1('0x43'),_0x3339a1[_0x4f2918][_0x33db99]);break;case 0x5:joinOrLeaveQueues(_0x457552,_0x1c17d6,'openchannel',_0x3339a1[_0x4f2918][_0x33db99]);break;case 0x6:joinOrLeaveQueues(_0x457552,_0x1c17d6,_0x26e1('0x44'),_0x3339a1[_0x4f2918][_0x33db99]);break;case 0x7:_0x457552[_0x1c17d6](util[_0x26e1('0x1b')](_0x26e1('0x45'),_0x3339a1[_0x4f2918][_0x33db99][_0x26e1('0x4')]));break;case 0x8:_0x457552[_0x1c17d6](util[_0x26e1('0x1b')]('trunk:%s',_0x3339a1[_0x4f2918][_0x33db99][_0x26e1('0x4')]));break;case 0x9:_0x457552[_0x1c17d6](util[_0x26e1('0x1b')](_0x26e1('0x46'),_0x3339a1[_0x4f2918][_0x33db99]['type'],_0x3339a1[_0x4f2918][_0x33db99]['name']));break;case 0xa:_0x457552[_0x1c17d6](util['format'](_0x26e1('0x1d'),_0x3339a1[_0x4f2918][_0x33db99][_0x26e1('0x4')]));break;}}}}})['then'](function(){if(_0x1c17d6==='leave'){var _0x3f9bb2=_[_0x26e1('0x47')](_0x1a0ede[_0x26e1('0x23')],'id');return _0x1a0ede[_0x26e1('0x48')](_0x3f9bb2)[_0x26e1('0xc')](function(){for(var _0x4716fc=0x0;_0x4716fc<_0x3f9bb2[_0x26e1('0x3f')];_0x4716fc+=0x1){_0x413de6[_0x26e1('0x49')](_0x26e1('0x4a'),{'ChatInteractionId':Number(_0x3f9bb2[_0x4716fc]),'UserId':Number(_0x1a0ede['id'])});}});}})['then'](function(){if(_0x1c17d6===_0x26e1('0x4b')){var _0x5c8876=_[_0x26e1('0x47')](_0x1a0ede[_0x26e1('0x4c')],'id');return _0x1a0ede['removeMailInteractions'](_0x5c8876)[_0x26e1('0xc')](function(){for(var _0x147233=0x0;_0x147233<_0x5c8876[_0x26e1('0x3f')];_0x147233+=0x1){_0x413de6[_0x26e1('0x49')](_0x26e1('0x4d'),{'MailInteractionId':Number(_0x5c8876[_0x147233]),'UserId':Number(_0x1a0ede['id'])});}});}})[_0x26e1('0xc')](function(){if(_0x1c17d6===_0x26e1('0x4b')){var _0x52e668=_[_0x26e1('0x47')](_0x1a0ede[_0x26e1('0x4e')],'id');return _0x1a0ede[_0x26e1('0x4f')](_0x52e668)[_0x26e1('0xc')](function(){for(var _0x4240c0=0x0;_0x4240c0<_0x52e668['length'];_0x4240c0+=0x1){_0x413de6[_0x26e1('0x49')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x52e668[_0x4240c0]),'UserId':Number(_0x1a0ede['id'])});}});}})[_0x26e1('0xc')](function(){if(_0x1c17d6===_0x26e1('0x4b')){var _0x59a6ca=_[_0x26e1('0x47')](_0x1a0ede['SmsInteractions'],'id');return _0x1a0ede[_0x26e1('0x50')](_0x59a6ca)['then'](function(){for(var _0x5bee8d=0x0;_0x5bee8d<_0x59a6ca['length'];_0x5bee8d+=0x1){_0x413de6[_0x26e1('0x49')](_0x26e1('0x51'),{'SmsInteractionId':Number(_0x59a6ca[_0x5bee8d]),'UserId':Number(_0x1a0ede['id'])});}});}})['then'](function(){if(_0x1c17d6===_0x26e1('0x4b')){var _0x7d6395=_[_0x26e1('0x47')](_0x1a0ede[_0x26e1('0x27')],'id');return _0x1a0ede[_0x26e1('0x52')](_0x7d6395)[_0x26e1('0xc')](function(){for(var _0x1b55f8=0x0;_0x1b55f8<_0x7d6395[_0x26e1('0x3f')];_0x1b55f8+=0x1){_0x413de6['emit'](_0x26e1('0x53'),{'OpenchannelInteractionId':Number(_0x7d6395[_0x1b55f8]),'UserId':Number(_0x1a0ede['id'])});}});}})[_0x26e1('0xc')](function(){if(_0x1c17d6===_0x26e1('0x4b')){var _0x5974fa=_[_0x26e1('0x47')](_0x1a0ede[_0x26e1('0x54')],'id');return _0x1a0ede['removeWhatsappInteractions'](_0x5974fa)[_0x26e1('0xc')](function(){for(var _0x3e88c7=0x0;_0x3e88c7<_0x5974fa[_0x26e1('0x3f')];_0x3e88c7+=0x1){_0x413de6[_0x26e1('0x49')](_0x26e1('0x55'),{'WhatsappInteractionId':Number(_0x5974fa[_0x3e88c7]),'UserId':Number(_0x1a0ede['id'])});}});}})[_0x26e1('0x56')](function(_0x13e8e1){_0x457552['log'](_0x13e8e1);});}}function onDisconnect(_0x50c304,_0xbe1f1a){joinOrLeave(_0x50c304,'leave',_0xbe1f1a);}function onConnect(_0x316946){joinOrLeave(_0x316946,_0x26e1('0x57'));}exports[_0x26e1('0x58')]=function(_0x1148ef){_0x1148ef['on']('connection',function(_0x1b3dff){_0x1b3dff[_0x26e1('0x59')](0x0);_0x1b3dff[_0x26e1('0x5a')]=_0x1b3dff[_0x26e1('0x5b')][_0x26e1('0x5c')][_0x26e1('0x5d')]+':'+_0x1b3dff['request'][_0x26e1('0x5c')]['remotePort'];_0x1b3dff[_0x26e1('0x5e')]=new Date();_0x1b3dff['log']=function(_0x5db69a){console['log'](_0x26e1('0x5f')+_0x1b3dff[_0x26e1('0x60')]['name']+'['+_0x1b3dff[_0x26e1('0x5a')]+']',_0x5db69a);};_0x1b3dff['on'](_0x26e1('0x61'),function(){onDisconnect(_0x1b3dff,_0x1148ef);_0x1b3dff[_0x26e1('0x62')](_0x26e1('0x63'));});onConnect(_0x1b3dff);_0x1b3dff['log'](_0x26e1('0x64'));});};