ee32c20715147fc41aabbddebf27425fe74f180c
[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 _0xef4b=['Telephones','Trunks','IvrCampaigns','resourceId','Campaign','where','type','ivr','format','%s:queue:%s','Agents','query','find','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','user:%s','voice:inbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','voice:outbound','SmsQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','length','voice','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','map','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','WhatsappInteractions','catch','join','connection','address','request','remotePort','connectedAt','log','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','User','name','role','agent','telephone','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll'];(function(_0x239a9b,_0x4f2b0a){var _0x3c176a=function(_0x20ca5f){while(--_0x20ca5f){_0x239a9b['push'](_0x239a9b['shift']());}};_0x3c176a(++_0x4f2b0a);}(_0xef4b,0x17b));var _0xbef4=function(_0x11dfbb,_0x1f4c8a){_0x11dfbb=_0x11dfbb-0x0;var _0x22d016=_0xef4b[_0x11dfbb];return _0x22d016;};'use strict';var _=require(_0xbef4('0x0'));var util=require(_0xbef4('0x1'));var BPromise=require(_0xbef4('0x2'));var db=require(_0xbef4('0x3'))['db'];var config=require(_0xbef4('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0xbef4('0x5')],'attributes':['id',_0xbef4('0x6'),_0xbef4('0x7')],'raw':!![],'where':{'role':_0xbef4('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xbef4('0x6')],'where':{'role':_0xbef4('0x9')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xbef4('0x6'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x40530e,_0x23ec16,_0x112928){return db[_0xbef4('0xa')][_0xbef4('0xb')]({'where':{'name':_0x40530e,'userProfileId':_0x23ec16},'raw':!![]})[_0xbef4('0xc')](function(_0x136eeb){if(_0x136eeb){if(_0x136eeb[_0xbef4('0xd')]){switch(_0x40530e){case _0xbef4('0xe'):case _0xbef4('0xf'):case _0xbef4('0x10'):case'SmsQueues':case _0xbef4('0x11'):case _0xbef4('0x12'):case _0xbef4('0x13'):return db[_0x112928][_0xbef4('0x14')](queryQueues);case _0xbef4('0x15'):return db[_0x112928]['findAll'](queryTelephones);case _0xbef4('0x16'):return db[_0x112928]['findAll'](queryTrunks);case _0xbef4('0x17'):return db[_0x112928][_0xbef4('0x14')](queryCampaigns);}}else{return db['UserProfileResource'][_0xbef4('0x14')]({'attributes':[_0xbef4('0x18')],'where':{'sectionId':_0x136eeb['id']},'raw':!![]})['then'](function(_0x3320d6){if(_0x3320d6){var _0x3511be={'where':{'id':_['map'](_0x3320d6,'resourceId')},'raw':!![]};switch(_0x112928){case _0xbef4('0x5'):_0x3511be['where'][_0xbef4('0x7')]=_0xbef4('0x9');break;case _0xbef4('0x19'):_0x3511be[_0xbef4('0x1a')][_0xbef4('0x1b')]=_0xbef4('0x1c');break;}return db[_0x112928][_0xbef4('0x14')](_0x3511be);}else{return[];}});}}else{return[];}})[_0xbef4('0xc')](function(_0x1f9263){return _0x1f9263;});}function joinOrLeaveQueues(_0x269a34,_0x589825,_0x1a63e0,_0x51e08e){_0x269a34[_0x589825](util[_0xbef4('0x1d')](_0xbef4('0x1e'),_0x1a63e0,_0x51e08e[_0xbef4('0x6')]));if(_0x51e08e[_0xbef4('0x1f')]){for(var _0x35547e=0x0;_0x35547e<_0x51e08e[_0xbef4('0x1f')]['length'];_0x35547e+=0x1){_0x269a34[_0x589825](util[_0xbef4('0x1d')]('user:%s',_0x51e08e[_0xbef4('0x1f')][_0x35547e][_0xbef4('0x6')]));}}}function joinOrLeave(_0xc2f9c,_0x5bac4b,_0x1102d2){var _0x35e311;if(_0xc2f9c['handshake'][_0xbef4('0x20')]['id']){db[_0xbef4('0x5')][_0xbef4('0x21')]({'attributes':['id',_0xbef4('0x6'),'role',_0xbef4('0x22')],'where':{'id':_0xc2f9c[_0xbef4('0x23')]['query']['id']},'include':[{'model':db[_0xbef4('0x24')],'as':_0xbef4('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xbef4('0x26')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xbef4('0x27')],'as':_0xbef4('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xbef4('0x29')],'as':_0xbef4('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0xbef4('0x2b')],'as':_0xbef4('0x2c'),'attributes':['id'],'raw':!![]},{'model':db[_0xbef4('0x2d')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})['then'](function(_0x1cd73f){if(_0x1cd73f){_0x35e311=_0x1cd73f;_0xc2f9c[_0x5bac4b](util['format'](_0xbef4('0x2e'),_0x1cd73f[_0xbef4('0x6')]));var _0x213e6a=[];switch(_0x1cd73f[_0xbef4('0x7')]){case'admin':_0xc2f9c[_0x5bac4b](_0xbef4('0x2f'));_0xc2f9c[_0x5bac4b]('voice:outbound');if(queryQueues[_0xbef4('0x30')](_0xbef4('0x31'))){delete queryQueues[_0xbef4('0x31')];}_0x213e6a[_0xbef4('0x32')](db['VoiceQueue'][_0xbef4('0x14')](queryQueues));_0x213e6a['push'](db[_0xbef4('0x33')][_0xbef4('0x14')](queryQueues));_0x213e6a[_0xbef4('0x32')](db[_0xbef4('0x34')][_0xbef4('0x14')](queryQueues));_0x213e6a[_0xbef4('0x32')](db[_0xbef4('0x35')][_0xbef4('0x14')](queryQueues));_0x213e6a[_0xbef4('0x32')](db[_0xbef4('0x36')][_0xbef4('0x14')](queryQueues));_0x213e6a[_0xbef4('0x32')](db[_0xbef4('0x37')][_0xbef4('0x14')](queryQueues));_0x213e6a[_0xbef4('0x32')](db['WhatsappQueue'][_0xbef4('0x14')](queryQueues));_0x213e6a[_0xbef4('0x32')](db['User']['findAll'](queryTelephones));_0x213e6a[_0xbef4('0x32')](db[_0xbef4('0x38')]['findAll'](queryTrunks));_0x213e6a[_0xbef4('0x32')](db['Campaign'][_0xbef4('0x14')](queryCampaigns));_0x213e6a[_0xbef4('0x32')](db[_0xbef4('0x5')][_0xbef4('0x14')](queryAgents));break;case'user':_0xc2f9c[_0x5bac4b]('voice:inbound');_0xc2f9c[_0x5bac4b](_0xbef4('0x39'));_0x213e6a[_0xbef4('0x32')](getAssociatedResources(_0xbef4('0xe'),_0x1cd73f['userProfileId'],'VoiceQueue'));_0x213e6a['push'](getAssociatedResources('ChatQueues',_0x1cd73f[_0xbef4('0x22')],_0xbef4('0x33')));_0x213e6a['push'](getAssociatedResources(_0xbef4('0x10'),_0x1cd73f[_0xbef4('0x22')],'FaxQueue'));_0x213e6a[_0xbef4('0x32')](getAssociatedResources(_0xbef4('0x3a'),_0x1cd73f[_0xbef4('0x22')],_0xbef4('0x35')));_0x213e6a['push'](getAssociatedResources(_0xbef4('0x11'),_0x1cd73f[_0xbef4('0x22')],_0xbef4('0x36')));_0x213e6a[_0xbef4('0x32')](getAssociatedResources(_0xbef4('0x12'),_0x1cd73f[_0xbef4('0x22')],_0xbef4('0x37')));_0x213e6a[_0xbef4('0x32')](getAssociatedResources(_0xbef4('0x13'),_0x1cd73f['userProfileId'],'WhatsappQueue'));_0x213e6a['push'](getAssociatedResources('Telephones',_0x1cd73f['userProfileId'],_0xbef4('0x5')));_0x213e6a[_0xbef4('0x32')](getAssociatedResources('Trunks',_0x1cd73f[_0xbef4('0x22')],_0xbef4('0x38')));_0x213e6a[_0xbef4('0x32')](getAssociatedResources(_0xbef4('0x17'),_0x1cd73f['userProfileId'],_0xbef4('0x19')));_0x213e6a[_0xbef4('0x32')](db[_0xbef4('0x5')]['findAll'](queryAgents));break;case _0xbef4('0x8'):_0xc2f9c[_0x5bac4b](_0xbef4('0x2f'));_0xc2f9c[_0x5bac4b](_0xbef4('0x39'));_0x213e6a[_0xbef4('0x32')](_0x1cd73f[_0xbef4('0x3b')]({'attributes':['id','name']}));_0x213e6a[_0xbef4('0x32')](_0x1cd73f[_0xbef4('0x3c')]({'attributes':['id',_0xbef4('0x6')]}));_0x213e6a[_0xbef4('0x32')](_0x1cd73f[_0xbef4('0x3d')]({'attributes':['id',_0xbef4('0x6')]}));_0x213e6a['push'](_0x1cd73f[_0xbef4('0x3e')]({'attributes':['id',_0xbef4('0x6')]}));_0x213e6a[_0xbef4('0x32')](_0x1cd73f[_0xbef4('0x3f')]({'attributes':['id',_0xbef4('0x6')]}));_0x213e6a[_0xbef4('0x32')](_0x1cd73f['getOpenchannelQueues']({'attributes':['id',_0xbef4('0x6')]}));_0x213e6a[_0xbef4('0x32')](_0x1cd73f[_0xbef4('0x40')]({'attributes':['id',_0xbef4('0x6')]}));break;}return BPromise['all'](_0x213e6a);}})[_0xbef4('0xc')](function(_0x1125f4){if(_0x1125f4&&_0x1125f4[_0xbef4('0x41')]){for(var _0x10f263=0x0;_0x10f263<_0x1125f4['length'];_0x10f263+=0x1){for(var _0x1ce710=0x0;_0x1ce710<_0x1125f4[_0x10f263][_0xbef4('0x41')];_0x1ce710+=0x1){switch(_0x10f263){case 0x0:joinOrLeaveQueues(_0xc2f9c,_0x5bac4b,_0xbef4('0x42'),_0x1125f4[_0x10f263][_0x1ce710]);break;case 0x1:joinOrLeaveQueues(_0xc2f9c,_0x5bac4b,_0xbef4('0x43'),_0x1125f4[_0x10f263][_0x1ce710]);break;case 0x2:joinOrLeaveQueues(_0xc2f9c,_0x5bac4b,_0xbef4('0x44'),_0x1125f4[_0x10f263][_0x1ce710]);break;case 0x3:joinOrLeaveQueues(_0xc2f9c,_0x5bac4b,_0xbef4('0x45'),_0x1125f4[_0x10f263][_0x1ce710]);break;case 0x4:joinOrLeaveQueues(_0xc2f9c,_0x5bac4b,_0xbef4('0x46'),_0x1125f4[_0x10f263][_0x1ce710]);break;case 0x5:joinOrLeaveQueues(_0xc2f9c,_0x5bac4b,'openchannel',_0x1125f4[_0x10f263][_0x1ce710]);break;case 0x6:joinOrLeaveQueues(_0xc2f9c,_0x5bac4b,_0xbef4('0x47'),_0x1125f4[_0x10f263][_0x1ce710]);break;case 0x7:if(_0x35e311['role']!==_0xbef4('0x8'))_0xc2f9c[_0x5bac4b](util[_0xbef4('0x1d')](_0xbef4('0x48'),_0x1125f4[_0x10f263][_0x1ce710]['name']));break;case 0x8:if(_0x35e311[_0xbef4('0x7')]!=='agent')_0xc2f9c[_0x5bac4b](util[_0xbef4('0x1d')](_0xbef4('0x49'),_0x1125f4[_0x10f263][_0x1ce710][_0xbef4('0x6')]));break;case 0x9:if(_0x35e311[_0xbef4('0x7')]!=='agent')_0xc2f9c[_0x5bac4b](util[_0xbef4('0x1d')](_0xbef4('0x4a'),_0x1125f4[_0x10f263][_0x1ce710][_0xbef4('0x1b')],_0x1125f4[_0x10f263][_0x1ce710][_0xbef4('0x6')]));break;case 0xa:_0xc2f9c[_0x5bac4b](util[_0xbef4('0x1d')]('user:%s',_0x1125f4[_0x10f263][_0x1ce710][_0xbef4('0x6')]));break;}}}}})[_0xbef4('0xc')](function(){if(_0x5bac4b===_0xbef4('0x4b')){var _0x22ab89=_['map'](_0x35e311[_0xbef4('0x25')],'id');return _0x35e311[_0xbef4('0x4c')](_0x22ab89)[_0xbef4('0xc')](function(){for(var _0x43563e=0x0;_0x43563e<_0x22ab89[_0xbef4('0x41')];_0x43563e+=0x1){_0x1102d2[_0xbef4('0x4d')](_0xbef4('0x4e'),{'ChatInteractionId':Number(_0x22ab89[_0x43563e]),'UserId':Number(_0x35e311['id'])});}});}})[_0xbef4('0xc')](function(){if(_0x5bac4b===_0xbef4('0x4b')){var _0x37f5a8=_[_0xbef4('0x4f')](_0x35e311[_0xbef4('0x50')],'id');return _0x35e311[_0xbef4('0x51')](_0x37f5a8)[_0xbef4('0xc')](function(){for(var _0x51bc82=0x0;_0x51bc82<_0x37f5a8['length'];_0x51bc82+=0x1){_0x1102d2[_0xbef4('0x4d')](_0xbef4('0x52'),{'MailInteractionId':Number(_0x37f5a8[_0x51bc82]),'UserId':Number(_0x35e311['id'])});}});}})[_0xbef4('0xc')](function(){if(_0x5bac4b==='leave'){var _0x2b1dcf=_[_0xbef4('0x4f')](_0x35e311[_0xbef4('0x28')],'id');return _0x35e311[_0xbef4('0x53')](_0x2b1dcf)[_0xbef4('0xc')](function(){for(var _0x5bb085=0x0;_0x5bb085<_0x2b1dcf[_0xbef4('0x41')];_0x5bb085+=0x1){_0x1102d2[_0xbef4('0x4d')](_0xbef4('0x54'),{'FaxInteractionId':Number(_0x2b1dcf[_0x5bb085]),'UserId':Number(_0x35e311['id'])});}});}})[_0xbef4('0xc')](function(){if(_0x5bac4b===_0xbef4('0x4b')){var _0x48569d=_[_0xbef4('0x4f')](_0x35e311[_0xbef4('0x2a')],'id');return _0x35e311['removeSmsInteractions'](_0x48569d)['then'](function(){for(var _0x1bccd3=0x0;_0x1bccd3<_0x48569d[_0xbef4('0x41')];_0x1bccd3+=0x1){_0x1102d2[_0xbef4('0x4d')](_0xbef4('0x55'),{'SmsInteractionId':Number(_0x48569d[_0x1bccd3]),'UserId':Number(_0x35e311['id'])});}});}})[_0xbef4('0xc')](function(){if(_0x5bac4b===_0xbef4('0x4b')){var _0x454ac9=_['map'](_0x35e311[_0xbef4('0x2c')],'id');return _0x35e311['removeOpenchannelInteractions'](_0x454ac9)[_0xbef4('0xc')](function(){for(var _0x216ceb=0x0;_0x216ceb<_0x454ac9[_0xbef4('0x41')];_0x216ceb+=0x1){_0x1102d2['emit'](_0xbef4('0x56'),{'OpenchannelInteractionId':Number(_0x454ac9[_0x216ceb]),'UserId':Number(_0x35e311['id'])});}});}})[_0xbef4('0xc')](function(){if(_0x5bac4b===_0xbef4('0x4b')){var _0x566628=_[_0xbef4('0x4f')](_0x35e311[_0xbef4('0x57')],'id');return _0x35e311['removeWhatsappInteractions'](_0x566628)[_0xbef4('0xc')](function(){for(var _0x38ce11=0x0;_0x38ce11<_0x566628['length'];_0x38ce11+=0x1){_0x1102d2[_0xbef4('0x4d')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x566628[_0x38ce11]),'UserId':Number(_0x35e311['id'])});}});}})[_0xbef4('0x58')](function(_0x2bee52){_0xc2f9c['log'](_0x2bee52);});}}function onDisconnect(_0x1f89c1,_0x3afc83){joinOrLeave(_0x1f89c1,_0xbef4('0x4b'),_0x3afc83);}function onConnect(_0x504ddf){joinOrLeave(_0x504ddf,_0xbef4('0x59'));}exports['default']=function(_0x5b6ad7){_0x5b6ad7['on'](_0xbef4('0x5a'),function(_0x762860){_0x762860['setMaxListeners'](0x0);_0x762860[_0xbef4('0x5b')]=_0x762860['request'][_0xbef4('0x5a')]['remoteAddress']+':'+_0x762860[_0xbef4('0x5c')]['connection'][_0xbef4('0x5d')];_0x762860[_0xbef4('0x5e')]=new Date();_0x762860[_0xbef4('0x5f')]=function(_0x1d9462){console['log'](_0xbef4('0x60')+_0x762860['nsp']['name']+'['+_0x762860[_0xbef4('0x5b')]+']',_0x1d9462);};_0x762860['on'](_0xbef4('0x61'),function(){onDisconnect(_0x762860,_0x5b6ad7);_0x762860[_0xbef4('0x5f')](_0xbef4('0x62'));});onConnect(_0x762860);_0x762860[_0xbef4('0x5f')](_0xbef4('0x63'));});};