8a7fe78aee78f96a041cb483ad45b743f8792720
[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 _0x9ed7=['map','where','Campaign','type','length','format','handshake','User','find','query','ChatInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','push','VoiceQueue','SmsQueue','MailQueue','WhatsappQueue','user','VoiceQueues','userProfileId','ChatQueue','OpenchannelQueue','Telephones','Trunk','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','chat','fax','sms','openchannel','whatsapp','telephone:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','default','connection','address','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','CONNECTED','lodash','bluebird','../mysqldb','./environment','name','Agents','role','telephone','agent','ivr','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9ed7,0x16d));var _0x79ed=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0x9ed7[_0x1deb03];return _0x189fe7;};'use strict';var _=require(_0x79ed('0x0'));var util=require('util');var BPromise=require(_0x79ed('0x1'));var db=require(_0x79ed('0x2'))['db'];var config=require(_0x79ed('0x3'));var queryQueues={'attributes':['id',_0x79ed('0x4')],'include':[{'as':_0x79ed('0x5'),'model':db['User'],'attributes':['id',_0x79ed('0x4'),_0x79ed('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x79ed('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x79ed('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x79ed('0x4')],'where':{'role':_0x79ed('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x79ed('0x4'),'type'],'where':{'type':_0x79ed('0x9')}};function getAssociatedResources(_0xf6d3d9,_0x5d0002,_0x394eb3){return db['UserProfileSection']['findOne']({'where':{'name':_0xf6d3d9,'userProfileId':_0x5d0002},'raw':!![]})['then'](function(_0x4fac5a){if(_0x4fac5a){if(_0x4fac5a[_0x79ed('0xa')]){switch(_0xf6d3d9){case'VoiceQueues':case _0x79ed('0xb'):case _0x79ed('0xc'):case _0x79ed('0xd'):case _0x79ed('0xe'):case _0x79ed('0xf'):case _0x79ed('0x10'):return db[_0x394eb3][_0x79ed('0x11')](queryQueues);case'Telephones':return db[_0x394eb3][_0x79ed('0x11')](queryTelephones);case _0x79ed('0x12'):return db[_0x394eb3][_0x79ed('0x11')](queryTrunks);case _0x79ed('0x13'):return db[_0x394eb3]['findAll'](queryCampaigns);}}else{return db[_0x79ed('0x14')][_0x79ed('0x11')]({'attributes':[_0x79ed('0x15')],'where':{'sectionId':_0x4fac5a['id']},'raw':!![]})[_0x79ed('0x16')](function(_0x2688ad){if(_0x2688ad){var _0x3fe96d={'where':{'id':_[_0x79ed('0x17')](_0x2688ad,'resourceId')},'raw':!![]};switch(_0x394eb3){case'User':_0x3fe96d[_0x79ed('0x18')][_0x79ed('0x6')]='telephone';break;case _0x79ed('0x19'):_0x3fe96d['where'][_0x79ed('0x1a')]=_0x79ed('0x9');break;}return db[_0x394eb3]['findAll'](_0x3fe96d);}else{return[];}});}}else{return[];}})[_0x79ed('0x16')](function(_0x3d42b4){return _0x3d42b4;});}function joinOrLeaveQueues(_0x1e5e47,_0x3427b0,_0x2dceda,_0x19b755){_0x1e5e47[_0x3427b0](util['format']('%s:queue:%s',_0x2dceda,_0x19b755['name']));if(_0x19b755[_0x79ed('0x5')]){for(var _0xd9d97c=0x0;_0xd9d97c<_0x19b755[_0x79ed('0x5')][_0x79ed('0x1b')];_0xd9d97c+=0x1){_0x1e5e47[_0x3427b0](util[_0x79ed('0x1c')]('user:%s',_0x19b755[_0x79ed('0x5')][_0xd9d97c][_0x79ed('0x4')]));}}}function joinOrLeave(_0xce3c2c,_0x548a0e,_0x1e1d23){var _0x5bb4fc;if(_0xce3c2c[_0x79ed('0x1d')]['query']['id']){db[_0x79ed('0x1e')][_0x79ed('0x1f')]({'attributes':['id',_0x79ed('0x4'),_0x79ed('0x6'),'userProfileId'],'where':{'id':_0xce3c2c['handshake'][_0x79ed('0x20')]['id']},'include':[{'model':db[_0x79ed('0x21')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x79ed('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x79ed('0x23')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x79ed('0x24')],'as':_0x79ed('0x25'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x79ed('0x26'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x79ed('0x27'),'attributes':['id'],'raw':!![]}]})[_0x79ed('0x16')](function(_0x5f13a1){if(_0x5f13a1){_0x5bb4fc=_0x5f13a1;_0xce3c2c[_0x548a0e](util[_0x79ed('0x1c')](_0x79ed('0x28'),_0x5f13a1[_0x79ed('0x4')]));var _0x23243e=[];switch(_0x5f13a1[_0x79ed('0x6')]){case _0x79ed('0x29'):_0xce3c2c[_0x548a0e](_0x79ed('0x2a'));_0xce3c2c[_0x548a0e](_0x79ed('0x2b'));if(queryQueues[_0x79ed('0x2c')]('include')){delete queryQueues['include'];}_0x23243e[_0x79ed('0x2d')](db[_0x79ed('0x2e')]['findAll'](queryQueues));_0x23243e[_0x79ed('0x2d')](db['ChatQueue'][_0x79ed('0x11')](queryQueues));_0x23243e['push'](db['FaxQueue'][_0x79ed('0x11')](queryQueues));_0x23243e[_0x79ed('0x2d')](db[_0x79ed('0x2f')]['findAll'](queryQueues));_0x23243e['push'](db[_0x79ed('0x30')]['findAll'](queryQueues));_0x23243e['push'](db['OpenchannelQueue']['findAll'](queryQueues));_0x23243e[_0x79ed('0x2d')](db[_0x79ed('0x31')][_0x79ed('0x11')](queryQueues));_0x23243e[_0x79ed('0x2d')](db[_0x79ed('0x1e')][_0x79ed('0x11')](queryTelephones));_0x23243e[_0x79ed('0x2d')](db['Trunk'][_0x79ed('0x11')](queryTrunks));_0x23243e[_0x79ed('0x2d')](db[_0x79ed('0x19')][_0x79ed('0x11')](queryCampaigns));_0x23243e[_0x79ed('0x2d')](db[_0x79ed('0x1e')][_0x79ed('0x11')](queryAgents));break;case _0x79ed('0x32'):_0xce3c2c[_0x548a0e]('voice:inbound');_0xce3c2c[_0x548a0e]('voice:outbound');_0x23243e[_0x79ed('0x2d')](getAssociatedResources(_0x79ed('0x33'),_0x5f13a1[_0x79ed('0x34')],_0x79ed('0x2e')));_0x23243e[_0x79ed('0x2d')](getAssociatedResources(_0x79ed('0xb'),_0x5f13a1[_0x79ed('0x34')],_0x79ed('0x35')));_0x23243e[_0x79ed('0x2d')](getAssociatedResources(_0x79ed('0xc'),_0x5f13a1[_0x79ed('0x34')],'FaxQueue'));_0x23243e[_0x79ed('0x2d')](getAssociatedResources(_0x79ed('0xd'),_0x5f13a1[_0x79ed('0x34')],_0x79ed('0x2f')));_0x23243e['push'](getAssociatedResources(_0x79ed('0xe'),_0x5f13a1['userProfileId'],'MailQueue'));_0x23243e[_0x79ed('0x2d')](getAssociatedResources(_0x79ed('0xf'),_0x5f13a1['userProfileId'],_0x79ed('0x36')));_0x23243e[_0x79ed('0x2d')](getAssociatedResources(_0x79ed('0x10'),_0x5f13a1['userProfileId'],_0x79ed('0x31')));_0x23243e[_0x79ed('0x2d')](getAssociatedResources(_0x79ed('0x37'),_0x5f13a1[_0x79ed('0x34')],_0x79ed('0x1e')));_0x23243e[_0x79ed('0x2d')](getAssociatedResources(_0x79ed('0x12'),_0x5f13a1[_0x79ed('0x34')],_0x79ed('0x38')));_0x23243e['push'](getAssociatedResources(_0x79ed('0x13'),_0x5f13a1[_0x79ed('0x34')],_0x79ed('0x19')));_0x23243e[_0x79ed('0x2d')](db[_0x79ed('0x1e')]['findAll'](queryAgents));break;case'agent':_0xce3c2c[_0x548a0e]('voice:inbound');_0xce3c2c[_0x548a0e](_0x79ed('0x2b'));_0x23243e[_0x79ed('0x2d')](_0x5f13a1[_0x79ed('0x39')]({'attributes':['id',_0x79ed('0x4')]}));_0x23243e[_0x79ed('0x2d')](_0x5f13a1[_0x79ed('0x3a')]({'attributes':['id',_0x79ed('0x4')]}));_0x23243e[_0x79ed('0x2d')](_0x5f13a1[_0x79ed('0x3b')]({'attributes':['id',_0x79ed('0x4')]}));_0x23243e[_0x79ed('0x2d')](_0x5f13a1[_0x79ed('0x3c')]({'attributes':['id','name']}));_0x23243e['push'](_0x5f13a1[_0x79ed('0x3d')]({'attributes':['id',_0x79ed('0x4')]}));_0x23243e[_0x79ed('0x2d')](_0x5f13a1[_0x79ed('0x3e')]({'attributes':['id',_0x79ed('0x4')]}));_0x23243e[_0x79ed('0x2d')](_0x5f13a1['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0x79ed('0x3f')](_0x23243e);}})[_0x79ed('0x16')](function(_0xc69e7c){if(_0xc69e7c&&_0xc69e7c[_0x79ed('0x1b')]){for(var _0x5d2020=0x0;_0x5d2020<_0xc69e7c[_0x79ed('0x1b')];_0x5d2020+=0x1){for(var _0x13d733=0x0;_0x13d733<_0xc69e7c[_0x5d2020][_0x79ed('0x1b')];_0x13d733+=0x1){switch(_0x5d2020){case 0x0:joinOrLeaveQueues(_0xce3c2c,_0x548a0e,'voice',_0xc69e7c[_0x5d2020][_0x13d733]);break;case 0x1:joinOrLeaveQueues(_0xce3c2c,_0x548a0e,_0x79ed('0x40'),_0xc69e7c[_0x5d2020][_0x13d733]);break;case 0x2:joinOrLeaveQueues(_0xce3c2c,_0x548a0e,_0x79ed('0x41'),_0xc69e7c[_0x5d2020][_0x13d733]);break;case 0x3:joinOrLeaveQueues(_0xce3c2c,_0x548a0e,_0x79ed('0x42'),_0xc69e7c[_0x5d2020][_0x13d733]);break;case 0x4:joinOrLeaveQueues(_0xce3c2c,_0x548a0e,'mail',_0xc69e7c[_0x5d2020][_0x13d733]);break;case 0x5:joinOrLeaveQueues(_0xce3c2c,_0x548a0e,_0x79ed('0x43'),_0xc69e7c[_0x5d2020][_0x13d733]);break;case 0x6:joinOrLeaveQueues(_0xce3c2c,_0x548a0e,_0x79ed('0x44'),_0xc69e7c[_0x5d2020][_0x13d733]);break;case 0x7:if(_0x5bb4fc[_0x79ed('0x6')]!==_0x79ed('0x8'))_0xce3c2c[_0x548a0e](util[_0x79ed('0x1c')](_0x79ed('0x45'),_0xc69e7c[_0x5d2020][_0x13d733]['name']));break;case 0x8:if(_0x5bb4fc[_0x79ed('0x6')]!=='agent')_0xce3c2c[_0x548a0e](util['format']('trunk:%s',_0xc69e7c[_0x5d2020][_0x13d733][_0x79ed('0x4')]));break;case 0x9:if(_0x5bb4fc[_0x79ed('0x6')]!==_0x79ed('0x8'))_0xce3c2c[_0x548a0e](util[_0x79ed('0x1c')]('campaign:%s:%s',_0xc69e7c[_0x5d2020][_0x13d733][_0x79ed('0x1a')],_0xc69e7c[_0x5d2020][_0x13d733][_0x79ed('0x4')]));break;case 0xa:_0xce3c2c[_0x548a0e](util[_0x79ed('0x1c')](_0x79ed('0x28'),_0xc69e7c[_0x5d2020][_0x13d733][_0x79ed('0x4')]));break;}}}}})[_0x79ed('0x16')](function(){if(_0x548a0e===_0x79ed('0x46')){var _0xdefeb=_[_0x79ed('0x17')](_0x5bb4fc['ChatInteractions'],'id');return _0x5bb4fc[_0x79ed('0x47')](_0xdefeb)[_0x79ed('0x16')](function(){for(var _0x111856=0x0;_0x111856<_0xdefeb[_0x79ed('0x1b')];_0x111856+=0x1){_0x1e1d23[_0x79ed('0x48')](_0x79ed('0x49'),{'ChatInteractionId':Number(_0xdefeb[_0x111856]),'UserId':Number(_0x5bb4fc['id'])});}});}})[_0x79ed('0x16')](function(){if(_0x548a0e==='leave'){var _0xd98525=_[_0x79ed('0x17')](_0x5bb4fc[_0x79ed('0x22')],'id');return _0x5bb4fc[_0x79ed('0x4a')](_0xd98525)[_0x79ed('0x16')](function(){for(var _0x1c84ce=0x0;_0x1c84ce<_0xd98525[_0x79ed('0x1b')];_0x1c84ce+=0x1){_0x1e1d23[_0x79ed('0x48')](_0x79ed('0x4b'),{'MailInteractionId':Number(_0xd98525[_0x1c84ce]),'UserId':Number(_0x5bb4fc['id'])});}});}})[_0x79ed('0x16')](function(){if(_0x548a0e===_0x79ed('0x46')){var _0x483450=_['map'](_0x5bb4fc[_0x79ed('0x4c')],'id');return _0x5bb4fc[_0x79ed('0x4d')](_0x483450)[_0x79ed('0x16')](function(){for(var _0x4e012c=0x0;_0x4e012c<_0x483450[_0x79ed('0x1b')];_0x4e012c+=0x1){_0x1e1d23[_0x79ed('0x48')](_0x79ed('0x4e'),{'FaxInteractionId':Number(_0x483450[_0x4e012c]),'UserId':Number(_0x5bb4fc['id'])});}});}})['then'](function(){if(_0x548a0e===_0x79ed('0x46')){var _0x159815=_[_0x79ed('0x17')](_0x5bb4fc[_0x79ed('0x25')],'id');return _0x5bb4fc[_0x79ed('0x4f')](_0x159815)[_0x79ed('0x16')](function(){for(var _0x5d1261=0x0;_0x5d1261<_0x159815[_0x79ed('0x1b')];_0x5d1261+=0x1){_0x1e1d23[_0x79ed('0x48')](_0x79ed('0x50'),{'SmsInteractionId':Number(_0x159815[_0x5d1261]),'UserId':Number(_0x5bb4fc['id'])});}});}})[_0x79ed('0x16')](function(){if(_0x548a0e===_0x79ed('0x46')){var _0x5a3d71=_[_0x79ed('0x17')](_0x5bb4fc['OpenchannelInteractions'],'id');return _0x5bb4fc[_0x79ed('0x51')](_0x5a3d71)[_0x79ed('0x16')](function(){for(var _0x5265b2=0x0;_0x5265b2<_0x5a3d71[_0x79ed('0x1b')];_0x5265b2+=0x1){_0x1e1d23['emit'](_0x79ed('0x52'),{'OpenchannelInteractionId':Number(_0x5a3d71[_0x5265b2]),'UserId':Number(_0x5bb4fc['id'])});}});}})['then'](function(){if(_0x548a0e===_0x79ed('0x46')){var _0x5d4827=_[_0x79ed('0x17')](_0x5bb4fc['WhatsappInteractions'],'id');return _0x5bb4fc[_0x79ed('0x53')](_0x5d4827)[_0x79ed('0x16')](function(){for(var _0x32e0bb=0x0;_0x32e0bb<_0x5d4827[_0x79ed('0x1b')];_0x32e0bb+=0x1){_0x1e1d23[_0x79ed('0x48')](_0x79ed('0x54'),{'WhatsappInteractionId':Number(_0x5d4827[_0x32e0bb]),'UserId':Number(_0x5bb4fc['id'])});}});}})[_0x79ed('0x55')](function(_0x295fb6){_0xce3c2c['log'](_0x295fb6);});}}function onDisconnect(_0x23825d,_0x556f3a){joinOrLeave(_0x23825d,'leave',_0x556f3a);}function onConnect(_0x3afcbb){joinOrLeave(_0x3afcbb,'join');}exports[_0x79ed('0x56')]=function(_0x96be63){_0x96be63['on'](_0x79ed('0x57'),function(_0x55c1b8){_0x55c1b8['setMaxListeners'](0x0);_0x55c1b8[_0x79ed('0x58')]=_0x55c1b8[_0x79ed('0x59')][_0x79ed('0x57')][_0x79ed('0x5a')]+':'+_0x55c1b8['request'][_0x79ed('0x57')][_0x79ed('0x5b')];_0x55c1b8[_0x79ed('0x5c')]=new Date();_0x55c1b8['log']=function(_0xb46294){console[_0x79ed('0x5d')](_0x79ed('0x5e')+_0x55c1b8[_0x79ed('0x5f')]['name']+'['+_0x55c1b8['address']+']',_0xb46294);};_0x55c1b8['on']('disconnect',function(){onDisconnect(_0x55c1b8,_0x96be63);_0x55c1b8[_0x79ed('0x5d')]('DISCONNECTED');});onConnect(_0x55c1b8);_0x55c1b8[_0x79ed('0x5d')](_0x79ed('0x60'));});};