7dca525c237c447e47dbebbfaf94184191572ae4
[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 _0x1463=['findAll','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','where','format','%s:queue:%s','length','user:%s','handshake','find','role','userProfileId','query','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','SmsQueue','OpenchannelQueue','Trunk','Campaign','user','VoiceQueue','FaxQueue','SmsQueues','MailQueue','WhatsappQueue','Telephones','getVoiceQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','leave','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','connection','setMaxListeners','address','remoteAddress','request','remotePort','connectedAt','log','CONNECTED','lodash','../mysqldb','./environment','name','Agents','User','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','MailQueues','WhatsappQueues'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x1463,0x1ec));var _0x3146=function(_0x443ebd,_0x3ef78d){_0x443ebd=_0x443ebd-0x0;var _0x5c7307=_0x1463[_0x443ebd];return _0x5c7307;};'use strict';var _=require(_0x3146('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0x3146('0x1'))['db'];var config=require(_0x3146('0x2'));var queryQueues={'attributes':['id',_0x3146('0x3')],'include':[{'as':_0x3146('0x4'),'model':db[_0x3146('0x5')],'attributes':['id',_0x3146('0x3'),'role'],'raw':!![],'where':{'role':_0x3146('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x3146('0x3')],'where':{'role':_0x3146('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x3146('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x3146('0x3')],'where':{'role':_0x3146('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x3146('0x3'),_0x3146('0x8')],'where':{'type':_0x3146('0x9')}};function getAssociatedResources(_0x25a566,_0x34059a,_0x273c05){return db[_0x3146('0xa')][_0x3146('0xb')]({'where':{'name':_0x25a566,'userProfileId':_0x34059a},'raw':!![]})[_0x3146('0xc')](function(_0x4f7469){if(_0x4f7469){if(_0x4f7469[_0x3146('0xd')]){switch(_0x25a566){case'VoiceQueues':case _0x3146('0xe'):case _0x3146('0xf'):case'SmsQueues':case _0x3146('0x10'):case'OpenchannelQueues':case _0x3146('0x11'):return db[_0x273c05][_0x3146('0x12')](queryQueues);case'Telephones':return db[_0x273c05][_0x3146('0x12')](queryTelephones);case _0x3146('0x13'):return db[_0x273c05][_0x3146('0x12')](queryTrunks);case _0x3146('0x14'):return db[_0x273c05][_0x3146('0x12')](queryCampaigns);}}else{return db[_0x3146('0x15')][_0x3146('0x12')]({'attributes':['resourceId'],'where':{'sectionId':_0x4f7469['id']},'raw':!![]})['then'](function(_0x2a912a){if(_0x2a912a){var _0x2bf2c5={'where':{'id':_[_0x3146('0x16')](_0x2a912a,_0x3146('0x17'))},'raw':!![]};switch(_0x273c05){case _0x3146('0x5'):_0x2bf2c5[_0x3146('0x18')]['role']=_0x3146('0x7');break;case'Campaign':_0x2bf2c5[_0x3146('0x18')][_0x3146('0x8')]=_0x3146('0x9');break;}return db[_0x273c05][_0x3146('0x12')](_0x2bf2c5);}else{return[];}});}}else{return[];}})['then'](function(_0x84bf5c){return _0x84bf5c;});}function joinOrLeaveQueues(_0x892f89,_0x5e43ce,_0x94552a,_0x1108ca){_0x892f89[_0x5e43ce](util[_0x3146('0x19')](_0x3146('0x1a'),_0x94552a,_0x1108ca['name']));if(_0x1108ca[_0x3146('0x4')]){for(var _0x47df61=0x0;_0x47df61<_0x1108ca['Agents'][_0x3146('0x1b')];_0x47df61+=0x1){_0x892f89[_0x5e43ce](util[_0x3146('0x19')](_0x3146('0x1c'),_0x1108ca[_0x3146('0x4')][_0x47df61][_0x3146('0x3')]));}}}function joinOrLeave(_0x58d700,_0x1ec531,_0x4a82c6){var _0x4935e4;if(_0x58d700[_0x3146('0x1d')]['query']['id']){db['User'][_0x3146('0x1e')]({'attributes':['id','name',_0x3146('0x1f'),_0x3146('0x20')],'where':{'id':_0x58d700['handshake'][_0x3146('0x21')]['id']},'include':[{'model':db[_0x3146('0x22')],'as':_0x3146('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x3146('0x24')],'as':_0x3146('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x3146('0x26')],'as':_0x3146('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x3146('0x28')],'as':_0x3146('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x3146('0x2a')],'as':_0x3146('0x2b'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x3146('0x2c'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x23d67f){if(_0x23d67f){_0x4935e4=_0x23d67f;_0x58d700[_0x1ec531](util['format'](_0x3146('0x1c'),_0x23d67f[_0x3146('0x3')]));var _0x285811=[];switch(_0x23d67f[_0x3146('0x1f')]){case _0x3146('0x2d'):_0x58d700[_0x1ec531](_0x3146('0x2e'));_0x58d700[_0x1ec531](_0x3146('0x2f'));if(queryQueues[_0x3146('0x30')](_0x3146('0x31'))){delete queryQueues[_0x3146('0x31')];}_0x285811[_0x3146('0x32')](db['VoiceQueue'][_0x3146('0x12')](queryQueues));_0x285811[_0x3146('0x32')](db[_0x3146('0x33')][_0x3146('0x12')](queryQueues));_0x285811[_0x3146('0x32')](db['FaxQueue']['findAll'](queryQueues));_0x285811[_0x3146('0x32')](db[_0x3146('0x34')]['findAll'](queryQueues));_0x285811[_0x3146('0x32')](db['MailQueue'][_0x3146('0x12')](queryQueues));_0x285811[_0x3146('0x32')](db[_0x3146('0x35')][_0x3146('0x12')](queryQueues));_0x285811[_0x3146('0x32')](db['WhatsappQueue'][_0x3146('0x12')](queryQueues));_0x285811[_0x3146('0x32')](db[_0x3146('0x5')][_0x3146('0x12')](queryTelephones));_0x285811['push'](db[_0x3146('0x36')][_0x3146('0x12')](queryTrunks));_0x285811[_0x3146('0x32')](db[_0x3146('0x37')]['findAll'](queryCampaigns));_0x285811[_0x3146('0x32')](db[_0x3146('0x5')][_0x3146('0x12')](queryAgents));break;case _0x3146('0x38'):_0x58d700[_0x1ec531](_0x3146('0x2e'));_0x58d700[_0x1ec531](_0x3146('0x2f'));_0x285811[_0x3146('0x32')](getAssociatedResources('VoiceQueues',_0x23d67f['userProfileId'],_0x3146('0x39')));_0x285811[_0x3146('0x32')](getAssociatedResources(_0x3146('0xe'),_0x23d67f[_0x3146('0x20')],'ChatQueue'));_0x285811['push'](getAssociatedResources(_0x3146('0xf'),_0x23d67f['userProfileId'],_0x3146('0x3a')));_0x285811[_0x3146('0x32')](getAssociatedResources(_0x3146('0x3b'),_0x23d67f[_0x3146('0x20')],_0x3146('0x34')));_0x285811[_0x3146('0x32')](getAssociatedResources('MailQueues',_0x23d67f['userProfileId'],_0x3146('0x3c')));_0x285811[_0x3146('0x32')](getAssociatedResources('OpenchannelQueues',_0x23d67f['userProfileId'],_0x3146('0x35')));_0x285811[_0x3146('0x32')](getAssociatedResources(_0x3146('0x11'),_0x23d67f['userProfileId'],_0x3146('0x3d')));_0x285811[_0x3146('0x32')](getAssociatedResources(_0x3146('0x3e'),_0x23d67f[_0x3146('0x20')],'User'));_0x285811[_0x3146('0x32')](getAssociatedResources(_0x3146('0x13'),_0x23d67f[_0x3146('0x20')],_0x3146('0x36')));_0x285811['push'](getAssociatedResources('IvrCampaigns',_0x23d67f['userProfileId'],_0x3146('0x37')));_0x285811[_0x3146('0x32')](db['User'][_0x3146('0x12')](queryAgents));break;case _0x3146('0x6'):_0x58d700[_0x1ec531](_0x3146('0x2e'));_0x58d700[_0x1ec531]('voice:outbound');_0x285811[_0x3146('0x32')](_0x23d67f[_0x3146('0x3f')]({'attributes':['id',_0x3146('0x3')]}));_0x285811[_0x3146('0x32')](_0x23d67f['getChatQueues']({'attributes':['id',_0x3146('0x3')]}));_0x285811['push'](_0x23d67f['getFaxQueues']({'attributes':['id',_0x3146('0x3')]}));_0x285811[_0x3146('0x32')](_0x23d67f['getSmsQueues']({'attributes':['id',_0x3146('0x3')]}));_0x285811[_0x3146('0x32')](_0x23d67f[_0x3146('0x40')]({'attributes':['id',_0x3146('0x3')]}));_0x285811[_0x3146('0x32')](_0x23d67f[_0x3146('0x41')]({'attributes':['id','name']}));_0x285811[_0x3146('0x32')](_0x23d67f[_0x3146('0x42')]({'attributes':['id',_0x3146('0x3')]}));break;}return BPromise[_0x3146('0x43')](_0x285811);}})['then'](function(_0x8f418b){if(_0x8f418b&&_0x8f418b[_0x3146('0x1b')]){for(var _0x4078d8=0x0;_0x4078d8<_0x8f418b[_0x3146('0x1b')];_0x4078d8+=0x1){for(var _0x4289a3=0x0;_0x4289a3<_0x8f418b[_0x4078d8]['length'];_0x4289a3+=0x1){switch(_0x4078d8){case 0x0:joinOrLeaveQueues(_0x58d700,_0x1ec531,_0x3146('0x44'),_0x8f418b[_0x4078d8][_0x4289a3]);break;case 0x1:joinOrLeaveQueues(_0x58d700,_0x1ec531,_0x3146('0x45'),_0x8f418b[_0x4078d8][_0x4289a3]);break;case 0x2:joinOrLeaveQueues(_0x58d700,_0x1ec531,_0x3146('0x46'),_0x8f418b[_0x4078d8][_0x4289a3]);break;case 0x3:joinOrLeaveQueues(_0x58d700,_0x1ec531,_0x3146('0x47'),_0x8f418b[_0x4078d8][_0x4289a3]);break;case 0x4:joinOrLeaveQueues(_0x58d700,_0x1ec531,_0x3146('0x48'),_0x8f418b[_0x4078d8][_0x4289a3]);break;case 0x5:joinOrLeaveQueues(_0x58d700,_0x1ec531,_0x3146('0x49'),_0x8f418b[_0x4078d8][_0x4289a3]);break;case 0x6:joinOrLeaveQueues(_0x58d700,_0x1ec531,_0x3146('0x4a'),_0x8f418b[_0x4078d8][_0x4289a3]);break;case 0x7:_0x58d700[_0x1ec531](util[_0x3146('0x19')](_0x3146('0x4b'),_0x8f418b[_0x4078d8][_0x4289a3][_0x3146('0x3')]));break;case 0x8:_0x58d700[_0x1ec531](util[_0x3146('0x19')](_0x3146('0x4c'),_0x8f418b[_0x4078d8][_0x4289a3][_0x3146('0x3')]));break;case 0x9:_0x58d700[_0x1ec531](util[_0x3146('0x19')](_0x3146('0x4d'),_0x8f418b[_0x4078d8][_0x4289a3][_0x3146('0x8')],_0x8f418b[_0x4078d8][_0x4289a3][_0x3146('0x3')]));break;case 0xa:_0x58d700[_0x1ec531](util[_0x3146('0x19')](_0x3146('0x1c'),_0x8f418b[_0x4078d8][_0x4289a3][_0x3146('0x3')]));break;}}}}})[_0x3146('0xc')](function(){if(_0x1ec531==='leave'){var _0x35235c=_[_0x3146('0x16')](_0x4935e4[_0x3146('0x23')],'id');return _0x4935e4[_0x3146('0x4e')](_0x35235c)[_0x3146('0xc')](function(){for(var _0x3b6db7=0x0;_0x3b6db7<_0x35235c[_0x3146('0x1b')];_0x3b6db7+=0x1){_0x4a82c6[_0x3146('0x4f')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x35235c[_0x3b6db7]),'UserId':Number(_0x4935e4['id'])});}});}})[_0x3146('0xc')](function(){if(_0x1ec531===_0x3146('0x50')){var _0x11a2d1=_['map'](_0x4935e4[_0x3146('0x25')],'id');return _0x4935e4[_0x3146('0x51')](_0x11a2d1)[_0x3146('0xc')](function(){for(var _0x1cf305=0x0;_0x1cf305<_0x11a2d1[_0x3146('0x1b')];_0x1cf305+=0x1){_0x4a82c6[_0x3146('0x4f')](_0x3146('0x52'),{'MailInteractionId':Number(_0x11a2d1[_0x1cf305]),'UserId':Number(_0x4935e4['id'])});}});}})['then'](function(){if(_0x1ec531===_0x3146('0x50')){var _0x598d31=_['map'](_0x4935e4['FaxInteractions'],'id');return _0x4935e4[_0x3146('0x53')](_0x598d31)[_0x3146('0xc')](function(){for(var _0x2f9a5a=0x0;_0x2f9a5a<_0x598d31[_0x3146('0x1b')];_0x2f9a5a+=0x1){_0x4a82c6[_0x3146('0x4f')](_0x3146('0x54'),{'FaxInteractionId':Number(_0x598d31[_0x2f9a5a]),'UserId':Number(_0x4935e4['id'])});}});}})[_0x3146('0xc')](function(){if(_0x1ec531===_0x3146('0x50')){var _0x1c242c=_[_0x3146('0x16')](_0x4935e4[_0x3146('0x29')],'id');return _0x4935e4[_0x3146('0x55')](_0x1c242c)[_0x3146('0xc')](function(){for(var _0x107803=0x0;_0x107803<_0x1c242c[_0x3146('0x1b')];_0x107803+=0x1){_0x4a82c6[_0x3146('0x4f')](_0x3146('0x56'),{'SmsInteractionId':Number(_0x1c242c[_0x107803]),'UserId':Number(_0x4935e4['id'])});}});}})[_0x3146('0xc')](function(){if(_0x1ec531===_0x3146('0x50')){var _0x46e0b9=_[_0x3146('0x16')](_0x4935e4[_0x3146('0x2b')],'id');return _0x4935e4[_0x3146('0x57')](_0x46e0b9)[_0x3146('0xc')](function(){for(var _0x3da6f0=0x0;_0x3da6f0<_0x46e0b9[_0x3146('0x1b')];_0x3da6f0+=0x1){_0x4a82c6[_0x3146('0x4f')](_0x3146('0x58'),{'OpenchannelInteractionId':Number(_0x46e0b9[_0x3da6f0]),'UserId':Number(_0x4935e4['id'])});}});}})[_0x3146('0xc')](function(){if(_0x1ec531==='leave'){var _0x3fc6fe=_[_0x3146('0x16')](_0x4935e4[_0x3146('0x2c')],'id');return _0x4935e4[_0x3146('0x59')](_0x3fc6fe)[_0x3146('0xc')](function(){for(var _0x2ff344=0x0;_0x2ff344<_0x3fc6fe[_0x3146('0x1b')];_0x2ff344+=0x1){_0x4a82c6[_0x3146('0x4f')](_0x3146('0x5a'),{'WhatsappInteractionId':Number(_0x3fc6fe[_0x2ff344]),'UserId':Number(_0x4935e4['id'])});}});}})[_0x3146('0x5b')](function(_0x530018){_0x58d700['log'](_0x530018);});}}function onDisconnect(_0x50dd2a,_0x1bb876){joinOrLeave(_0x50dd2a,_0x3146('0x50'),_0x1bb876);}function onConnect(_0x4931c6){joinOrLeave(_0x4931c6,_0x3146('0x5c'));}exports['default']=function(_0xf5472b){_0xf5472b['on'](_0x3146('0x5d'),function(_0x248aec){_0x248aec[_0x3146('0x5e')](0x0);_0x248aec[_0x3146('0x5f')]=_0x248aec['request'][_0x3146('0x5d')][_0x3146('0x60')]+':'+_0x248aec[_0x3146('0x61')][_0x3146('0x5d')][_0x3146('0x62')];_0x248aec[_0x3146('0x63')]=new Date();_0x248aec[_0x3146('0x64')]=function(_0x1bfd2a){console[_0x3146('0x64')]('SocketIO\x20'+_0x248aec['nsp'][_0x3146('0x3')]+'['+_0x248aec[_0x3146('0x5f')]+']',_0x1bfd2a);};_0x248aec['on']('disconnect',function(){onDisconnect(_0x248aec,_0xf5472b);_0x248aec[_0x3146('0x64')]('DISCONNECTED');});onConnect(_0x248aec);_0x248aec[_0x3146('0x64')](_0x3146('0x65'));});};