Built motion from commit 14588770.|2.5.38
[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 _0x59ee=['voice','chat','openchannel','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','util','../mysqldb','name','Agents','User','role','agent','telephone','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','OpenchannelQueues','findAll','Telephones','UserProfileResource','resourceId','map','where','type','format','length','user:%s','handshake','query','find','userProfileId','ChatInteractions','MailInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:outbound','hasOwnProperty','include','push','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Campaign','user','voice:inbound','VoiceQueue','ChatQueues','ChatQueue','WhatsappQueues','Trunks','IvrCampaigns','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all'];(function(_0x25a547,_0x50fe9e){var _0x1553b6=function(_0x24202e){while(--_0x24202e){_0x25a547['push'](_0x25a547['shift']());}};_0x1553b6(++_0x50fe9e);}(_0x59ee,0x1a0));var _0xe59e=function(_0x4c3267,_0xf2b77){_0x4c3267=_0x4c3267-0x0;var _0xfa5c9=_0x59ee[_0x4c3267];return _0xfa5c9;};'use strict';var _=require('lodash');var util=require(_0xe59e('0x0'));var BPromise=require('bluebird');var db=require(_0xe59e('0x1'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xe59e('0x2')],'include':[{'as':_0xe59e('0x3'),'model':db[_0xe59e('0x4')],'attributes':['id',_0xe59e('0x2'),_0xe59e('0x5')],'raw':!![],'where':{'role':_0xe59e('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xe59e('0x2')],'where':{'role':_0xe59e('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0xe59e('0x2')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xe59e('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xe59e('0x2'),'type'],'where':{'type':_0xe59e('0x8')}};function getAssociatedResources(_0x540a6b,_0x57478b,_0x27e742){return db[_0xe59e('0x9')][_0xe59e('0xa')]({'where':{'name':_0x540a6b,'userProfileId':_0x57478b},'raw':!![]})[_0xe59e('0xb')](function(_0x35fa7b){if(_0x35fa7b){if(_0x35fa7b[_0xe59e('0xc')]){switch(_0x540a6b){case _0xe59e('0xd'):case'ChatQueues':case _0xe59e('0xe'):case _0xe59e('0xf'):case'MailQueues':case _0xe59e('0x10'):case'WhatsappQueues':return db[_0x27e742][_0xe59e('0x11')](queryQueues);case _0xe59e('0x12'):return db[_0x27e742]['findAll'](queryTelephones);case'Trunks':return db[_0x27e742][_0xe59e('0x11')](queryTrunks);case'IvrCampaigns':return db[_0x27e742][_0xe59e('0x11')](queryCampaigns);}}else{return db[_0xe59e('0x13')][_0xe59e('0x11')]({'attributes':[_0xe59e('0x14')],'where':{'sectionId':_0x35fa7b['id']},'raw':!![]})[_0xe59e('0xb')](function(_0x1e3c28){if(_0x1e3c28){var _0x3f17ff={'where':{'id':_[_0xe59e('0x15')](_0x1e3c28,_0xe59e('0x14'))},'raw':!![]};switch(_0x27e742){case _0xe59e('0x4'):_0x3f17ff[_0xe59e('0x16')][_0xe59e('0x5')]=_0xe59e('0x7');break;case'Campaign':_0x3f17ff[_0xe59e('0x16')][_0xe59e('0x17')]=_0xe59e('0x8');break;}return db[_0x27e742][_0xe59e('0x11')](_0x3f17ff);}else{return[];}});}}else{return[];}})[_0xe59e('0xb')](function(_0xb7973f){return _0xb7973f;});}function joinOrLeaveQueues(_0x5e7e65,_0x573c43,_0x5db607,_0x2da542){_0x5e7e65[_0x573c43](util[_0xe59e('0x18')]('%s:queue:%s',_0x5db607,_0x2da542[_0xe59e('0x2')]));if(_0x2da542[_0xe59e('0x3')]){for(var _0x19d5e3=0x0;_0x19d5e3<_0x2da542['Agents'][_0xe59e('0x19')];_0x19d5e3+=0x1){_0x5e7e65[_0x573c43](util['format'](_0xe59e('0x1a'),_0x2da542[_0xe59e('0x3')][_0x19d5e3]['name']));}}}function joinOrLeave(_0x2ea560,_0x203b40,_0x361b94){var _0x59fb46;if(_0x2ea560[_0xe59e('0x1b')][_0xe59e('0x1c')]['id']){db['User'][_0xe59e('0x1d')]({'attributes':['id',_0xe59e('0x2'),_0xe59e('0x5'),_0xe59e('0x1e')],'where':{'id':_0x2ea560[_0xe59e('0x1b')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0xe59e('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0xe59e('0x20')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0xe59e('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0xe59e('0x22')],'as':_0xe59e('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xe59e('0x24')],'as':_0xe59e('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xe59e('0x26')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xe59e('0xb')](function(_0x4be7d6){if(_0x4be7d6){_0x59fb46=_0x4be7d6;_0x2ea560[_0x203b40](util[_0xe59e('0x18')](_0xe59e('0x1a'),_0x4be7d6[_0xe59e('0x2')]));var _0x427524=[];switch(_0x4be7d6[_0xe59e('0x5')]){case _0xe59e('0x27'):_0x2ea560[_0x203b40]('voice:inbound');_0x2ea560[_0x203b40](_0xe59e('0x28'));if(queryQueues[_0xe59e('0x29')](_0xe59e('0x2a'))){delete queryQueues[_0xe59e('0x2a')];}_0x427524[_0xe59e('0x2b')](db['VoiceQueue'][_0xe59e('0x11')](queryQueues));_0x427524[_0xe59e('0x2b')](db['ChatQueue']['findAll'](queryQueues));_0x427524[_0xe59e('0x2b')](db[_0xe59e('0x2c')]['findAll'](queryQueues));_0x427524[_0xe59e('0x2b')](db[_0xe59e('0x2d')]['findAll'](queryQueues));_0x427524[_0xe59e('0x2b')](db[_0xe59e('0x2e')]['findAll'](queryQueues));_0x427524[_0xe59e('0x2b')](db[_0xe59e('0x2f')][_0xe59e('0x11')](queryQueues));_0x427524[_0xe59e('0x2b')](db[_0xe59e('0x30')][_0xe59e('0x11')](queryQueues));_0x427524[_0xe59e('0x2b')](db['User'][_0xe59e('0x11')](queryTelephones));_0x427524[_0xe59e('0x2b')](db['Trunk'][_0xe59e('0x11')](queryTrunks));_0x427524[_0xe59e('0x2b')](db[_0xe59e('0x31')]['findAll'](queryCampaigns));_0x427524[_0xe59e('0x2b')](db[_0xe59e('0x4')][_0xe59e('0x11')](queryAgents));break;case _0xe59e('0x32'):_0x2ea560[_0x203b40](_0xe59e('0x33'));_0x2ea560[_0x203b40]('voice:outbound');_0x427524[_0xe59e('0x2b')](getAssociatedResources('VoiceQueues',_0x4be7d6[_0xe59e('0x1e')],_0xe59e('0x34')));_0x427524[_0xe59e('0x2b')](getAssociatedResources(_0xe59e('0x35'),_0x4be7d6['userProfileId'],_0xe59e('0x36')));_0x427524[_0xe59e('0x2b')](getAssociatedResources(_0xe59e('0xe'),_0x4be7d6[_0xe59e('0x1e')],_0xe59e('0x2c')));_0x427524['push'](getAssociatedResources(_0xe59e('0xf'),_0x4be7d6['userProfileId'],_0xe59e('0x2d')));_0x427524['push'](getAssociatedResources('MailQueues',_0x4be7d6[_0xe59e('0x1e')],_0xe59e('0x2e')));_0x427524[_0xe59e('0x2b')](getAssociatedResources('OpenchannelQueues',_0x4be7d6[_0xe59e('0x1e')],_0xe59e('0x2f')));_0x427524[_0xe59e('0x2b')](getAssociatedResources(_0xe59e('0x37'),_0x4be7d6[_0xe59e('0x1e')],_0xe59e('0x30')));_0x427524[_0xe59e('0x2b')](getAssociatedResources('Telephones',_0x4be7d6['userProfileId'],'User'));_0x427524[_0xe59e('0x2b')](getAssociatedResources(_0xe59e('0x38'),_0x4be7d6[_0xe59e('0x1e')],'Trunk'));_0x427524[_0xe59e('0x2b')](getAssociatedResources(_0xe59e('0x39'),_0x4be7d6[_0xe59e('0x1e')],_0xe59e('0x31')));_0x427524[_0xe59e('0x2b')](db['User'][_0xe59e('0x11')](queryAgents));break;case _0xe59e('0x6'):_0x2ea560[_0x203b40]('voice:inbound');_0x2ea560[_0x203b40](_0xe59e('0x28'));_0x427524[_0xe59e('0x2b')](_0x4be7d6[_0xe59e('0x3a')]({'attributes':['id',_0xe59e('0x2')]}));_0x427524[_0xe59e('0x2b')](_0x4be7d6[_0xe59e('0x3b')]({'attributes':['id',_0xe59e('0x2')]}));_0x427524[_0xe59e('0x2b')](_0x4be7d6['getFaxQueues']({'attributes':['id',_0xe59e('0x2')]}));_0x427524[_0xe59e('0x2b')](_0x4be7d6[_0xe59e('0x3c')]({'attributes':['id',_0xe59e('0x2')]}));_0x427524[_0xe59e('0x2b')](_0x4be7d6[_0xe59e('0x3d')]({'attributes':['id',_0xe59e('0x2')]}));_0x427524[_0xe59e('0x2b')](_0x4be7d6['getOpenchannelQueues']({'attributes':['id','name']}));_0x427524[_0xe59e('0x2b')](_0x4be7d6[_0xe59e('0x3e')]({'attributes':['id','name']}));break;}return BPromise[_0xe59e('0x3f')](_0x427524);}})[_0xe59e('0xb')](function(_0x893eb9){if(_0x893eb9&&_0x893eb9[_0xe59e('0x19')]){for(var _0x23ee61=0x0;_0x23ee61<_0x893eb9['length'];_0x23ee61+=0x1){for(var _0x47eedf=0x0;_0x47eedf<_0x893eb9[_0x23ee61]['length'];_0x47eedf+=0x1){switch(_0x23ee61){case 0x0:joinOrLeaveQueues(_0x2ea560,_0x203b40,_0xe59e('0x40'),_0x893eb9[_0x23ee61][_0x47eedf]);break;case 0x1:joinOrLeaveQueues(_0x2ea560,_0x203b40,_0xe59e('0x41'),_0x893eb9[_0x23ee61][_0x47eedf]);break;case 0x2:joinOrLeaveQueues(_0x2ea560,_0x203b40,'fax',_0x893eb9[_0x23ee61][_0x47eedf]);break;case 0x3:joinOrLeaveQueues(_0x2ea560,_0x203b40,'sms',_0x893eb9[_0x23ee61][_0x47eedf]);break;case 0x4:joinOrLeaveQueues(_0x2ea560,_0x203b40,'mail',_0x893eb9[_0x23ee61][_0x47eedf]);break;case 0x5:joinOrLeaveQueues(_0x2ea560,_0x203b40,_0xe59e('0x42'),_0x893eb9[_0x23ee61][_0x47eedf]);break;case 0x6:joinOrLeaveQueues(_0x2ea560,_0x203b40,'whatsapp',_0x893eb9[_0x23ee61][_0x47eedf]);break;case 0x7:if(_0x59fb46[_0xe59e('0x5')]!==_0xe59e('0x6'))_0x2ea560[_0x203b40](util[_0xe59e('0x18')](_0xe59e('0x43'),_0x893eb9[_0x23ee61][_0x47eedf]['name']));break;case 0x8:if(_0x59fb46[_0xe59e('0x5')]!==_0xe59e('0x6'))_0x2ea560[_0x203b40](util['format'](_0xe59e('0x44'),_0x893eb9[_0x23ee61][_0x47eedf][_0xe59e('0x2')]));break;case 0x9:if(_0x59fb46[_0xe59e('0x5')]!=='agent')_0x2ea560[_0x203b40](util[_0xe59e('0x18')](_0xe59e('0x45'),_0x893eb9[_0x23ee61][_0x47eedf]['type'],_0x893eb9[_0x23ee61][_0x47eedf][_0xe59e('0x2')]));break;case 0xa:_0x2ea560[_0x203b40](util[_0xe59e('0x18')]('user:%s',_0x893eb9[_0x23ee61][_0x47eedf][_0xe59e('0x2')]));break;}}}}})[_0xe59e('0xb')](function(){if(_0x203b40===_0xe59e('0x46')){var _0x4e0341=_[_0xe59e('0x15')](_0x59fb46[_0xe59e('0x1f')],'id');return _0x59fb46[_0xe59e('0x47')](_0x4e0341)[_0xe59e('0xb')](function(){for(var _0x2c7fd7=0x0;_0x2c7fd7<_0x4e0341['length'];_0x2c7fd7+=0x1){_0x361b94[_0xe59e('0x48')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4e0341[_0x2c7fd7]),'UserId':Number(_0x59fb46['id'])});}});}})[_0xe59e('0xb')](function(){if(_0x203b40===_0xe59e('0x46')){var _0x598c90=_[_0xe59e('0x15')](_0x59fb46['MailInteractions'],'id');return _0x59fb46[_0xe59e('0x49')](_0x598c90)[_0xe59e('0xb')](function(){for(var _0x21030e=0x0;_0x21030e<_0x598c90[_0xe59e('0x19')];_0x21030e+=0x1){_0x361b94[_0xe59e('0x48')](_0xe59e('0x4a'),{'MailInteractionId':Number(_0x598c90[_0x21030e]),'UserId':Number(_0x59fb46['id'])});}});}})[_0xe59e('0xb')](function(){if(_0x203b40===_0xe59e('0x46')){var _0x290e5e=_[_0xe59e('0x15')](_0x59fb46[_0xe59e('0x21')],'id');return _0x59fb46['removeFaxInteractions'](_0x290e5e)['then'](function(){for(var _0x5a59df=0x0;_0x5a59df<_0x290e5e['length'];_0x5a59df+=0x1){_0x361b94[_0xe59e('0x48')](_0xe59e('0x4b'),{'FaxInteractionId':Number(_0x290e5e[_0x5a59df]),'UserId':Number(_0x59fb46['id'])});}});}})[_0xe59e('0xb')](function(){if(_0x203b40===_0xe59e('0x46')){var _0x22619d=_['map'](_0x59fb46[_0xe59e('0x23')],'id');return _0x59fb46['removeSmsInteractions'](_0x22619d)[_0xe59e('0xb')](function(){for(var _0x20375a=0x0;_0x20375a<_0x22619d[_0xe59e('0x19')];_0x20375a+=0x1){_0x361b94[_0xe59e('0x48')](_0xe59e('0x4c'),{'SmsInteractionId':Number(_0x22619d[_0x20375a]),'UserId':Number(_0x59fb46['id'])});}});}})[_0xe59e('0xb')](function(){if(_0x203b40===_0xe59e('0x46')){var _0x54418a=_[_0xe59e('0x15')](_0x59fb46[_0xe59e('0x25')],'id');return _0x59fb46[_0xe59e('0x4d')](_0x54418a)['then'](function(){for(var _0x321e16=0x0;_0x321e16<_0x54418a[_0xe59e('0x19')];_0x321e16+=0x1){_0x361b94[_0xe59e('0x48')](_0xe59e('0x4e'),{'OpenchannelInteractionId':Number(_0x54418a[_0x321e16]),'UserId':Number(_0x59fb46['id'])});}});}})[_0xe59e('0xb')](function(){if(_0x203b40==='leave'){var _0x4dc578=_['map'](_0x59fb46['WhatsappInteractions'],'id');return _0x59fb46[_0xe59e('0x4f')](_0x4dc578)[_0xe59e('0xb')](function(){for(var _0x33e296=0x0;_0x33e296<_0x4dc578['length'];_0x33e296+=0x1){_0x361b94['emit'](_0xe59e('0x50'),{'WhatsappInteractionId':Number(_0x4dc578[_0x33e296]),'UserId':Number(_0x59fb46['id'])});}});}})[_0xe59e('0x51')](function(_0x303cec){_0x2ea560[_0xe59e('0x52')](_0x303cec);});}}function onDisconnect(_0x1c3079,_0x5cb0a0){joinOrLeave(_0x1c3079,_0xe59e('0x46'),_0x5cb0a0);}function onConnect(_0x3d5cdd){joinOrLeave(_0x3d5cdd,_0xe59e('0x53'));}exports[_0xe59e('0x54')]=function(_0x34d287){_0x34d287['on']('connection',function(_0x47b5f5){_0x47b5f5[_0xe59e('0x55')](0x0);_0x47b5f5[_0xe59e('0x56')]=_0x47b5f5[_0xe59e('0x57')][_0xe59e('0x58')][_0xe59e('0x59')]+':'+_0x47b5f5[_0xe59e('0x57')][_0xe59e('0x58')][_0xe59e('0x5a')];_0x47b5f5[_0xe59e('0x5b')]=new Date();_0x47b5f5[_0xe59e('0x52')]=function(_0x281223){console[_0xe59e('0x52')](_0xe59e('0x5c')+_0x47b5f5[_0xe59e('0x5d')]['name']+'['+_0x47b5f5[_0xe59e('0x56')]+']',_0x281223);};_0x47b5f5['on'](_0xe59e('0x5e'),function(){onDisconnect(_0x47b5f5,_0x34d287);_0x47b5f5[_0xe59e('0x52')](_0xe59e('0x5f'));});onConnect(_0x47b5f5);_0x47b5f5[_0xe59e('0x52')]('CONNECTED');});};