Built motion from commit 08fb8613.|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 _0x0f19=['whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','map','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','setMaxListeners','address','request','connection','remotePort','connectedAt','log','SocketIO\x20','disconnect','CONNECTED','lodash','util','bluebird','./environment','name','agent','telephone','type','UserProfileSection','findOne','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','IvrCampaigns','UserProfileResource','resourceId','then','User','where','role','Campaign','ivr','%s:queue:%s','Agents','format','handshake','query','userProfileId','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','admin','voice:outbound','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:inbound','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','length','voice','chat','fax','sms','openchannel'];(function(_0x1d90d4,_0x259856){var _0x5e6c65=function(_0x429dac){while(--_0x429dac){_0x1d90d4['push'](_0x1d90d4['shift']());}};_0x5e6c65(++_0x259856);}(_0x0f19,0xf3));var _0x90f1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0f19[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x90f1('0x0'));var util=require(_0x90f1('0x1'));var BPromise=require(_0x90f1('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x90f1('0x3'));var queryQueues={'attributes':['id',_0x90f1('0x4')],'include':[{'as':'Agents','model':db['User'],'attributes':['id',_0x90f1('0x4'),'role'],'raw':!![],'where':{'role':_0x90f1('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x90f1('0x4')],'where':{'role':_0x90f1('0x6')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x90f1('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x90f1('0x7')],'where':{'type':'ivr'}};function getAssociatedResources(_0x27e3e8,_0x1cc0d2,_0x50d858){return db[_0x90f1('0x8')][_0x90f1('0x9')]({'where':{'name':_0x27e3e8,'userProfileId':_0x1cc0d2},'raw':!![]})['then'](function(_0x2274c8){if(_0x2274c8){if(_0x2274c8[_0x90f1('0xa')]){switch(_0x27e3e8){case _0x90f1('0xb'):case _0x90f1('0xc'):case _0x90f1('0xd'):case _0x90f1('0xe'):case _0x90f1('0xf'):case _0x90f1('0x10'):case _0x90f1('0x11'):return db[_0x50d858]['findAll'](queryQueues);case _0x90f1('0x12'):return db[_0x50d858][_0x90f1('0x13')](queryTelephones);case'Trunks':return db[_0x50d858]['findAll'](queryTrunks);case _0x90f1('0x14'):return db[_0x50d858][_0x90f1('0x13')](queryCampaigns);}}else{return db[_0x90f1('0x15')]['findAll']({'attributes':[_0x90f1('0x16')],'where':{'sectionId':_0x2274c8['id']},'raw':!![]})[_0x90f1('0x17')](function(_0x18c10b){if(_0x18c10b){var _0x100747={'where':{'id':_['map'](_0x18c10b,_0x90f1('0x16'))},'raw':!![]};switch(_0x50d858){case _0x90f1('0x18'):_0x100747[_0x90f1('0x19')][_0x90f1('0x1a')]='telephone';break;case _0x90f1('0x1b'):_0x100747[_0x90f1('0x19')][_0x90f1('0x7')]=_0x90f1('0x1c');break;}return db[_0x50d858][_0x90f1('0x13')](_0x100747);}else{return[];}});}}else{return[];}})[_0x90f1('0x17')](function(_0x50a405){return _0x50a405;});}function joinOrLeaveQueues(_0x38630f,_0x2d9632,_0x35731a,_0x4e2ebd){_0x38630f[_0x2d9632](util['format'](_0x90f1('0x1d'),_0x35731a,_0x4e2ebd[_0x90f1('0x4')]));if(_0x4e2ebd[_0x90f1('0x1e')]){for(var _0x3202d4=0x0;_0x3202d4<_0x4e2ebd['Agents']['length'];_0x3202d4+=0x1){_0x38630f[_0x2d9632](util[_0x90f1('0x1f')]('user:%s',_0x4e2ebd[_0x90f1('0x1e')][_0x3202d4][_0x90f1('0x4')]));}}}function joinOrLeave(_0x21e7aa,_0x1486f3,_0x4d0a87){var _0x4261a5;if(_0x21e7aa[_0x90f1('0x20')][_0x90f1('0x21')]['id']){db[_0x90f1('0x18')]['find']({'attributes':['id',_0x90f1('0x4'),_0x90f1('0x1a'),_0x90f1('0x22')],'where':{'id':_0x21e7aa['handshake'][_0x90f1('0x21')]['id']},'include':[{'model':db[_0x90f1('0x23')],'as':_0x90f1('0x24'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x90f1('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x90f1('0x26')],'as':_0x90f1('0x27'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x90f1('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x90f1('0x29')],'as':_0x90f1('0x2a'),'attributes':['id'],'raw':!![]}]})[_0x90f1('0x17')](function(_0x45b3a7){if(_0x45b3a7){_0x4261a5=_0x45b3a7;_0x21e7aa[_0x1486f3](util[_0x90f1('0x1f')](_0x90f1('0x2b'),_0x45b3a7[_0x90f1('0x4')]));var _0x4b3702=[];switch(_0x45b3a7[_0x90f1('0x1a')]){case _0x90f1('0x2c'):_0x21e7aa[_0x1486f3]('voice:inbound');_0x21e7aa[_0x1486f3](_0x90f1('0x2d'));if(queryQueues[_0x90f1('0x2e')](_0x90f1('0x2f'))){delete queryQueues[_0x90f1('0x2f')];}_0x4b3702['push'](db[_0x90f1('0x30')][_0x90f1('0x13')](queryQueues));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x32')][_0x90f1('0x13')](queryQueues));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x33')][_0x90f1('0x13')](queryQueues));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x34')]['findAll'](queryQueues));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x35')]['findAll'](queryQueues));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x36')][_0x90f1('0x13')](queryQueues));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x37')][_0x90f1('0x13')](queryQueues));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x18')][_0x90f1('0x13')](queryTelephones));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x38')][_0x90f1('0x13')](queryTrunks));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x1b')][_0x90f1('0x13')](queryCampaigns));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x18')][_0x90f1('0x13')](queryAgents));break;case _0x90f1('0x39'):_0x21e7aa[_0x1486f3]('voice:inbound');_0x21e7aa[_0x1486f3](_0x90f1('0x2d'));_0x4b3702[_0x90f1('0x31')](getAssociatedResources(_0x90f1('0xb'),_0x45b3a7[_0x90f1('0x22')],'VoiceQueue'));_0x4b3702[_0x90f1('0x31')](getAssociatedResources(_0x90f1('0xc'),_0x45b3a7[_0x90f1('0x22')],'ChatQueue'));_0x4b3702[_0x90f1('0x31')](getAssociatedResources(_0x90f1('0xd'),_0x45b3a7[_0x90f1('0x22')],_0x90f1('0x33')));_0x4b3702['push'](getAssociatedResources('SmsQueues',_0x45b3a7['userProfileId'],_0x90f1('0x34')));_0x4b3702[_0x90f1('0x31')](getAssociatedResources(_0x90f1('0xf'),_0x45b3a7[_0x90f1('0x22')],_0x90f1('0x35')));_0x4b3702['push'](getAssociatedResources(_0x90f1('0x10'),_0x45b3a7[_0x90f1('0x22')],'OpenchannelQueue'));_0x4b3702[_0x90f1('0x31')](getAssociatedResources(_0x90f1('0x11'),_0x45b3a7[_0x90f1('0x22')],_0x90f1('0x37')));_0x4b3702['push'](getAssociatedResources('Telephones',_0x45b3a7[_0x90f1('0x22')],_0x90f1('0x18')));_0x4b3702[_0x90f1('0x31')](getAssociatedResources('Trunks',_0x45b3a7[_0x90f1('0x22')],'Trunk'));_0x4b3702[_0x90f1('0x31')](getAssociatedResources(_0x90f1('0x14'),_0x45b3a7['userProfileId'],_0x90f1('0x1b')));_0x4b3702[_0x90f1('0x31')](db[_0x90f1('0x18')]['findAll'](queryAgents));break;case _0x90f1('0x5'):_0x21e7aa[_0x1486f3](_0x90f1('0x3a'));_0x21e7aa[_0x1486f3](_0x90f1('0x2d'));_0x4b3702[_0x90f1('0x31')](_0x45b3a7[_0x90f1('0x3b')]({'attributes':['id',_0x90f1('0x4')]}));_0x4b3702['push'](_0x45b3a7[_0x90f1('0x3c')]({'attributes':['id',_0x90f1('0x4')]}));_0x4b3702[_0x90f1('0x31')](_0x45b3a7[_0x90f1('0x3d')]({'attributes':['id','name']}));_0x4b3702['push'](_0x45b3a7[_0x90f1('0x3e')]({'attributes':['id',_0x90f1('0x4')]}));_0x4b3702['push'](_0x45b3a7[_0x90f1('0x3f')]({'attributes':['id',_0x90f1('0x4')]}));_0x4b3702[_0x90f1('0x31')](_0x45b3a7[_0x90f1('0x40')]({'attributes':['id',_0x90f1('0x4')]}));_0x4b3702[_0x90f1('0x31')](_0x45b3a7[_0x90f1('0x41')]({'attributes':['id',_0x90f1('0x4')]}));break;}return BPromise['all'](_0x4b3702);}})[_0x90f1('0x17')](function(_0x3c178f){if(_0x3c178f&&_0x3c178f['length']){for(var _0x1e9c62=0x0;_0x1e9c62<_0x3c178f[_0x90f1('0x42')];_0x1e9c62+=0x1){for(var _0x3fe15b=0x0;_0x3fe15b<_0x3c178f[_0x1e9c62]['length'];_0x3fe15b+=0x1){switch(_0x1e9c62){case 0x0:joinOrLeaveQueues(_0x21e7aa,_0x1486f3,_0x90f1('0x43'),_0x3c178f[_0x1e9c62][_0x3fe15b]);break;case 0x1:joinOrLeaveQueues(_0x21e7aa,_0x1486f3,_0x90f1('0x44'),_0x3c178f[_0x1e9c62][_0x3fe15b]);break;case 0x2:joinOrLeaveQueues(_0x21e7aa,_0x1486f3,_0x90f1('0x45'),_0x3c178f[_0x1e9c62][_0x3fe15b]);break;case 0x3:joinOrLeaveQueues(_0x21e7aa,_0x1486f3,_0x90f1('0x46'),_0x3c178f[_0x1e9c62][_0x3fe15b]);break;case 0x4:joinOrLeaveQueues(_0x21e7aa,_0x1486f3,'mail',_0x3c178f[_0x1e9c62][_0x3fe15b]);break;case 0x5:joinOrLeaveQueues(_0x21e7aa,_0x1486f3,_0x90f1('0x47'),_0x3c178f[_0x1e9c62][_0x3fe15b]);break;case 0x6:joinOrLeaveQueues(_0x21e7aa,_0x1486f3,_0x90f1('0x48'),_0x3c178f[_0x1e9c62][_0x3fe15b]);break;case 0x7:if(_0x4261a5[_0x90f1('0x1a')]!==_0x90f1('0x5'))_0x21e7aa[_0x1486f3](util[_0x90f1('0x1f')](_0x90f1('0x49'),_0x3c178f[_0x1e9c62][_0x3fe15b][_0x90f1('0x4')]));break;case 0x8:if(_0x4261a5['role']!==_0x90f1('0x5'))_0x21e7aa[_0x1486f3](util[_0x90f1('0x1f')](_0x90f1('0x4a'),_0x3c178f[_0x1e9c62][_0x3fe15b]['name']));break;case 0x9:if(_0x4261a5[_0x90f1('0x1a')]!=='agent')_0x21e7aa[_0x1486f3](util[_0x90f1('0x1f')](_0x90f1('0x4b'),_0x3c178f[_0x1e9c62][_0x3fe15b][_0x90f1('0x7')],_0x3c178f[_0x1e9c62][_0x3fe15b][_0x90f1('0x4')]));break;case 0xa:_0x21e7aa[_0x1486f3](util[_0x90f1('0x1f')]('user:%s',_0x3c178f[_0x1e9c62][_0x3fe15b]['name']));break;}}}}})[_0x90f1('0x17')](function(){if(_0x1486f3==='leave'){var _0x332093=_[_0x90f1('0x4c')](_0x4261a5['ChatInteractions'],'id');return _0x4261a5[_0x90f1('0x4d')](_0x332093)['then'](function(){for(var _0x3849d2=0x0;_0x3849d2<_0x332093['length'];_0x3849d2+=0x1){_0x4d0a87[_0x90f1('0x4e')](_0x90f1('0x4f'),{'ChatInteractionId':Number(_0x332093[_0x3849d2]),'UserId':Number(_0x4261a5['id'])});}});}})['then'](function(){if(_0x1486f3===_0x90f1('0x50')){var _0x2ea4c7=_[_0x90f1('0x4c')](_0x4261a5[_0x90f1('0x25')],'id');return _0x4261a5[_0x90f1('0x51')](_0x2ea4c7)[_0x90f1('0x17')](function(){for(var _0x1fe7fd=0x0;_0x1fe7fd<_0x2ea4c7[_0x90f1('0x42')];_0x1fe7fd+=0x1){_0x4d0a87['emit'](_0x90f1('0x52'),{'MailInteractionId':Number(_0x2ea4c7[_0x1fe7fd]),'UserId':Number(_0x4261a5['id'])});}});}})['then'](function(){if(_0x1486f3===_0x90f1('0x50')){var _0x16dc8e=_[_0x90f1('0x4c')](_0x4261a5[_0x90f1('0x27')],'id');return _0x4261a5[_0x90f1('0x53')](_0x16dc8e)[_0x90f1('0x17')](function(){for(var _0x3be063=0x0;_0x3be063<_0x16dc8e['length'];_0x3be063+=0x1){_0x4d0a87[_0x90f1('0x4e')](_0x90f1('0x54'),{'FaxInteractionId':Number(_0x16dc8e[_0x3be063]),'UserId':Number(_0x4261a5['id'])});}});}})[_0x90f1('0x17')](function(){if(_0x1486f3===_0x90f1('0x50')){var _0x3af272=_[_0x90f1('0x4c')](_0x4261a5[_0x90f1('0x55')],'id');return _0x4261a5[_0x90f1('0x56')](_0x3af272)[_0x90f1('0x17')](function(){for(var _0x5c01b1=0x0;_0x5c01b1<_0x3af272[_0x90f1('0x42')];_0x5c01b1+=0x1){_0x4d0a87[_0x90f1('0x4e')](_0x90f1('0x57'),{'SmsInteractionId':Number(_0x3af272[_0x5c01b1]),'UserId':Number(_0x4261a5['id'])});}});}})[_0x90f1('0x17')](function(){if(_0x1486f3==='leave'){var _0xbb20ef=_[_0x90f1('0x4c')](_0x4261a5['OpenchannelInteractions'],'id');return _0x4261a5[_0x90f1('0x58')](_0xbb20ef)[_0x90f1('0x17')](function(){for(var _0x150e16=0x0;_0x150e16<_0xbb20ef[_0x90f1('0x42')];_0x150e16+=0x1){_0x4d0a87[_0x90f1('0x4e')](_0x90f1('0x59'),{'OpenchannelInteractionId':Number(_0xbb20ef[_0x150e16]),'UserId':Number(_0x4261a5['id'])});}});}})['then'](function(){if(_0x1486f3===_0x90f1('0x50')){var _0x5c3eca=_[_0x90f1('0x4c')](_0x4261a5[_0x90f1('0x2a')],'id');return _0x4261a5[_0x90f1('0x5a')](_0x5c3eca)[_0x90f1('0x17')](function(){for(var _0x10ba00=0x0;_0x10ba00<_0x5c3eca['length'];_0x10ba00+=0x1){_0x4d0a87[_0x90f1('0x4e')](_0x90f1('0x5b'),{'WhatsappInteractionId':Number(_0x5c3eca[_0x10ba00]),'UserId':Number(_0x4261a5['id'])});}});}})[_0x90f1('0x5c')](function(_0x2add79){_0x21e7aa['log'](_0x2add79);});}}function onDisconnect(_0x189f76,_0x2a91f7){joinOrLeave(_0x189f76,_0x90f1('0x50'),_0x2a91f7);}function onConnect(_0x152a24){joinOrLeave(_0x152a24,_0x90f1('0x5d'));}exports[_0x90f1('0x5e')]=function(_0x217fbc){_0x217fbc['on']('connection',function(_0x1ff009){_0x1ff009[_0x90f1('0x5f')](0x0);_0x1ff009[_0x90f1('0x60')]=_0x1ff009[_0x90f1('0x61')][_0x90f1('0x62')]['remoteAddress']+':'+_0x1ff009[_0x90f1('0x61')][_0x90f1('0x62')][_0x90f1('0x63')];_0x1ff009[_0x90f1('0x64')]=new Date();_0x1ff009[_0x90f1('0x65')]=function(_0x3d4e21){console[_0x90f1('0x65')](_0x90f1('0x66')+_0x1ff009['nsp'][_0x90f1('0x4')]+'['+_0x1ff009[_0x90f1('0x60')]+']',_0x3d4e21);};_0x1ff009['on'](_0x90f1('0x67'),function(){onDisconnect(_0x1ff009,_0x217fbc);_0x1ff009[_0x90f1('0x65')]('DISCONNECTED');});onConnect(_0x1ff009);_0x1ff009[_0x90f1('0x65')](_0x90f1('0x68'));});};