90984945c9726558a243367c1435d41784f823e3
[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 _0xbfc6=['autoAssociation','VoiceQueues','ChatQueues','FaxQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','where','Campaign','format','Agents','length','user:%s','handshake','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','Trunk','SmsQueue','MailQueues','OpenchannelQueues','OpenchannelQueue','WhatsappQueues','WhatsappQueue','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','whatsapp','trunk:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','emit','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','default','connection','setMaxListeners','address','remoteAddress','request','connectedAt','nsp','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','name','User','role','telephone','agent','type','ivr','UserProfileSection','findOne','then'];(function(_0xdbcc0d,_0x2f9b81){var _0x43802b=function(_0x5edb63){while(--_0x5edb63){_0xdbcc0d['push'](_0xdbcc0d['shift']());}};_0x43802b(++_0x2f9b81);}(_0xbfc6,0x11e));var _0x6bfc=function(_0x1a768a,_0x45db10){_0x1a768a=_0x1a768a-0x0;var _0x23f07b=_0xbfc6[_0x1a768a];return _0x23f07b;};'use strict';var _=require(_0x6bfc('0x0'));var util=require(_0x6bfc('0x1'));var BPromise=require(_0x6bfc('0x2'));var db=require(_0x6bfc('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x6bfc('0x4')],'include':[{'as':'Agents','model':db[_0x6bfc('0x5')],'attributes':['id','name',_0x6bfc('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x6bfc('0x4')],'where':{'role':_0x6bfc('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x6bfc('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x6bfc('0x4')],'where':{'role':_0x6bfc('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x6bfc('0x4'),_0x6bfc('0x9')],'where':{'type':_0x6bfc('0xa')}};function getAssociatedResources(_0x177d76,_0xa8d6d9,_0xbbd974){return db[_0x6bfc('0xb')][_0x6bfc('0xc')]({'where':{'name':_0x177d76,'userProfileId':_0xa8d6d9},'raw':!![]})[_0x6bfc('0xd')](function(_0x47a00a){if(_0x47a00a){if(_0x47a00a[_0x6bfc('0xe')]){switch(_0x177d76){case _0x6bfc('0xf'):case _0x6bfc('0x10'):case _0x6bfc('0x11'):case'SmsQueues':case'MailQueues':case'OpenchannelQueues':case'WhatsappQueues':return db[_0xbbd974][_0x6bfc('0x12')](queryQueues);case _0x6bfc('0x13'):return db[_0xbbd974]['findAll'](queryTelephones);case _0x6bfc('0x14'):return db[_0xbbd974][_0x6bfc('0x12')](queryTrunks);case _0x6bfc('0x15'):return db[_0xbbd974][_0x6bfc('0x12')](queryCampaigns);}}else{return db[_0x6bfc('0x16')]['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x47a00a['id']},'raw':!![]})[_0x6bfc('0xd')](function(_0x3f41f2){if(_0x3f41f2){var _0x47ac17={'where':{'id':_[_0x6bfc('0x17')](_0x3f41f2,_0x6bfc('0x18'))},'raw':!![]};switch(_0xbbd974){case _0x6bfc('0x5'):_0x47ac17[_0x6bfc('0x19')]['role']='telephone';break;case _0x6bfc('0x1a'):_0x47ac17[_0x6bfc('0x19')][_0x6bfc('0x9')]='ivr';break;}return db[_0xbbd974][_0x6bfc('0x12')](_0x47ac17);}else{return[];}});}}else{return[];}})['then'](function(_0x1ef10f){return _0x1ef10f;});}function joinOrLeaveQueues(_0x17a165,_0x3aad51,_0x52ff8c,_0x561f87){_0x17a165[_0x3aad51](util[_0x6bfc('0x1b')]('%s:queue:%s',_0x52ff8c,_0x561f87[_0x6bfc('0x4')]));if(_0x561f87[_0x6bfc('0x1c')]){for(var _0x46b257=0x0;_0x46b257<_0x561f87[_0x6bfc('0x1c')][_0x6bfc('0x1d')];_0x46b257+=0x1){_0x17a165[_0x3aad51](util[_0x6bfc('0x1b')](_0x6bfc('0x1e'),_0x561f87[_0x6bfc('0x1c')][_0x46b257][_0x6bfc('0x4')]));}}}function joinOrLeave(_0x38b522,_0x112b5e,_0x420af0){var _0x5f15bf;if(_0x38b522[_0x6bfc('0x1f')]['query']['id']){db[_0x6bfc('0x5')][_0x6bfc('0x20')]({'attributes':['id',_0x6bfc('0x4'),_0x6bfc('0x6'),_0x6bfc('0x21')],'where':{'id':_0x38b522['handshake']['query']['id']},'include':[{'model':db[_0x6bfc('0x22')],'as':_0x6bfc('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x6bfc('0x24')],'as':_0x6bfc('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x6bfc('0x26')],'as':_0x6bfc('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x6bfc('0x28')],'as':_0x6bfc('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x6bfc('0x2a')],'as':_0x6bfc('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x6bfc('0x2c')],'as':_0x6bfc('0x2d'),'attributes':['id'],'raw':!![]}]})[_0x6bfc('0xd')](function(_0x15d573){if(_0x15d573){_0x5f15bf=_0x15d573;_0x38b522[_0x112b5e](util['format'](_0x6bfc('0x1e'),_0x15d573[_0x6bfc('0x4')]));var _0x5357f0=[];switch(_0x15d573[_0x6bfc('0x6')]){case _0x6bfc('0x2e'):_0x38b522[_0x112b5e](_0x6bfc('0x2f'));_0x38b522[_0x112b5e](_0x6bfc('0x30'));if(queryQueues[_0x6bfc('0x31')]('include')){delete queryQueues[_0x6bfc('0x32')];}_0x5357f0[_0x6bfc('0x33')](db[_0x6bfc('0x34')][_0x6bfc('0x12')](queryQueues));_0x5357f0['push'](db[_0x6bfc('0x35')][_0x6bfc('0x12')](queryQueues));_0x5357f0[_0x6bfc('0x33')](db[_0x6bfc('0x36')][_0x6bfc('0x12')](queryQueues));_0x5357f0[_0x6bfc('0x33')](db['SmsQueue']['findAll'](queryQueues));_0x5357f0[_0x6bfc('0x33')](db[_0x6bfc('0x37')][_0x6bfc('0x12')](queryQueues));_0x5357f0['push'](db['OpenchannelQueue']['findAll'](queryQueues));_0x5357f0[_0x6bfc('0x33')](db['WhatsappQueue'][_0x6bfc('0x12')](queryQueues));_0x5357f0['push'](db['User'][_0x6bfc('0x12')](queryTelephones));_0x5357f0[_0x6bfc('0x33')](db[_0x6bfc('0x38')][_0x6bfc('0x12')](queryTrunks));_0x5357f0['push'](db[_0x6bfc('0x1a')][_0x6bfc('0x12')](queryCampaigns));_0x5357f0[_0x6bfc('0x33')](db[_0x6bfc('0x5')]['findAll'](queryAgents));break;case'user':_0x38b522[_0x112b5e](_0x6bfc('0x2f'));_0x38b522[_0x112b5e](_0x6bfc('0x30'));_0x5357f0[_0x6bfc('0x33')](getAssociatedResources(_0x6bfc('0xf'),_0x15d573[_0x6bfc('0x21')],_0x6bfc('0x34')));_0x5357f0[_0x6bfc('0x33')](getAssociatedResources('ChatQueues',_0x15d573[_0x6bfc('0x21')],'ChatQueue'));_0x5357f0['push'](getAssociatedResources('FaxQueues',_0x15d573[_0x6bfc('0x21')],_0x6bfc('0x36')));_0x5357f0[_0x6bfc('0x33')](getAssociatedResources('SmsQueues',_0x15d573[_0x6bfc('0x21')],_0x6bfc('0x39')));_0x5357f0[_0x6bfc('0x33')](getAssociatedResources(_0x6bfc('0x3a'),_0x15d573[_0x6bfc('0x21')],_0x6bfc('0x37')));_0x5357f0[_0x6bfc('0x33')](getAssociatedResources(_0x6bfc('0x3b'),_0x15d573[_0x6bfc('0x21')],_0x6bfc('0x3c')));_0x5357f0[_0x6bfc('0x33')](getAssociatedResources(_0x6bfc('0x3d'),_0x15d573['userProfileId'],_0x6bfc('0x3e')));_0x5357f0['push'](getAssociatedResources(_0x6bfc('0x13'),_0x15d573[_0x6bfc('0x21')],_0x6bfc('0x5')));_0x5357f0[_0x6bfc('0x33')](getAssociatedResources(_0x6bfc('0x14'),_0x15d573[_0x6bfc('0x21')],_0x6bfc('0x38')));_0x5357f0[_0x6bfc('0x33')](getAssociatedResources(_0x6bfc('0x15'),_0x15d573[_0x6bfc('0x21')],'Campaign'));_0x5357f0[_0x6bfc('0x33')](db[_0x6bfc('0x5')][_0x6bfc('0x12')](queryAgents));break;case _0x6bfc('0x8'):_0x38b522[_0x112b5e]('voice:inbound');_0x38b522[_0x112b5e](_0x6bfc('0x30'));_0x5357f0[_0x6bfc('0x33')](_0x15d573[_0x6bfc('0x3f')]({'attributes':['id',_0x6bfc('0x4')]}));_0x5357f0[_0x6bfc('0x33')](_0x15d573['getChatQueues']({'attributes':['id','name']}));_0x5357f0[_0x6bfc('0x33')](_0x15d573[_0x6bfc('0x40')]({'attributes':['id',_0x6bfc('0x4')]}));_0x5357f0[_0x6bfc('0x33')](_0x15d573[_0x6bfc('0x41')]({'attributes':['id',_0x6bfc('0x4')]}));_0x5357f0[_0x6bfc('0x33')](_0x15d573[_0x6bfc('0x42')]({'attributes':['id',_0x6bfc('0x4')]}));_0x5357f0[_0x6bfc('0x33')](_0x15d573[_0x6bfc('0x43')]({'attributes':['id',_0x6bfc('0x4')]}));_0x5357f0[_0x6bfc('0x33')](_0x15d573[_0x6bfc('0x44')]({'attributes':['id',_0x6bfc('0x4')]}));break;}return BPromise[_0x6bfc('0x45')](_0x5357f0);}})[_0x6bfc('0xd')](function(_0x1d3cb2){if(_0x1d3cb2&&_0x1d3cb2[_0x6bfc('0x1d')]){for(var _0x4d2eb1=0x0;_0x4d2eb1<_0x1d3cb2[_0x6bfc('0x1d')];_0x4d2eb1+=0x1){for(var _0x1b94ef=0x0;_0x1b94ef<_0x1d3cb2[_0x4d2eb1]['length'];_0x1b94ef+=0x1){switch(_0x4d2eb1){case 0x0:joinOrLeaveQueues(_0x38b522,_0x112b5e,_0x6bfc('0x46'),_0x1d3cb2[_0x4d2eb1][_0x1b94ef]);break;case 0x1:joinOrLeaveQueues(_0x38b522,_0x112b5e,_0x6bfc('0x47'),_0x1d3cb2[_0x4d2eb1][_0x1b94ef]);break;case 0x2:joinOrLeaveQueues(_0x38b522,_0x112b5e,_0x6bfc('0x48'),_0x1d3cb2[_0x4d2eb1][_0x1b94ef]);break;case 0x3:joinOrLeaveQueues(_0x38b522,_0x112b5e,_0x6bfc('0x49'),_0x1d3cb2[_0x4d2eb1][_0x1b94ef]);break;case 0x4:joinOrLeaveQueues(_0x38b522,_0x112b5e,'mail',_0x1d3cb2[_0x4d2eb1][_0x1b94ef]);break;case 0x5:joinOrLeaveQueues(_0x38b522,_0x112b5e,'openchannel',_0x1d3cb2[_0x4d2eb1][_0x1b94ef]);break;case 0x6:joinOrLeaveQueues(_0x38b522,_0x112b5e,_0x6bfc('0x4a'),_0x1d3cb2[_0x4d2eb1][_0x1b94ef]);break;case 0x7:_0x38b522[_0x112b5e](util[_0x6bfc('0x1b')]('telephone:%s',_0x1d3cb2[_0x4d2eb1][_0x1b94ef][_0x6bfc('0x4')]));break;case 0x8:_0x38b522[_0x112b5e](util[_0x6bfc('0x1b')](_0x6bfc('0x4b'),_0x1d3cb2[_0x4d2eb1][_0x1b94ef]['name']));break;case 0x9:_0x38b522[_0x112b5e](util[_0x6bfc('0x1b')]('campaign:%s:%s',_0x1d3cb2[_0x4d2eb1][_0x1b94ef]['type'],_0x1d3cb2[_0x4d2eb1][_0x1b94ef][_0x6bfc('0x4')]));break;case 0xa:_0x38b522[_0x112b5e](util['format'](_0x6bfc('0x1e'),_0x1d3cb2[_0x4d2eb1][_0x1b94ef][_0x6bfc('0x4')]));break;}}}}})['then'](function(){if(_0x112b5e===_0x6bfc('0x4c')){var _0x212089=_[_0x6bfc('0x17')](_0x5f15bf[_0x6bfc('0x23')],'id');return _0x5f15bf[_0x6bfc('0x4d')](_0x212089)[_0x6bfc('0xd')](function(){for(var _0xb3e617=0x0;_0xb3e617<_0x212089['length'];_0xb3e617+=0x1){_0x420af0['emit'](_0x6bfc('0x4e'),{'ChatInteractionId':Number(_0x212089[_0xb3e617]),'UserId':Number(_0x5f15bf['id'])});}});}})[_0x6bfc('0xd')](function(){if(_0x112b5e===_0x6bfc('0x4c')){var _0x443a2d=_[_0x6bfc('0x17')](_0x5f15bf[_0x6bfc('0x25')],'id');return _0x5f15bf[_0x6bfc('0x4f')](_0x443a2d)[_0x6bfc('0xd')](function(){for(var _0x241406=0x0;_0x241406<_0x443a2d[_0x6bfc('0x1d')];_0x241406+=0x1){_0x420af0[_0x6bfc('0x50')](_0x6bfc('0x51'),{'MailInteractionId':Number(_0x443a2d[_0x241406]),'UserId':Number(_0x5f15bf['id'])});}});}})[_0x6bfc('0xd')](function(){if(_0x112b5e===_0x6bfc('0x4c')){var _0x2eb062=_['map'](_0x5f15bf[_0x6bfc('0x27')],'id');return _0x5f15bf[_0x6bfc('0x52')](_0x2eb062)[_0x6bfc('0xd')](function(){for(var _0x5d9429=0x0;_0x5d9429<_0x2eb062[_0x6bfc('0x1d')];_0x5d9429+=0x1){_0x420af0[_0x6bfc('0x50')](_0x6bfc('0x53'),{'FaxInteractionId':Number(_0x2eb062[_0x5d9429]),'UserId':Number(_0x5f15bf['id'])});}});}})['then'](function(){if(_0x112b5e===_0x6bfc('0x4c')){var _0x47ff15=_[_0x6bfc('0x17')](_0x5f15bf[_0x6bfc('0x29')],'id');return _0x5f15bf['removeSmsInteractions'](_0x47ff15)[_0x6bfc('0xd')](function(){for(var _0x123ffb=0x0;_0x123ffb<_0x47ff15[_0x6bfc('0x1d')];_0x123ffb+=0x1){_0x420af0[_0x6bfc('0x50')](_0x6bfc('0x54'),{'SmsInteractionId':Number(_0x47ff15[_0x123ffb]),'UserId':Number(_0x5f15bf['id'])});}});}})['then'](function(){if(_0x112b5e===_0x6bfc('0x4c')){var _0x3f530f=_['map'](_0x5f15bf[_0x6bfc('0x2b')],'id');return _0x5f15bf[_0x6bfc('0x55')](_0x3f530f)['then'](function(){for(var _0x58ec03=0x0;_0x58ec03<_0x3f530f[_0x6bfc('0x1d')];_0x58ec03+=0x1){_0x420af0['emit'](_0x6bfc('0x56'),{'OpenchannelInteractionId':Number(_0x3f530f[_0x58ec03]),'UserId':Number(_0x5f15bf['id'])});}});}})[_0x6bfc('0xd')](function(){if(_0x112b5e==='leave'){var _0x20afc3=_['map'](_0x5f15bf['WhatsappInteractions'],'id');return _0x5f15bf['removeWhatsappInteractions'](_0x20afc3)[_0x6bfc('0xd')](function(){for(var _0x3718ad=0x0;_0x3718ad<_0x20afc3[_0x6bfc('0x1d')];_0x3718ad+=0x1){_0x420af0[_0x6bfc('0x50')](_0x6bfc('0x57'),{'WhatsappInteractionId':Number(_0x20afc3[_0x3718ad]),'UserId':Number(_0x5f15bf['id'])});}});}})[_0x6bfc('0x58')](function(_0x135375){_0x38b522[_0x6bfc('0x59')](_0x135375);});}}function onDisconnect(_0x1823aa,_0x577cb0){joinOrLeave(_0x1823aa,_0x6bfc('0x4c'),_0x577cb0);}function onConnect(_0x4d6ca6){joinOrLeave(_0x4d6ca6,'join');}exports[_0x6bfc('0x5a')]=function(_0xf3b9fb){_0xf3b9fb['on'](_0x6bfc('0x5b'),function(_0x3626e1){_0x3626e1[_0x6bfc('0x5c')](0x0);_0x3626e1[_0x6bfc('0x5d')]=_0x3626e1['request']['connection'][_0x6bfc('0x5e')]+':'+_0x3626e1[_0x6bfc('0x5f')][_0x6bfc('0x5b')]['remotePort'];_0x3626e1[_0x6bfc('0x60')]=new Date();_0x3626e1[_0x6bfc('0x59')]=function(_0x59fb17){console[_0x6bfc('0x59')]('SocketIO\x20'+_0x3626e1[_0x6bfc('0x61')][_0x6bfc('0x4')]+'['+_0x3626e1[_0x6bfc('0x5d')]+']',_0x59fb17);};_0x3626e1['on']('disconnect',function(){onDisconnect(_0x3626e1,_0xf3b9fb);_0x3626e1[_0x6bfc('0x59')](_0x6bfc('0x62'));});onConnect(_0x3626e1);_0x3626e1[_0x6bfc('0x59')](_0x6bfc('0x63'));});};