2c9b4d8215e5e0c48ad3ba7916d52a6210c35482
[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 _0xd509=['User','name','agent','telephone','type','ivr','UserProfileSection','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','Telephones','Trunks','findAll','IvrCampaigns','UserProfileResource','resourceId','then','map','where','role','Campaign','format','%s:queue:%s','Agents','length','user:%s','handshake','query','find','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','userProfileId','VoiceQueue','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','mail','openchannel','whatsapp','telephone:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','MailInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','bluebird','../mysqldb','./environment'];(function(_0x1265ed,_0x4b85e8){var _0x5ac459=function(_0xf0c114){while(--_0xf0c114){_0x1265ed['push'](_0x1265ed['shift']());}};_0x5ac459(++_0x4b85e8);}(_0xd509,0xc9));var _0x9d50=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd509[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require(_0x9d50('0x0'));var db=require(_0x9d50('0x1'))['db'];var config=require(_0x9d50('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0x9d50('0x3')],'attributes':['id',_0x9d50('0x4'),'role'],'raw':!![],'where':{'role':_0x9d50('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x9d50('0x4')],'where':{'role':_0x9d50('0x6')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x9d50('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x9d50('0x4'),_0x9d50('0x7')],'where':{'type':_0x9d50('0x8')}};function getAssociatedResources(_0x1102b6,_0x365064,_0x5380be){return db[_0x9d50('0x9')]['findOne']({'where':{'name':_0x1102b6,'userProfileId':_0x365064},'raw':!![]})['then'](function(_0x2de74f){if(_0x2de74f){if(_0x2de74f['autoAssociation']){switch(_0x1102b6){case _0x9d50('0xa'):case _0x9d50('0xb'):case _0x9d50('0xc'):case _0x9d50('0xd'):case _0x9d50('0xe'):case _0x9d50('0xf'):case _0x9d50('0x10'):return db[_0x5380be]['findAll'](queryQueues);case _0x9d50('0x11'):return db[_0x5380be]['findAll'](queryTelephones);case _0x9d50('0x12'):return db[_0x5380be][_0x9d50('0x13')](queryTrunks);case _0x9d50('0x14'):return db[_0x5380be][_0x9d50('0x13')](queryCampaigns);}}else{return db[_0x9d50('0x15')][_0x9d50('0x13')]({'attributes':[_0x9d50('0x16')],'where':{'sectionId':_0x2de74f['id']},'raw':!![]})[_0x9d50('0x17')](function(_0x25f253){if(_0x25f253){var _0x304b42={'where':{'id':_[_0x9d50('0x18')](_0x25f253,_0x9d50('0x16'))},'raw':!![]};switch(_0x5380be){case'User':_0x304b42[_0x9d50('0x19')][_0x9d50('0x1a')]=_0x9d50('0x6');break;case _0x9d50('0x1b'):_0x304b42[_0x9d50('0x19')][_0x9d50('0x7')]=_0x9d50('0x8');break;}return db[_0x5380be][_0x9d50('0x13')](_0x304b42);}else{return[];}});}}else{return[];}})[_0x9d50('0x17')](function(_0x2d5619){return _0x2d5619;});}function joinOrLeaveQueues(_0x2965a3,_0x161b40,_0x24415e,_0x7582d1){_0x2965a3[_0x161b40](util[_0x9d50('0x1c')](_0x9d50('0x1d'),_0x24415e,_0x7582d1[_0x9d50('0x4')]));if(_0x7582d1[_0x9d50('0x1e')]){for(var _0x40026b=0x0;_0x40026b<_0x7582d1[_0x9d50('0x1e')][_0x9d50('0x1f')];_0x40026b+=0x1){_0x2965a3[_0x161b40](util[_0x9d50('0x1c')](_0x9d50('0x20'),_0x7582d1['Agents'][_0x40026b][_0x9d50('0x4')]));}}}function joinOrLeave(_0xcb4fc8,_0x2a50f7,_0x1adf7d){var _0x12ae02;if(_0xcb4fc8[_0x9d50('0x21')][_0x9d50('0x22')]['id']){db[_0x9d50('0x3')][_0x9d50('0x23')]({'attributes':['id','name',_0x9d50('0x1a'),'userProfileId'],'where':{'id':_0xcb4fc8['handshake'][_0x9d50('0x22')]['id']},'include':[{'model':db[_0x9d50('0x24')],'as':_0x9d50('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x9d50('0x26')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x9d50('0x27')],'as':_0x9d50('0x28'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x9d50('0x29'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x9d50('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x9d50('0x2b')],'as':_0x9d50('0x2c'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x3bd762){if(_0x3bd762){_0x12ae02=_0x3bd762;_0xcb4fc8[_0x2a50f7](util['format'](_0x9d50('0x20'),_0x3bd762[_0x9d50('0x4')]));var _0x1bb403=[];switch(_0x3bd762[_0x9d50('0x1a')]){case _0x9d50('0x2d'):_0xcb4fc8[_0x2a50f7](_0x9d50('0x2e'));_0xcb4fc8[_0x2a50f7](_0x9d50('0x2f'));if(queryQueues[_0x9d50('0x30')](_0x9d50('0x31'))){delete queryQueues['include'];}_0x1bb403[_0x9d50('0x32')](db['VoiceQueue']['findAll'](queryQueues));_0x1bb403[_0x9d50('0x32')](db[_0x9d50('0x33')][_0x9d50('0x13')](queryQueues));_0x1bb403['push'](db[_0x9d50('0x34')][_0x9d50('0x13')](queryQueues));_0x1bb403[_0x9d50('0x32')](db[_0x9d50('0x35')][_0x9d50('0x13')](queryQueues));_0x1bb403[_0x9d50('0x32')](db[_0x9d50('0x36')][_0x9d50('0x13')](queryQueues));_0x1bb403[_0x9d50('0x32')](db[_0x9d50('0x37')][_0x9d50('0x13')](queryQueues));_0x1bb403[_0x9d50('0x32')](db[_0x9d50('0x38')][_0x9d50('0x13')](queryQueues));_0x1bb403[_0x9d50('0x32')](db['User'][_0x9d50('0x13')](queryTelephones));_0x1bb403['push'](db[_0x9d50('0x39')]['findAll'](queryTrunks));_0x1bb403[_0x9d50('0x32')](db[_0x9d50('0x1b')][_0x9d50('0x13')](queryCampaigns));_0x1bb403[_0x9d50('0x32')](db[_0x9d50('0x3')]['findAll'](queryAgents));break;case _0x9d50('0x3a'):_0xcb4fc8[_0x2a50f7](_0x9d50('0x2e'));_0xcb4fc8[_0x2a50f7](_0x9d50('0x2f'));_0x1bb403[_0x9d50('0x32')](getAssociatedResources(_0x9d50('0xa'),_0x3bd762[_0x9d50('0x3b')],_0x9d50('0x3c')));_0x1bb403[_0x9d50('0x32')](getAssociatedResources('ChatQueues',_0x3bd762[_0x9d50('0x3b')],'ChatQueue'));_0x1bb403[_0x9d50('0x32')](getAssociatedResources(_0x9d50('0xc'),_0x3bd762[_0x9d50('0x3b')],_0x9d50('0x34')));_0x1bb403[_0x9d50('0x32')](getAssociatedResources(_0x9d50('0xd'),_0x3bd762['userProfileId'],'SmsQueue'));_0x1bb403[_0x9d50('0x32')](getAssociatedResources(_0x9d50('0xe'),_0x3bd762[_0x9d50('0x3b')],_0x9d50('0x36')));_0x1bb403[_0x9d50('0x32')](getAssociatedResources(_0x9d50('0xf'),_0x3bd762[_0x9d50('0x3b')],_0x9d50('0x37')));_0x1bb403[_0x9d50('0x32')](getAssociatedResources(_0x9d50('0x10'),_0x3bd762[_0x9d50('0x3b')],'WhatsappQueue'));_0x1bb403[_0x9d50('0x32')](getAssociatedResources(_0x9d50('0x11'),_0x3bd762['userProfileId'],_0x9d50('0x3')));_0x1bb403[_0x9d50('0x32')](getAssociatedResources(_0x9d50('0x12'),_0x3bd762[_0x9d50('0x3b')],_0x9d50('0x39')));_0x1bb403[_0x9d50('0x32')](getAssociatedResources(_0x9d50('0x14'),_0x3bd762['userProfileId'],'Campaign'));_0x1bb403['push'](db[_0x9d50('0x3')][_0x9d50('0x13')](queryAgents));break;case _0x9d50('0x5'):_0xcb4fc8[_0x2a50f7](_0x9d50('0x2e'));_0xcb4fc8[_0x2a50f7](_0x9d50('0x2f'));_0x1bb403['push'](_0x3bd762['getVoiceQueues']({'attributes':['id',_0x9d50('0x4')]}));_0x1bb403[_0x9d50('0x32')](_0x3bd762[_0x9d50('0x3d')]({'attributes':['id',_0x9d50('0x4')]}));_0x1bb403[_0x9d50('0x32')](_0x3bd762[_0x9d50('0x3e')]({'attributes':['id',_0x9d50('0x4')]}));_0x1bb403[_0x9d50('0x32')](_0x3bd762[_0x9d50('0x3f')]({'attributes':['id',_0x9d50('0x4')]}));_0x1bb403['push'](_0x3bd762[_0x9d50('0x40')]({'attributes':['id',_0x9d50('0x4')]}));_0x1bb403[_0x9d50('0x32')](_0x3bd762[_0x9d50('0x41')]({'attributes':['id',_0x9d50('0x4')]}));_0x1bb403['push'](_0x3bd762['getWhatsappQueues']({'attributes':['id',_0x9d50('0x4')]}));break;}return BPromise[_0x9d50('0x42')](_0x1bb403);}})[_0x9d50('0x17')](function(_0x32b6bd){if(_0x32b6bd&&_0x32b6bd[_0x9d50('0x1f')]){for(var _0x58cd38=0x0;_0x58cd38<_0x32b6bd[_0x9d50('0x1f')];_0x58cd38+=0x1){for(var _0x578819=0x0;_0x578819<_0x32b6bd[_0x58cd38]['length'];_0x578819+=0x1){switch(_0x58cd38){case 0x0:joinOrLeaveQueues(_0xcb4fc8,_0x2a50f7,_0x9d50('0x43'),_0x32b6bd[_0x58cd38][_0x578819]);break;case 0x1:joinOrLeaveQueues(_0xcb4fc8,_0x2a50f7,_0x9d50('0x44'),_0x32b6bd[_0x58cd38][_0x578819]);break;case 0x2:joinOrLeaveQueues(_0xcb4fc8,_0x2a50f7,'fax',_0x32b6bd[_0x58cd38][_0x578819]);break;case 0x3:joinOrLeaveQueues(_0xcb4fc8,_0x2a50f7,'sms',_0x32b6bd[_0x58cd38][_0x578819]);break;case 0x4:joinOrLeaveQueues(_0xcb4fc8,_0x2a50f7,_0x9d50('0x45'),_0x32b6bd[_0x58cd38][_0x578819]);break;case 0x5:joinOrLeaveQueues(_0xcb4fc8,_0x2a50f7,_0x9d50('0x46'),_0x32b6bd[_0x58cd38][_0x578819]);break;case 0x6:joinOrLeaveQueues(_0xcb4fc8,_0x2a50f7,_0x9d50('0x47'),_0x32b6bd[_0x58cd38][_0x578819]);break;case 0x7:if(_0x12ae02[_0x9d50('0x1a')]!=='agent')_0xcb4fc8[_0x2a50f7](util['format'](_0x9d50('0x48'),_0x32b6bd[_0x58cd38][_0x578819]['name']));break;case 0x8:if(_0x12ae02['role']!==_0x9d50('0x5'))_0xcb4fc8[_0x2a50f7](util[_0x9d50('0x1c')]('trunk:%s',_0x32b6bd[_0x58cd38][_0x578819]['name']));break;case 0x9:if(_0x12ae02[_0x9d50('0x1a')]!==_0x9d50('0x5'))_0xcb4fc8[_0x2a50f7](util[_0x9d50('0x1c')]('campaign:%s:%s',_0x32b6bd[_0x58cd38][_0x578819][_0x9d50('0x7')],_0x32b6bd[_0x58cd38][_0x578819][_0x9d50('0x4')]));break;case 0xa:_0xcb4fc8[_0x2a50f7](util['format'](_0x9d50('0x20'),_0x32b6bd[_0x58cd38][_0x578819]['name']));break;}}}}})[_0x9d50('0x17')](function(){if(_0x2a50f7==='leave'){var _0xdf25b1=_['map'](_0x12ae02[_0x9d50('0x25')],'id');return _0x12ae02[_0x9d50('0x49')](_0xdf25b1)[_0x9d50('0x17')](function(){for(var _0x1f2d0a=0x0;_0x1f2d0a<_0xdf25b1['length'];_0x1f2d0a+=0x1){_0x1adf7d[_0x9d50('0x4a')](_0x9d50('0x4b'),{'ChatInteractionId':Number(_0xdf25b1[_0x1f2d0a]),'UserId':Number(_0x12ae02['id'])});}});}})[_0x9d50('0x17')](function(){if(_0x2a50f7===_0x9d50('0x4c')){var _0x40f5ea=_[_0x9d50('0x18')](_0x12ae02[_0x9d50('0x4d')],'id');return _0x12ae02[_0x9d50('0x4e')](_0x40f5ea)[_0x9d50('0x17')](function(){for(var _0x482cc0=0x0;_0x482cc0<_0x40f5ea['length'];_0x482cc0+=0x1){_0x1adf7d[_0x9d50('0x4a')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x40f5ea[_0x482cc0]),'UserId':Number(_0x12ae02['id'])});}});}})[_0x9d50('0x17')](function(){if(_0x2a50f7===_0x9d50('0x4c')){var _0x4d469d=_['map'](_0x12ae02['FaxInteractions'],'id');return _0x12ae02[_0x9d50('0x4f')](_0x4d469d)[_0x9d50('0x17')](function(){for(var _0xdaac34=0x0;_0xdaac34<_0x4d469d[_0x9d50('0x1f')];_0xdaac34+=0x1){_0x1adf7d[_0x9d50('0x4a')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x4d469d[_0xdaac34]),'UserId':Number(_0x12ae02['id'])});}});}})[_0x9d50('0x17')](function(){if(_0x2a50f7==='leave'){var _0x331bc8=_[_0x9d50('0x18')](_0x12ae02[_0x9d50('0x29')],'id');return _0x12ae02[_0x9d50('0x50')](_0x331bc8)[_0x9d50('0x17')](function(){for(var _0x44f45d=0x0;_0x44f45d<_0x331bc8['length'];_0x44f45d+=0x1){_0x1adf7d[_0x9d50('0x4a')](_0x9d50('0x51'),{'SmsInteractionId':Number(_0x331bc8[_0x44f45d]),'UserId':Number(_0x12ae02['id'])});}});}})[_0x9d50('0x17')](function(){if(_0x2a50f7===_0x9d50('0x4c')){var _0x20289f=_[_0x9d50('0x18')](_0x12ae02[_0x9d50('0x2a')],'id');return _0x12ae02[_0x9d50('0x52')](_0x20289f)['then'](function(){for(var _0x2630ec=0x0;_0x2630ec<_0x20289f['length'];_0x2630ec+=0x1){_0x1adf7d['emit'](_0x9d50('0x53'),{'OpenchannelInteractionId':Number(_0x20289f[_0x2630ec]),'UserId':Number(_0x12ae02['id'])});}});}})['then'](function(){if(_0x2a50f7===_0x9d50('0x4c')){var _0x35f763=_['map'](_0x12ae02[_0x9d50('0x2c')],'id');return _0x12ae02[_0x9d50('0x54')](_0x35f763)['then'](function(){for(var _0x493396=0x0;_0x493396<_0x35f763[_0x9d50('0x1f')];_0x493396+=0x1){_0x1adf7d[_0x9d50('0x4a')](_0x9d50('0x55'),{'WhatsappInteractionId':Number(_0x35f763[_0x493396]),'UserId':Number(_0x12ae02['id'])});}});}})[_0x9d50('0x56')](function(_0xf13d1){_0xcb4fc8['log'](_0xf13d1);});}}function onDisconnect(_0x3f6ef6,_0x241713){joinOrLeave(_0x3f6ef6,'leave',_0x241713);}function onConnect(_0x445fb0){joinOrLeave(_0x445fb0,_0x9d50('0x57'));}exports[_0x9d50('0x58')]=function(_0x2b3273){_0x2b3273['on'](_0x9d50('0x59'),function(_0x67c3d4){_0x67c3d4[_0x9d50('0x5a')](0x0);_0x67c3d4[_0x9d50('0x5b')]=_0x67c3d4[_0x9d50('0x5c')][_0x9d50('0x59')][_0x9d50('0x5d')]+':'+_0x67c3d4['request']['connection'][_0x9d50('0x5e')];_0x67c3d4[_0x9d50('0x5f')]=new Date();_0x67c3d4[_0x9d50('0x60')]=function(_0x2c6d6d){console[_0x9d50('0x60')](_0x9d50('0x61')+_0x67c3d4[_0x9d50('0x62')][_0x9d50('0x4')]+'['+_0x67c3d4[_0x9d50('0x5b')]+']',_0x2c6d6d);};_0x67c3d4['on'](_0x9d50('0x63'),function(){onDisconnect(_0x67c3d4,_0x2b3273);_0x67c3d4['log'](_0x9d50('0x64'));});onConnect(_0x67c3d4);_0x67c3d4[_0x9d50('0x60')](_0x9d50('0x65'));});};