eb821029edafa68b93734468ee6e2b591dc011f3
[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 _0x1f92=['OpenchannelQueue','WhatsappQueue','Trunk','user','MailQueue','IvrCampaigns','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','chat','fax','sms','mail','openchannel','whatsapp','trunk:%s','leave','map','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','connection','request','remotePort','connectedAt','SocketIO\x20','nsp','DISCONNECTED','CONNECTED','lodash','bluebird','../mysqldb','Agents','User','name','role','agent','telephone','type','then','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','where','Campaign','ivr','format','%s:queue:%s','length','handshake','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteractions','WhatsappInteraction','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue'];(function(_0x62d1a2,_0x3f1c5e){var _0x2cd838=function(_0x1456b0){while(--_0x1456b0){_0x62d1a2['push'](_0x62d1a2['shift']());}};_0x2cd838(++_0x3f1c5e);}(_0x1f92,0x1ad));var _0x21f9=function(_0x417fa2,_0x552204){_0x417fa2=_0x417fa2-0x0;var _0x1db643=_0x1f92[_0x417fa2];return _0x1db643;};'use strict';var _=require(_0x21f9('0x0'));var util=require('util');var BPromise=require(_0x21f9('0x1'));var db=require(_0x21f9('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0x21f9('0x3'),'model':db[_0x21f9('0x4')],'attributes':['id',_0x21f9('0x5'),_0x21f9('0x6')],'raw':!![],'where':{'role':_0x21f9('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x21f9('0x5')],'where':{'role':_0x21f9('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x21f9('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x21f9('0x5')],'where':{'role':_0x21f9('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x21f9('0x5'),_0x21f9('0x9')],'where':{'type':'ivr'}};function getAssociatedResources(_0x43d2ab,_0x30411c,_0x345f68){return db['UserProfileSection']['findOne']({'where':{'name':_0x43d2ab,'userProfileId':_0x30411c},'raw':!![]})[_0x21f9('0xa')](function(_0x336562){if(_0x336562){if(_0x336562['autoAssociation']){switch(_0x43d2ab){case _0x21f9('0xb'):case _0x21f9('0xc'):case _0x21f9('0xd'):case _0x21f9('0xe'):case _0x21f9('0xf'):case _0x21f9('0x10'):case _0x21f9('0x11'):return db[_0x345f68][_0x21f9('0x12')](queryQueues);case _0x21f9('0x13'):return db[_0x345f68]['findAll'](queryTelephones);case'Trunks':return db[_0x345f68][_0x21f9('0x12')](queryTrunks);case'IvrCampaigns':return db[_0x345f68][_0x21f9('0x12')](queryCampaigns);}}else{return db[_0x21f9('0x14')][_0x21f9('0x12')]({'attributes':[_0x21f9('0x15')],'where':{'sectionId':_0x336562['id']},'raw':!![]})[_0x21f9('0xa')](function(_0x292c43){if(_0x292c43){var _0x12b70c={'where':{'id':_['map'](_0x292c43,_0x21f9('0x15'))},'raw':!![]};switch(_0x345f68){case _0x21f9('0x4'):_0x12b70c[_0x21f9('0x16')][_0x21f9('0x6')]=_0x21f9('0x8');break;case _0x21f9('0x17'):_0x12b70c[_0x21f9('0x16')][_0x21f9('0x9')]=_0x21f9('0x18');break;}return db[_0x345f68][_0x21f9('0x12')](_0x12b70c);}else{return[];}});}}else{return[];}})[_0x21f9('0xa')](function(_0x1b14c2){return _0x1b14c2;});}function joinOrLeaveQueues(_0x250964,_0x119190,_0x30f650,_0x3dfb3e){_0x250964[_0x119190](util[_0x21f9('0x19')](_0x21f9('0x1a'),_0x30f650,_0x3dfb3e[_0x21f9('0x5')]));if(_0x3dfb3e['Agents']){for(var _0x4011c2=0x0;_0x4011c2<_0x3dfb3e[_0x21f9('0x3')][_0x21f9('0x1b')];_0x4011c2+=0x1){_0x250964[_0x119190](util['format']('user:%s',_0x3dfb3e[_0x21f9('0x3')][_0x4011c2][_0x21f9('0x5')]));}}}function joinOrLeave(_0x17610c,_0x5a65a7,_0x2d6992){var _0x264d0c;if(_0x17610c[_0x21f9('0x1c')]['query']['id']){db[_0x21f9('0x4')][_0x21f9('0x1d')]({'attributes':['id',_0x21f9('0x5'),_0x21f9('0x6'),_0x21f9('0x1e')],'where':{'id':_0x17610c[_0x21f9('0x1c')]['query']['id']},'include':[{'model':db[_0x21f9('0x1f')],'as':_0x21f9('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x21f9('0x21')],'as':_0x21f9('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x21f9('0x23')],'as':_0x21f9('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x21f9('0x25')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x21f9('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x21f9('0x27')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x21f9('0xa')](function(_0x4527e4){if(_0x4527e4){_0x264d0c=_0x4527e4;_0x17610c[_0x5a65a7](util[_0x21f9('0x19')](_0x21f9('0x28'),_0x4527e4[_0x21f9('0x5')]));var _0x59ccec=[];switch(_0x4527e4[_0x21f9('0x6')]){case _0x21f9('0x29'):_0x17610c[_0x5a65a7](_0x21f9('0x2a'));_0x17610c[_0x5a65a7](_0x21f9('0x2b'));if(queryQueues[_0x21f9('0x2c')](_0x21f9('0x2d'))){delete queryQueues[_0x21f9('0x2d')];}_0x59ccec[_0x21f9('0x2e')](db[_0x21f9('0x2f')][_0x21f9('0x12')](queryQueues));_0x59ccec[_0x21f9('0x2e')](db[_0x21f9('0x30')]['findAll'](queryQueues));_0x59ccec[_0x21f9('0x2e')](db[_0x21f9('0x31')][_0x21f9('0x12')](queryQueues));_0x59ccec[_0x21f9('0x2e')](db[_0x21f9('0x32')][_0x21f9('0x12')](queryQueues));_0x59ccec[_0x21f9('0x2e')](db['MailQueue'][_0x21f9('0x12')](queryQueues));_0x59ccec['push'](db[_0x21f9('0x33')][_0x21f9('0x12')](queryQueues));_0x59ccec['push'](db[_0x21f9('0x34')][_0x21f9('0x12')](queryQueues));_0x59ccec['push'](db[_0x21f9('0x4')][_0x21f9('0x12')](queryTelephones));_0x59ccec[_0x21f9('0x2e')](db[_0x21f9('0x35')][_0x21f9('0x12')](queryTrunks));_0x59ccec[_0x21f9('0x2e')](db['Campaign'][_0x21f9('0x12')](queryCampaigns));_0x59ccec['push'](db[_0x21f9('0x4')]['findAll'](queryAgents));break;case _0x21f9('0x36'):_0x17610c[_0x5a65a7]('voice:inbound');_0x17610c[_0x5a65a7](_0x21f9('0x2b'));_0x59ccec[_0x21f9('0x2e')](getAssociatedResources(_0x21f9('0xb'),_0x4527e4[_0x21f9('0x1e')],_0x21f9('0x2f')));_0x59ccec[_0x21f9('0x2e')](getAssociatedResources(_0x21f9('0xc'),_0x4527e4[_0x21f9('0x1e')],_0x21f9('0x30')));_0x59ccec[_0x21f9('0x2e')](getAssociatedResources(_0x21f9('0xd'),_0x4527e4['userProfileId'],_0x21f9('0x31')));_0x59ccec[_0x21f9('0x2e')](getAssociatedResources(_0x21f9('0xe'),_0x4527e4['userProfileId'],_0x21f9('0x32')));_0x59ccec['push'](getAssociatedResources('MailQueues',_0x4527e4[_0x21f9('0x1e')],_0x21f9('0x37')));_0x59ccec[_0x21f9('0x2e')](getAssociatedResources(_0x21f9('0x10'),_0x4527e4[_0x21f9('0x1e')],_0x21f9('0x33')));_0x59ccec['push'](getAssociatedResources(_0x21f9('0x11'),_0x4527e4['userProfileId'],_0x21f9('0x34')));_0x59ccec[_0x21f9('0x2e')](getAssociatedResources(_0x21f9('0x13'),_0x4527e4['userProfileId'],_0x21f9('0x4')));_0x59ccec[_0x21f9('0x2e')](getAssociatedResources('Trunks',_0x4527e4[_0x21f9('0x1e')],_0x21f9('0x35')));_0x59ccec[_0x21f9('0x2e')](getAssociatedResources(_0x21f9('0x38'),_0x4527e4[_0x21f9('0x1e')],_0x21f9('0x17')));_0x59ccec[_0x21f9('0x2e')](db[_0x21f9('0x4')][_0x21f9('0x12')](queryAgents));break;case _0x21f9('0x7'):_0x17610c[_0x5a65a7]('voice:inbound');_0x17610c[_0x5a65a7](_0x21f9('0x2b'));_0x59ccec[_0x21f9('0x2e')](_0x4527e4['getVoiceQueues']({'attributes':['id',_0x21f9('0x5')]}));_0x59ccec['push'](_0x4527e4['getChatQueues']({'attributes':['id',_0x21f9('0x5')]}));_0x59ccec[_0x21f9('0x2e')](_0x4527e4[_0x21f9('0x39')]({'attributes':['id',_0x21f9('0x5')]}));_0x59ccec[_0x21f9('0x2e')](_0x4527e4[_0x21f9('0x3a')]({'attributes':['id',_0x21f9('0x5')]}));_0x59ccec[_0x21f9('0x2e')](_0x4527e4[_0x21f9('0x3b')]({'attributes':['id',_0x21f9('0x5')]}));_0x59ccec[_0x21f9('0x2e')](_0x4527e4[_0x21f9('0x3c')]({'attributes':['id',_0x21f9('0x5')]}));_0x59ccec[_0x21f9('0x2e')](_0x4527e4[_0x21f9('0x3d')]({'attributes':['id',_0x21f9('0x5')]}));break;}return BPromise[_0x21f9('0x3e')](_0x59ccec);}})[_0x21f9('0xa')](function(_0x53058e){if(_0x53058e&&_0x53058e[_0x21f9('0x1b')]){for(var _0x5c700b=0x0;_0x5c700b<_0x53058e[_0x21f9('0x1b')];_0x5c700b+=0x1){for(var _0x396fcb=0x0;_0x396fcb<_0x53058e[_0x5c700b][_0x21f9('0x1b')];_0x396fcb+=0x1){switch(_0x5c700b){case 0x0:joinOrLeaveQueues(_0x17610c,_0x5a65a7,'voice',_0x53058e[_0x5c700b][_0x396fcb]);break;case 0x1:joinOrLeaveQueues(_0x17610c,_0x5a65a7,_0x21f9('0x3f'),_0x53058e[_0x5c700b][_0x396fcb]);break;case 0x2:joinOrLeaveQueues(_0x17610c,_0x5a65a7,_0x21f9('0x40'),_0x53058e[_0x5c700b][_0x396fcb]);break;case 0x3:joinOrLeaveQueues(_0x17610c,_0x5a65a7,_0x21f9('0x41'),_0x53058e[_0x5c700b][_0x396fcb]);break;case 0x4:joinOrLeaveQueues(_0x17610c,_0x5a65a7,_0x21f9('0x42'),_0x53058e[_0x5c700b][_0x396fcb]);break;case 0x5:joinOrLeaveQueues(_0x17610c,_0x5a65a7,_0x21f9('0x43'),_0x53058e[_0x5c700b][_0x396fcb]);break;case 0x6:joinOrLeaveQueues(_0x17610c,_0x5a65a7,_0x21f9('0x44'),_0x53058e[_0x5c700b][_0x396fcb]);break;case 0x7:if(_0x264d0c[_0x21f9('0x6')]!=='agent')_0x17610c[_0x5a65a7](util[_0x21f9('0x19')]('telephone:%s',_0x53058e[_0x5c700b][_0x396fcb][_0x21f9('0x5')]));break;case 0x8:if(_0x264d0c[_0x21f9('0x6')]!=='agent')_0x17610c[_0x5a65a7](util[_0x21f9('0x19')](_0x21f9('0x45'),_0x53058e[_0x5c700b][_0x396fcb][_0x21f9('0x5')]));break;case 0x9:if(_0x264d0c[_0x21f9('0x6')]!==_0x21f9('0x7'))_0x17610c[_0x5a65a7](util[_0x21f9('0x19')]('campaign:%s:%s',_0x53058e[_0x5c700b][_0x396fcb][_0x21f9('0x9')],_0x53058e[_0x5c700b][_0x396fcb][_0x21f9('0x5')]));break;case 0xa:_0x17610c[_0x5a65a7](util[_0x21f9('0x19')](_0x21f9('0x28'),_0x53058e[_0x5c700b][_0x396fcb][_0x21f9('0x5')]));break;}}}}})['then'](function(){if(_0x5a65a7===_0x21f9('0x46')){var _0x19617c=_[_0x21f9('0x47')](_0x264d0c['ChatInteractions'],'id');return _0x264d0c[_0x21f9('0x48')](_0x19617c)[_0x21f9('0xa')](function(){for(var _0xc6e94a=0x0;_0xc6e94a<_0x19617c[_0x21f9('0x1b')];_0xc6e94a+=0x1){_0x2d6992[_0x21f9('0x49')](_0x21f9('0x4a'),{'ChatInteractionId':Number(_0x19617c[_0xc6e94a]),'UserId':Number(_0x264d0c['id'])});}});}})[_0x21f9('0xa')](function(){if(_0x5a65a7===_0x21f9('0x46')){var _0x320651=_[_0x21f9('0x47')](_0x264d0c[_0x21f9('0x22')],'id');return _0x264d0c[_0x21f9('0x4b')](_0x320651)[_0x21f9('0xa')](function(){for(var _0x2936ec=0x0;_0x2936ec<_0x320651[_0x21f9('0x1b')];_0x2936ec+=0x1){_0x2d6992['emit'](_0x21f9('0x4c'),{'MailInteractionId':Number(_0x320651[_0x2936ec]),'UserId':Number(_0x264d0c['id'])});}});}})[_0x21f9('0xa')](function(){if(_0x5a65a7===_0x21f9('0x46')){var _0x57efb8=_[_0x21f9('0x47')](_0x264d0c['FaxInteractions'],'id');return _0x264d0c[_0x21f9('0x4d')](_0x57efb8)[_0x21f9('0xa')](function(){for(var _0x471e6f=0x0;_0x471e6f<_0x57efb8[_0x21f9('0x1b')];_0x471e6f+=0x1){_0x2d6992[_0x21f9('0x49')](_0x21f9('0x4e'),{'FaxInteractionId':Number(_0x57efb8[_0x471e6f]),'UserId':Number(_0x264d0c['id'])});}});}})['then'](function(){if(_0x5a65a7===_0x21f9('0x46')){var _0x4de402=_[_0x21f9('0x47')](_0x264d0c[_0x21f9('0x4f')],'id');return _0x264d0c[_0x21f9('0x50')](_0x4de402)['then'](function(){for(var _0x4dc92c=0x0;_0x4dc92c<_0x4de402[_0x21f9('0x1b')];_0x4dc92c+=0x1){_0x2d6992[_0x21f9('0x49')](_0x21f9('0x51'),{'SmsInteractionId':Number(_0x4de402[_0x4dc92c]),'UserId':Number(_0x264d0c['id'])});}});}})[_0x21f9('0xa')](function(){if(_0x5a65a7===_0x21f9('0x46')){var _0x4d4121=_['map'](_0x264d0c['OpenchannelInteractions'],'id');return _0x264d0c['removeOpenchannelInteractions'](_0x4d4121)['then'](function(){for(var _0xaad96f=0x0;_0xaad96f<_0x4d4121['length'];_0xaad96f+=0x1){_0x2d6992[_0x21f9('0x49')](_0x21f9('0x52'),{'OpenchannelInteractionId':Number(_0x4d4121[_0xaad96f]),'UserId':Number(_0x264d0c['id'])});}});}})[_0x21f9('0xa')](function(){if(_0x5a65a7==='leave'){var _0x85848e=_['map'](_0x264d0c['WhatsappInteractions'],'id');return _0x264d0c[_0x21f9('0x53')](_0x85848e)['then'](function(){for(var _0x2cd261=0x0;_0x2cd261<_0x85848e[_0x21f9('0x1b')];_0x2cd261+=0x1){_0x2d6992[_0x21f9('0x49')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x85848e[_0x2cd261]),'UserId':Number(_0x264d0c['id'])});}});}})[_0x21f9('0x54')](function(_0x1d27ab){_0x17610c[_0x21f9('0x55')](_0x1d27ab);});}}function onDisconnect(_0x3cbc2b,_0x467007){joinOrLeave(_0x3cbc2b,_0x21f9('0x46'),_0x467007);}function onConnect(_0x5c5687){joinOrLeave(_0x5c5687,_0x21f9('0x56'));}exports[_0x21f9('0x57')]=function(_0x2eebe7){_0x2eebe7['on'](_0x21f9('0x58'),function(_0x12f2d1){_0x12f2d1['setMaxListeners'](0x0);_0x12f2d1['address']=_0x12f2d1[_0x21f9('0x59')][_0x21f9('0x58')]['remoteAddress']+':'+_0x12f2d1['request'][_0x21f9('0x58')][_0x21f9('0x5a')];_0x12f2d1[_0x21f9('0x5b')]=new Date();_0x12f2d1[_0x21f9('0x55')]=function(_0x338a2b){console['log'](_0x21f9('0x5c')+_0x12f2d1[_0x21f9('0x5d')][_0x21f9('0x5')]+'['+_0x12f2d1['address']+']',_0x338a2b);};_0x12f2d1['on']('disconnect',function(){onDisconnect(_0x12f2d1,_0x2eebe7);_0x12f2d1['log'](_0x21f9('0x5e'));});onConnect(_0x12f2d1);_0x12f2d1[_0x21f9('0x55')](_0x21f9('0x5f'));});};