Built motion from commit 3c2ce842.|2.6.31
[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 _0x7da6=['SocketIO\x20','nsp','DISCONNECTED','CONNECTED','bluebird','../mysqldb','./environment','name','User','role','agent','telephone','type','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','resourceId','map','where','ivr','Agents','query','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','format','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','WhatsappQueue','Trunk','Campaign','user','ChatQueues','MailQueue','Telephones','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','leave','removeChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','log','default','connection','address','request','remoteAddress','remotePort','connectedAt'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x7da6,0x124));var _0x67da=function(_0x3ecf95,_0x559a2c){_0x3ecf95=_0x3ecf95-0x0;var _0x3f1e72=_0x7da6[_0x3ecf95];return _0x3f1e72;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require(_0x67da('0x0'));var db=require(_0x67da('0x1'))['db'];var config=require(_0x67da('0x2'));var queryQueues={'attributes':['id',_0x67da('0x3')],'include':[{'as':'Agents','model':db[_0x67da('0x4')],'attributes':['id',_0x67da('0x3'),_0x67da('0x5')],'raw':!![],'where':{'role':_0x67da('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x67da('0x3')],'where':{'role':_0x67da('0x7')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x67da('0x3')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x67da('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x3c7119,_0x5f31ff,_0x1e8a4c){return db[_0x67da('0x9')][_0x67da('0xa')]({'where':{'name':_0x3c7119,'userProfileId':_0x5f31ff},'raw':!![]})[_0x67da('0xb')](function(_0x7adba5){if(_0x7adba5){if(_0x7adba5[_0x67da('0xc')]){switch(_0x3c7119){case _0x67da('0xd'):case'ChatQueues':case _0x67da('0xe'):case _0x67da('0xf'):case _0x67da('0x10'):case _0x67da('0x11'):case _0x67da('0x12'):return db[_0x1e8a4c][_0x67da('0x13')](queryQueues);case'Telephones':return db[_0x1e8a4c][_0x67da('0x13')](queryTelephones);case _0x67da('0x14'):return db[_0x1e8a4c][_0x67da('0x13')](queryTrunks);case _0x67da('0x15'):return db[_0x1e8a4c][_0x67da('0x13')](queryCampaigns);}}else{return db['UserProfileResource'][_0x67da('0x13')]({'attributes':[_0x67da('0x16')],'where':{'sectionId':_0x7adba5['id']},'raw':!![]})['then'](function(_0x11e151){if(_0x11e151){var _0x3b7f96={'where':{'id':_[_0x67da('0x17')](_0x11e151,_0x67da('0x16'))},'raw':!![]};switch(_0x1e8a4c){case _0x67da('0x4'):_0x3b7f96[_0x67da('0x18')][_0x67da('0x5')]=_0x67da('0x7');break;case'Campaign':_0x3b7f96[_0x67da('0x18')]['type']=_0x67da('0x19');break;}return db[_0x1e8a4c]['findAll'](_0x3b7f96);}else{return[];}});}}else{return[];}})[_0x67da('0xb')](function(_0xa53a90){return _0xa53a90;});}function joinOrLeaveQueues(_0xf5aab7,_0x156abf,_0x4b91af,_0x2a43db){_0xf5aab7[_0x156abf](util['format']('%s:queue:%s',_0x4b91af,_0x2a43db[_0x67da('0x3')]));if(_0x2a43db[_0x67da('0x1a')]){for(var _0x249e9c=0x0;_0x249e9c<_0x2a43db[_0x67da('0x1a')]['length'];_0x249e9c+=0x1){_0xf5aab7[_0x156abf](util['format']('user:%s',_0x2a43db[_0x67da('0x1a')][_0x249e9c][_0x67da('0x3')]));}}}function joinOrLeave(_0x45fe05,_0xd32481,_0x2460c3){var _0x4e6cb1;if(_0x45fe05['handshake'][_0x67da('0x1b')]['id']){db[_0x67da('0x4')]['find']({'attributes':['id',_0x67da('0x3'),'role',_0x67da('0x1c')],'where':{'id':_0x45fe05[_0x67da('0x1d')][_0x67da('0x1b')]['id']},'include':[{'model':db[_0x67da('0x1e')],'as':_0x67da('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0x67da('0x20')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x67da('0x21')],'as':_0x67da('0x22'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x67da('0x23')],'as':_0x67da('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x67da('0x25')],'as':_0x67da('0x26'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x1cba18){if(_0x1cba18){_0x4e6cb1=_0x1cba18;_0x45fe05[_0xd32481](util[_0x67da('0x27')](_0x67da('0x28'),_0x1cba18[_0x67da('0x3')]));var _0x22fa93=[];switch(_0x1cba18[_0x67da('0x5')]){case _0x67da('0x29'):_0x45fe05[_0xd32481](_0x67da('0x2a'));_0x45fe05[_0xd32481](_0x67da('0x2b'));if(queryQueues[_0x67da('0x2c')](_0x67da('0x2d'))){delete queryQueues[_0x67da('0x2d')];}_0x22fa93[_0x67da('0x2e')](db[_0x67da('0x2f')]['findAll'](queryQueues));_0x22fa93[_0x67da('0x2e')](db[_0x67da('0x30')][_0x67da('0x13')](queryQueues));_0x22fa93[_0x67da('0x2e')](db[_0x67da('0x31')][_0x67da('0x13')](queryQueues));_0x22fa93['push'](db[_0x67da('0x32')][_0x67da('0x13')](queryQueues));_0x22fa93[_0x67da('0x2e')](db['MailQueue']['findAll'](queryQueues));_0x22fa93['push'](db['OpenchannelQueue'][_0x67da('0x13')](queryQueues));_0x22fa93['push'](db[_0x67da('0x33')][_0x67da('0x13')](queryQueues));_0x22fa93[_0x67da('0x2e')](db[_0x67da('0x4')][_0x67da('0x13')](queryTelephones));_0x22fa93[_0x67da('0x2e')](db[_0x67da('0x34')][_0x67da('0x13')](queryTrunks));_0x22fa93[_0x67da('0x2e')](db[_0x67da('0x35')][_0x67da('0x13')](queryCampaigns));_0x22fa93[_0x67da('0x2e')](db[_0x67da('0x4')][_0x67da('0x13')](queryAgents));break;case _0x67da('0x36'):_0x45fe05[_0xd32481](_0x67da('0x2a'));_0x45fe05[_0xd32481](_0x67da('0x2b'));_0x22fa93[_0x67da('0x2e')](getAssociatedResources(_0x67da('0xd'),_0x1cba18[_0x67da('0x1c')],_0x67da('0x2f')));_0x22fa93[_0x67da('0x2e')](getAssociatedResources(_0x67da('0x37'),_0x1cba18[_0x67da('0x1c')],_0x67da('0x30')));_0x22fa93[_0x67da('0x2e')](getAssociatedResources('FaxQueues',_0x1cba18[_0x67da('0x1c')],_0x67da('0x31')));_0x22fa93['push'](getAssociatedResources(_0x67da('0xf'),_0x1cba18[_0x67da('0x1c')],'SmsQueue'));_0x22fa93['push'](getAssociatedResources('MailQueues',_0x1cba18[_0x67da('0x1c')],_0x67da('0x38')));_0x22fa93[_0x67da('0x2e')](getAssociatedResources(_0x67da('0x11'),_0x1cba18[_0x67da('0x1c')],'OpenchannelQueue'));_0x22fa93[_0x67da('0x2e')](getAssociatedResources('WhatsappQueues',_0x1cba18[_0x67da('0x1c')],_0x67da('0x33')));_0x22fa93[_0x67da('0x2e')](getAssociatedResources(_0x67da('0x39'),_0x1cba18['userProfileId'],_0x67da('0x4')));_0x22fa93['push'](getAssociatedResources(_0x67da('0x14'),_0x1cba18[_0x67da('0x1c')],_0x67da('0x34')));_0x22fa93['push'](getAssociatedResources(_0x67da('0x15'),_0x1cba18[_0x67da('0x1c')],_0x67da('0x35')));_0x22fa93[_0x67da('0x2e')](db[_0x67da('0x4')][_0x67da('0x13')](queryAgents));break;case'agent':_0x45fe05[_0xd32481]('voice:inbound');_0x45fe05[_0xd32481](_0x67da('0x2b'));_0x22fa93[_0x67da('0x2e')](_0x1cba18['getVoiceQueues']({'attributes':['id',_0x67da('0x3')]}));_0x22fa93[_0x67da('0x2e')](_0x1cba18['getChatQueues']({'attributes':['id','name']}));_0x22fa93[_0x67da('0x2e')](_0x1cba18[_0x67da('0x3a')]({'attributes':['id',_0x67da('0x3')]}));_0x22fa93['push'](_0x1cba18[_0x67da('0x3b')]({'attributes':['id','name']}));_0x22fa93[_0x67da('0x2e')](_0x1cba18[_0x67da('0x3c')]({'attributes':['id',_0x67da('0x3')]}));_0x22fa93['push'](_0x1cba18[_0x67da('0x3d')]({'attributes':['id','name']}));_0x22fa93[_0x67da('0x2e')](_0x1cba18[_0x67da('0x3e')]({'attributes':['id',_0x67da('0x3')]}));break;}return BPromise[_0x67da('0x3f')](_0x22fa93);}})['then'](function(_0x43c5b5){if(_0x43c5b5&&_0x43c5b5['length']){for(var _0xc3587a=0x0;_0xc3587a<_0x43c5b5[_0x67da('0x40')];_0xc3587a+=0x1){for(var _0x18349e=0x0;_0x18349e<_0x43c5b5[_0xc3587a][_0x67da('0x40')];_0x18349e+=0x1){switch(_0xc3587a){case 0x0:joinOrLeaveQueues(_0x45fe05,_0xd32481,_0x67da('0x41'),_0x43c5b5[_0xc3587a][_0x18349e]);break;case 0x1:joinOrLeaveQueues(_0x45fe05,_0xd32481,_0x67da('0x42'),_0x43c5b5[_0xc3587a][_0x18349e]);break;case 0x2:joinOrLeaveQueues(_0x45fe05,_0xd32481,_0x67da('0x43'),_0x43c5b5[_0xc3587a][_0x18349e]);break;case 0x3:joinOrLeaveQueues(_0x45fe05,_0xd32481,_0x67da('0x44'),_0x43c5b5[_0xc3587a][_0x18349e]);break;case 0x4:joinOrLeaveQueues(_0x45fe05,_0xd32481,_0x67da('0x45'),_0x43c5b5[_0xc3587a][_0x18349e]);break;case 0x5:joinOrLeaveQueues(_0x45fe05,_0xd32481,'openchannel',_0x43c5b5[_0xc3587a][_0x18349e]);break;case 0x6:joinOrLeaveQueues(_0x45fe05,_0xd32481,_0x67da('0x46'),_0x43c5b5[_0xc3587a][_0x18349e]);break;case 0x7:if(_0x4e6cb1[_0x67da('0x5')]!==_0x67da('0x6'))_0x45fe05[_0xd32481](util[_0x67da('0x27')](_0x67da('0x47'),_0x43c5b5[_0xc3587a][_0x18349e]['name']));break;case 0x8:if(_0x4e6cb1[_0x67da('0x5')]!==_0x67da('0x6'))_0x45fe05[_0xd32481](util[_0x67da('0x27')](_0x67da('0x48'),_0x43c5b5[_0xc3587a][_0x18349e][_0x67da('0x3')]));break;case 0x9:if(_0x4e6cb1[_0x67da('0x5')]!==_0x67da('0x6'))_0x45fe05[_0xd32481](util[_0x67da('0x27')]('campaign:%s:%s',_0x43c5b5[_0xc3587a][_0x18349e][_0x67da('0x8')],_0x43c5b5[_0xc3587a][_0x18349e][_0x67da('0x3')]));break;case 0xa:_0x45fe05[_0xd32481](util[_0x67da('0x27')]('user:%s',_0x43c5b5[_0xc3587a][_0x18349e][_0x67da('0x3')]));break;}}}}})[_0x67da('0xb')](function(){if(_0xd32481===_0x67da('0x49')){var _0x4c0875=_[_0x67da('0x17')](_0x4e6cb1[_0x67da('0x1f')],'id');return _0x4e6cb1[_0x67da('0x4a')](_0x4c0875)[_0x67da('0xb')](function(){for(var _0x19ab4f=0x0;_0x19ab4f<_0x4c0875[_0x67da('0x40')];_0x19ab4f+=0x1){_0x2460c3[_0x67da('0x4b')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4c0875[_0x19ab4f]),'UserId':Number(_0x4e6cb1['id'])});}});}})[_0x67da('0xb')](function(){if(_0xd32481===_0x67da('0x49')){var _0x4efb75=_[_0x67da('0x17')](_0x4e6cb1['MailInteractions'],'id');return _0x4e6cb1[_0x67da('0x4c')](_0x4efb75)[_0x67da('0xb')](function(){for(var _0x1f0939=0x0;_0x1f0939<_0x4efb75['length'];_0x1f0939+=0x1){_0x2460c3[_0x67da('0x4b')](_0x67da('0x4d'),{'MailInteractionId':Number(_0x4efb75[_0x1f0939]),'UserId':Number(_0x4e6cb1['id'])});}});}})['then'](function(){if(_0xd32481==='leave'){var _0x3375cc=_[_0x67da('0x17')](_0x4e6cb1[_0x67da('0x22')],'id');return _0x4e6cb1['removeFaxInteractions'](_0x3375cc)[_0x67da('0xb')](function(){for(var _0x5e5c92=0x0;_0x5e5c92<_0x3375cc['length'];_0x5e5c92+=0x1){_0x2460c3['emit'](_0x67da('0x4e'),{'FaxInteractionId':Number(_0x3375cc[_0x5e5c92]),'UserId':Number(_0x4e6cb1['id'])});}});}})['then'](function(){if(_0xd32481===_0x67da('0x49')){var _0x3753ab=_['map'](_0x4e6cb1[_0x67da('0x4f')],'id');return _0x4e6cb1[_0x67da('0x50')](_0x3753ab)[_0x67da('0xb')](function(){for(var _0x2c3271=0x0;_0x2c3271<_0x3753ab['length'];_0x2c3271+=0x1){_0x2460c3[_0x67da('0x4b')](_0x67da('0x51'),{'SmsInteractionId':Number(_0x3753ab[_0x2c3271]),'UserId':Number(_0x4e6cb1['id'])});}});}})['then'](function(){if(_0xd32481===_0x67da('0x49')){var _0x45f320=_[_0x67da('0x17')](_0x4e6cb1[_0x67da('0x24')],'id');return _0x4e6cb1[_0x67da('0x52')](_0x45f320)[_0x67da('0xb')](function(){for(var _0x4478b7=0x0;_0x4478b7<_0x45f320['length'];_0x4478b7+=0x1){_0x2460c3[_0x67da('0x4b')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x45f320[_0x4478b7]),'UserId':Number(_0x4e6cb1['id'])});}});}})[_0x67da('0xb')](function(){if(_0xd32481===_0x67da('0x49')){var _0xb1c3fa=_['map'](_0x4e6cb1[_0x67da('0x26')],'id');return _0x4e6cb1[_0x67da('0x53')](_0xb1c3fa)[_0x67da('0xb')](function(){for(var _0x414364=0x0;_0x414364<_0xb1c3fa[_0x67da('0x40')];_0x414364+=0x1){_0x2460c3[_0x67da('0x4b')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0xb1c3fa[_0x414364]),'UserId':Number(_0x4e6cb1['id'])});}});}})['catch'](function(_0x5b2f89){_0x45fe05[_0x67da('0x54')](_0x5b2f89);});}}function onDisconnect(_0x444f45,_0x254510){joinOrLeave(_0x444f45,_0x67da('0x49'),_0x254510);}function onConnect(_0x55db60){joinOrLeave(_0x55db60,'join');}exports[_0x67da('0x55')]=function(_0x473cf8){_0x473cf8['on'](_0x67da('0x56'),function(_0x194841){_0x194841['setMaxListeners'](0x0);_0x194841[_0x67da('0x57')]=_0x194841[_0x67da('0x58')]['connection'][_0x67da('0x59')]+':'+_0x194841[_0x67da('0x58')][_0x67da('0x56')][_0x67da('0x5a')];_0x194841[_0x67da('0x5b')]=new Date();_0x194841[_0x67da('0x54')]=function(_0x51eae5){console[_0x67da('0x54')](_0x67da('0x5c')+_0x194841[_0x67da('0x5d')]['name']+'['+_0x194841[_0x67da('0x57')]+']',_0x51eae5);};_0x194841['on']('disconnect',function(){onDisconnect(_0x194841,_0x473cf8);_0x194841[_0x67da('0x54')](_0x67da('0x5e'));});onConnect(_0x194841);_0x194841[_0x67da('0x54')](_0x67da('0x5f'));});};