85612fbe8ee4b8d23d9c5a1b7dae3b9a8cce6f5f
[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 _0xc76e=['userProfileId','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','user','voice:outbound','VoiceQueues','OpenchannelQueue','Trunk','Campaign','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','voice','fax','sms','whatsapp','telephone:%s','trunk:%s','leave','removeChatInteractions','emit','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','connection','setMaxListeners','address','request','remoteAddress','remotePort','SocketIO\x20','nsp','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','User','name','agent','telephone','type','ivr','UserProfileSection','findOne','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','role','then','format','%s:queue:%s','Agents','length','user:%s','handshake','query','find'];(function(_0x43f424,_0x5b1775){var _0x24ff0a=function(_0x58bc31){while(--_0x58bc31){_0x43f424['push'](_0x43f424['shift']());}};_0x24ff0a(++_0x5b1775);}(_0xc76e,0x10c));var _0xec76=function(_0x49060a,_0x1381ad){_0x49060a=_0x49060a-0x0;var _0x319689=_0xc76e[_0x49060a];return _0x319689;};'use strict';var _=require(_0xec76('0x0'));var util=require(_0xec76('0x1'));var BPromise=require(_0xec76('0x2'));var db=require(_0xec76('0x3'))['db'];var config=require(_0xec76('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0xec76('0x5')],'attributes':['id',_0xec76('0x6'),'role'],'raw':!![],'where':{'role':_0xec76('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xec76('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xec76('0x6')]};var queryAgents={'raw':!![],'attributes':['id',_0xec76('0x6')],'where':{'role':_0xec76('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xec76('0x6'),_0xec76('0x9')],'where':{'type':_0xec76('0xa')}};function getAssociatedResources(_0x3303cc,_0x34ae2f,_0x49bc55){return db[_0xec76('0xb')][_0xec76('0xc')]({'where':{'name':_0x3303cc,'userProfileId':_0x34ae2f},'raw':!![]})['then'](function(_0x2df5be){if(_0x2df5be){if(_0x2df5be[_0xec76('0xd')]){switch(_0x3303cc){case'VoiceQueues':case _0xec76('0xe'):case _0xec76('0xf'):case _0xec76('0x10'):case _0xec76('0x11'):case _0xec76('0x12'):case _0xec76('0x13'):return db[_0x49bc55][_0xec76('0x14')](queryQueues);case _0xec76('0x15'):return db[_0x49bc55][_0xec76('0x14')](queryTelephones);case _0xec76('0x16'):return db[_0x49bc55][_0xec76('0x14')](queryTrunks);case _0xec76('0x17'):return db[_0x49bc55][_0xec76('0x14')](queryCampaigns);}}else{return db[_0xec76('0x18')][_0xec76('0x14')]({'attributes':[_0xec76('0x19')],'where':{'sectionId':_0x2df5be['id']},'raw':!![]})['then'](function(_0xe2bf8d){if(_0xe2bf8d){var _0x490c76={'where':{'id':_[_0xec76('0x1a')](_0xe2bf8d,_0xec76('0x19'))},'raw':!![]};switch(_0x49bc55){case _0xec76('0x5'):_0x490c76[_0xec76('0x1b')][_0xec76('0x1c')]=_0xec76('0x8');break;case'Campaign':_0x490c76['where'][_0xec76('0x9')]=_0xec76('0xa');break;}return db[_0x49bc55][_0xec76('0x14')](_0x490c76);}else{return[];}});}}else{return[];}})[_0xec76('0x1d')](function(_0x190fe1){return _0x190fe1;});}function joinOrLeaveQueues(_0xbcd2f3,_0x35f8e1,_0x3ab610,_0x146313){_0xbcd2f3[_0x35f8e1](util[_0xec76('0x1e')](_0xec76('0x1f'),_0x3ab610,_0x146313[_0xec76('0x6')]));if(_0x146313['Agents']){for(var _0x1ef320=0x0;_0x1ef320<_0x146313[_0xec76('0x20')][_0xec76('0x21')];_0x1ef320+=0x1){_0xbcd2f3[_0x35f8e1](util[_0xec76('0x1e')](_0xec76('0x22'),_0x146313[_0xec76('0x20')][_0x1ef320][_0xec76('0x6')]));}}}function joinOrLeave(_0x582ae3,_0x5324f7,_0x91592a){var _0x50aa67;if(_0x582ae3[_0xec76('0x23')][_0xec76('0x24')]['id']){db[_0xec76('0x5')][_0xec76('0x25')]({'attributes':['id',_0xec76('0x6'),'role',_0xec76('0x26')],'where':{'id':_0x582ae3['handshake']['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0xec76('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xec76('0x28')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xec76('0x29')],'as':_0xec76('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0xec76('0x2b')],'as':_0xec76('0x2c'),'attributes':['id'],'raw':!![]},{'model':db[_0xec76('0x2d')],'as':_0xec76('0x2e'),'attributes':['id'],'raw':!![]},{'model':db[_0xec76('0x2f')],'as':_0xec76('0x30'),'attributes':['id'],'raw':!![]}]})[_0xec76('0x1d')](function(_0x584574){if(_0x584574){_0x50aa67=_0x584574;_0x582ae3[_0x5324f7](util[_0xec76('0x1e')](_0xec76('0x22'),_0x584574['name']));var _0x3784cb=[];switch(_0x584574[_0xec76('0x1c')]){case _0xec76('0x31'):_0x582ae3[_0x5324f7](_0xec76('0x32'));_0x582ae3[_0x5324f7]('voice:outbound');if(queryQueues['hasOwnProperty'](_0xec76('0x33'))){delete queryQueues[_0xec76('0x33')];}_0x3784cb[_0xec76('0x34')](db[_0xec76('0x35')][_0xec76('0x14')](queryQueues));_0x3784cb[_0xec76('0x34')](db[_0xec76('0x36')][_0xec76('0x14')](queryQueues));_0x3784cb[_0xec76('0x34')](db[_0xec76('0x37')][_0xec76('0x14')](queryQueues));_0x3784cb[_0xec76('0x34')](db[_0xec76('0x38')][_0xec76('0x14')](queryQueues));_0x3784cb[_0xec76('0x34')](db[_0xec76('0x39')][_0xec76('0x14')](queryQueues));_0x3784cb[_0xec76('0x34')](db['OpenchannelQueue'][_0xec76('0x14')](queryQueues));_0x3784cb[_0xec76('0x34')](db[_0xec76('0x3a')][_0xec76('0x14')](queryQueues));_0x3784cb[_0xec76('0x34')](db[_0xec76('0x5')][_0xec76('0x14')](queryTelephones));_0x3784cb[_0xec76('0x34')](db['Trunk'][_0xec76('0x14')](queryTrunks));_0x3784cb[_0xec76('0x34')](db['Campaign']['findAll'](queryCampaigns));_0x3784cb['push'](db[_0xec76('0x5')][_0xec76('0x14')](queryAgents));break;case _0xec76('0x3b'):_0x582ae3[_0x5324f7](_0xec76('0x32'));_0x582ae3[_0x5324f7](_0xec76('0x3c'));_0x3784cb[_0xec76('0x34')](getAssociatedResources(_0xec76('0x3d'),_0x584574[_0xec76('0x26')],_0xec76('0x35')));_0x3784cb['push'](getAssociatedResources('ChatQueues',_0x584574[_0xec76('0x26')],'ChatQueue'));_0x3784cb['push'](getAssociatedResources(_0xec76('0xf'),_0x584574[_0xec76('0x26')],_0xec76('0x37')));_0x3784cb[_0xec76('0x34')](getAssociatedResources(_0xec76('0x10'),_0x584574['userProfileId'],_0xec76('0x38')));_0x3784cb[_0xec76('0x34')](getAssociatedResources(_0xec76('0x11'),_0x584574[_0xec76('0x26')],_0xec76('0x39')));_0x3784cb[_0xec76('0x34')](getAssociatedResources(_0xec76('0x12'),_0x584574[_0xec76('0x26')],_0xec76('0x3e')));_0x3784cb[_0xec76('0x34')](getAssociatedResources(_0xec76('0x13'),_0x584574[_0xec76('0x26')],_0xec76('0x3a')));_0x3784cb[_0xec76('0x34')](getAssociatedResources(_0xec76('0x15'),_0x584574['userProfileId'],_0xec76('0x5')));_0x3784cb[_0xec76('0x34')](getAssociatedResources(_0xec76('0x16'),_0x584574[_0xec76('0x26')],_0xec76('0x3f')));_0x3784cb['push'](getAssociatedResources(_0xec76('0x17'),_0x584574[_0xec76('0x26')],_0xec76('0x40')));_0x3784cb['push'](db['User'][_0xec76('0x14')](queryAgents));break;case _0xec76('0x7'):_0x582ae3[_0x5324f7]('voice:inbound');_0x582ae3[_0x5324f7](_0xec76('0x3c'));_0x3784cb['push'](_0x584574[_0xec76('0x41')]({'attributes':['id',_0xec76('0x6')]}));_0x3784cb[_0xec76('0x34')](_0x584574[_0xec76('0x42')]({'attributes':['id',_0xec76('0x6')]}));_0x3784cb[_0xec76('0x34')](_0x584574[_0xec76('0x43')]({'attributes':['id',_0xec76('0x6')]}));_0x3784cb[_0xec76('0x34')](_0x584574[_0xec76('0x44')]({'attributes':['id',_0xec76('0x6')]}));_0x3784cb[_0xec76('0x34')](_0x584574[_0xec76('0x45')]({'attributes':['id',_0xec76('0x6')]}));_0x3784cb[_0xec76('0x34')](_0x584574[_0xec76('0x46')]({'attributes':['id',_0xec76('0x6')]}));_0x3784cb[_0xec76('0x34')](_0x584574['getWhatsappQueues']({'attributes':['id',_0xec76('0x6')]}));break;}return BPromise['all'](_0x3784cb);}})[_0xec76('0x1d')](function(_0xc223cc){if(_0xc223cc&&_0xc223cc[_0xec76('0x21')]){for(var _0x2c0dc0=0x0;_0x2c0dc0<_0xc223cc[_0xec76('0x21')];_0x2c0dc0+=0x1){for(var _0x46e905=0x0;_0x46e905<_0xc223cc[_0x2c0dc0]['length'];_0x46e905+=0x1){switch(_0x2c0dc0){case 0x0:joinOrLeaveQueues(_0x582ae3,_0x5324f7,_0xec76('0x47'),_0xc223cc[_0x2c0dc0][_0x46e905]);break;case 0x1:joinOrLeaveQueues(_0x582ae3,_0x5324f7,'chat',_0xc223cc[_0x2c0dc0][_0x46e905]);break;case 0x2:joinOrLeaveQueues(_0x582ae3,_0x5324f7,_0xec76('0x48'),_0xc223cc[_0x2c0dc0][_0x46e905]);break;case 0x3:joinOrLeaveQueues(_0x582ae3,_0x5324f7,_0xec76('0x49'),_0xc223cc[_0x2c0dc0][_0x46e905]);break;case 0x4:joinOrLeaveQueues(_0x582ae3,_0x5324f7,'mail',_0xc223cc[_0x2c0dc0][_0x46e905]);break;case 0x5:joinOrLeaveQueues(_0x582ae3,_0x5324f7,'openchannel',_0xc223cc[_0x2c0dc0][_0x46e905]);break;case 0x6:joinOrLeaveQueues(_0x582ae3,_0x5324f7,_0xec76('0x4a'),_0xc223cc[_0x2c0dc0][_0x46e905]);break;case 0x7:if(_0x50aa67[_0xec76('0x1c')]!==_0xec76('0x7'))_0x582ae3[_0x5324f7](util['format'](_0xec76('0x4b'),_0xc223cc[_0x2c0dc0][_0x46e905]['name']));break;case 0x8:if(_0x50aa67[_0xec76('0x1c')]!=='agent')_0x582ae3[_0x5324f7](util[_0xec76('0x1e')](_0xec76('0x4c'),_0xc223cc[_0x2c0dc0][_0x46e905]['name']));break;case 0x9:if(_0x50aa67[_0xec76('0x1c')]!==_0xec76('0x7'))_0x582ae3[_0x5324f7](util['format']('campaign:%s:%s',_0xc223cc[_0x2c0dc0][_0x46e905][_0xec76('0x9')],_0xc223cc[_0x2c0dc0][_0x46e905][_0xec76('0x6')]));break;case 0xa:_0x582ae3[_0x5324f7](util[_0xec76('0x1e')](_0xec76('0x22'),_0xc223cc[_0x2c0dc0][_0x46e905]['name']));break;}}}}})[_0xec76('0x1d')](function(){if(_0x5324f7===_0xec76('0x4d')){var _0x10b333=_[_0xec76('0x1a')](_0x50aa67[_0xec76('0x27')],'id');return _0x50aa67[_0xec76('0x4e')](_0x10b333)[_0xec76('0x1d')](function(){for(var _0x5617a2=0x0;_0x5617a2<_0x10b333[_0xec76('0x21')];_0x5617a2+=0x1){_0x91592a[_0xec76('0x4f')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x10b333[_0x5617a2]),'UserId':Number(_0x50aa67['id'])});}});}})[_0xec76('0x1d')](function(){if(_0x5324f7==='leave'){var _0x4c15a8=_[_0xec76('0x1a')](_0x50aa67[_0xec76('0x50')],'id');return _0x50aa67[_0xec76('0x51')](_0x4c15a8)[_0xec76('0x1d')](function(){for(var _0x485f3c=0x0;_0x485f3c<_0x4c15a8[_0xec76('0x21')];_0x485f3c+=0x1){_0x91592a[_0xec76('0x4f')](_0xec76('0x52'),{'MailInteractionId':Number(_0x4c15a8[_0x485f3c]),'UserId':Number(_0x50aa67['id'])});}});}})[_0xec76('0x1d')](function(){if(_0x5324f7===_0xec76('0x4d')){var _0x95d82=_[_0xec76('0x1a')](_0x50aa67['FaxInteractions'],'id');return _0x50aa67['removeFaxInteractions'](_0x95d82)[_0xec76('0x1d')](function(){for(var _0x558991=0x0;_0x558991<_0x95d82[_0xec76('0x21')];_0x558991+=0x1){_0x91592a['emit'](_0xec76('0x53'),{'FaxInteractionId':Number(_0x95d82[_0x558991]),'UserId':Number(_0x50aa67['id'])});}});}})[_0xec76('0x1d')](function(){if(_0x5324f7===_0xec76('0x4d')){var _0x198dfd=_[_0xec76('0x1a')](_0x50aa67[_0xec76('0x2c')],'id');return _0x50aa67[_0xec76('0x54')](_0x198dfd)['then'](function(){for(var _0x243588=0x0;_0x243588<_0x198dfd[_0xec76('0x21')];_0x243588+=0x1){_0x91592a[_0xec76('0x4f')](_0xec76('0x55'),{'SmsInteractionId':Number(_0x198dfd[_0x243588]),'UserId':Number(_0x50aa67['id'])});}});}})['then'](function(){if(_0x5324f7===_0xec76('0x4d')){var _0x21e9f=_[_0xec76('0x1a')](_0x50aa67[_0xec76('0x2e')],'id');return _0x50aa67[_0xec76('0x56')](_0x21e9f)['then'](function(){for(var _0x378fb8=0x0;_0x378fb8<_0x21e9f[_0xec76('0x21')];_0x378fb8+=0x1){_0x91592a['emit'](_0xec76('0x57'),{'OpenchannelInteractionId':Number(_0x21e9f[_0x378fb8]),'UserId':Number(_0x50aa67['id'])});}});}})[_0xec76('0x1d')](function(){if(_0x5324f7===_0xec76('0x4d')){var _0x58e5d0=_['map'](_0x50aa67[_0xec76('0x30')],'id');return _0x50aa67[_0xec76('0x58')](_0x58e5d0)['then'](function(){for(var _0x27274f=0x0;_0x27274f<_0x58e5d0['length'];_0x27274f+=0x1){_0x91592a[_0xec76('0x4f')](_0xec76('0x59'),{'WhatsappInteractionId':Number(_0x58e5d0[_0x27274f]),'UserId':Number(_0x50aa67['id'])});}});}})['catch'](function(_0x4613e2){_0x582ae3[_0xec76('0x5a')](_0x4613e2);});}}function onDisconnect(_0x3f1715,_0x229bc1){joinOrLeave(_0x3f1715,'leave',_0x229bc1);}function onConnect(_0x217a0c){joinOrLeave(_0x217a0c,_0xec76('0x5b'));}exports['default']=function(_0xa95819){_0xa95819['on'](_0xec76('0x5c'),function(_0x4f4e0a){_0x4f4e0a[_0xec76('0x5d')](0x0);_0x4f4e0a[_0xec76('0x5e')]=_0x4f4e0a[_0xec76('0x5f')][_0xec76('0x5c')][_0xec76('0x60')]+':'+_0x4f4e0a['request']['connection'][_0xec76('0x61')];_0x4f4e0a['connectedAt']=new Date();_0x4f4e0a['log']=function(_0x31bb11){console[_0xec76('0x5a')](_0xec76('0x62')+_0x4f4e0a[_0xec76('0x63')][_0xec76('0x6')]+'['+_0x4f4e0a[_0xec76('0x5e')]+']',_0x31bb11);};_0x4f4e0a['on']('disconnect',function(){onDisconnect(_0x4f4e0a,_0xa95819);_0x4f4e0a['log'](_0xec76('0x64'));});onConnect(_0x4f4e0a);_0x4f4e0a[_0xec76('0x5a')](_0xec76('0x65'));});};