Built motion from commit 5ae82ce5.|2.6.7
[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 _0x8101=['telephone','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','FaxQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','map','where','role','format','%s:queue:%s','length','user:%s','handshake','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','VoiceQueue','SmsQueues','MailQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','voice','chat','fax','sms','mail','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','emit','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x8101,0xc0));var _0x1810=function(_0x357a01,_0x1e57d0){_0x357a01=_0x357a01-0x0;var _0x252c1f=_0x8101[_0x357a01];return _0x252c1f;};'use strict';var _=require(_0x1810('0x0'));var util=require(_0x1810('0x1'));var BPromise=require(_0x1810('0x2'));var db=require(_0x1810('0x3'))['db'];var config=require(_0x1810('0x4'));var queryQueues={'attributes':['id',_0x1810('0x5')],'include':[{'as':_0x1810('0x6'),'model':db[_0x1810('0x7')],'attributes':['id',_0x1810('0x5'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x1810('0x5')],'where':{'role':_0x1810('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x1810('0x5')],'where':{'role':_0x1810('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x1810('0x5'),_0x1810('0xa')],'where':{'type':_0x1810('0xb')}};function getAssociatedResources(_0x271738,_0x197255,_0x2dde85){return db[_0x1810('0xc')][_0x1810('0xd')]({'where':{'name':_0x271738,'userProfileId':_0x197255},'raw':!![]})[_0x1810('0xe')](function(_0x5126d2){if(_0x5126d2){if(_0x5126d2[_0x1810('0xf')]){switch(_0x271738){case _0x1810('0x10'):case'ChatQueues':case _0x1810('0x11'):case'SmsQueues':case'MailQueues':case _0x1810('0x12'):case _0x1810('0x13'):return db[_0x2dde85][_0x1810('0x14')](queryQueues);case _0x1810('0x15'):return db[_0x2dde85][_0x1810('0x14')](queryTelephones);case _0x1810('0x16'):return db[_0x2dde85]['findAll'](queryTrunks);case _0x1810('0x17'):return db[_0x2dde85][_0x1810('0x14')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0x1810('0x18')],'where':{'sectionId':_0x5126d2['id']},'raw':!![]})['then'](function(_0x187dca){if(_0x187dca){var _0xbdebf5={'where':{'id':_[_0x1810('0x19')](_0x187dca,_0x1810('0x18'))},'raw':!![]};switch(_0x2dde85){case _0x1810('0x7'):_0xbdebf5[_0x1810('0x1a')][_0x1810('0x1b')]='telephone';break;case'Campaign':_0xbdebf5['where'][_0x1810('0xa')]='ivr';break;}return db[_0x2dde85][_0x1810('0x14')](_0xbdebf5);}else{return[];}});}}else{return[];}})[_0x1810('0xe')](function(_0x3876b0){return _0x3876b0;});}function joinOrLeaveQueues(_0x27c51b,_0x57477e,_0x1490c3,_0x5c8c36){_0x27c51b[_0x57477e](util[_0x1810('0x1c')](_0x1810('0x1d'),_0x1490c3,_0x5c8c36['name']));if(_0x5c8c36[_0x1810('0x6')]){for(var _0x42672f=0x0;_0x42672f<_0x5c8c36[_0x1810('0x6')][_0x1810('0x1e')];_0x42672f+=0x1){_0x27c51b[_0x57477e](util[_0x1810('0x1c')](_0x1810('0x1f'),_0x5c8c36['Agents'][_0x42672f][_0x1810('0x5')]));}}}function joinOrLeave(_0x198bbc,_0x254062,_0x77b5ed){var _0x53ca63;if(_0x198bbc[_0x1810('0x20')]['query']['id']){db['User'][_0x1810('0x21')]({'attributes':['id',_0x1810('0x5'),_0x1810('0x1b'),_0x1810('0x22')],'where':{'id':_0x198bbc[_0x1810('0x20')]['query']['id']},'include':[{'model':db[_0x1810('0x23')],'as':_0x1810('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x1810('0x25')],'as':_0x1810('0x26'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1810('0x27')],'as':_0x1810('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x1810('0x29')],'as':_0x1810('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x1810('0x2b')],'as':_0x1810('0x2c'),'attributes':['id'],'raw':!![]}]})[_0x1810('0xe')](function(_0x3e122b){if(_0x3e122b){_0x53ca63=_0x3e122b;_0x198bbc[_0x254062](util[_0x1810('0x1c')](_0x1810('0x1f'),_0x3e122b[_0x1810('0x5')]));var _0x223638=[];switch(_0x3e122b[_0x1810('0x1b')]){case'admin':_0x198bbc[_0x254062](_0x1810('0x2d'));_0x198bbc[_0x254062](_0x1810('0x2e'));if(queryQueues[_0x1810('0x2f')](_0x1810('0x30'))){delete queryQueues[_0x1810('0x30')];}_0x223638[_0x1810('0x31')](db['VoiceQueue'][_0x1810('0x14')](queryQueues));_0x223638[_0x1810('0x31')](db[_0x1810('0x32')][_0x1810('0x14')](queryQueues));_0x223638[_0x1810('0x31')](db['FaxQueue'][_0x1810('0x14')](queryQueues));_0x223638[_0x1810('0x31')](db[_0x1810('0x33')]['findAll'](queryQueues));_0x223638[_0x1810('0x31')](db[_0x1810('0x34')][_0x1810('0x14')](queryQueues));_0x223638[_0x1810('0x31')](db[_0x1810('0x35')][_0x1810('0x14')](queryQueues));_0x223638[_0x1810('0x31')](db[_0x1810('0x36')][_0x1810('0x14')](queryQueues));_0x223638[_0x1810('0x31')](db[_0x1810('0x7')][_0x1810('0x14')](queryTelephones));_0x223638[_0x1810('0x31')](db[_0x1810('0x37')][_0x1810('0x14')](queryTrunks));_0x223638['push'](db[_0x1810('0x38')]['findAll'](queryCampaigns));_0x223638['push'](db[_0x1810('0x7')][_0x1810('0x14')](queryAgents));break;case'user':_0x198bbc[_0x254062](_0x1810('0x2d'));_0x198bbc[_0x254062](_0x1810('0x2e'));_0x223638[_0x1810('0x31')](getAssociatedResources(_0x1810('0x10'),_0x3e122b[_0x1810('0x22')],_0x1810('0x39')));_0x223638[_0x1810('0x31')](getAssociatedResources('ChatQueues',_0x3e122b[_0x1810('0x22')],_0x1810('0x32')));_0x223638['push'](getAssociatedResources('FaxQueues',_0x3e122b[_0x1810('0x22')],'FaxQueue'));_0x223638[_0x1810('0x31')](getAssociatedResources(_0x1810('0x3a'),_0x3e122b[_0x1810('0x22')],_0x1810('0x33')));_0x223638[_0x1810('0x31')](getAssociatedResources(_0x1810('0x3b'),_0x3e122b[_0x1810('0x22')],_0x1810('0x34')));_0x223638[_0x1810('0x31')](getAssociatedResources('OpenchannelQueues',_0x3e122b[_0x1810('0x22')],'OpenchannelQueue'));_0x223638[_0x1810('0x31')](getAssociatedResources(_0x1810('0x13'),_0x3e122b[_0x1810('0x22')],_0x1810('0x36')));_0x223638[_0x1810('0x31')](getAssociatedResources(_0x1810('0x15'),_0x3e122b[_0x1810('0x22')],_0x1810('0x7')));_0x223638[_0x1810('0x31')](getAssociatedResources(_0x1810('0x16'),_0x3e122b['userProfileId'],_0x1810('0x37')));_0x223638[_0x1810('0x31')](getAssociatedResources(_0x1810('0x17'),_0x3e122b['userProfileId'],_0x1810('0x38')));_0x223638[_0x1810('0x31')](db[_0x1810('0x7')][_0x1810('0x14')](queryAgents));break;case _0x1810('0x9'):_0x198bbc[_0x254062](_0x1810('0x2d'));_0x198bbc[_0x254062]('voice:outbound');_0x223638[_0x1810('0x31')](_0x3e122b[_0x1810('0x3c')]({'attributes':['id',_0x1810('0x5')]}));_0x223638[_0x1810('0x31')](_0x3e122b[_0x1810('0x3d')]({'attributes':['id','name']}));_0x223638[_0x1810('0x31')](_0x3e122b[_0x1810('0x3e')]({'attributes':['id',_0x1810('0x5')]}));_0x223638[_0x1810('0x31')](_0x3e122b[_0x1810('0x3f')]({'attributes':['id',_0x1810('0x5')]}));_0x223638[_0x1810('0x31')](_0x3e122b[_0x1810('0x40')]({'attributes':['id',_0x1810('0x5')]}));_0x223638[_0x1810('0x31')](_0x3e122b[_0x1810('0x41')]({'attributes':['id','name']}));_0x223638[_0x1810('0x31')](_0x3e122b['getWhatsappQueues']({'attributes':['id',_0x1810('0x5')]}));break;}return BPromise['all'](_0x223638);}})[_0x1810('0xe')](function(_0x18b946){if(_0x18b946&&_0x18b946[_0x1810('0x1e')]){for(var _0x2f3c21=0x0;_0x2f3c21<_0x18b946[_0x1810('0x1e')];_0x2f3c21+=0x1){for(var _0x9446e9=0x0;_0x9446e9<_0x18b946[_0x2f3c21][_0x1810('0x1e')];_0x9446e9+=0x1){switch(_0x2f3c21){case 0x0:joinOrLeaveQueues(_0x198bbc,_0x254062,_0x1810('0x42'),_0x18b946[_0x2f3c21][_0x9446e9]);break;case 0x1:joinOrLeaveQueues(_0x198bbc,_0x254062,_0x1810('0x43'),_0x18b946[_0x2f3c21][_0x9446e9]);break;case 0x2:joinOrLeaveQueues(_0x198bbc,_0x254062,_0x1810('0x44'),_0x18b946[_0x2f3c21][_0x9446e9]);break;case 0x3:joinOrLeaveQueues(_0x198bbc,_0x254062,_0x1810('0x45'),_0x18b946[_0x2f3c21][_0x9446e9]);break;case 0x4:joinOrLeaveQueues(_0x198bbc,_0x254062,_0x1810('0x46'),_0x18b946[_0x2f3c21][_0x9446e9]);break;case 0x5:joinOrLeaveQueues(_0x198bbc,_0x254062,'openchannel',_0x18b946[_0x2f3c21][_0x9446e9]);break;case 0x6:joinOrLeaveQueues(_0x198bbc,_0x254062,'whatsapp',_0x18b946[_0x2f3c21][_0x9446e9]);break;case 0x7:if(_0x53ca63[_0x1810('0x1b')]!=='agent')_0x198bbc[_0x254062](util[_0x1810('0x1c')](_0x1810('0x47'),_0x18b946[_0x2f3c21][_0x9446e9]['name']));break;case 0x8:if(_0x53ca63['role']!==_0x1810('0x9'))_0x198bbc[_0x254062](util[_0x1810('0x1c')](_0x1810('0x48'),_0x18b946[_0x2f3c21][_0x9446e9][_0x1810('0x5')]));break;case 0x9:if(_0x53ca63[_0x1810('0x1b')]!=='agent')_0x198bbc[_0x254062](util[_0x1810('0x1c')](_0x1810('0x49'),_0x18b946[_0x2f3c21][_0x9446e9][_0x1810('0xa')],_0x18b946[_0x2f3c21][_0x9446e9][_0x1810('0x5')]));break;case 0xa:_0x198bbc[_0x254062](util[_0x1810('0x1c')](_0x1810('0x1f'),_0x18b946[_0x2f3c21][_0x9446e9][_0x1810('0x5')]));break;}}}}})[_0x1810('0xe')](function(){if(_0x254062===_0x1810('0x4a')){var _0x3eff89=_[_0x1810('0x19')](_0x53ca63['ChatInteractions'],'id');return _0x53ca63[_0x1810('0x4b')](_0x3eff89)[_0x1810('0xe')](function(){for(var _0x236aaa=0x0;_0x236aaa<_0x3eff89[_0x1810('0x1e')];_0x236aaa+=0x1){_0x77b5ed['emit'](_0x1810('0x4c'),{'ChatInteractionId':Number(_0x3eff89[_0x236aaa]),'UserId':Number(_0x53ca63['id'])});}});}})[_0x1810('0xe')](function(){if(_0x254062==='leave'){var _0x8b722e=_['map'](_0x53ca63['MailInteractions'],'id');return _0x53ca63[_0x1810('0x4d')](_0x8b722e)['then'](function(){for(var _0x4207c4=0x0;_0x4207c4<_0x8b722e[_0x1810('0x1e')];_0x4207c4+=0x1){_0x77b5ed[_0x1810('0x4e')](_0x1810('0x4f'),{'MailInteractionId':Number(_0x8b722e[_0x4207c4]),'UserId':Number(_0x53ca63['id'])});}});}})[_0x1810('0xe')](function(){if(_0x254062===_0x1810('0x4a')){var _0x20eba4=_[_0x1810('0x19')](_0x53ca63[_0x1810('0x50')],'id');return _0x53ca63[_0x1810('0x51')](_0x20eba4)[_0x1810('0xe')](function(){for(var _0x4a71a8=0x0;_0x4a71a8<_0x20eba4['length'];_0x4a71a8+=0x1){_0x77b5ed['emit'](_0x1810('0x52'),{'FaxInteractionId':Number(_0x20eba4[_0x4a71a8]),'UserId':Number(_0x53ca63['id'])});}});}})[_0x1810('0xe')](function(){if(_0x254062===_0x1810('0x4a')){var _0x53bec7=_[_0x1810('0x19')](_0x53ca63[_0x1810('0x28')],'id');return _0x53ca63['removeSmsInteractions'](_0x53bec7)[_0x1810('0xe')](function(){for(var _0x2a9cd0=0x0;_0x2a9cd0<_0x53bec7[_0x1810('0x1e')];_0x2a9cd0+=0x1){_0x77b5ed['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x53bec7[_0x2a9cd0]),'UserId':Number(_0x53ca63['id'])});}});}})[_0x1810('0xe')](function(){if(_0x254062===_0x1810('0x4a')){var _0x4590c7=_[_0x1810('0x19')](_0x53ca63[_0x1810('0x2a')],'id');return _0x53ca63['removeOpenchannelInteractions'](_0x4590c7)[_0x1810('0xe')](function(){for(var _0x528355=0x0;_0x528355<_0x4590c7[_0x1810('0x1e')];_0x528355+=0x1){_0x77b5ed['emit'](_0x1810('0x53'),{'OpenchannelInteractionId':Number(_0x4590c7[_0x528355]),'UserId':Number(_0x53ca63['id'])});}});}})[_0x1810('0xe')](function(){if(_0x254062==='leave'){var _0xd81b16=_['map'](_0x53ca63[_0x1810('0x2c')],'id');return _0x53ca63[_0x1810('0x54')](_0xd81b16)[_0x1810('0xe')](function(){for(var _0x4638d2=0x0;_0x4638d2<_0xd81b16[_0x1810('0x1e')];_0x4638d2+=0x1){_0x77b5ed['emit'](_0x1810('0x55'),{'WhatsappInteractionId':Number(_0xd81b16[_0x4638d2]),'UserId':Number(_0x53ca63['id'])});}});}})[_0x1810('0x56')](function(_0x5a5798){_0x198bbc[_0x1810('0x57')](_0x5a5798);});}}function onDisconnect(_0x5e8b6f,_0x59f35c){joinOrLeave(_0x5e8b6f,_0x1810('0x4a'),_0x59f35c);}function onConnect(_0x116287){joinOrLeave(_0x116287,_0x1810('0x58'));}exports[_0x1810('0x59')]=function(_0x4dfae2){_0x4dfae2['on'](_0x1810('0x5a'),function(_0xb99fa0){_0xb99fa0['setMaxListeners'](0x0);_0xb99fa0[_0x1810('0x5b')]=_0xb99fa0[_0x1810('0x5c')][_0x1810('0x5a')][_0x1810('0x5d')]+':'+_0xb99fa0[_0x1810('0x5c')][_0x1810('0x5a')][_0x1810('0x5e')];_0xb99fa0[_0x1810('0x5f')]=new Date();_0xb99fa0[_0x1810('0x57')]=function(_0x41eaef){console[_0x1810('0x57')](_0x1810('0x60')+_0xb99fa0[_0x1810('0x61')][_0x1810('0x5')]+'['+_0xb99fa0[_0x1810('0x5b')]+']',_0x41eaef);};_0xb99fa0['on']('disconnect',function(){onDisconnect(_0xb99fa0,_0x4dfae2);_0xb99fa0[_0x1810('0x57')](_0x1810('0x62'));});onConnect(_0xb99fa0);_0xb99fa0[_0x1810('0x57')](_0x1810('0x63'));});};