Built motion from commit 753c950e.|2.5.42
[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 _0x1792=['handshake','userProfileId','query','ChatInteraction','ChatInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','FaxQueues','FaxQueue','Telephones','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','fax','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','type','leave','removeChatInteractions','emit','MailInteractions','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','lodash','util','../mysqldb','./environment','name','Agents','role','agent','telephone','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','resourceId','map','User','where','Campaign','format','%s:queue:%s','length'];(function(_0x3287ed,_0x5ee283){var _0x1074c2=function(_0x39e6f1){while(--_0x39e6f1){_0x3287ed['push'](_0x3287ed['shift']());}};_0x1074c2(++_0x5ee283);}(_0x1792,0x111));var _0x2179=function(_0x5773ed,_0x2270ce){_0x5773ed=_0x5773ed-0x0;var _0x4a75d9=_0x1792[_0x5773ed];return _0x4a75d9;};'use strict';var _=require(_0x2179('0x0'));var util=require(_0x2179('0x1'));var BPromise=require('bluebird');var db=require(_0x2179('0x2'))['db'];var config=require(_0x2179('0x3'));var queryQueues={'attributes':['id',_0x2179('0x4')],'include':[{'as':_0x2179('0x5'),'model':db['User'],'attributes':['id',_0x2179('0x4'),_0x2179('0x6')],'raw':!![],'where':{'role':_0x2179('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x2179('0x4')],'where':{'role':_0x2179('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x2179('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x2179('0x4')],'where':{'role':_0x2179('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x2179('0x4'),'type'],'where':{'type':_0x2179('0x9')}};function getAssociatedResources(_0xb59a8c,_0x3115ef,_0x2a0fb4){return db[_0x2179('0xa')]['findOne']({'where':{'name':_0xb59a8c,'userProfileId':_0x3115ef},'raw':!![]})[_0x2179('0xb')](function(_0x4f15e8){if(_0x4f15e8){if(_0x4f15e8[_0x2179('0xc')]){switch(_0xb59a8c){case _0x2179('0xd'):case _0x2179('0xe'):case'FaxQueues':case _0x2179('0xf'):case _0x2179('0x10'):case _0x2179('0x11'):case _0x2179('0x12'):return db[_0x2a0fb4]['findAll'](queryQueues);case'Telephones':return db[_0x2a0fb4][_0x2179('0x13')](queryTelephones);case _0x2179('0x14'):return db[_0x2a0fb4][_0x2179('0x13')](queryTrunks);case _0x2179('0x15'):return db[_0x2a0fb4][_0x2179('0x13')](queryCampaigns);}}else{return db['UserProfileResource'][_0x2179('0x13')]({'attributes':[_0x2179('0x16')],'where':{'sectionId':_0x4f15e8['id']},'raw':!![]})[_0x2179('0xb')](function(_0x27fad4){if(_0x27fad4){var _0x1bbc8a={'where':{'id':_[_0x2179('0x17')](_0x27fad4,_0x2179('0x16'))},'raw':!![]};switch(_0x2a0fb4){case _0x2179('0x18'):_0x1bbc8a[_0x2179('0x19')][_0x2179('0x6')]='telephone';break;case _0x2179('0x1a'):_0x1bbc8a[_0x2179('0x19')]['type']=_0x2179('0x9');break;}return db[_0x2a0fb4][_0x2179('0x13')](_0x1bbc8a);}else{return[];}});}}else{return[];}})[_0x2179('0xb')](function(_0x4dbac7){return _0x4dbac7;});}function joinOrLeaveQueues(_0x529ec8,_0x58bfdb,_0x5015b7,_0x17e96a){_0x529ec8[_0x58bfdb](util[_0x2179('0x1b')](_0x2179('0x1c'),_0x5015b7,_0x17e96a['name']));if(_0x17e96a['Agents']){for(var _0x22af44=0x0;_0x22af44<_0x17e96a['Agents'][_0x2179('0x1d')];_0x22af44+=0x1){_0x529ec8[_0x58bfdb](util[_0x2179('0x1b')]('user:%s',_0x17e96a[_0x2179('0x5')][_0x22af44][_0x2179('0x4')]));}}}function joinOrLeave(_0x4a9169,_0x1e5813,_0x5137d9){var _0x5389dc;if(_0x4a9169[_0x2179('0x1e')]['query']['id']){db[_0x2179('0x18')]['find']({'attributes':['id','name',_0x2179('0x6'),_0x2179('0x1f')],'where':{'id':_0x4a9169[_0x2179('0x1e')][_0x2179('0x20')]['id']},'include':[{'model':db[_0x2179('0x21')],'as':_0x2179('0x22'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x2179('0x23')],'as':_0x2179('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x2179('0x25')],'as':_0x2179('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x2179('0x27')],'as':_0x2179('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x2179('0x29')],'as':_0x2179('0x2a'),'attributes':['id'],'raw':!![]}]})[_0x2179('0xb')](function(_0x4b32ee){if(_0x4b32ee){_0x5389dc=_0x4b32ee;_0x4a9169[_0x1e5813](util['format'](_0x2179('0x2b'),_0x4b32ee[_0x2179('0x4')]));var _0x1e485c=[];switch(_0x4b32ee[_0x2179('0x6')]){case _0x2179('0x2c'):_0x4a9169[_0x1e5813](_0x2179('0x2d'));_0x4a9169[_0x1e5813](_0x2179('0x2e'));if(queryQueues[_0x2179('0x2f')](_0x2179('0x30'))){delete queryQueues[_0x2179('0x30')];}_0x1e485c[_0x2179('0x31')](db[_0x2179('0x32')][_0x2179('0x13')](queryQueues));_0x1e485c[_0x2179('0x31')](db[_0x2179('0x33')]['findAll'](queryQueues));_0x1e485c[_0x2179('0x31')](db['FaxQueue'][_0x2179('0x13')](queryQueues));_0x1e485c[_0x2179('0x31')](db[_0x2179('0x34')][_0x2179('0x13')](queryQueues));_0x1e485c[_0x2179('0x31')](db[_0x2179('0x35')][_0x2179('0x13')](queryQueues));_0x1e485c[_0x2179('0x31')](db[_0x2179('0x36')][_0x2179('0x13')](queryQueues));_0x1e485c[_0x2179('0x31')](db[_0x2179('0x37')]['findAll'](queryQueues));_0x1e485c[_0x2179('0x31')](db[_0x2179('0x18')]['findAll'](queryTelephones));_0x1e485c['push'](db[_0x2179('0x38')]['findAll'](queryTrunks));_0x1e485c['push'](db[_0x2179('0x1a')][_0x2179('0x13')](queryCampaigns));_0x1e485c[_0x2179('0x31')](db[_0x2179('0x18')][_0x2179('0x13')](queryAgents));break;case'user':_0x4a9169[_0x1e5813](_0x2179('0x2d'));_0x4a9169[_0x1e5813](_0x2179('0x2e'));_0x1e485c[_0x2179('0x31')](getAssociatedResources('VoiceQueues',_0x4b32ee['userProfileId'],_0x2179('0x32')));_0x1e485c[_0x2179('0x31')](getAssociatedResources(_0x2179('0xe'),_0x4b32ee[_0x2179('0x1f')],_0x2179('0x33')));_0x1e485c[_0x2179('0x31')](getAssociatedResources(_0x2179('0x39'),_0x4b32ee[_0x2179('0x1f')],_0x2179('0x3a')));_0x1e485c[_0x2179('0x31')](getAssociatedResources(_0x2179('0xf'),_0x4b32ee['userProfileId'],_0x2179('0x34')));_0x1e485c['push'](getAssociatedResources(_0x2179('0x10'),_0x4b32ee['userProfileId'],_0x2179('0x35')));_0x1e485c[_0x2179('0x31')](getAssociatedResources(_0x2179('0x11'),_0x4b32ee['userProfileId'],'OpenchannelQueue'));_0x1e485c[_0x2179('0x31')](getAssociatedResources(_0x2179('0x12'),_0x4b32ee['userProfileId'],_0x2179('0x37')));_0x1e485c[_0x2179('0x31')](getAssociatedResources(_0x2179('0x3b'),_0x4b32ee[_0x2179('0x1f')],_0x2179('0x18')));_0x1e485c['push'](getAssociatedResources(_0x2179('0x14'),_0x4b32ee[_0x2179('0x1f')],_0x2179('0x38')));_0x1e485c[_0x2179('0x31')](getAssociatedResources('IvrCampaigns',_0x4b32ee['userProfileId'],_0x2179('0x1a')));_0x1e485c[_0x2179('0x31')](db[_0x2179('0x18')]['findAll'](queryAgents));break;case'agent':_0x4a9169[_0x1e5813](_0x2179('0x2d'));_0x4a9169[_0x1e5813](_0x2179('0x2e'));_0x1e485c[_0x2179('0x31')](_0x4b32ee['getVoiceQueues']({'attributes':['id',_0x2179('0x4')]}));_0x1e485c['push'](_0x4b32ee[_0x2179('0x3c')]({'attributes':['id',_0x2179('0x4')]}));_0x1e485c[_0x2179('0x31')](_0x4b32ee[_0x2179('0x3d')]({'attributes':['id',_0x2179('0x4')]}));_0x1e485c[_0x2179('0x31')](_0x4b32ee[_0x2179('0x3e')]({'attributes':['id',_0x2179('0x4')]}));_0x1e485c[_0x2179('0x31')](_0x4b32ee[_0x2179('0x3f')]({'attributes':['id',_0x2179('0x4')]}));_0x1e485c[_0x2179('0x31')](_0x4b32ee[_0x2179('0x40')]({'attributes':['id',_0x2179('0x4')]}));_0x1e485c['push'](_0x4b32ee[_0x2179('0x41')]({'attributes':['id',_0x2179('0x4')]}));break;}return BPromise[_0x2179('0x42')](_0x1e485c);}})[_0x2179('0xb')](function(_0x50718f){if(_0x50718f&&_0x50718f[_0x2179('0x1d')]){for(var _0x48ab9f=0x0;_0x48ab9f<_0x50718f[_0x2179('0x1d')];_0x48ab9f+=0x1){for(var _0x9781fa=0x0;_0x9781fa<_0x50718f[_0x48ab9f]['length'];_0x9781fa+=0x1){switch(_0x48ab9f){case 0x0:joinOrLeaveQueues(_0x4a9169,_0x1e5813,_0x2179('0x43'),_0x50718f[_0x48ab9f][_0x9781fa]);break;case 0x1:joinOrLeaveQueues(_0x4a9169,_0x1e5813,'chat',_0x50718f[_0x48ab9f][_0x9781fa]);break;case 0x2:joinOrLeaveQueues(_0x4a9169,_0x1e5813,_0x2179('0x44'),_0x50718f[_0x48ab9f][_0x9781fa]);break;case 0x3:joinOrLeaveQueues(_0x4a9169,_0x1e5813,'sms',_0x50718f[_0x48ab9f][_0x9781fa]);break;case 0x4:joinOrLeaveQueues(_0x4a9169,_0x1e5813,_0x2179('0x45'),_0x50718f[_0x48ab9f][_0x9781fa]);break;case 0x5:joinOrLeaveQueues(_0x4a9169,_0x1e5813,_0x2179('0x46'),_0x50718f[_0x48ab9f][_0x9781fa]);break;case 0x6:joinOrLeaveQueues(_0x4a9169,_0x1e5813,_0x2179('0x47'),_0x50718f[_0x48ab9f][_0x9781fa]);break;case 0x7:if(_0x5389dc['role']!==_0x2179('0x7'))_0x4a9169[_0x1e5813](util[_0x2179('0x1b')](_0x2179('0x48'),_0x50718f[_0x48ab9f][_0x9781fa][_0x2179('0x4')]));break;case 0x8:if(_0x5389dc[_0x2179('0x6')]!==_0x2179('0x7'))_0x4a9169[_0x1e5813](util['format'](_0x2179('0x49'),_0x50718f[_0x48ab9f][_0x9781fa][_0x2179('0x4')]));break;case 0x9:if(_0x5389dc[_0x2179('0x6')]!==_0x2179('0x7'))_0x4a9169[_0x1e5813](util[_0x2179('0x1b')](_0x2179('0x4a'),_0x50718f[_0x48ab9f][_0x9781fa][_0x2179('0x4b')],_0x50718f[_0x48ab9f][_0x9781fa][_0x2179('0x4')]));break;case 0xa:_0x4a9169[_0x1e5813](util['format'](_0x2179('0x2b'),_0x50718f[_0x48ab9f][_0x9781fa]['name']));break;}}}}})[_0x2179('0xb')](function(){if(_0x1e5813===_0x2179('0x4c')){var _0x4026df=_[_0x2179('0x17')](_0x5389dc['ChatInteractions'],'id');return _0x5389dc[_0x2179('0x4d')](_0x4026df)['then'](function(){for(var _0xf61832=0x0;_0xf61832<_0x4026df['length'];_0xf61832+=0x1){_0x5137d9[_0x2179('0x4e')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4026df[_0xf61832]),'UserId':Number(_0x5389dc['id'])});}});}})['then'](function(){if(_0x1e5813===_0x2179('0x4c')){var _0x296f24=_[_0x2179('0x17')](_0x5389dc[_0x2179('0x4f')],'id');return _0x5389dc[_0x2179('0x50')](_0x296f24)[_0x2179('0xb')](function(){for(var _0x1f80c1=0x0;_0x1f80c1<_0x296f24['length'];_0x1f80c1+=0x1){_0x5137d9[_0x2179('0x4e')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x296f24[_0x1f80c1]),'UserId':Number(_0x5389dc['id'])});}});}})['then'](function(){if(_0x1e5813===_0x2179('0x4c')){var _0x5b050f=_[_0x2179('0x17')](_0x5389dc[_0x2179('0x24')],'id');return _0x5389dc[_0x2179('0x51')](_0x5b050f)[_0x2179('0xb')](function(){for(var _0x55edd1=0x0;_0x55edd1<_0x5b050f[_0x2179('0x1d')];_0x55edd1+=0x1){_0x5137d9['emit'](_0x2179('0x52'),{'FaxInteractionId':Number(_0x5b050f[_0x55edd1]),'UserId':Number(_0x5389dc['id'])});}});}})[_0x2179('0xb')](function(){if(_0x1e5813==='leave'){var _0x504497=_[_0x2179('0x17')](_0x5389dc['SmsInteractions'],'id');return _0x5389dc[_0x2179('0x53')](_0x504497)[_0x2179('0xb')](function(){for(var _0x542f1e=0x0;_0x542f1e<_0x504497[_0x2179('0x1d')];_0x542f1e+=0x1){_0x5137d9[_0x2179('0x4e')](_0x2179('0x54'),{'SmsInteractionId':Number(_0x504497[_0x542f1e]),'UserId':Number(_0x5389dc['id'])});}});}})[_0x2179('0xb')](function(){if(_0x1e5813===_0x2179('0x4c')){var _0x409474=_[_0x2179('0x17')](_0x5389dc[_0x2179('0x28')],'id');return _0x5389dc['removeOpenchannelInteractions'](_0x409474)['then'](function(){for(var _0x3f85f8=0x0;_0x3f85f8<_0x409474[_0x2179('0x1d')];_0x3f85f8+=0x1){_0x5137d9[_0x2179('0x4e')](_0x2179('0x55'),{'OpenchannelInteractionId':Number(_0x409474[_0x3f85f8]),'UserId':Number(_0x5389dc['id'])});}});}})[_0x2179('0xb')](function(){if(_0x1e5813==='leave'){var _0x23da19=_[_0x2179('0x17')](_0x5389dc[_0x2179('0x2a')],'id');return _0x5389dc['removeWhatsappInteractions'](_0x23da19)[_0x2179('0xb')](function(){for(var _0x1ba999=0x0;_0x1ba999<_0x23da19[_0x2179('0x1d')];_0x1ba999+=0x1){_0x5137d9[_0x2179('0x4e')](_0x2179('0x56'),{'WhatsappInteractionId':Number(_0x23da19[_0x1ba999]),'UserId':Number(_0x5389dc['id'])});}});}})[_0x2179('0x57')](function(_0x3c61d1){_0x4a9169[_0x2179('0x58')](_0x3c61d1);});}}function onDisconnect(_0x1ebb09,_0x10ad6c){joinOrLeave(_0x1ebb09,_0x2179('0x4c'),_0x10ad6c);}function onConnect(_0x871480){joinOrLeave(_0x871480,_0x2179('0x59'));}exports[_0x2179('0x5a')]=function(_0x1e7e08){_0x1e7e08['on'](_0x2179('0x5b'),function(_0x73ac68){_0x73ac68[_0x2179('0x5c')](0x0);_0x73ac68[_0x2179('0x5d')]=_0x73ac68[_0x2179('0x5e')][_0x2179('0x5b')][_0x2179('0x5f')]+':'+_0x73ac68[_0x2179('0x5e')][_0x2179('0x5b')][_0x2179('0x60')];_0x73ac68[_0x2179('0x61')]=new Date();_0x73ac68[_0x2179('0x58')]=function(_0xc8f78e){console[_0x2179('0x58')](_0x2179('0x62')+_0x73ac68[_0x2179('0x63')]['name']+'['+_0x73ac68[_0x2179('0x5d')]+']',_0xc8f78e);};_0x73ac68['on'](_0x2179('0x64'),function(){onDisconnect(_0x73ac68,_0x1e7e08);_0x73ac68[_0x2179('0x58')]('DISCONNECTED');});onConnect(_0x73ac68);_0x73ac68[_0x2179('0x58')]('CONNECTED');});};