a0f48e53ef64e4450b393ec6dec7609490028061
[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 _0x2a75=['all','length','voice','chat','fax','sms','mail','openchannel','telephone:%s','campaign:%s:%s','leave','user_has_chat_interactions:remove','removeMailInteractions','emit','user_has_mail_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','catch','log','join','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','Agents','User','name','role','agent','telephone','type','ivr','findOne','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','Telephones','Trunks','IvrCampaigns','findAll','UserProfileResource','resourceId','then','map','where','Campaign','format','%s:queue:%s','user:%s','handshake','find','query','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','VoiceQueue','push','ChatQueue','MailQueue','OpenchannelQueue','user','userProfileId','FaxQueue','Trunk','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues'];(function(_0x2eb02b,_0x3d7231){var _0x31acd1=function(_0xdb9e06){while(--_0xdb9e06){_0x2eb02b['push'](_0x2eb02b['shift']());}};_0x31acd1(++_0x3d7231);}(_0x2a75,0x7e));var _0x52a7=function(_0x52800c,_0x42ec1f){_0x52800c=_0x52800c-0x0;var _0x4c1a07=_0x2a75[_0x52800c];return _0x4c1a07;};'use strict';var _=require(_0x52a7('0x0'));var util=require(_0x52a7('0x1'));var BPromise=require(_0x52a7('0x2'));var db=require(_0x52a7('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0x52a7('0x4'),'model':db[_0x52a7('0x5')],'attributes':['id',_0x52a7('0x6'),_0x52a7('0x7')],'raw':!![],'where':{'role':_0x52a7('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x52a7('0x6')],'where':{'role':_0x52a7('0x9')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x52a7('0x6')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x52a7('0x6'),_0x52a7('0xa')],'where':{'type':_0x52a7('0xb')}};function getAssociatedResources(_0x2d9106,_0xd1199c,_0x19ca2d){return db['UserProfileSection'][_0x52a7('0xc')]({'where':{'name':_0x2d9106,'userProfileId':_0xd1199c},'raw':!![]})['then'](function(_0xbda1e0){if(_0xbda1e0){if(_0xbda1e0['autoAssociation']){switch(_0x2d9106){case _0x52a7('0xd'):case _0x52a7('0xe'):case _0x52a7('0xf'):case'SmsQueues':case _0x52a7('0x10'):case _0x52a7('0x11'):return db[_0x19ca2d]['findAll'](queryQueues);case _0x52a7('0x12'):return db[_0x19ca2d]['findAll'](queryTelephones);case _0x52a7('0x13'):return db[_0x19ca2d]['findAll'](queryTrunks);case _0x52a7('0x14'):return db[_0x19ca2d][_0x52a7('0x15')](queryCampaigns);}}else{return db[_0x52a7('0x16')][_0x52a7('0x15')]({'attributes':[_0x52a7('0x17')],'where':{'sectionId':_0xbda1e0['id']},'raw':!![]})[_0x52a7('0x18')](function(_0xa4e7d5){if(_0xa4e7d5){var _0x4b1634={'where':{'id':_[_0x52a7('0x19')](_0xa4e7d5,_0x52a7('0x17'))},'raw':!![]};switch(_0x19ca2d){case _0x52a7('0x5'):_0x4b1634[_0x52a7('0x1a')][_0x52a7('0x7')]=_0x52a7('0x9');break;case _0x52a7('0x1b'):_0x4b1634[_0x52a7('0x1a')][_0x52a7('0xa')]=_0x52a7('0xb');break;}return db[_0x19ca2d][_0x52a7('0x15')](_0x4b1634);}else{return[];}});}}else{return[];}})[_0x52a7('0x18')](function(_0x41ddfc){return _0x41ddfc;});}function joinOrLeaveQueues(_0x39082e,_0x409417,_0x13964a,_0x3c22ca){_0x39082e[_0x409417](util[_0x52a7('0x1c')](_0x52a7('0x1d'),_0x13964a,_0x3c22ca['name']));if(_0x3c22ca[_0x52a7('0x4')]){for(var _0x3fa2d3=0x0;_0x3fa2d3<_0x3c22ca['Agents']['length'];_0x3fa2d3+=0x1){_0x39082e[_0x409417](util['format'](_0x52a7('0x1e'),_0x3c22ca[_0x52a7('0x4')][_0x3fa2d3][_0x52a7('0x6')]));}}}function joinOrLeave(_0x135fd6,_0x5ee79b,_0x168fcb){var _0x145e1f;if(_0x135fd6[_0x52a7('0x1f')]['query']['id']){db[_0x52a7('0x5')][_0x52a7('0x20')]({'attributes':['id',_0x52a7('0x6'),_0x52a7('0x7'),'userProfileId'],'where':{'id':_0x135fd6[_0x52a7('0x1f')][_0x52a7('0x21')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x52a7('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x52a7('0x23')],'as':_0x52a7('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x52a7('0x25')],'as':_0x52a7('0x26'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x52a7('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x52a7('0x28')],'as':_0x52a7('0x29'),'attributes':['id'],'raw':!![]}]})[_0x52a7('0x18')](function(_0x1b2397){if(_0x1b2397){_0x145e1f=_0x1b2397;_0x135fd6[_0x5ee79b](util[_0x52a7('0x1c')]('user:%s',_0x1b2397[_0x52a7('0x6')]));var _0x5e5a77=[];switch(_0x1b2397[_0x52a7('0x7')]){case _0x52a7('0x2a'):_0x135fd6[_0x5ee79b](_0x52a7('0x2b'));_0x135fd6[_0x5ee79b](_0x52a7('0x2c'));if(queryQueues[_0x52a7('0x2d')](_0x52a7('0x2e'))){delete queryQueues[_0x52a7('0x2e')];}_0x5e5a77['push'](db[_0x52a7('0x2f')][_0x52a7('0x15')](queryQueues));_0x5e5a77[_0x52a7('0x30')](db[_0x52a7('0x31')]['findAll'](queryQueues));_0x5e5a77[_0x52a7('0x30')](db['FaxQueue'][_0x52a7('0x15')](queryQueues));_0x5e5a77[_0x52a7('0x30')](db['SmsQueue']['findAll'](queryQueues));_0x5e5a77[_0x52a7('0x30')](db[_0x52a7('0x32')][_0x52a7('0x15')](queryQueues));_0x5e5a77[_0x52a7('0x30')](db[_0x52a7('0x33')][_0x52a7('0x15')](queryQueues));_0x5e5a77['push'](db['User'][_0x52a7('0x15')](queryTelephones));_0x5e5a77['push'](db['Trunk']['findAll'](queryTrunks));_0x5e5a77[_0x52a7('0x30')](db[_0x52a7('0x1b')][_0x52a7('0x15')](queryCampaigns));_0x5e5a77[_0x52a7('0x30')](db[_0x52a7('0x5')][_0x52a7('0x15')](queryAgents));break;case _0x52a7('0x34'):_0x135fd6[_0x5ee79b](_0x52a7('0x2b'));_0x135fd6[_0x5ee79b](_0x52a7('0x2c'));_0x5e5a77['push'](getAssociatedResources(_0x52a7('0xd'),_0x1b2397[_0x52a7('0x35')],_0x52a7('0x2f')));_0x5e5a77['push'](getAssociatedResources(_0x52a7('0xe'),_0x1b2397[_0x52a7('0x35')],_0x52a7('0x31')));_0x5e5a77[_0x52a7('0x30')](getAssociatedResources(_0x52a7('0xf'),_0x1b2397[_0x52a7('0x35')],_0x52a7('0x36')));_0x5e5a77[_0x52a7('0x30')](getAssociatedResources('SmsQueues',_0x1b2397[_0x52a7('0x35')],'SmsQueue'));_0x5e5a77['push'](getAssociatedResources(_0x52a7('0x10'),_0x1b2397[_0x52a7('0x35')],_0x52a7('0x32')));_0x5e5a77[_0x52a7('0x30')](getAssociatedResources(_0x52a7('0x11'),_0x1b2397['userProfileId'],_0x52a7('0x33')));_0x5e5a77['push'](getAssociatedResources(_0x52a7('0x12'),_0x1b2397['userProfileId'],'User'));_0x5e5a77['push'](getAssociatedResources('Trunks',_0x1b2397['userProfileId'],_0x52a7('0x37')));_0x5e5a77[_0x52a7('0x30')](getAssociatedResources('IvrCampaigns',_0x1b2397[_0x52a7('0x35')],_0x52a7('0x1b')));_0x5e5a77[_0x52a7('0x30')](db[_0x52a7('0x5')][_0x52a7('0x15')](queryAgents));break;case _0x52a7('0x8'):_0x135fd6[_0x5ee79b]('voice:inbound');_0x135fd6[_0x5ee79b](_0x52a7('0x2c'));_0x5e5a77['push'](_0x1b2397[_0x52a7('0x38')]({'attributes':['id',_0x52a7('0x6')]}));_0x5e5a77[_0x52a7('0x30')](_0x1b2397[_0x52a7('0x39')]({'attributes':['id',_0x52a7('0x6')]}));_0x5e5a77['push'](_0x1b2397[_0x52a7('0x3a')]({'attributes':['id',_0x52a7('0x6')]}));_0x5e5a77[_0x52a7('0x30')](_0x1b2397[_0x52a7('0x3b')]({'attributes':['id',_0x52a7('0x6')]}));_0x5e5a77['push'](_0x1b2397[_0x52a7('0x3c')]({'attributes':['id',_0x52a7('0x6')]}));_0x5e5a77[_0x52a7('0x30')](_0x1b2397[_0x52a7('0x3d')]({'attributes':['id',_0x52a7('0x6')]}));break;}return BPromise[_0x52a7('0x3e')](_0x5e5a77);}})[_0x52a7('0x18')](function(_0x1d465f){if(_0x1d465f&&_0x1d465f[_0x52a7('0x3f')]){for(var _0x4dd131=0x0;_0x4dd131<_0x1d465f['length'];_0x4dd131+=0x1){for(var _0x273b96=0x0;_0x273b96<_0x1d465f[_0x4dd131][_0x52a7('0x3f')];_0x273b96+=0x1){switch(_0x4dd131){case 0x0:joinOrLeaveQueues(_0x135fd6,_0x5ee79b,_0x52a7('0x40'),_0x1d465f[_0x4dd131][_0x273b96]);break;case 0x1:joinOrLeaveQueues(_0x135fd6,_0x5ee79b,_0x52a7('0x41'),_0x1d465f[_0x4dd131][_0x273b96]);break;case 0x2:joinOrLeaveQueues(_0x135fd6,_0x5ee79b,_0x52a7('0x42'),_0x1d465f[_0x4dd131][_0x273b96]);break;case 0x3:joinOrLeaveQueues(_0x135fd6,_0x5ee79b,_0x52a7('0x43'),_0x1d465f[_0x4dd131][_0x273b96]);break;case 0x4:joinOrLeaveQueues(_0x135fd6,_0x5ee79b,_0x52a7('0x44'),_0x1d465f[_0x4dd131][_0x273b96]);break;case 0x5:joinOrLeaveQueues(_0x135fd6,_0x5ee79b,_0x52a7('0x45'),_0x1d465f[_0x4dd131][_0x273b96]);break;case 0x6:_0x135fd6[_0x5ee79b](util[_0x52a7('0x1c')](_0x52a7('0x46'),_0x1d465f[_0x4dd131][_0x273b96]['name']));break;case 0x7:_0x135fd6[_0x5ee79b](util[_0x52a7('0x1c')]('trunk:%s',_0x1d465f[_0x4dd131][_0x273b96][_0x52a7('0x6')]));break;case 0x8:_0x135fd6[_0x5ee79b](util['format'](_0x52a7('0x47'),_0x1d465f[_0x4dd131][_0x273b96][_0x52a7('0xa')],_0x1d465f[_0x4dd131][_0x273b96][_0x52a7('0x6')]));break;case 0x9:_0x135fd6[_0x5ee79b](util[_0x52a7('0x1c')](_0x52a7('0x1e'),_0x1d465f[_0x4dd131][_0x273b96]['name']));break;}}}}})['then'](function(){if(_0x5ee79b===_0x52a7('0x48')){var _0x318964=_['map'](_0x145e1f[_0x52a7('0x22')],'id');return _0x145e1f['removeChatInteractions'](_0x318964)[_0x52a7('0x18')](function(){for(var _0x2de670=0x0;_0x2de670<_0x318964[_0x52a7('0x3f')];_0x2de670+=0x1){_0x168fcb['emit'](_0x52a7('0x49'),{'ChatInteractionId':Number(_0x318964[_0x2de670]),'UserId':Number(_0x145e1f['id'])});}});}})[_0x52a7('0x18')](function(){if(_0x5ee79b===_0x52a7('0x48')){var _0x11fe91=_[_0x52a7('0x19')](_0x145e1f[_0x52a7('0x24')],'id');return _0x145e1f[_0x52a7('0x4a')](_0x11fe91)[_0x52a7('0x18')](function(){for(var _0x2d05e0=0x0;_0x2d05e0<_0x11fe91[_0x52a7('0x3f')];_0x2d05e0+=0x1){_0x168fcb[_0x52a7('0x4b')](_0x52a7('0x4c'),{'MailInteractionId':Number(_0x11fe91[_0x2d05e0]),'UserId':Number(_0x145e1f['id'])});}});}})[_0x52a7('0x18')](function(){if(_0x5ee79b===_0x52a7('0x48')){var _0x351252=_[_0x52a7('0x19')](_0x145e1f['FaxInteractions'],'id');return _0x145e1f['removeFaxInteractions'](_0x351252)[_0x52a7('0x18')](function(){for(var _0x385180=0x0;_0x385180<_0x351252[_0x52a7('0x3f')];_0x385180+=0x1){_0x168fcb[_0x52a7('0x4b')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x351252[_0x385180]),'UserId':Number(_0x145e1f['id'])});}});}})[_0x52a7('0x18')](function(){if(_0x5ee79b===_0x52a7('0x48')){var _0x5be9a9=_[_0x52a7('0x19')](_0x145e1f['SmsInteractions'],'id');return _0x145e1f[_0x52a7('0x4d')](_0x5be9a9)[_0x52a7('0x18')](function(){for(var _0x36b6ac=0x0;_0x36b6ac<_0x5be9a9[_0x52a7('0x3f')];_0x36b6ac+=0x1){_0x168fcb['emit'](_0x52a7('0x4e'),{'SmsInteractionId':Number(_0x5be9a9[_0x36b6ac]),'UserId':Number(_0x145e1f['id'])});}});}})['then'](function(){if(_0x5ee79b===_0x52a7('0x48')){var _0x564cc9=_[_0x52a7('0x19')](_0x145e1f[_0x52a7('0x29')],'id');return _0x145e1f[_0x52a7('0x4f')](_0x564cc9)[_0x52a7('0x18')](function(){for(var _0x122455=0x0;_0x122455<_0x564cc9[_0x52a7('0x3f')];_0x122455+=0x1){_0x168fcb[_0x52a7('0x4b')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x564cc9[_0x122455]),'UserId':Number(_0x145e1f['id'])});}});}})[_0x52a7('0x50')](function(_0x2b534c){_0x135fd6[_0x52a7('0x51')](_0x2b534c);});}}function onDisconnect(_0x436b6e,_0x110e7){joinOrLeave(_0x436b6e,_0x52a7('0x48'),_0x110e7);}function onConnect(_0x460de2){joinOrLeave(_0x460de2,_0x52a7('0x52'));}exports['default']=function(_0x18c9fb){_0x18c9fb['on'](_0x52a7('0x53'),function(_0x3ebaaa){_0x3ebaaa[_0x52a7('0x54')](0x0);_0x3ebaaa[_0x52a7('0x55')]=_0x3ebaaa[_0x52a7('0x56')][_0x52a7('0x53')][_0x52a7('0x57')]+':'+_0x3ebaaa[_0x52a7('0x56')]['connection'][_0x52a7('0x58')];_0x3ebaaa[_0x52a7('0x59')]=new Date();_0x3ebaaa[_0x52a7('0x51')]=function(_0x5e3066){console[_0x52a7('0x51')](_0x52a7('0x5a')+_0x3ebaaa['nsp'][_0x52a7('0x6')]+'['+_0x3ebaaa[_0x52a7('0x55')]+']',_0x5e3066);};_0x3ebaaa['on'](_0x52a7('0x5b'),function(){onDisconnect(_0x3ebaaa,_0x18c9fb);_0x3ebaaa[_0x52a7('0x51')](_0x52a7('0x5c'));});onConnect(_0x3ebaaa);_0x3ebaaa[_0x52a7('0x51')](_0x52a7('0x5d'));});};