Built motion from commit cb845558.|2.6.34
[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 _0xd5c8=['ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','Trunk','user','userProfileId','MailQueue','Telephones','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','map','ChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','setMaxListeners','request','remoteAddress','connection','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','telephone','type','ivr','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','Campaign','where','format','%s:queue:%s','length','user:%s','handshake','query','ChatInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue'];(function(_0x247b9d,_0x48b509){var _0x28f208=function(_0x368c65){while(--_0x368c65){_0x247b9d['push'](_0x247b9d['shift']());}};_0x28f208(++_0x48b509);}(_0xd5c8,0x166));var _0x8d5c=function(_0x1f1511,_0x4ea911){_0x1f1511=_0x1f1511-0x0;var _0x1d9ab8=_0xd5c8[_0x1f1511];return _0x1d9ab8;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require(_0x8d5c('0x0'));var db=require(_0x8d5c('0x1'))['db'];var config=require(_0x8d5c('0x2'));var queryQueues={'attributes':['id',_0x8d5c('0x3')],'include':[{'as':_0x8d5c('0x4'),'model':db[_0x8d5c('0x5')],'attributes':['id',_0x8d5c('0x3'),_0x8d5c('0x6')],'raw':!![],'where':{'role':_0x8d5c('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x8d5c('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x8d5c('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x8d5c('0x3'),_0x8d5c('0x9')],'where':{'type':_0x8d5c('0xa')}};function getAssociatedResources(_0x5b392c,_0x4d4947,_0x18f9b6){return db['UserProfileSection'][_0x8d5c('0xb')]({'where':{'name':_0x5b392c,'userProfileId':_0x4d4947},'raw':!![]})[_0x8d5c('0xc')](function(_0x29737a){if(_0x29737a){if(_0x29737a[_0x8d5c('0xd')]){switch(_0x5b392c){case _0x8d5c('0xe'):case _0x8d5c('0xf'):case _0x8d5c('0x10'):case _0x8d5c('0x11'):case _0x8d5c('0x12'):case _0x8d5c('0x13'):case _0x8d5c('0x14'):return db[_0x18f9b6][_0x8d5c('0x15')](queryQueues);case'Telephones':return db[_0x18f9b6][_0x8d5c('0x15')](queryTelephones);case _0x8d5c('0x16'):return db[_0x18f9b6][_0x8d5c('0x15')](queryTrunks);case _0x8d5c('0x17'):return db[_0x18f9b6][_0x8d5c('0x15')](queryCampaigns);}}else{return db[_0x8d5c('0x18')][_0x8d5c('0x15')]({'attributes':[_0x8d5c('0x19')],'where':{'sectionId':_0x29737a['id']},'raw':!![]})['then'](function(_0x3146f4){if(_0x3146f4){var _0x144717={'where':{'id':_['map'](_0x3146f4,'resourceId')},'raw':!![]};switch(_0x18f9b6){case _0x8d5c('0x5'):_0x144717['where']['role']='telephone';break;case _0x8d5c('0x1a'):_0x144717[_0x8d5c('0x1b')][_0x8d5c('0x9')]=_0x8d5c('0xa');break;}return db[_0x18f9b6][_0x8d5c('0x15')](_0x144717);}else{return[];}});}}else{return[];}})[_0x8d5c('0xc')](function(_0x55a2e7){return _0x55a2e7;});}function joinOrLeaveQueues(_0x581eef,_0x51d5da,_0x4e4c5c,_0x379bfb){_0x581eef[_0x51d5da](util[_0x8d5c('0x1c')](_0x8d5c('0x1d'),_0x4e4c5c,_0x379bfb[_0x8d5c('0x3')]));if(_0x379bfb[_0x8d5c('0x4')]){for(var _0x9399ce=0x0;_0x9399ce<_0x379bfb[_0x8d5c('0x4')][_0x8d5c('0x1e')];_0x9399ce+=0x1){_0x581eef[_0x51d5da](util[_0x8d5c('0x1c')](_0x8d5c('0x1f'),_0x379bfb[_0x8d5c('0x4')][_0x9399ce]['name']));}}}function joinOrLeave(_0x2f067f,_0x2c74ab,_0x4c0cdf){var _0x251da8;if(_0x2f067f[_0x8d5c('0x20')][_0x8d5c('0x21')]['id']){db[_0x8d5c('0x5')]['find']({'attributes':['id',_0x8d5c('0x3'),_0x8d5c('0x6'),'userProfileId'],'where':{'id':_0x2f067f['handshake'][_0x8d5c('0x21')]['id']},'include':[{'model':db[_0x8d5c('0x22')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x8d5c('0x23'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x8d5c('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x8d5c('0x25')],'as':_0x8d5c('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x8d5c('0x27')],'as':_0x8d5c('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x8d5c('0x29')],'as':_0x8d5c('0x2a'),'attributes':['id'],'raw':!![]}]})[_0x8d5c('0xc')](function(_0x2c940f){if(_0x2c940f){_0x251da8=_0x2c940f;_0x2f067f[_0x2c74ab](util['format'](_0x8d5c('0x1f'),_0x2c940f[_0x8d5c('0x3')]));var _0x2aa708=[];switch(_0x2c940f['role']){case _0x8d5c('0x2b'):_0x2f067f[_0x2c74ab](_0x8d5c('0x2c'));_0x2f067f[_0x2c74ab](_0x8d5c('0x2d'));if(queryQueues[_0x8d5c('0x2e')](_0x8d5c('0x2f'))){delete queryQueues[_0x8d5c('0x2f')];}_0x2aa708[_0x8d5c('0x30')](db[_0x8d5c('0x31')][_0x8d5c('0x15')](queryQueues));_0x2aa708[_0x8d5c('0x30')](db[_0x8d5c('0x32')][_0x8d5c('0x15')](queryQueues));_0x2aa708[_0x8d5c('0x30')](db[_0x8d5c('0x33')][_0x8d5c('0x15')](queryQueues));_0x2aa708[_0x8d5c('0x30')](db[_0x8d5c('0x34')][_0x8d5c('0x15')](queryQueues));_0x2aa708['push'](db['MailQueue']['findAll'](queryQueues));_0x2aa708['push'](db[_0x8d5c('0x35')][_0x8d5c('0x15')](queryQueues));_0x2aa708[_0x8d5c('0x30')](db['WhatsappQueue'][_0x8d5c('0x15')](queryQueues));_0x2aa708[_0x8d5c('0x30')](db[_0x8d5c('0x5')][_0x8d5c('0x15')](queryTelephones));_0x2aa708['push'](db[_0x8d5c('0x36')]['findAll'](queryTrunks));_0x2aa708[_0x8d5c('0x30')](db[_0x8d5c('0x1a')]['findAll'](queryCampaigns));_0x2aa708[_0x8d5c('0x30')](db[_0x8d5c('0x5')][_0x8d5c('0x15')](queryAgents));break;case _0x8d5c('0x37'):_0x2f067f[_0x2c74ab](_0x8d5c('0x2c'));_0x2f067f[_0x2c74ab](_0x8d5c('0x2d'));_0x2aa708[_0x8d5c('0x30')](getAssociatedResources(_0x8d5c('0xe'),_0x2c940f[_0x8d5c('0x38')],_0x8d5c('0x31')));_0x2aa708[_0x8d5c('0x30')](getAssociatedResources(_0x8d5c('0xf'),_0x2c940f['userProfileId'],'ChatQueue'));_0x2aa708['push'](getAssociatedResources('FaxQueues',_0x2c940f['userProfileId'],_0x8d5c('0x33')));_0x2aa708[_0x8d5c('0x30')](getAssociatedResources('SmsQueues',_0x2c940f[_0x8d5c('0x38')],_0x8d5c('0x34')));_0x2aa708[_0x8d5c('0x30')](getAssociatedResources(_0x8d5c('0x12'),_0x2c940f[_0x8d5c('0x38')],_0x8d5c('0x39')));_0x2aa708['push'](getAssociatedResources('OpenchannelQueues',_0x2c940f[_0x8d5c('0x38')],_0x8d5c('0x35')));_0x2aa708[_0x8d5c('0x30')](getAssociatedResources(_0x8d5c('0x14'),_0x2c940f[_0x8d5c('0x38')],'WhatsappQueue'));_0x2aa708[_0x8d5c('0x30')](getAssociatedResources(_0x8d5c('0x3a'),_0x2c940f[_0x8d5c('0x38')],'User'));_0x2aa708['push'](getAssociatedResources(_0x8d5c('0x16'),_0x2c940f[_0x8d5c('0x38')],_0x8d5c('0x36')));_0x2aa708[_0x8d5c('0x30')](getAssociatedResources('IvrCampaigns',_0x2c940f['userProfileId'],'Campaign'));_0x2aa708['push'](db[_0x8d5c('0x5')][_0x8d5c('0x15')](queryAgents));break;case _0x8d5c('0x7'):_0x2f067f[_0x2c74ab](_0x8d5c('0x2c'));_0x2f067f[_0x2c74ab](_0x8d5c('0x2d'));_0x2aa708[_0x8d5c('0x30')](_0x2c940f['getVoiceQueues']({'attributes':['id',_0x8d5c('0x3')]}));_0x2aa708[_0x8d5c('0x30')](_0x2c940f[_0x8d5c('0x3b')]({'attributes':['id',_0x8d5c('0x3')]}));_0x2aa708[_0x8d5c('0x30')](_0x2c940f[_0x8d5c('0x3c')]({'attributes':['id',_0x8d5c('0x3')]}));_0x2aa708['push'](_0x2c940f[_0x8d5c('0x3d')]({'attributes':['id',_0x8d5c('0x3')]}));_0x2aa708['push'](_0x2c940f[_0x8d5c('0x3e')]({'attributes':['id','name']}));_0x2aa708[_0x8d5c('0x30')](_0x2c940f[_0x8d5c('0x3f')]({'attributes':['id',_0x8d5c('0x3')]}));_0x2aa708['push'](_0x2c940f[_0x8d5c('0x40')]({'attributes':['id',_0x8d5c('0x3')]}));break;}return BPromise[_0x8d5c('0x41')](_0x2aa708);}})[_0x8d5c('0xc')](function(_0x49ffe4){if(_0x49ffe4&&_0x49ffe4['length']){for(var _0x373262=0x0;_0x373262<_0x49ffe4[_0x8d5c('0x1e')];_0x373262+=0x1){for(var _0x4913b4=0x0;_0x4913b4<_0x49ffe4[_0x373262][_0x8d5c('0x1e')];_0x4913b4+=0x1){switch(_0x373262){case 0x0:joinOrLeaveQueues(_0x2f067f,_0x2c74ab,_0x8d5c('0x42'),_0x49ffe4[_0x373262][_0x4913b4]);break;case 0x1:joinOrLeaveQueues(_0x2f067f,_0x2c74ab,_0x8d5c('0x43'),_0x49ffe4[_0x373262][_0x4913b4]);break;case 0x2:joinOrLeaveQueues(_0x2f067f,_0x2c74ab,_0x8d5c('0x44'),_0x49ffe4[_0x373262][_0x4913b4]);break;case 0x3:joinOrLeaveQueues(_0x2f067f,_0x2c74ab,_0x8d5c('0x45'),_0x49ffe4[_0x373262][_0x4913b4]);break;case 0x4:joinOrLeaveQueues(_0x2f067f,_0x2c74ab,'mail',_0x49ffe4[_0x373262][_0x4913b4]);break;case 0x5:joinOrLeaveQueues(_0x2f067f,_0x2c74ab,_0x8d5c('0x46'),_0x49ffe4[_0x373262][_0x4913b4]);break;case 0x6:joinOrLeaveQueues(_0x2f067f,_0x2c74ab,_0x8d5c('0x47'),_0x49ffe4[_0x373262][_0x4913b4]);break;case 0x7:if(_0x251da8[_0x8d5c('0x6')]!==_0x8d5c('0x7'))_0x2f067f[_0x2c74ab](util[_0x8d5c('0x1c')](_0x8d5c('0x48'),_0x49ffe4[_0x373262][_0x4913b4][_0x8d5c('0x3')]));break;case 0x8:if(_0x251da8['role']!==_0x8d5c('0x7'))_0x2f067f[_0x2c74ab](util[_0x8d5c('0x1c')](_0x8d5c('0x49'),_0x49ffe4[_0x373262][_0x4913b4][_0x8d5c('0x3')]));break;case 0x9:if(_0x251da8[_0x8d5c('0x6')]!==_0x8d5c('0x7'))_0x2f067f[_0x2c74ab](util[_0x8d5c('0x1c')](_0x8d5c('0x4a'),_0x49ffe4[_0x373262][_0x4913b4][_0x8d5c('0x9')],_0x49ffe4[_0x373262][_0x4913b4][_0x8d5c('0x3')]));break;case 0xa:_0x2f067f[_0x2c74ab](util[_0x8d5c('0x1c')](_0x8d5c('0x1f'),_0x49ffe4[_0x373262][_0x4913b4][_0x8d5c('0x3')]));break;}}}}})['then'](function(){if(_0x2c74ab===_0x8d5c('0x4b')){var _0x3d1430=_[_0x8d5c('0x4c')](_0x251da8[_0x8d5c('0x4d')],'id');return _0x251da8['removeChatInteractions'](_0x3d1430)['then'](function(){for(var _0x1a3752=0x0;_0x1a3752<_0x3d1430[_0x8d5c('0x1e')];_0x1a3752+=0x1){_0x4c0cdf[_0x8d5c('0x4e')](_0x8d5c('0x4f'),{'ChatInteractionId':Number(_0x3d1430[_0x1a3752]),'UserId':Number(_0x251da8['id'])});}});}})['then'](function(){if(_0x2c74ab===_0x8d5c('0x4b')){var _0x3b33d3=_[_0x8d5c('0x4c')](_0x251da8[_0x8d5c('0x23')],'id');return _0x251da8[_0x8d5c('0x50')](_0x3b33d3)[_0x8d5c('0xc')](function(){for(var _0x3d3b20=0x0;_0x3d3b20<_0x3b33d3[_0x8d5c('0x1e')];_0x3d3b20+=0x1){_0x4c0cdf[_0x8d5c('0x4e')](_0x8d5c('0x51'),{'MailInteractionId':Number(_0x3b33d3[_0x3d3b20]),'UserId':Number(_0x251da8['id'])});}});}})[_0x8d5c('0xc')](function(){if(_0x2c74ab===_0x8d5c('0x4b')){var _0x1d9a08=_[_0x8d5c('0x4c')](_0x251da8[_0x8d5c('0x24')],'id');return _0x251da8[_0x8d5c('0x52')](_0x1d9a08)[_0x8d5c('0xc')](function(){for(var _0x430d74=0x0;_0x430d74<_0x1d9a08[_0x8d5c('0x1e')];_0x430d74+=0x1){_0x4c0cdf['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x1d9a08[_0x430d74]),'UserId':Number(_0x251da8['id'])});}});}})[_0x8d5c('0xc')](function(){if(_0x2c74ab===_0x8d5c('0x4b')){var _0x2a280a=_[_0x8d5c('0x4c')](_0x251da8[_0x8d5c('0x26')],'id');return _0x251da8[_0x8d5c('0x53')](_0x2a280a)[_0x8d5c('0xc')](function(){for(var _0x450fbc=0x0;_0x450fbc<_0x2a280a[_0x8d5c('0x1e')];_0x450fbc+=0x1){_0x4c0cdf[_0x8d5c('0x4e')](_0x8d5c('0x54'),{'SmsInteractionId':Number(_0x2a280a[_0x450fbc]),'UserId':Number(_0x251da8['id'])});}});}})[_0x8d5c('0xc')](function(){if(_0x2c74ab===_0x8d5c('0x4b')){var _0xe8a602=_[_0x8d5c('0x4c')](_0x251da8[_0x8d5c('0x28')],'id');return _0x251da8[_0x8d5c('0x55')](_0xe8a602)[_0x8d5c('0xc')](function(){for(var _0x381ee2=0x0;_0x381ee2<_0xe8a602[_0x8d5c('0x1e')];_0x381ee2+=0x1){_0x4c0cdf[_0x8d5c('0x4e')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0xe8a602[_0x381ee2]),'UserId':Number(_0x251da8['id'])});}});}})[_0x8d5c('0xc')](function(){if(_0x2c74ab==='leave'){var _0x3500f0=_[_0x8d5c('0x4c')](_0x251da8[_0x8d5c('0x2a')],'id');return _0x251da8[_0x8d5c('0x56')](_0x3500f0)[_0x8d5c('0xc')](function(){for(var _0x5dfa4c=0x0;_0x5dfa4c<_0x3500f0['length'];_0x5dfa4c+=0x1){_0x4c0cdf[_0x8d5c('0x4e')](_0x8d5c('0x57'),{'WhatsappInteractionId':Number(_0x3500f0[_0x5dfa4c]),'UserId':Number(_0x251da8['id'])});}});}})[_0x8d5c('0x58')](function(_0x31531f){_0x2f067f['log'](_0x31531f);});}}function onDisconnect(_0x57e9f5,_0x238d9a){joinOrLeave(_0x57e9f5,_0x8d5c('0x4b'),_0x238d9a);}function onConnect(_0x2e3e2d){joinOrLeave(_0x2e3e2d,_0x8d5c('0x59'));}exports[_0x8d5c('0x5a')]=function(_0x1e5207){_0x1e5207['on']('connection',function(_0x33c8b5){_0x33c8b5[_0x8d5c('0x5b')](0x0);_0x33c8b5['address']=_0x33c8b5[_0x8d5c('0x5c')]['connection'][_0x8d5c('0x5d')]+':'+_0x33c8b5[_0x8d5c('0x5c')][_0x8d5c('0x5e')]['remotePort'];_0x33c8b5['connectedAt']=new Date();_0x33c8b5['log']=function(_0x5dd2d4){console[_0x8d5c('0x5f')](_0x8d5c('0x60')+_0x33c8b5[_0x8d5c('0x61')][_0x8d5c('0x3')]+'['+_0x33c8b5[_0x8d5c('0x62')]+']',_0x5dd2d4);};_0x33c8b5['on'](_0x8d5c('0x63'),function(){onDisconnect(_0x33c8b5,_0x1e5207);_0x33c8b5['log'](_0x8d5c('0x64'));});onConnect(_0x33c8b5);_0x33c8b5['log'](_0x8d5c('0x65'));});};