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 _0x5e9c=['UserProfileSection','findOne','then','autoAssociation','FaxQueues','SmsQueues','WhatsappQueues','findAll','IvrCampaigns','UserProfileResource','map','where','role','telephone','Campaign','type','format','%s:queue:%s','Agents','length','user:%s','query','find','userProfileId','handshake','ChatInteractions','MailInteractions','FaxInteractions','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','include','push','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','Trunk','user','voice:outbound','VoiceQueues','VoiceQueue','MailQueues','OpenchannelQueues','WhatsappQueue','Telephones','Trunks','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','leave','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','setMaxListeners','address','request','connection','remotePort','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','util','bluebird','../mysqldb','name','User','agent','ivr'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5e9c,0x17c));var _0xc5e9=function(_0xfda70e,_0x34a343){_0xfda70e=_0xfda70e-0x0;var _0x2aa4a8=_0x5e9c[_0xfda70e];return _0x2aa4a8;};'use strict';var _=require(_0xc5e9('0x0'));var util=require(_0xc5e9('0x1'));var BPromise=require(_0xc5e9('0x2'));var db=require(_0xc5e9('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xc5e9('0x4')],'include':[{'as':'Agents','model':db[_0xc5e9('0x5')],'attributes':['id',_0xc5e9('0x4'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xc5e9('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xc5e9('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xc5e9('0x4')],'where':{'role':_0xc5e9('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xc5e9('0x4'),'type'],'where':{'type':_0xc5e9('0x7')}};function getAssociatedResources(_0x4760b6,_0x2c0bbc,_0x5248b1){return db[_0xc5e9('0x8')][_0xc5e9('0x9')]({'where':{'name':_0x4760b6,'userProfileId':_0x2c0bbc},'raw':!![]})[_0xc5e9('0xa')](function(_0x41cde1){if(_0x41cde1){if(_0x41cde1[_0xc5e9('0xb')]){switch(_0x4760b6){case'VoiceQueues':case'ChatQueues':case _0xc5e9('0xc'):case _0xc5e9('0xd'):case'MailQueues':case'OpenchannelQueues':case _0xc5e9('0xe'):return db[_0x5248b1][_0xc5e9('0xf')](queryQueues);case'Telephones':return db[_0x5248b1]['findAll'](queryTelephones);case'Trunks':return db[_0x5248b1]['findAll'](queryTrunks);case _0xc5e9('0x10'):return db[_0x5248b1]['findAll'](queryCampaigns);}}else{return db[_0xc5e9('0x11')][_0xc5e9('0xf')]({'attributes':['resourceId'],'where':{'sectionId':_0x41cde1['id']},'raw':!![]})[_0xc5e9('0xa')](function(_0x3586c1){if(_0x3586c1){var _0x51c3e2={'where':{'id':_[_0xc5e9('0x12')](_0x3586c1,'resourceId')},'raw':!![]};switch(_0x5248b1){case'User':_0x51c3e2[_0xc5e9('0x13')][_0xc5e9('0x14')]=_0xc5e9('0x15');break;case _0xc5e9('0x16'):_0x51c3e2[_0xc5e9('0x13')][_0xc5e9('0x17')]=_0xc5e9('0x7');break;}return db[_0x5248b1][_0xc5e9('0xf')](_0x51c3e2);}else{return[];}});}}else{return[];}})[_0xc5e9('0xa')](function(_0x47605f){return _0x47605f;});}function joinOrLeaveQueues(_0x29fa04,_0x4cb252,_0x44cd57,_0x410e18){_0x29fa04[_0x4cb252](util[_0xc5e9('0x18')](_0xc5e9('0x19'),_0x44cd57,_0x410e18[_0xc5e9('0x4')]));if(_0x410e18[_0xc5e9('0x1a')]){for(var _0x3ee8cd=0x0;_0x3ee8cd<_0x410e18[_0xc5e9('0x1a')][_0xc5e9('0x1b')];_0x3ee8cd+=0x1){_0x29fa04[_0x4cb252](util[_0xc5e9('0x18')](_0xc5e9('0x1c'),_0x410e18[_0xc5e9('0x1a')][_0x3ee8cd]['name']));}}}function joinOrLeave(_0x242f14,_0x1a0274,_0x16f2ba){var _0x30882f;if(_0x242f14['handshake'][_0xc5e9('0x1d')]['id']){db['User'][_0xc5e9('0x1e')]({'attributes':['id',_0xc5e9('0x4'),_0xc5e9('0x14'),_0xc5e9('0x1f')],'where':{'id':_0x242f14[_0xc5e9('0x20')][_0xc5e9('0x1d')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0xc5e9('0x21'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xc5e9('0x22'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0xc5e9('0x23'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0xc5e9('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xc5e9('0x25')],'as':_0xc5e9('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xc5e9('0x27')],'as':_0xc5e9('0x28'),'attributes':['id'],'raw':!![]}]})[_0xc5e9('0xa')](function(_0x12b677){if(_0x12b677){_0x30882f=_0x12b677;_0x242f14[_0x1a0274](util[_0xc5e9('0x18')]('user:%s',_0x12b677[_0xc5e9('0x4')]));var _0x59de69=[];switch(_0x12b677['role']){case _0xc5e9('0x29'):_0x242f14[_0x1a0274](_0xc5e9('0x2a'));_0x242f14[_0x1a0274]('voice:outbound');if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0xc5e9('0x2b')];}_0x59de69['push'](db['VoiceQueue'][_0xc5e9('0xf')](queryQueues));_0x59de69[_0xc5e9('0x2c')](db[_0xc5e9('0x2d')]['findAll'](queryQueues));_0x59de69[_0xc5e9('0x2c')](db[_0xc5e9('0x2e')][_0xc5e9('0xf')](queryQueues));_0x59de69[_0xc5e9('0x2c')](db['SmsQueue']['findAll'](queryQueues));_0x59de69[_0xc5e9('0x2c')](db[_0xc5e9('0x2f')][_0xc5e9('0xf')](queryQueues));_0x59de69[_0xc5e9('0x2c')](db[_0xc5e9('0x30')][_0xc5e9('0xf')](queryQueues));_0x59de69[_0xc5e9('0x2c')](db['WhatsappQueue'][_0xc5e9('0xf')](queryQueues));_0x59de69[_0xc5e9('0x2c')](db[_0xc5e9('0x5')]['findAll'](queryTelephones));_0x59de69[_0xc5e9('0x2c')](db[_0xc5e9('0x31')][_0xc5e9('0xf')](queryTrunks));_0x59de69[_0xc5e9('0x2c')](db[_0xc5e9('0x16')][_0xc5e9('0xf')](queryCampaigns));_0x59de69[_0xc5e9('0x2c')](db[_0xc5e9('0x5')]['findAll'](queryAgents));break;case _0xc5e9('0x32'):_0x242f14[_0x1a0274](_0xc5e9('0x2a'));_0x242f14[_0x1a0274](_0xc5e9('0x33'));_0x59de69[_0xc5e9('0x2c')](getAssociatedResources(_0xc5e9('0x34'),_0x12b677[_0xc5e9('0x1f')],_0xc5e9('0x35')));_0x59de69[_0xc5e9('0x2c')](getAssociatedResources('ChatQueues',_0x12b677[_0xc5e9('0x1f')],_0xc5e9('0x2d')));_0x59de69[_0xc5e9('0x2c')](getAssociatedResources(_0xc5e9('0xc'),_0x12b677['userProfileId'],_0xc5e9('0x2e')));_0x59de69['push'](getAssociatedResources('SmsQueues',_0x12b677['userProfileId'],'SmsQueue'));_0x59de69['push'](getAssociatedResources(_0xc5e9('0x36'),_0x12b677[_0xc5e9('0x1f')],_0xc5e9('0x2f')));_0x59de69['push'](getAssociatedResources(_0xc5e9('0x37'),_0x12b677[_0xc5e9('0x1f')],_0xc5e9('0x30')));_0x59de69['push'](getAssociatedResources(_0xc5e9('0xe'),_0x12b677['userProfileId'],_0xc5e9('0x38')));_0x59de69[_0xc5e9('0x2c')](getAssociatedResources(_0xc5e9('0x39'),_0x12b677[_0xc5e9('0x1f')],_0xc5e9('0x5')));_0x59de69[_0xc5e9('0x2c')](getAssociatedResources(_0xc5e9('0x3a'),_0x12b677[_0xc5e9('0x1f')],_0xc5e9('0x31')));_0x59de69['push'](getAssociatedResources(_0xc5e9('0x10'),_0x12b677[_0xc5e9('0x1f')],_0xc5e9('0x16')));_0x59de69['push'](db['User'][_0xc5e9('0xf')](queryAgents));break;case _0xc5e9('0x6'):_0x242f14[_0x1a0274](_0xc5e9('0x2a'));_0x242f14[_0x1a0274](_0xc5e9('0x33'));_0x59de69[_0xc5e9('0x2c')](_0x12b677[_0xc5e9('0x3b')]({'attributes':['id','name']}));_0x59de69[_0xc5e9('0x2c')](_0x12b677[_0xc5e9('0x3c')]({'attributes':['id',_0xc5e9('0x4')]}));_0x59de69['push'](_0x12b677[_0xc5e9('0x3d')]({'attributes':['id',_0xc5e9('0x4')]}));_0x59de69['push'](_0x12b677[_0xc5e9('0x3e')]({'attributes':['id',_0xc5e9('0x4')]}));_0x59de69[_0xc5e9('0x2c')](_0x12b677[_0xc5e9('0x3f')]({'attributes':['id',_0xc5e9('0x4')]}));_0x59de69[_0xc5e9('0x2c')](_0x12b677[_0xc5e9('0x40')]({'attributes':['id','name']}));_0x59de69[_0xc5e9('0x2c')](_0x12b677['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0xc5e9('0x41')](_0x59de69);}})[_0xc5e9('0xa')](function(_0x21801e){if(_0x21801e&&_0x21801e['length']){for(var _0x16ee29=0x0;_0x16ee29<_0x21801e[_0xc5e9('0x1b')];_0x16ee29+=0x1){for(var _0x146303=0x0;_0x146303<_0x21801e[_0x16ee29][_0xc5e9('0x1b')];_0x146303+=0x1){switch(_0x16ee29){case 0x0:joinOrLeaveQueues(_0x242f14,_0x1a0274,'voice',_0x21801e[_0x16ee29][_0x146303]);break;case 0x1:joinOrLeaveQueues(_0x242f14,_0x1a0274,_0xc5e9('0x42'),_0x21801e[_0x16ee29][_0x146303]);break;case 0x2:joinOrLeaveQueues(_0x242f14,_0x1a0274,'fax',_0x21801e[_0x16ee29][_0x146303]);break;case 0x3:joinOrLeaveQueues(_0x242f14,_0x1a0274,_0xc5e9('0x43'),_0x21801e[_0x16ee29][_0x146303]);break;case 0x4:joinOrLeaveQueues(_0x242f14,_0x1a0274,_0xc5e9('0x44'),_0x21801e[_0x16ee29][_0x146303]);break;case 0x5:joinOrLeaveQueues(_0x242f14,_0x1a0274,_0xc5e9('0x45'),_0x21801e[_0x16ee29][_0x146303]);break;case 0x6:joinOrLeaveQueues(_0x242f14,_0x1a0274,_0xc5e9('0x46'),_0x21801e[_0x16ee29][_0x146303]);break;case 0x7:if(_0x30882f[_0xc5e9('0x14')]!=='agent')_0x242f14[_0x1a0274](util[_0xc5e9('0x18')](_0xc5e9('0x47'),_0x21801e[_0x16ee29][_0x146303][_0xc5e9('0x4')]));break;case 0x8:if(_0x30882f['role']!==_0xc5e9('0x6'))_0x242f14[_0x1a0274](util[_0xc5e9('0x18')](_0xc5e9('0x48'),_0x21801e[_0x16ee29][_0x146303]['name']));break;case 0x9:if(_0x30882f[_0xc5e9('0x14')]!==_0xc5e9('0x6'))_0x242f14[_0x1a0274](util['format']('campaign:%s:%s',_0x21801e[_0x16ee29][_0x146303][_0xc5e9('0x17')],_0x21801e[_0x16ee29][_0x146303][_0xc5e9('0x4')]));break;case 0xa:_0x242f14[_0x1a0274](util['format'](_0xc5e9('0x1c'),_0x21801e[_0x16ee29][_0x146303][_0xc5e9('0x4')]));break;}}}}})[_0xc5e9('0xa')](function(){if(_0x1a0274==='leave'){var _0x3b61b1=_[_0xc5e9('0x12')](_0x30882f[_0xc5e9('0x21')],'id');return _0x30882f['removeChatInteractions'](_0x3b61b1)[_0xc5e9('0xa')](function(){for(var _0x5c3324=0x0;_0x5c3324<_0x3b61b1[_0xc5e9('0x1b')];_0x5c3324+=0x1){_0x16f2ba[_0xc5e9('0x49')](_0xc5e9('0x4a'),{'ChatInteractionId':Number(_0x3b61b1[_0x5c3324]),'UserId':Number(_0x30882f['id'])});}});}})['then'](function(){if(_0x1a0274==='leave'){var _0x26a31f=_[_0xc5e9('0x12')](_0x30882f['MailInteractions'],'id');return _0x30882f[_0xc5e9('0x4b')](_0x26a31f)[_0xc5e9('0xa')](function(){for(var _0x2382f7=0x0;_0x2382f7<_0x26a31f[_0xc5e9('0x1b')];_0x2382f7+=0x1){_0x16f2ba['emit'](_0xc5e9('0x4c'),{'MailInteractionId':Number(_0x26a31f[_0x2382f7]),'UserId':Number(_0x30882f['id'])});}});}})['then'](function(){if(_0x1a0274===_0xc5e9('0x4d')){var _0x5ba228=_['map'](_0x30882f[_0xc5e9('0x23')],'id');return _0x30882f[_0xc5e9('0x4e')](_0x5ba228)[_0xc5e9('0xa')](function(){for(var _0x172b2e=0x0;_0x172b2e<_0x5ba228[_0xc5e9('0x1b')];_0x172b2e+=0x1){_0x16f2ba[_0xc5e9('0x49')](_0xc5e9('0x4f'),{'FaxInteractionId':Number(_0x5ba228[_0x172b2e]),'UserId':Number(_0x30882f['id'])});}});}})[_0xc5e9('0xa')](function(){if(_0x1a0274==='leave'){var _0x384cb4=_['map'](_0x30882f[_0xc5e9('0x24')],'id');return _0x30882f[_0xc5e9('0x50')](_0x384cb4)['then'](function(){for(var _0x2e3fba=0x0;_0x2e3fba<_0x384cb4[_0xc5e9('0x1b')];_0x2e3fba+=0x1){_0x16f2ba[_0xc5e9('0x49')](_0xc5e9('0x51'),{'SmsInteractionId':Number(_0x384cb4[_0x2e3fba]),'UserId':Number(_0x30882f['id'])});}});}})[_0xc5e9('0xa')](function(){if(_0x1a0274===_0xc5e9('0x4d')){var _0xd1ac47=_['map'](_0x30882f[_0xc5e9('0x26')],'id');return _0x30882f[_0xc5e9('0x52')](_0xd1ac47)[_0xc5e9('0xa')](function(){for(var _0x1f537c=0x0;_0x1f537c<_0xd1ac47[_0xc5e9('0x1b')];_0x1f537c+=0x1){_0x16f2ba[_0xc5e9('0x49')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0xd1ac47[_0x1f537c]),'UserId':Number(_0x30882f['id'])});}});}})[_0xc5e9('0xa')](function(){if(_0x1a0274===_0xc5e9('0x4d')){var _0x1635f4=_[_0xc5e9('0x12')](_0x30882f[_0xc5e9('0x28')],'id');return _0x30882f['removeWhatsappInteractions'](_0x1635f4)['then'](function(){for(var _0x41e890=0x0;_0x41e890<_0x1635f4[_0xc5e9('0x1b')];_0x41e890+=0x1){_0x16f2ba[_0xc5e9('0x49')](_0xc5e9('0x53'),{'WhatsappInteractionId':Number(_0x1635f4[_0x41e890]),'UserId':Number(_0x30882f['id'])});}});}})[_0xc5e9('0x54')](function(_0x6ddeee){_0x242f14[_0xc5e9('0x55')](_0x6ddeee);});}}function onDisconnect(_0x373722,_0x1c6ed8){joinOrLeave(_0x373722,_0xc5e9('0x4d'),_0x1c6ed8);}function onConnect(_0x4508b4){joinOrLeave(_0x4508b4,_0xc5e9('0x56'));}exports[_0xc5e9('0x57')]=function(_0x5e1894){_0x5e1894['on']('connection',function(_0x47b261){_0x47b261[_0xc5e9('0x58')](0x0);_0x47b261[_0xc5e9('0x59')]=_0x47b261[_0xc5e9('0x5a')][_0xc5e9('0x5b')]['remoteAddress']+':'+_0x47b261[_0xc5e9('0x5a')]['connection'][_0xc5e9('0x5c')];_0x47b261['connectedAt']=new Date();_0x47b261[_0xc5e9('0x55')]=function(_0x1e4a89){console[_0xc5e9('0x55')](_0xc5e9('0x5d')+_0x47b261[_0xc5e9('0x5e')][_0xc5e9('0x4')]+'['+_0x47b261['address']+']',_0x1e4a89);};_0x47b261['on'](_0xc5e9('0x5f'),function(){onDisconnect(_0x47b261,_0x5e1894);_0x47b261[_0xc5e9('0x55')](_0xc5e9('0x60'));});onConnect(_0x47b261);_0x47b261[_0xc5e9('0x55')]('CONNECTED');});};