807ce320ff598bb09d60a0073b31c15baa3431a8
[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 _0xabc4=['OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueues','VoiceQueue','SmsQueues','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','telephone:%s','trunk:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','map','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','default','connection','setMaxListeners','request','remotePort','connectedAt','SocketIO\x20','nsp','address','disconnect','CONNECTED','util','bluebird','../mysqldb','name','Agents','User','role','agent','telephone','UserProfileSection','findOne','then','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','where','Campaign','type','format','%s:queue:%s','length','handshake','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','user:%s','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xabc4,0x160));var _0x4abc=function(_0x154c81,_0x523d49){_0x154c81=_0x154c81-0x0;var _0x955c6e=_0xabc4[_0x154c81];return _0x955c6e;};'use strict';var _=require('lodash');var util=require(_0x4abc('0x0'));var BPromise=require(_0x4abc('0x1'));var db=require(_0x4abc('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x4abc('0x3')],'include':[{'as':_0x4abc('0x4'),'model':db[_0x4abc('0x5')],'attributes':['id',_0x4abc('0x3'),_0x4abc('0x6')],'raw':!![],'where':{'role':_0x4abc('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x4abc('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x4abc('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x4abc('0x3')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x4abc('0x3'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x3fdd13,_0x45bf51,_0x48a00a){return db[_0x4abc('0x9')][_0x4abc('0xa')]({'where':{'name':_0x3fdd13,'userProfileId':_0x45bf51},'raw':!![]})[_0x4abc('0xb')](function(_0x302f92){if(_0x302f92){if(_0x302f92['autoAssociation']){switch(_0x3fdd13){case'VoiceQueues':case _0x4abc('0xc'):case _0x4abc('0xd'):case'SmsQueues':case _0x4abc('0xe'):case _0x4abc('0xf'):case _0x4abc('0x10'):return db[_0x48a00a][_0x4abc('0x11')](queryQueues);case _0x4abc('0x12'):return db[_0x48a00a][_0x4abc('0x11')](queryTelephones);case _0x4abc('0x13'):return db[_0x48a00a][_0x4abc('0x11')](queryTrunks);case _0x4abc('0x14'):return db[_0x48a00a][_0x4abc('0x11')](queryCampaigns);}}else{return db[_0x4abc('0x15')][_0x4abc('0x11')]({'attributes':[_0x4abc('0x16')],'where':{'sectionId':_0x302f92['id']},'raw':!![]})[_0x4abc('0xb')](function(_0x79abbb){if(_0x79abbb){var _0x3f3b9b={'where':{'id':_['map'](_0x79abbb,_0x4abc('0x16'))},'raw':!![]};switch(_0x48a00a){case _0x4abc('0x5'):_0x3f3b9b[_0x4abc('0x17')][_0x4abc('0x6')]=_0x4abc('0x8');break;case _0x4abc('0x18'):_0x3f3b9b[_0x4abc('0x17')][_0x4abc('0x19')]='ivr';break;}return db[_0x48a00a][_0x4abc('0x11')](_0x3f3b9b);}else{return[];}});}}else{return[];}})['then'](function(_0x2a3812){return _0x2a3812;});}function joinOrLeaveQueues(_0x1c33db,_0x3dadff,_0x5ae154,_0x130770){_0x1c33db[_0x3dadff](util[_0x4abc('0x1a')](_0x4abc('0x1b'),_0x5ae154,_0x130770[_0x4abc('0x3')]));if(_0x130770['Agents']){for(var _0x27eeb0=0x0;_0x27eeb0<_0x130770[_0x4abc('0x4')][_0x4abc('0x1c')];_0x27eeb0+=0x1){_0x1c33db[_0x3dadff](util['format']('user:%s',_0x130770[_0x4abc('0x4')][_0x27eeb0][_0x4abc('0x3')]));}}}function joinOrLeave(_0x5ec4e8,_0xdeb3ad,_0xa1642c){var _0x1faae2;if(_0x5ec4e8[_0x4abc('0x1d')]['query']['id']){db[_0x4abc('0x5')][_0x4abc('0x1e')]({'attributes':['id',_0x4abc('0x3'),_0x4abc('0x6'),_0x4abc('0x1f')],'where':{'id':_0x5ec4e8[_0x4abc('0x1d')]['query']['id']},'include':[{'model':db[_0x4abc('0x20')],'as':_0x4abc('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x4abc('0x22')],'as':_0x4abc('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x4abc('0x24')],'as':_0x4abc('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x4abc('0x26')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x4abc('0x27')],'as':_0x4abc('0x28'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x4abc('0x29'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x2b466b){if(_0x2b466b){_0x1faae2=_0x2b466b;_0x5ec4e8[_0xdeb3ad](util[_0x4abc('0x1a')](_0x4abc('0x2a'),_0x2b466b[_0x4abc('0x3')]));var _0x737109=[];switch(_0x2b466b[_0x4abc('0x6')]){case'admin':_0x5ec4e8[_0xdeb3ad](_0x4abc('0x2b'));_0x5ec4e8[_0xdeb3ad](_0x4abc('0x2c'));if(queryQueues[_0x4abc('0x2d')](_0x4abc('0x2e'))){delete queryQueues[_0x4abc('0x2e')];}_0x737109[_0x4abc('0x2f')](db['VoiceQueue']['findAll'](queryQueues));_0x737109[_0x4abc('0x2f')](db[_0x4abc('0x30')]['findAll'](queryQueues));_0x737109[_0x4abc('0x2f')](db[_0x4abc('0x31')][_0x4abc('0x11')](queryQueues));_0x737109['push'](db[_0x4abc('0x32')][_0x4abc('0x11')](queryQueues));_0x737109[_0x4abc('0x2f')](db[_0x4abc('0x33')][_0x4abc('0x11')](queryQueues));_0x737109['push'](db[_0x4abc('0x34')][_0x4abc('0x11')](queryQueues));_0x737109[_0x4abc('0x2f')](db[_0x4abc('0x35')][_0x4abc('0x11')](queryQueues));_0x737109['push'](db['User']['findAll'](queryTelephones));_0x737109[_0x4abc('0x2f')](db[_0x4abc('0x36')][_0x4abc('0x11')](queryTrunks));_0x737109[_0x4abc('0x2f')](db['Campaign'][_0x4abc('0x11')](queryCampaigns));_0x737109[_0x4abc('0x2f')](db[_0x4abc('0x5')][_0x4abc('0x11')](queryAgents));break;case _0x4abc('0x37'):_0x5ec4e8[_0xdeb3ad](_0x4abc('0x2b'));_0x5ec4e8[_0xdeb3ad](_0x4abc('0x2c'));_0x737109[_0x4abc('0x2f')](getAssociatedResources(_0x4abc('0x38'),_0x2b466b[_0x4abc('0x1f')],_0x4abc('0x39')));_0x737109[_0x4abc('0x2f')](getAssociatedResources(_0x4abc('0xc'),_0x2b466b[_0x4abc('0x1f')],_0x4abc('0x30')));_0x737109[_0x4abc('0x2f')](getAssociatedResources(_0x4abc('0xd'),_0x2b466b[_0x4abc('0x1f')],_0x4abc('0x31')));_0x737109['push'](getAssociatedResources(_0x4abc('0x3a'),_0x2b466b['userProfileId'],_0x4abc('0x32')));_0x737109[_0x4abc('0x2f')](getAssociatedResources(_0x4abc('0xe'),_0x2b466b[_0x4abc('0x1f')],_0x4abc('0x33')));_0x737109['push'](getAssociatedResources(_0x4abc('0xf'),_0x2b466b[_0x4abc('0x1f')],_0x4abc('0x34')));_0x737109[_0x4abc('0x2f')](getAssociatedResources(_0x4abc('0x10'),_0x2b466b[_0x4abc('0x1f')],_0x4abc('0x35')));_0x737109[_0x4abc('0x2f')](getAssociatedResources(_0x4abc('0x12'),_0x2b466b[_0x4abc('0x1f')],'User'));_0x737109[_0x4abc('0x2f')](getAssociatedResources(_0x4abc('0x13'),_0x2b466b[_0x4abc('0x1f')],_0x4abc('0x36')));_0x737109[_0x4abc('0x2f')](getAssociatedResources(_0x4abc('0x14'),_0x2b466b[_0x4abc('0x1f')],_0x4abc('0x18')));_0x737109[_0x4abc('0x2f')](db[_0x4abc('0x5')][_0x4abc('0x11')](queryAgents));break;case _0x4abc('0x7'):_0x5ec4e8[_0xdeb3ad](_0x4abc('0x2b'));_0x5ec4e8[_0xdeb3ad]('voice:outbound');_0x737109['push'](_0x2b466b[_0x4abc('0x3b')]({'attributes':['id',_0x4abc('0x3')]}));_0x737109[_0x4abc('0x2f')](_0x2b466b[_0x4abc('0x3c')]({'attributes':['id',_0x4abc('0x3')]}));_0x737109['push'](_0x2b466b[_0x4abc('0x3d')]({'attributes':['id','name']}));_0x737109[_0x4abc('0x2f')](_0x2b466b['getSmsQueues']({'attributes':['id',_0x4abc('0x3')]}));_0x737109[_0x4abc('0x2f')](_0x2b466b[_0x4abc('0x3e')]({'attributes':['id',_0x4abc('0x3')]}));_0x737109[_0x4abc('0x2f')](_0x2b466b['getOpenchannelQueues']({'attributes':['id',_0x4abc('0x3')]}));_0x737109['push'](_0x2b466b[_0x4abc('0x3f')]({'attributes':['id',_0x4abc('0x3')]}));break;}return BPromise[_0x4abc('0x40')](_0x737109);}})['then'](function(_0x467487){if(_0x467487&&_0x467487[_0x4abc('0x1c')]){for(var _0x20c307=0x0;_0x20c307<_0x467487[_0x4abc('0x1c')];_0x20c307+=0x1){for(var _0x2d2cf7=0x0;_0x2d2cf7<_0x467487[_0x20c307][_0x4abc('0x1c')];_0x2d2cf7+=0x1){switch(_0x20c307){case 0x0:joinOrLeaveQueues(_0x5ec4e8,_0xdeb3ad,_0x4abc('0x41'),_0x467487[_0x20c307][_0x2d2cf7]);break;case 0x1:joinOrLeaveQueues(_0x5ec4e8,_0xdeb3ad,_0x4abc('0x42'),_0x467487[_0x20c307][_0x2d2cf7]);break;case 0x2:joinOrLeaveQueues(_0x5ec4e8,_0xdeb3ad,_0x4abc('0x43'),_0x467487[_0x20c307][_0x2d2cf7]);break;case 0x3:joinOrLeaveQueues(_0x5ec4e8,_0xdeb3ad,_0x4abc('0x44'),_0x467487[_0x20c307][_0x2d2cf7]);break;case 0x4:joinOrLeaveQueues(_0x5ec4e8,_0xdeb3ad,_0x4abc('0x45'),_0x467487[_0x20c307][_0x2d2cf7]);break;case 0x5:joinOrLeaveQueues(_0x5ec4e8,_0xdeb3ad,_0x4abc('0x46'),_0x467487[_0x20c307][_0x2d2cf7]);break;case 0x6:joinOrLeaveQueues(_0x5ec4e8,_0xdeb3ad,'whatsapp',_0x467487[_0x20c307][_0x2d2cf7]);break;case 0x7:_0x5ec4e8[_0xdeb3ad](util['format'](_0x4abc('0x47'),_0x467487[_0x20c307][_0x2d2cf7][_0x4abc('0x3')]));break;case 0x8:_0x5ec4e8[_0xdeb3ad](util[_0x4abc('0x1a')](_0x4abc('0x48'),_0x467487[_0x20c307][_0x2d2cf7][_0x4abc('0x3')]));break;case 0x9:_0x5ec4e8[_0xdeb3ad](util[_0x4abc('0x1a')]('campaign:%s:%s',_0x467487[_0x20c307][_0x2d2cf7][_0x4abc('0x19')],_0x467487[_0x20c307][_0x2d2cf7][_0x4abc('0x3')]));break;case 0xa:_0x5ec4e8[_0xdeb3ad](util['format'](_0x4abc('0x2a'),_0x467487[_0x20c307][_0x2d2cf7][_0x4abc('0x3')]));break;}}}}})[_0x4abc('0xb')](function(){if(_0xdeb3ad==='leave'){var _0x17da4d=_['map'](_0x1faae2[_0x4abc('0x21')],'id');return _0x1faae2[_0x4abc('0x49')](_0x17da4d)['then'](function(){for(var _0x3cf5a4=0x0;_0x3cf5a4<_0x17da4d['length'];_0x3cf5a4+=0x1){_0xa1642c[_0x4abc('0x4a')](_0x4abc('0x4b'),{'ChatInteractionId':Number(_0x17da4d[_0x3cf5a4]),'UserId':Number(_0x1faae2['id'])});}});}})[_0x4abc('0xb')](function(){if(_0xdeb3ad===_0x4abc('0x4c')){var _0xa0fa8f=_[_0x4abc('0x4d')](_0x1faae2[_0x4abc('0x23')],'id');return _0x1faae2[_0x4abc('0x4e')](_0xa0fa8f)[_0x4abc('0xb')](function(){for(var _0x53bc42=0x0;_0x53bc42<_0xa0fa8f['length'];_0x53bc42+=0x1){_0xa1642c['emit'](_0x4abc('0x4f'),{'MailInteractionId':Number(_0xa0fa8f[_0x53bc42]),'UserId':Number(_0x1faae2['id'])});}});}})['then'](function(){if(_0xdeb3ad===_0x4abc('0x4c')){var _0xac2efb=_[_0x4abc('0x4d')](_0x1faae2['FaxInteractions'],'id');return _0x1faae2[_0x4abc('0x50')](_0xac2efb)['then'](function(){for(var _0xda0b44=0x0;_0xda0b44<_0xac2efb[_0x4abc('0x1c')];_0xda0b44+=0x1){_0xa1642c[_0x4abc('0x4a')](_0x4abc('0x51'),{'FaxInteractionId':Number(_0xac2efb[_0xda0b44]),'UserId':Number(_0x1faae2['id'])});}});}})['then'](function(){if(_0xdeb3ad===_0x4abc('0x4c')){var _0x3851e6=_[_0x4abc('0x4d')](_0x1faae2[_0x4abc('0x52')],'id');return _0x1faae2[_0x4abc('0x53')](_0x3851e6)[_0x4abc('0xb')](function(){for(var _0x978416=0x0;_0x978416<_0x3851e6[_0x4abc('0x1c')];_0x978416+=0x1){_0xa1642c[_0x4abc('0x4a')](_0x4abc('0x54'),{'SmsInteractionId':Number(_0x3851e6[_0x978416]),'UserId':Number(_0x1faae2['id'])});}});}})[_0x4abc('0xb')](function(){if(_0xdeb3ad===_0x4abc('0x4c')){var _0x540329=_[_0x4abc('0x4d')](_0x1faae2['OpenchannelInteractions'],'id');return _0x1faae2['removeOpenchannelInteractions'](_0x540329)['then'](function(){for(var _0x17c9ec=0x0;_0x17c9ec<_0x540329['length'];_0x17c9ec+=0x1){_0xa1642c[_0x4abc('0x4a')](_0x4abc('0x55'),{'OpenchannelInteractionId':Number(_0x540329[_0x17c9ec]),'UserId':Number(_0x1faae2['id'])});}});}})[_0x4abc('0xb')](function(){if(_0xdeb3ad===_0x4abc('0x4c')){var _0x2a3542=_[_0x4abc('0x4d')](_0x1faae2['WhatsappInteractions'],'id');return _0x1faae2[_0x4abc('0x56')](_0x2a3542)[_0x4abc('0xb')](function(){for(var _0x357dbf=0x0;_0x357dbf<_0x2a3542['length'];_0x357dbf+=0x1){_0xa1642c[_0x4abc('0x4a')](_0x4abc('0x57'),{'WhatsappInteractionId':Number(_0x2a3542[_0x357dbf]),'UserId':Number(_0x1faae2['id'])});}});}})[_0x4abc('0x58')](function(_0x489229){_0x5ec4e8[_0x4abc('0x59')](_0x489229);});}}function onDisconnect(_0x49179b,_0x158557){joinOrLeave(_0x49179b,'leave',_0x158557);}function onConnect(_0x5926c8){joinOrLeave(_0x5926c8,'join');}exports[_0x4abc('0x5a')]=function(_0x272bbc){_0x272bbc['on'](_0x4abc('0x5b'),function(_0x4580dd){_0x4580dd[_0x4abc('0x5c')](0x0);_0x4580dd['address']=_0x4580dd['request']['connection']['remoteAddress']+':'+_0x4580dd[_0x4abc('0x5d')][_0x4abc('0x5b')][_0x4abc('0x5e')];_0x4580dd[_0x4abc('0x5f')]=new Date();_0x4580dd['log']=function(_0xc6448f){console[_0x4abc('0x59')](_0x4abc('0x60')+_0x4580dd[_0x4abc('0x61')][_0x4abc('0x3')]+'['+_0x4580dd[_0x4abc('0x62')]+']',_0xc6448f);};_0x4580dd['on'](_0x4abc('0x63'),function(){onDisconnect(_0x4580dd,_0x272bbc);_0x4580dd[_0x4abc('0x59')]('DISCONNECTED');});onConnect(_0x4580dd);_0x4580dd[_0x4abc('0x59')](_0x4abc('0x64'));});};