66e0e68a9dc6522027c47dc4a8daaa151554b805
[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 _0x052e=['query','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','ChatQueues','SmsQueues','WhatsappQueues','agent','getChatQueues','getFaxQueues','getMailQueues','getWhatsappQueues','all','length','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','FaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','connection','setMaxListeners','request','remoteAddress','remotePort','address','DISCONNECTED','CONNECTED','bluebird','../mysqldb','name','Agents','role','telephone','type','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','FaxQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','map','User','where','format','%s:queue:%s','user:%s','userProfileId','handshake'];(function(_0x5b4052,_0x1e8e50){var _0x5a4080=function(_0x44d432){while(--_0x44d432){_0x5b4052['push'](_0x5b4052['shift']());}};_0x5a4080(++_0x1e8e50);}(_0x052e,0x101));var _0xe052=function(_0xb73ba0,_0x159f3d){_0xb73ba0=_0xb73ba0-0x0;var _0x32e0b7=_0x052e[_0xb73ba0];return _0x32e0b7;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require(_0xe052('0x0'));var db=require(_0xe052('0x1'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xe052('0x2')],'include':[{'as':_0xe052('0x3'),'model':db['User'],'attributes':['id','name',_0xe052('0x4')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xe052('0x5')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xe052('0x2'),_0xe052('0x6')],'where':{'type':_0xe052('0x7')}};function getAssociatedResources(_0x29c92e,_0x2f7afe,_0xd97e1e){return db[_0xe052('0x8')]['findOne']({'where':{'name':_0x29c92e,'userProfileId':_0x2f7afe},'raw':!![]})[_0xe052('0x9')](function(_0x3b6a3b){if(_0x3b6a3b){if(_0x3b6a3b[_0xe052('0xa')]){switch(_0x29c92e){case _0xe052('0xb'):case'ChatQueues':case _0xe052('0xc'):case'SmsQueues':case _0xe052('0xd'):case _0xe052('0xe'):case'WhatsappQueues':return db[_0xd97e1e][_0xe052('0xf')](queryQueues);case _0xe052('0x10'):return db[_0xd97e1e][_0xe052('0xf')](queryTelephones);case _0xe052('0x11'):return db[_0xd97e1e][_0xe052('0xf')](queryTrunks);case _0xe052('0x12'):return db[_0xd97e1e]['findAll'](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0xe052('0x13')],'where':{'sectionId':_0x3b6a3b['id']},'raw':!![]})[_0xe052('0x9')](function(_0x5633a7){if(_0x5633a7){var _0x23cae8={'where':{'id':_[_0xe052('0x14')](_0x5633a7,'resourceId')},'raw':!![]};switch(_0xd97e1e){case _0xe052('0x15'):_0x23cae8[_0xe052('0x16')][_0xe052('0x4')]=_0xe052('0x5');break;case'Campaign':_0x23cae8['where']['type']='ivr';break;}return db[_0xd97e1e][_0xe052('0xf')](_0x23cae8);}else{return[];}});}}else{return[];}})[_0xe052('0x9')](function(_0x5546c4){return _0x5546c4;});}function joinOrLeaveQueues(_0x1c1820,_0x3959ee,_0x56e39f,_0x2cd2a2){_0x1c1820[_0x3959ee](util[_0xe052('0x17')](_0xe052('0x18'),_0x56e39f,_0x2cd2a2[_0xe052('0x2')]));if(_0x2cd2a2[_0xe052('0x3')]){for(var _0x5483fd=0x0;_0x5483fd<_0x2cd2a2[_0xe052('0x3')]['length'];_0x5483fd+=0x1){_0x1c1820[_0x3959ee](util[_0xe052('0x17')](_0xe052('0x19'),_0x2cd2a2[_0xe052('0x3')][_0x5483fd]['name']));}}}function joinOrLeave(_0x24fd4b,_0x4ba2e8,_0x35a7bd){var _0x3ccde4;if(_0x24fd4b['handshake']['query']['id']){db[_0xe052('0x15')]['find']({'attributes':['id',_0xe052('0x2'),_0xe052('0x4'),_0xe052('0x1a')],'where':{'id':_0x24fd4b[_0xe052('0x1b')][_0xe052('0x1c')]['id']},'include':[{'model':db[_0xe052('0x1d')],'as':_0xe052('0x1e'),'attributes':['id'],'raw':!![]},{'model':db[_0xe052('0x1f')],'as':_0xe052('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0xe052('0x21')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe052('0x22')],'as':_0xe052('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xe052('0x24')],'as':_0xe052('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xe052('0x26')],'as':_0xe052('0x27'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x37608d){if(_0x37608d){_0x3ccde4=_0x37608d;_0x24fd4b[_0x4ba2e8](util[_0xe052('0x17')](_0xe052('0x19'),_0x37608d[_0xe052('0x2')]));var _0x426845=[];switch(_0x37608d[_0xe052('0x4')]){case _0xe052('0x28'):_0x24fd4b[_0x4ba2e8](_0xe052('0x29'));_0x24fd4b[_0x4ba2e8](_0xe052('0x2a'));if(queryQueues['hasOwnProperty'](_0xe052('0x2b'))){delete queryQueues[_0xe052('0x2b')];}_0x426845[_0xe052('0x2c')](db['VoiceQueue'][_0xe052('0xf')](queryQueues));_0x426845['push'](db[_0xe052('0x2d')][_0xe052('0xf')](queryQueues));_0x426845[_0xe052('0x2c')](db[_0xe052('0x2e')]['findAll'](queryQueues));_0x426845['push'](db[_0xe052('0x2f')][_0xe052('0xf')](queryQueues));_0x426845['push'](db[_0xe052('0x30')][_0xe052('0xf')](queryQueues));_0x426845[_0xe052('0x2c')](db[_0xe052('0x31')][_0xe052('0xf')](queryQueues));_0x426845[_0xe052('0x2c')](db[_0xe052('0x32')][_0xe052('0xf')](queryQueues));_0x426845[_0xe052('0x2c')](db[_0xe052('0x15')][_0xe052('0xf')](queryTelephones));_0x426845[_0xe052('0x2c')](db[_0xe052('0x33')]['findAll'](queryTrunks));_0x426845['push'](db[_0xe052('0x34')]['findAll'](queryCampaigns));_0x426845['push'](db['User'][_0xe052('0xf')](queryAgents));break;case'user':_0x24fd4b[_0x4ba2e8]('voice:inbound');_0x24fd4b[_0x4ba2e8](_0xe052('0x2a'));_0x426845['push'](getAssociatedResources(_0xe052('0xb'),_0x37608d[_0xe052('0x1a')],'VoiceQueue'));_0x426845[_0xe052('0x2c')](getAssociatedResources(_0xe052('0x35'),_0x37608d[_0xe052('0x1a')],_0xe052('0x2d')));_0x426845[_0xe052('0x2c')](getAssociatedResources(_0xe052('0xc'),_0x37608d[_0xe052('0x1a')],_0xe052('0x2e')));_0x426845[_0xe052('0x2c')](getAssociatedResources(_0xe052('0x36'),_0x37608d[_0xe052('0x1a')],_0xe052('0x2f')));_0x426845[_0xe052('0x2c')](getAssociatedResources(_0xe052('0xd'),_0x37608d[_0xe052('0x1a')],'MailQueue'));_0x426845[_0xe052('0x2c')](getAssociatedResources(_0xe052('0xe'),_0x37608d[_0xe052('0x1a')],_0xe052('0x31')));_0x426845[_0xe052('0x2c')](getAssociatedResources(_0xe052('0x37'),_0x37608d[_0xe052('0x1a')],'WhatsappQueue'));_0x426845[_0xe052('0x2c')](getAssociatedResources(_0xe052('0x10'),_0x37608d[_0xe052('0x1a')],_0xe052('0x15')));_0x426845[_0xe052('0x2c')](getAssociatedResources(_0xe052('0x11'),_0x37608d[_0xe052('0x1a')],_0xe052('0x33')));_0x426845[_0xe052('0x2c')](getAssociatedResources(_0xe052('0x12'),_0x37608d[_0xe052('0x1a')],_0xe052('0x34')));_0x426845[_0xe052('0x2c')](db[_0xe052('0x15')][_0xe052('0xf')](queryAgents));break;case _0xe052('0x38'):_0x24fd4b[_0x4ba2e8](_0xe052('0x29'));_0x24fd4b[_0x4ba2e8](_0xe052('0x2a'));_0x426845[_0xe052('0x2c')](_0x37608d['getVoiceQueues']({'attributes':['id',_0xe052('0x2')]}));_0x426845[_0xe052('0x2c')](_0x37608d[_0xe052('0x39')]({'attributes':['id',_0xe052('0x2')]}));_0x426845['push'](_0x37608d[_0xe052('0x3a')]({'attributes':['id',_0xe052('0x2')]}));_0x426845[_0xe052('0x2c')](_0x37608d['getSmsQueues']({'attributes':['id',_0xe052('0x2')]}));_0x426845[_0xe052('0x2c')](_0x37608d[_0xe052('0x3b')]({'attributes':['id',_0xe052('0x2')]}));_0x426845[_0xe052('0x2c')](_0x37608d['getOpenchannelQueues']({'attributes':['id',_0xe052('0x2')]}));_0x426845['push'](_0x37608d[_0xe052('0x3c')]({'attributes':['id',_0xe052('0x2')]}));break;}return BPromise[_0xe052('0x3d')](_0x426845);}})[_0xe052('0x9')](function(_0x455a6b){if(_0x455a6b&&_0x455a6b['length']){for(var _0x333e2d=0x0;_0x333e2d<_0x455a6b[_0xe052('0x3e')];_0x333e2d+=0x1){for(var _0xc7a124=0x0;_0xc7a124<_0x455a6b[_0x333e2d][_0xe052('0x3e')];_0xc7a124+=0x1){switch(_0x333e2d){case 0x0:joinOrLeaveQueues(_0x24fd4b,_0x4ba2e8,_0xe052('0x3f'),_0x455a6b[_0x333e2d][_0xc7a124]);break;case 0x1:joinOrLeaveQueues(_0x24fd4b,_0x4ba2e8,_0xe052('0x40'),_0x455a6b[_0x333e2d][_0xc7a124]);break;case 0x2:joinOrLeaveQueues(_0x24fd4b,_0x4ba2e8,_0xe052('0x41'),_0x455a6b[_0x333e2d][_0xc7a124]);break;case 0x3:joinOrLeaveQueues(_0x24fd4b,_0x4ba2e8,_0xe052('0x42'),_0x455a6b[_0x333e2d][_0xc7a124]);break;case 0x4:joinOrLeaveQueues(_0x24fd4b,_0x4ba2e8,_0xe052('0x43'),_0x455a6b[_0x333e2d][_0xc7a124]);break;case 0x5:joinOrLeaveQueues(_0x24fd4b,_0x4ba2e8,_0xe052('0x44'),_0x455a6b[_0x333e2d][_0xc7a124]);break;case 0x6:joinOrLeaveQueues(_0x24fd4b,_0x4ba2e8,_0xe052('0x45'),_0x455a6b[_0x333e2d][_0xc7a124]);break;case 0x7:_0x24fd4b[_0x4ba2e8](util[_0xe052('0x17')](_0xe052('0x46'),_0x455a6b[_0x333e2d][_0xc7a124][_0xe052('0x2')]));break;case 0x8:_0x24fd4b[_0x4ba2e8](util[_0xe052('0x17')](_0xe052('0x47'),_0x455a6b[_0x333e2d][_0xc7a124][_0xe052('0x2')]));break;case 0x9:_0x24fd4b[_0x4ba2e8](util[_0xe052('0x17')]('campaign:%s:%s',_0x455a6b[_0x333e2d][_0xc7a124][_0xe052('0x6')],_0x455a6b[_0x333e2d][_0xc7a124][_0xe052('0x2')]));break;case 0xa:_0x24fd4b[_0x4ba2e8](util[_0xe052('0x17')]('user:%s',_0x455a6b[_0x333e2d][_0xc7a124][_0xe052('0x2')]));break;}}}}})[_0xe052('0x9')](function(){if(_0x4ba2e8===_0xe052('0x48')){var _0x4450ac=_[_0xe052('0x14')](_0x3ccde4[_0xe052('0x1e')],'id');return _0x3ccde4[_0xe052('0x49')](_0x4450ac)[_0xe052('0x9')](function(){for(var _0xb7d761=0x0;_0xb7d761<_0x4450ac['length'];_0xb7d761+=0x1){_0x35a7bd[_0xe052('0x4a')](_0xe052('0x4b'),{'ChatInteractionId':Number(_0x4450ac[_0xb7d761]),'UserId':Number(_0x3ccde4['id'])});}});}})[_0xe052('0x9')](function(){if(_0x4ba2e8===_0xe052('0x48')){var _0xa31a5b=_['map'](_0x3ccde4[_0xe052('0x20')],'id');return _0x3ccde4[_0xe052('0x4c')](_0xa31a5b)['then'](function(){for(var _0x992c89=0x0;_0x992c89<_0xa31a5b['length'];_0x992c89+=0x1){_0x35a7bd[_0xe052('0x4a')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0xa31a5b[_0x992c89]),'UserId':Number(_0x3ccde4['id'])});}});}})['then'](function(){if(_0x4ba2e8===_0xe052('0x48')){var _0x55205f=_[_0xe052('0x14')](_0x3ccde4[_0xe052('0x4d')],'id');return _0x3ccde4['removeFaxInteractions'](_0x55205f)[_0xe052('0x9')](function(){for(var _0x579bbf=0x0;_0x579bbf<_0x55205f['length'];_0x579bbf+=0x1){_0x35a7bd[_0xe052('0x4a')](_0xe052('0x4e'),{'FaxInteractionId':Number(_0x55205f[_0x579bbf]),'UserId':Number(_0x3ccde4['id'])});}});}})[_0xe052('0x9')](function(){if(_0x4ba2e8===_0xe052('0x48')){var _0x5cd26b=_[_0xe052('0x14')](_0x3ccde4['SmsInteractions'],'id');return _0x3ccde4[_0xe052('0x4f')](_0x5cd26b)[_0xe052('0x9')](function(){for(var _0x4a082a=0x0;_0x4a082a<_0x5cd26b['length'];_0x4a082a+=0x1){_0x35a7bd['emit'](_0xe052('0x50'),{'SmsInteractionId':Number(_0x5cd26b[_0x4a082a]),'UserId':Number(_0x3ccde4['id'])});}});}})[_0xe052('0x9')](function(){if(_0x4ba2e8===_0xe052('0x48')){var _0x116179=_[_0xe052('0x14')](_0x3ccde4['OpenchannelInteractions'],'id');return _0x3ccde4['removeOpenchannelInteractions'](_0x116179)['then'](function(){for(var _0x20a7bb=0x0;_0x20a7bb<_0x116179['length'];_0x20a7bb+=0x1){_0x35a7bd['emit'](_0xe052('0x51'),{'OpenchannelInteractionId':Number(_0x116179[_0x20a7bb]),'UserId':Number(_0x3ccde4['id'])});}});}})['then'](function(){if(_0x4ba2e8==='leave'){var _0x4215cf=_['map'](_0x3ccde4['WhatsappInteractions'],'id');return _0x3ccde4[_0xe052('0x52')](_0x4215cf)['then'](function(){for(var _0x28535b=0x0;_0x28535b<_0x4215cf[_0xe052('0x3e')];_0x28535b+=0x1){_0x35a7bd[_0xe052('0x4a')](_0xe052('0x53'),{'WhatsappInteractionId':Number(_0x4215cf[_0x28535b]),'UserId':Number(_0x3ccde4['id'])});}});}})['catch'](function(_0x587c24){_0x24fd4b[_0xe052('0x54')](_0x587c24);});}}function onDisconnect(_0x34f32f,_0x9d9ac2){joinOrLeave(_0x34f32f,'leave',_0x9d9ac2);}function onConnect(_0x590926){joinOrLeave(_0x590926,_0xe052('0x55'));}exports[_0xe052('0x56')]=function(_0x4be2fe){_0x4be2fe['on'](_0xe052('0x57'),function(_0x538479){_0x538479[_0xe052('0x58')](0x0);_0x538479['address']=_0x538479[_0xe052('0x59')][_0xe052('0x57')][_0xe052('0x5a')]+':'+_0x538479[_0xe052('0x59')][_0xe052('0x57')][_0xe052('0x5b')];_0x538479['connectedAt']=new Date();_0x538479[_0xe052('0x54')]=function(_0x206d48){console['log']('SocketIO\x20'+_0x538479['nsp']['name']+'['+_0x538479[_0xe052('0x5c')]+']',_0x206d48);};_0x538479['on']('disconnect',function(){onDisconnect(_0x538479,_0x4be2fe);_0x538479[_0xe052('0x54')](_0xe052('0x5d'));});onConnect(_0x538479);_0x538479[_0xe052('0x54')](_0xe052('0x5e'));});};