Built motion from commit 0900f080.|2.5.45
[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 _0x0adf=['voice:inbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:outbound','FaxQueues','SmsQueues','MailQueue','Telephones','Campaign','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','length','voice','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','FaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','request','remotePort','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','bluebird','./environment','name','Agents','User','role','agent','telephone','type','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','ChatQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','UserProfileResource','resourceId','map','where','format','%s:queue:%s','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions'];(function(_0x24c835,_0x2489d3){var _0x6e962c=function(_0x28fbc4){while(--_0x28fbc4){_0x24c835['push'](_0x24c835['shift']());}};_0x6e962c(++_0x2489d3);}(_0x0adf,0x1d2));var _0xf0ad=function(_0x3c8045,_0x5ec4c0){_0x3c8045=_0x3c8045-0x0;var _0x853cf7=_0x0adf[_0x3c8045];return _0x853cf7;};'use strict';var _=require(_0xf0ad('0x0'));var util=require(_0xf0ad('0x1'));var BPromise=require(_0xf0ad('0x2'));var db=require('../mysqldb')['db'];var config=require(_0xf0ad('0x3'));var queryQueues={'attributes':['id',_0xf0ad('0x4')],'include':[{'as':_0xf0ad('0x5'),'model':db[_0xf0ad('0x6')],'attributes':['id',_0xf0ad('0x4'),_0xf0ad('0x7')],'raw':!![],'where':{'role':_0xf0ad('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xf0ad('0x9')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xf0ad('0x4')],'where':{'role':_0xf0ad('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xf0ad('0x4'),_0xf0ad('0xa')],'where':{'type':_0xf0ad('0xb')}};function getAssociatedResources(_0x3bc706,_0xe65b20,_0x5bdf69){return db[_0xf0ad('0xc')]['findOne']({'where':{'name':_0x3bc706,'userProfileId':_0xe65b20},'raw':!![]})[_0xf0ad('0xd')](function(_0x1f2952){if(_0x1f2952){if(_0x1f2952[_0xf0ad('0xe')]){switch(_0x3bc706){case _0xf0ad('0xf'):case _0xf0ad('0x10'):case'FaxQueues':case'SmsQueues':case _0xf0ad('0x11'):case _0xf0ad('0x12'):case _0xf0ad('0x13'):return db[_0x5bdf69][_0xf0ad('0x14')](queryQueues);case'Telephones':return db[_0x5bdf69][_0xf0ad('0x14')](queryTelephones);case _0xf0ad('0x15'):return db[_0x5bdf69]['findAll'](queryTrunks);case'IvrCampaigns':return db[_0x5bdf69]['findAll'](queryCampaigns);}}else{return db[_0xf0ad('0x16')]['findAll']({'attributes':[_0xf0ad('0x17')],'where':{'sectionId':_0x1f2952['id']},'raw':!![]})[_0xf0ad('0xd')](function(_0xfa544c){if(_0xfa544c){var _0xfa829e={'where':{'id':_[_0xf0ad('0x18')](_0xfa544c,'resourceId')},'raw':!![]};switch(_0x5bdf69){case _0xf0ad('0x6'):_0xfa829e[_0xf0ad('0x19')][_0xf0ad('0x7')]=_0xf0ad('0x9');break;case'Campaign':_0xfa829e['where'][_0xf0ad('0xa')]=_0xf0ad('0xb');break;}return db[_0x5bdf69]['findAll'](_0xfa829e);}else{return[];}});}}else{return[];}})[_0xf0ad('0xd')](function(_0x1e88e1){return _0x1e88e1;});}function joinOrLeaveQueues(_0x9a95bf,_0x411e7b,_0x4cc08a,_0x57c570){_0x9a95bf[_0x411e7b](util[_0xf0ad('0x1a')](_0xf0ad('0x1b'),_0x4cc08a,_0x57c570[_0xf0ad('0x4')]));if(_0x57c570[_0xf0ad('0x5')]){for(var _0x2ac8ba=0x0;_0x2ac8ba<_0x57c570[_0xf0ad('0x5')]['length'];_0x2ac8ba+=0x1){_0x9a95bf[_0x411e7b](util[_0xf0ad('0x1a')](_0xf0ad('0x1c'),_0x57c570[_0xf0ad('0x5')][_0x2ac8ba][_0xf0ad('0x4')]));}}}function joinOrLeave(_0x29d647,_0x88b47b,_0xb91769){var _0x276322;if(_0x29d647[_0xf0ad('0x1d')][_0xf0ad('0x1e')]['id']){db[_0xf0ad('0x6')][_0xf0ad('0x1f')]({'attributes':['id',_0xf0ad('0x4'),_0xf0ad('0x7'),_0xf0ad('0x20')],'where':{'id':_0x29d647['handshake'][_0xf0ad('0x1e')]['id']},'include':[{'model':db[_0xf0ad('0x21')],'as':_0xf0ad('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xf0ad('0x23')],'as':_0xf0ad('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xf0ad('0x25')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xf0ad('0x26')],'as':_0xf0ad('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xf0ad('0x28')],'as':_0xf0ad('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0xf0ad('0x2a')],'as':_0xf0ad('0x2b'),'attributes':['id'],'raw':!![]}]})[_0xf0ad('0xd')](function(_0x1bee71){if(_0x1bee71){_0x276322=_0x1bee71;_0x29d647[_0x88b47b](util[_0xf0ad('0x1a')](_0xf0ad('0x1c'),_0x1bee71[_0xf0ad('0x4')]));var _0x4c839d=[];switch(_0x1bee71[_0xf0ad('0x7')]){case'admin':_0x29d647[_0x88b47b](_0xf0ad('0x2c'));_0x29d647[_0x88b47b]('voice:outbound');if(queryQueues[_0xf0ad('0x2d')](_0xf0ad('0x2e'))){delete queryQueues[_0xf0ad('0x2e')];}_0x4c839d[_0xf0ad('0x2f')](db[_0xf0ad('0x30')][_0xf0ad('0x14')](queryQueues));_0x4c839d[_0xf0ad('0x2f')](db[_0xf0ad('0x31')]['findAll'](queryQueues));_0x4c839d['push'](db[_0xf0ad('0x32')][_0xf0ad('0x14')](queryQueues));_0x4c839d[_0xf0ad('0x2f')](db[_0xf0ad('0x33')]['findAll'](queryQueues));_0x4c839d[_0xf0ad('0x2f')](db['MailQueue'][_0xf0ad('0x14')](queryQueues));_0x4c839d['push'](db[_0xf0ad('0x34')]['findAll'](queryQueues));_0x4c839d[_0xf0ad('0x2f')](db[_0xf0ad('0x35')][_0xf0ad('0x14')](queryQueues));_0x4c839d[_0xf0ad('0x2f')](db[_0xf0ad('0x6')][_0xf0ad('0x14')](queryTelephones));_0x4c839d[_0xf0ad('0x2f')](db[_0xf0ad('0x36')]['findAll'](queryTrunks));_0x4c839d[_0xf0ad('0x2f')](db['Campaign'][_0xf0ad('0x14')](queryCampaigns));_0x4c839d['push'](db[_0xf0ad('0x6')][_0xf0ad('0x14')](queryAgents));break;case _0xf0ad('0x37'):_0x29d647[_0x88b47b](_0xf0ad('0x2c'));_0x29d647[_0x88b47b](_0xf0ad('0x38'));_0x4c839d['push'](getAssociatedResources(_0xf0ad('0xf'),_0x1bee71[_0xf0ad('0x20')],_0xf0ad('0x30')));_0x4c839d[_0xf0ad('0x2f')](getAssociatedResources(_0xf0ad('0x10'),_0x1bee71[_0xf0ad('0x20')],_0xf0ad('0x31')));_0x4c839d['push'](getAssociatedResources(_0xf0ad('0x39'),_0x1bee71[_0xf0ad('0x20')],_0xf0ad('0x32')));_0x4c839d[_0xf0ad('0x2f')](getAssociatedResources(_0xf0ad('0x3a'),_0x1bee71[_0xf0ad('0x20')],_0xf0ad('0x33')));_0x4c839d[_0xf0ad('0x2f')](getAssociatedResources(_0xf0ad('0x11'),_0x1bee71['userProfileId'],_0xf0ad('0x3b')));_0x4c839d[_0xf0ad('0x2f')](getAssociatedResources(_0xf0ad('0x12'),_0x1bee71['userProfileId'],'OpenchannelQueue'));_0x4c839d['push'](getAssociatedResources(_0xf0ad('0x13'),_0x1bee71[_0xf0ad('0x20')],_0xf0ad('0x35')));_0x4c839d[_0xf0ad('0x2f')](getAssociatedResources(_0xf0ad('0x3c'),_0x1bee71[_0xf0ad('0x20')],_0xf0ad('0x6')));_0x4c839d[_0xf0ad('0x2f')](getAssociatedResources(_0xf0ad('0x15'),_0x1bee71[_0xf0ad('0x20')],_0xf0ad('0x36')));_0x4c839d['push'](getAssociatedResources('IvrCampaigns',_0x1bee71['userProfileId'],_0xf0ad('0x3d')));_0x4c839d[_0xf0ad('0x2f')](db['User'][_0xf0ad('0x14')](queryAgents));break;case _0xf0ad('0x8'):_0x29d647[_0x88b47b]('voice:inbound');_0x29d647[_0x88b47b](_0xf0ad('0x38'));_0x4c839d[_0xf0ad('0x2f')](_0x1bee71[_0xf0ad('0x3e')]({'attributes':['id',_0xf0ad('0x4')]}));_0x4c839d['push'](_0x1bee71[_0xf0ad('0x3f')]({'attributes':['id',_0xf0ad('0x4')]}));_0x4c839d[_0xf0ad('0x2f')](_0x1bee71[_0xf0ad('0x40')]({'attributes':['id',_0xf0ad('0x4')]}));_0x4c839d[_0xf0ad('0x2f')](_0x1bee71[_0xf0ad('0x41')]({'attributes':['id',_0xf0ad('0x4')]}));_0x4c839d[_0xf0ad('0x2f')](_0x1bee71[_0xf0ad('0x42')]({'attributes':['id',_0xf0ad('0x4')]}));_0x4c839d['push'](_0x1bee71[_0xf0ad('0x43')]({'attributes':['id',_0xf0ad('0x4')]}));_0x4c839d[_0xf0ad('0x2f')](_0x1bee71['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0xf0ad('0x44')](_0x4c839d);}})[_0xf0ad('0xd')](function(_0x12b76f){if(_0x12b76f&&_0x12b76f[_0xf0ad('0x45')]){for(var _0x17d7d9=0x0;_0x17d7d9<_0x12b76f[_0xf0ad('0x45')];_0x17d7d9+=0x1){for(var _0x8989f=0x0;_0x8989f<_0x12b76f[_0x17d7d9]['length'];_0x8989f+=0x1){switch(_0x17d7d9){case 0x0:joinOrLeaveQueues(_0x29d647,_0x88b47b,_0xf0ad('0x46'),_0x12b76f[_0x17d7d9][_0x8989f]);break;case 0x1:joinOrLeaveQueues(_0x29d647,_0x88b47b,'chat',_0x12b76f[_0x17d7d9][_0x8989f]);break;case 0x2:joinOrLeaveQueues(_0x29d647,_0x88b47b,_0xf0ad('0x47'),_0x12b76f[_0x17d7d9][_0x8989f]);break;case 0x3:joinOrLeaveQueues(_0x29d647,_0x88b47b,_0xf0ad('0x48'),_0x12b76f[_0x17d7d9][_0x8989f]);break;case 0x4:joinOrLeaveQueues(_0x29d647,_0x88b47b,_0xf0ad('0x49'),_0x12b76f[_0x17d7d9][_0x8989f]);break;case 0x5:joinOrLeaveQueues(_0x29d647,_0x88b47b,_0xf0ad('0x4a'),_0x12b76f[_0x17d7d9][_0x8989f]);break;case 0x6:joinOrLeaveQueues(_0x29d647,_0x88b47b,_0xf0ad('0x4b'),_0x12b76f[_0x17d7d9][_0x8989f]);break;case 0x7:if(_0x276322['role']!=='agent')_0x29d647[_0x88b47b](util[_0xf0ad('0x1a')](_0xf0ad('0x4c'),_0x12b76f[_0x17d7d9][_0x8989f][_0xf0ad('0x4')]));break;case 0x8:if(_0x276322[_0xf0ad('0x7')]!==_0xf0ad('0x8'))_0x29d647[_0x88b47b](util[_0xf0ad('0x1a')](_0xf0ad('0x4d'),_0x12b76f[_0x17d7d9][_0x8989f]['name']));break;case 0x9:if(_0x276322[_0xf0ad('0x7')]!==_0xf0ad('0x8'))_0x29d647[_0x88b47b](util[_0xf0ad('0x1a')](_0xf0ad('0x4e'),_0x12b76f[_0x17d7d9][_0x8989f][_0xf0ad('0xa')],_0x12b76f[_0x17d7d9][_0x8989f]['name']));break;case 0xa:_0x29d647[_0x88b47b](util[_0xf0ad('0x1a')](_0xf0ad('0x1c'),_0x12b76f[_0x17d7d9][_0x8989f][_0xf0ad('0x4')]));break;}}}}})[_0xf0ad('0xd')](function(){if(_0x88b47b===_0xf0ad('0x4f')){var _0x38c256=_[_0xf0ad('0x18')](_0x276322['ChatInteractions'],'id');return _0x276322[_0xf0ad('0x50')](_0x38c256)[_0xf0ad('0xd')](function(){for(var _0x3a78b2=0x0;_0x3a78b2<_0x38c256['length'];_0x3a78b2+=0x1){_0xb91769[_0xf0ad('0x51')](_0xf0ad('0x52'),{'ChatInteractionId':Number(_0x38c256[_0x3a78b2]),'UserId':Number(_0x276322['id'])});}});}})[_0xf0ad('0xd')](function(){if(_0x88b47b===_0xf0ad('0x4f')){var _0x386c52=_[_0xf0ad('0x18')](_0x276322[_0xf0ad('0x24')],'id');return _0x276322[_0xf0ad('0x53')](_0x386c52)[_0xf0ad('0xd')](function(){for(var _0x3d78a2=0x0;_0x3d78a2<_0x386c52[_0xf0ad('0x45')];_0x3d78a2+=0x1){_0xb91769['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x386c52[_0x3d78a2]),'UserId':Number(_0x276322['id'])});}});}})[_0xf0ad('0xd')](function(){if(_0x88b47b===_0xf0ad('0x4f')){var _0x5d9711=_[_0xf0ad('0x18')](_0x276322[_0xf0ad('0x54')],'id');return _0x276322['removeFaxInteractions'](_0x5d9711)['then'](function(){for(var _0x326aa7=0x0;_0x326aa7<_0x5d9711['length'];_0x326aa7+=0x1){_0xb91769['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x5d9711[_0x326aa7]),'UserId':Number(_0x276322['id'])});}});}})[_0xf0ad('0xd')](function(){if(_0x88b47b==='leave'){var _0x56c8aa=_[_0xf0ad('0x18')](_0x276322[_0xf0ad('0x27')],'id');return _0x276322[_0xf0ad('0x55')](_0x56c8aa)[_0xf0ad('0xd')](function(){for(var _0x3c9464=0x0;_0x3c9464<_0x56c8aa[_0xf0ad('0x45')];_0x3c9464+=0x1){_0xb91769[_0xf0ad('0x51')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x56c8aa[_0x3c9464]),'UserId':Number(_0x276322['id'])});}});}})[_0xf0ad('0xd')](function(){if(_0x88b47b==='leave'){var _0x51a84a=_['map'](_0x276322['OpenchannelInteractions'],'id');return _0x276322[_0xf0ad('0x56')](_0x51a84a)[_0xf0ad('0xd')](function(){for(var _0x26b89f=0x0;_0x26b89f<_0x51a84a[_0xf0ad('0x45')];_0x26b89f+=0x1){_0xb91769[_0xf0ad('0x51')](_0xf0ad('0x57'),{'OpenchannelInteractionId':Number(_0x51a84a[_0x26b89f]),'UserId':Number(_0x276322['id'])});}});}})[_0xf0ad('0xd')](function(){if(_0x88b47b===_0xf0ad('0x4f')){var _0x1e9642=_[_0xf0ad('0x18')](_0x276322[_0xf0ad('0x2b')],'id');return _0x276322['removeWhatsappInteractions'](_0x1e9642)['then'](function(){for(var _0x2baccb=0x0;_0x2baccb<_0x1e9642[_0xf0ad('0x45')];_0x2baccb+=0x1){_0xb91769['emit'](_0xf0ad('0x58'),{'WhatsappInteractionId':Number(_0x1e9642[_0x2baccb]),'UserId':Number(_0x276322['id'])});}});}})[_0xf0ad('0x59')](function(_0x550068){_0x29d647[_0xf0ad('0x5a')](_0x550068);});}}function onDisconnect(_0x1d1b4e,_0x365acc){joinOrLeave(_0x1d1b4e,'leave',_0x365acc);}function onConnect(_0x1fe9df){joinOrLeave(_0x1fe9df,_0xf0ad('0x5b'));}exports[_0xf0ad('0x5c')]=function(_0x3ed619){_0x3ed619['on'](_0xf0ad('0x5d'),function(_0x422186){_0x422186[_0xf0ad('0x5e')](0x0);_0x422186[_0xf0ad('0x5f')]=_0x422186['request'][_0xf0ad('0x5d')]['remoteAddress']+':'+_0x422186[_0xf0ad('0x60')][_0xf0ad('0x5d')][_0xf0ad('0x61')];_0x422186['connectedAt']=new Date();_0x422186[_0xf0ad('0x5a')]=function(_0x5d1bc0){console[_0xf0ad('0x5a')](_0xf0ad('0x62')+_0x422186[_0xf0ad('0x63')][_0xf0ad('0x4')]+'['+_0x422186[_0xf0ad('0x5f')]+']',_0x5d1bc0);};_0x422186['on'](_0xf0ad('0x64'),function(){onDisconnect(_0x422186,_0x3ed619);_0x422186[_0xf0ad('0x5a')]('DISCONNECTED');});onConnect(_0x422186);_0x422186[_0xf0ad('0x5a')](_0xf0ad('0x65'));});};