Built motion from commit da24aabd.|2.6.20
[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 _0x9790=['type','ivr','UserProfileSection','autoAssociation','VoiceQueues','FaxQueues','MailQueues','WhatsappQueues','findAll','IvrCampaigns','UserProfileResource','then','map','resourceId','User','where','role','format','%s:queue:%s','length','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','ChatQueues','SmsQueues','OpenchannelQueues','Telephones','Trunks','Campaign','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','voice','fax','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','default','setMaxListeners','address','request','connection','remotePort','connectedAt','nsp','DISCONNECTED','CONNECTED','lodash','util','./environment','name','Agents','agent','telephone'];(function(_0x53a911,_0x4a48c1){var _0x19b3cd=function(_0x11a11d){while(--_0x11a11d){_0x53a911['push'](_0x53a911['shift']());}};_0x19b3cd(++_0x4a48c1);}(_0x9790,0xc1));var _0x0979=function(_0xa13dc2,_0x66440b){_0xa13dc2=_0xa13dc2-0x0;var _0x44b307=_0x9790[_0xa13dc2];return _0x44b307;};'use strict';var _=require(_0x0979('0x0'));var util=require(_0x0979('0x1'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var config=require(_0x0979('0x2'));var queryQueues={'attributes':['id',_0x0979('0x3')],'include':[{'as':_0x0979('0x4'),'model':db['User'],'attributes':['id',_0x0979('0x3'),'role'],'raw':!![],'where':{'role':_0x0979('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x0979('0x3')],'where':{'role':_0x0979('0x6')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x0979('0x3')],'where':{'role':_0x0979('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x0979('0x3'),_0x0979('0x7')],'where':{'type':_0x0979('0x8')}};function getAssociatedResources(_0x422504,_0x3f61ee,_0x5da5c6){return db[_0x0979('0x9')]['findOne']({'where':{'name':_0x422504,'userProfileId':_0x3f61ee},'raw':!![]})['then'](function(_0x5788a3){if(_0x5788a3){if(_0x5788a3[_0x0979('0xa')]){switch(_0x422504){case _0x0979('0xb'):case'ChatQueues':case _0x0979('0xc'):case'SmsQueues':case _0x0979('0xd'):case'OpenchannelQueues':case _0x0979('0xe'):return db[_0x5da5c6][_0x0979('0xf')](queryQueues);case'Telephones':return db[_0x5da5c6][_0x0979('0xf')](queryTelephones);case'Trunks':return db[_0x5da5c6][_0x0979('0xf')](queryTrunks);case _0x0979('0x10'):return db[_0x5da5c6]['findAll'](queryCampaigns);}}else{return db[_0x0979('0x11')][_0x0979('0xf')]({'attributes':['resourceId'],'where':{'sectionId':_0x5788a3['id']},'raw':!![]})[_0x0979('0x12')](function(_0x8dd21e){if(_0x8dd21e){var _0x4981a7={'where':{'id':_[_0x0979('0x13')](_0x8dd21e,_0x0979('0x14'))},'raw':!![]};switch(_0x5da5c6){case _0x0979('0x15'):_0x4981a7[_0x0979('0x16')][_0x0979('0x17')]='telephone';break;case'Campaign':_0x4981a7[_0x0979('0x16')][_0x0979('0x7')]=_0x0979('0x8');break;}return db[_0x5da5c6][_0x0979('0xf')](_0x4981a7);}else{return[];}});}}else{return[];}})[_0x0979('0x12')](function(_0x92f3a3){return _0x92f3a3;});}function joinOrLeaveQueues(_0x373bb5,_0x37c8aa,_0x19d222,_0x200fc8){_0x373bb5[_0x37c8aa](util[_0x0979('0x18')](_0x0979('0x19'),_0x19d222,_0x200fc8[_0x0979('0x3')]));if(_0x200fc8[_0x0979('0x4')]){for(var _0x19a9bb=0x0;_0x19a9bb<_0x200fc8[_0x0979('0x4')][_0x0979('0x1a')];_0x19a9bb+=0x1){_0x373bb5[_0x37c8aa](util[_0x0979('0x18')]('user:%s',_0x200fc8[_0x0979('0x4')][_0x19a9bb][_0x0979('0x3')]));}}}function joinOrLeave(_0x5654c0,_0x2a8b8b,_0xf5c90f){var _0x476d8f;if(_0x5654c0[_0x0979('0x1b')][_0x0979('0x1c')]['id']){db[_0x0979('0x15')][_0x0979('0x1d')]({'attributes':['id',_0x0979('0x3'),_0x0979('0x17'),_0x0979('0x1e')],'where':{'id':_0x5654c0['handshake'][_0x0979('0x1c')]['id']},'include':[{'model':db[_0x0979('0x1f')],'as':_0x0979('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x0979('0x21')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x0979('0x22')],'as':_0x0979('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x0979('0x24')],'as':_0x0979('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x0979('0x26')],'as':_0x0979('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x0979('0x28')],'as':_0x0979('0x29'),'attributes':['id'],'raw':!![]}]})[_0x0979('0x12')](function(_0x32b52e){if(_0x32b52e){_0x476d8f=_0x32b52e;_0x5654c0[_0x2a8b8b](util[_0x0979('0x18')](_0x0979('0x2a'),_0x32b52e[_0x0979('0x3')]));var _0x4cc772=[];switch(_0x32b52e['role']){case'admin':_0x5654c0[_0x2a8b8b](_0x0979('0x2b'));_0x5654c0[_0x2a8b8b](_0x0979('0x2c'));if(queryQueues[_0x0979('0x2d')](_0x0979('0x2e'))){delete queryQueues[_0x0979('0x2e')];}_0x4cc772[_0x0979('0x2f')](db[_0x0979('0x30')]['findAll'](queryQueues));_0x4cc772[_0x0979('0x2f')](db[_0x0979('0x31')][_0x0979('0xf')](queryQueues));_0x4cc772[_0x0979('0x2f')](db[_0x0979('0x32')][_0x0979('0xf')](queryQueues));_0x4cc772['push'](db[_0x0979('0x33')][_0x0979('0xf')](queryQueues));_0x4cc772[_0x0979('0x2f')](db[_0x0979('0x34')][_0x0979('0xf')](queryQueues));_0x4cc772[_0x0979('0x2f')](db[_0x0979('0x35')][_0x0979('0xf')](queryQueues));_0x4cc772[_0x0979('0x2f')](db[_0x0979('0x36')][_0x0979('0xf')](queryQueues));_0x4cc772[_0x0979('0x2f')](db[_0x0979('0x15')][_0x0979('0xf')](queryTelephones));_0x4cc772[_0x0979('0x2f')](db[_0x0979('0x37')]['findAll'](queryTrunks));_0x4cc772[_0x0979('0x2f')](db['Campaign'][_0x0979('0xf')](queryCampaigns));_0x4cc772['push'](db[_0x0979('0x15')][_0x0979('0xf')](queryAgents));break;case _0x0979('0x38'):_0x5654c0[_0x2a8b8b](_0x0979('0x2b'));_0x5654c0[_0x2a8b8b](_0x0979('0x2c'));_0x4cc772[_0x0979('0x2f')](getAssociatedResources('VoiceQueues',_0x32b52e[_0x0979('0x1e')],'VoiceQueue'));_0x4cc772['push'](getAssociatedResources(_0x0979('0x39'),_0x32b52e[_0x0979('0x1e')],_0x0979('0x31')));_0x4cc772[_0x0979('0x2f')](getAssociatedResources(_0x0979('0xc'),_0x32b52e[_0x0979('0x1e')],'FaxQueue'));_0x4cc772[_0x0979('0x2f')](getAssociatedResources(_0x0979('0x3a'),_0x32b52e['userProfileId'],'SmsQueue'));_0x4cc772[_0x0979('0x2f')](getAssociatedResources(_0x0979('0xd'),_0x32b52e[_0x0979('0x1e')],_0x0979('0x34')));_0x4cc772['push'](getAssociatedResources(_0x0979('0x3b'),_0x32b52e['userProfileId'],'OpenchannelQueue'));_0x4cc772['push'](getAssociatedResources(_0x0979('0xe'),_0x32b52e[_0x0979('0x1e')],'WhatsappQueue'));_0x4cc772['push'](getAssociatedResources(_0x0979('0x3c'),_0x32b52e[_0x0979('0x1e')],'User'));_0x4cc772['push'](getAssociatedResources(_0x0979('0x3d'),_0x32b52e[_0x0979('0x1e')],_0x0979('0x37')));_0x4cc772[_0x0979('0x2f')](getAssociatedResources(_0x0979('0x10'),_0x32b52e[_0x0979('0x1e')],_0x0979('0x3e')));_0x4cc772['push'](db[_0x0979('0x15')]['findAll'](queryAgents));break;case _0x0979('0x5'):_0x5654c0[_0x2a8b8b](_0x0979('0x2b'));_0x5654c0[_0x2a8b8b]('voice:outbound');_0x4cc772[_0x0979('0x2f')](_0x32b52e['getVoiceQueues']({'attributes':['id',_0x0979('0x3')]}));_0x4cc772[_0x0979('0x2f')](_0x32b52e[_0x0979('0x3f')]({'attributes':['id',_0x0979('0x3')]}));_0x4cc772[_0x0979('0x2f')](_0x32b52e[_0x0979('0x40')]({'attributes':['id',_0x0979('0x3')]}));_0x4cc772['push'](_0x32b52e[_0x0979('0x41')]({'attributes':['id','name']}));_0x4cc772[_0x0979('0x2f')](_0x32b52e[_0x0979('0x42')]({'attributes':['id',_0x0979('0x3')]}));_0x4cc772[_0x0979('0x2f')](_0x32b52e[_0x0979('0x43')]({'attributes':['id',_0x0979('0x3')]}));_0x4cc772[_0x0979('0x2f')](_0x32b52e['getWhatsappQueues']({'attributes':['id',_0x0979('0x3')]}));break;}return BPromise['all'](_0x4cc772);}})['then'](function(_0x43e31d){if(_0x43e31d&&_0x43e31d[_0x0979('0x1a')]){for(var _0x5f0f7c=0x0;_0x5f0f7c<_0x43e31d['length'];_0x5f0f7c+=0x1){for(var _0x226186=0x0;_0x226186<_0x43e31d[_0x5f0f7c][_0x0979('0x1a')];_0x226186+=0x1){switch(_0x5f0f7c){case 0x0:joinOrLeaveQueues(_0x5654c0,_0x2a8b8b,_0x0979('0x44'),_0x43e31d[_0x5f0f7c][_0x226186]);break;case 0x1:joinOrLeaveQueues(_0x5654c0,_0x2a8b8b,'chat',_0x43e31d[_0x5f0f7c][_0x226186]);break;case 0x2:joinOrLeaveQueues(_0x5654c0,_0x2a8b8b,_0x0979('0x45'),_0x43e31d[_0x5f0f7c][_0x226186]);break;case 0x3:joinOrLeaveQueues(_0x5654c0,_0x2a8b8b,'sms',_0x43e31d[_0x5f0f7c][_0x226186]);break;case 0x4:joinOrLeaveQueues(_0x5654c0,_0x2a8b8b,_0x0979('0x46'),_0x43e31d[_0x5f0f7c][_0x226186]);break;case 0x5:joinOrLeaveQueues(_0x5654c0,_0x2a8b8b,_0x0979('0x47'),_0x43e31d[_0x5f0f7c][_0x226186]);break;case 0x6:joinOrLeaveQueues(_0x5654c0,_0x2a8b8b,_0x0979('0x48'),_0x43e31d[_0x5f0f7c][_0x226186]);break;case 0x7:if(_0x476d8f[_0x0979('0x17')]!==_0x0979('0x5'))_0x5654c0[_0x2a8b8b](util[_0x0979('0x18')](_0x0979('0x49'),_0x43e31d[_0x5f0f7c][_0x226186]['name']));break;case 0x8:if(_0x476d8f['role']!==_0x0979('0x5'))_0x5654c0[_0x2a8b8b](util[_0x0979('0x18')]('trunk:%s',_0x43e31d[_0x5f0f7c][_0x226186]['name']));break;case 0x9:if(_0x476d8f['role']!==_0x0979('0x5'))_0x5654c0[_0x2a8b8b](util['format'](_0x0979('0x4a'),_0x43e31d[_0x5f0f7c][_0x226186][_0x0979('0x7')],_0x43e31d[_0x5f0f7c][_0x226186][_0x0979('0x3')]));break;case 0xa:_0x5654c0[_0x2a8b8b](util[_0x0979('0x18')](_0x0979('0x2a'),_0x43e31d[_0x5f0f7c][_0x226186]['name']));break;}}}}})['then'](function(){if(_0x2a8b8b===_0x0979('0x4b')){var _0x1af852=_[_0x0979('0x13')](_0x476d8f['ChatInteractions'],'id');return _0x476d8f[_0x0979('0x4c')](_0x1af852)[_0x0979('0x12')](function(){for(var _0x1b8075=0x0;_0x1b8075<_0x1af852[_0x0979('0x1a')];_0x1b8075+=0x1){_0xf5c90f[_0x0979('0x4d')](_0x0979('0x4e'),{'ChatInteractionId':Number(_0x1af852[_0x1b8075]),'UserId':Number(_0x476d8f['id'])});}});}})[_0x0979('0x12')](function(){if(_0x2a8b8b==='leave'){var _0x4c2810=_[_0x0979('0x13')](_0x476d8f['MailInteractions'],'id');return _0x476d8f[_0x0979('0x4f')](_0x4c2810)[_0x0979('0x12')](function(){for(var _0x19cd7d=0x0;_0x19cd7d<_0x4c2810['length'];_0x19cd7d+=0x1){_0xf5c90f[_0x0979('0x4d')](_0x0979('0x50'),{'MailInteractionId':Number(_0x4c2810[_0x19cd7d]),'UserId':Number(_0x476d8f['id'])});}});}})['then'](function(){if(_0x2a8b8b==='leave'){var _0x536a4e=_[_0x0979('0x13')](_0x476d8f[_0x0979('0x23')],'id');return _0x476d8f[_0x0979('0x51')](_0x536a4e)[_0x0979('0x12')](function(){for(var _0x54d4a4=0x0;_0x54d4a4<_0x536a4e[_0x0979('0x1a')];_0x54d4a4+=0x1){_0xf5c90f['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x536a4e[_0x54d4a4]),'UserId':Number(_0x476d8f['id'])});}});}})[_0x0979('0x12')](function(){if(_0x2a8b8b===_0x0979('0x4b')){var _0x114a49=_[_0x0979('0x13')](_0x476d8f['SmsInteractions'],'id');return _0x476d8f[_0x0979('0x52')](_0x114a49)[_0x0979('0x12')](function(){for(var _0x54977b=0x0;_0x54977b<_0x114a49[_0x0979('0x1a')];_0x54977b+=0x1){_0xf5c90f[_0x0979('0x4d')](_0x0979('0x53'),{'SmsInteractionId':Number(_0x114a49[_0x54977b]),'UserId':Number(_0x476d8f['id'])});}});}})[_0x0979('0x12')](function(){if(_0x2a8b8b==='leave'){var _0x448b0c=_[_0x0979('0x13')](_0x476d8f[_0x0979('0x27')],'id');return _0x476d8f[_0x0979('0x54')](_0x448b0c)[_0x0979('0x12')](function(){for(var _0x16125f=0x0;_0x16125f<_0x448b0c[_0x0979('0x1a')];_0x16125f+=0x1){_0xf5c90f[_0x0979('0x4d')](_0x0979('0x55'),{'OpenchannelInteractionId':Number(_0x448b0c[_0x16125f]),'UserId':Number(_0x476d8f['id'])});}});}})[_0x0979('0x12')](function(){if(_0x2a8b8b===_0x0979('0x4b')){var _0x342034=_[_0x0979('0x13')](_0x476d8f[_0x0979('0x29')],'id');return _0x476d8f[_0x0979('0x56')](_0x342034)['then'](function(){for(var _0x5e2575=0x0;_0x5e2575<_0x342034[_0x0979('0x1a')];_0x5e2575+=0x1){_0xf5c90f[_0x0979('0x4d')](_0x0979('0x57'),{'WhatsappInteractionId':Number(_0x342034[_0x5e2575]),'UserId':Number(_0x476d8f['id'])});}});}})[_0x0979('0x58')](function(_0x1091e9){_0x5654c0[_0x0979('0x59')](_0x1091e9);});}}function onDisconnect(_0x2b47cc,_0x14b0e5){joinOrLeave(_0x2b47cc,_0x0979('0x4b'),_0x14b0e5);}function onConnect(_0x3af8c8){joinOrLeave(_0x3af8c8,'join');}exports[_0x0979('0x5a')]=function(_0x594cec){_0x594cec['on']('connection',function(_0x279fe5){_0x279fe5[_0x0979('0x5b')](0x0);_0x279fe5[_0x0979('0x5c')]=_0x279fe5[_0x0979('0x5d')]['connection']['remoteAddress']+':'+_0x279fe5[_0x0979('0x5d')][_0x0979('0x5e')][_0x0979('0x5f')];_0x279fe5[_0x0979('0x60')]=new Date();_0x279fe5[_0x0979('0x59')]=function(_0x2b960f){console[_0x0979('0x59')]('SocketIO\x20'+_0x279fe5[_0x0979('0x61')][_0x0979('0x3')]+'['+_0x279fe5['address']+']',_0x2b960f);};_0x279fe5['on']('disconnect',function(){onDisconnect(_0x279fe5,_0x594cec);_0x279fe5[_0x0979('0x59')](_0x0979('0x62'));});onConnect(_0x279fe5);_0x279fe5['log'](_0x0979('0x63'));});};