Built motion from commit (unavailable).|2.3.1
[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 _0x661a=['agent','telephone','ivr','UserProfileSection','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','then','map','where','Campaign','type','format','%s:queue:%s','Agents','length','user:%s','query','find','userProfileId','handshake','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','SmsQueue','OpenchannelQueue','Trunk','user','FaxQueues','FaxQueue','MailQueue','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','fax','sms','openchannel','trunk:%s','leave','removeChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','catch','log','join','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','connectedAt','nsp','disconnect','bluebird','../mysqldb','./environment','name','User','role'];(function(_0x2e5370,_0x33cb32){var _0x5d21d1=function(_0x451c8e){while(--_0x451c8e){_0x2e5370['push'](_0x2e5370['shift']());}};_0x5d21d1(++_0x33cb32);}(_0x661a,0x10b));var _0xa661=function(_0x3a07c1,_0x34d57f){_0x3a07c1=_0x3a07c1-0x0;var _0x2bbe15=_0x661a[_0x3a07c1];return _0x2bbe15;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require(_0xa661('0x0'));var db=require(_0xa661('0x1'))['db'];var config=require(_0xa661('0x2'));var queryQueues={'attributes':['id',_0xa661('0x3')],'include':[{'as':'Agents','model':db[_0xa661('0x4')],'attributes':['id','name',_0xa661('0x5')],'raw':!![],'where':{'role':_0xa661('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xa661('0x3')],'where':{'role':_0xa661('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0xa661('0x3')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xa661('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xa661('0x3'),'type'],'where':{'type':_0xa661('0x8')}};function getAssociatedResources(_0xd6e4f2,_0x2f43cd,_0x1031bb){return db[_0xa661('0x9')]['findOne']({'where':{'name':_0xd6e4f2,'userProfileId':_0x2f43cd},'raw':!![]})['then'](function(_0x426b3c){if(_0x426b3c){if(_0x426b3c[_0xa661('0xa')]){switch(_0xd6e4f2){case _0xa661('0xb'):case _0xa661('0xc'):case'FaxQueues':case _0xa661('0xd'):case _0xa661('0xe'):case _0xa661('0xf'):return db[_0x1031bb][_0xa661('0x10')](queryQueues);case _0xa661('0x11'):return db[_0x1031bb][_0xa661('0x10')](queryTelephones);case _0xa661('0x12'):return db[_0x1031bb][_0xa661('0x10')](queryTrunks);case _0xa661('0x13'):return db[_0x1031bb][_0xa661('0x10')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0xa661('0x14')],'where':{'sectionId':_0x426b3c['id']},'raw':!![]})[_0xa661('0x15')](function(_0x395250){if(_0x395250){var _0x44c1c4={'where':{'id':_[_0xa661('0x16')](_0x395250,'resourceId')},'raw':!![]};switch(_0x1031bb){case _0xa661('0x4'):_0x44c1c4[_0xa661('0x17')][_0xa661('0x5')]=_0xa661('0x7');break;case _0xa661('0x18'):_0x44c1c4[_0xa661('0x17')][_0xa661('0x19')]=_0xa661('0x8');break;}return db[_0x1031bb][_0xa661('0x10')](_0x44c1c4);}else{return[];}});}}else{return[];}})[_0xa661('0x15')](function(_0x4f46ac){return _0x4f46ac;});}function joinOrLeaveQueues(_0x16c327,_0x1ff1b4,_0x2a0c43,_0x4b2870){_0x16c327[_0x1ff1b4](util[_0xa661('0x1a')](_0xa661('0x1b'),_0x2a0c43,_0x4b2870['name']));if(_0x4b2870[_0xa661('0x1c')]){for(var _0x3b9d89=0x0;_0x3b9d89<_0x4b2870[_0xa661('0x1c')][_0xa661('0x1d')];_0x3b9d89+=0x1){_0x16c327[_0x1ff1b4](util['format'](_0xa661('0x1e'),_0x4b2870[_0xa661('0x1c')][_0x3b9d89][_0xa661('0x3')]));}}}function joinOrLeave(_0x4796b9,_0x2d1b9a,_0xd804db){var _0x50be7f;if(_0x4796b9['handshake'][_0xa661('0x1f')]['id']){db[_0xa661('0x4')][_0xa661('0x20')]({'attributes':['id','name',_0xa661('0x5'),_0xa661('0x21')],'where':{'id':_0x4796b9[_0xa661('0x22')][_0xa661('0x1f')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0xa661('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xa661('0x24')],'as':_0xa661('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xa661('0x26')],'as':_0xa661('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xa661('0x28')],'as':_0xa661('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0xa661('0x2a')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]}]})[_0xa661('0x15')](function(_0x48cd8d){if(_0x48cd8d){_0x50be7f=_0x48cd8d;_0x4796b9[_0x2d1b9a](util[_0xa661('0x1a')](_0xa661('0x1e'),_0x48cd8d[_0xa661('0x3')]));var _0x1f842f=[];switch(_0x48cd8d['role']){case _0xa661('0x2b'):_0x4796b9[_0x2d1b9a](_0xa661('0x2c'));_0x4796b9[_0x2d1b9a](_0xa661('0x2d'));if(queryQueues['hasOwnProperty'](_0xa661('0x2e'))){delete queryQueues[_0xa661('0x2e')];}_0x1f842f[_0xa661('0x2f')](db[_0xa661('0x30')][_0xa661('0x10')](queryQueues));_0x1f842f[_0xa661('0x2f')](db[_0xa661('0x31')]['findAll'](queryQueues));_0x1f842f['push'](db['FaxQueue'][_0xa661('0x10')](queryQueues));_0x1f842f['push'](db[_0xa661('0x32')][_0xa661('0x10')](queryQueues));_0x1f842f['push'](db['MailQueue'][_0xa661('0x10')](queryQueues));_0x1f842f[_0xa661('0x2f')](db[_0xa661('0x33')][_0xa661('0x10')](queryQueues));_0x1f842f[_0xa661('0x2f')](db[_0xa661('0x4')][_0xa661('0x10')](queryTelephones));_0x1f842f['push'](db[_0xa661('0x34')][_0xa661('0x10')](queryTrunks));_0x1f842f['push'](db[_0xa661('0x18')][_0xa661('0x10')](queryCampaigns));_0x1f842f[_0xa661('0x2f')](db[_0xa661('0x4')][_0xa661('0x10')](queryAgents));break;case _0xa661('0x35'):_0x4796b9[_0x2d1b9a](_0xa661('0x2c'));_0x4796b9[_0x2d1b9a]('voice:outbound');_0x1f842f[_0xa661('0x2f')](getAssociatedResources(_0xa661('0xb'),_0x48cd8d[_0xa661('0x21')],'VoiceQueue'));_0x1f842f[_0xa661('0x2f')](getAssociatedResources('ChatQueues',_0x48cd8d[_0xa661('0x21')],_0xa661('0x31')));_0x1f842f[_0xa661('0x2f')](getAssociatedResources(_0xa661('0x36'),_0x48cd8d[_0xa661('0x21')],_0xa661('0x37')));_0x1f842f[_0xa661('0x2f')](getAssociatedResources(_0xa661('0xd'),_0x48cd8d[_0xa661('0x21')],'SmsQueue'));_0x1f842f[_0xa661('0x2f')](getAssociatedResources(_0xa661('0xe'),_0x48cd8d[_0xa661('0x21')],_0xa661('0x38')));_0x1f842f['push'](getAssociatedResources(_0xa661('0xf'),_0x48cd8d[_0xa661('0x21')],_0xa661('0x33')));_0x1f842f[_0xa661('0x2f')](getAssociatedResources('Telephones',_0x48cd8d['userProfileId'],_0xa661('0x4')));_0x1f842f[_0xa661('0x2f')](getAssociatedResources(_0xa661('0x12'),_0x48cd8d[_0xa661('0x21')],_0xa661('0x34')));_0x1f842f[_0xa661('0x2f')](getAssociatedResources(_0xa661('0x13'),_0x48cd8d[_0xa661('0x21')],_0xa661('0x18')));_0x1f842f[_0xa661('0x2f')](db[_0xa661('0x4')]['findAll'](queryAgents));break;case _0xa661('0x6'):_0x4796b9[_0x2d1b9a](_0xa661('0x2c'));_0x4796b9[_0x2d1b9a]('voice:outbound');_0x1f842f[_0xa661('0x2f')](_0x48cd8d['getVoiceQueues']({'attributes':['id',_0xa661('0x3')]}));_0x1f842f[_0xa661('0x2f')](_0x48cd8d[_0xa661('0x39')]({'attributes':['id',_0xa661('0x3')]}));_0x1f842f[_0xa661('0x2f')](_0x48cd8d[_0xa661('0x3a')]({'attributes':['id',_0xa661('0x3')]}));_0x1f842f[_0xa661('0x2f')](_0x48cd8d['getSmsQueues']({'attributes':['id',_0xa661('0x3')]}));_0x1f842f[_0xa661('0x2f')](_0x48cd8d[_0xa661('0x3b')]({'attributes':['id','name']}));_0x1f842f[_0xa661('0x2f')](_0x48cd8d[_0xa661('0x3c')]({'attributes':['id',_0xa661('0x3')]}));break;}return BPromise[_0xa661('0x3d')](_0x1f842f);}})[_0xa661('0x15')](function(_0x373034){if(_0x373034&&_0x373034[_0xa661('0x1d')]){for(var _0x1c051a=0x0;_0x1c051a<_0x373034['length'];_0x1c051a+=0x1){for(var _0x22ddbb=0x0;_0x22ddbb<_0x373034[_0x1c051a]['length'];_0x22ddbb+=0x1){switch(_0x1c051a){case 0x0:joinOrLeaveQueues(_0x4796b9,_0x2d1b9a,_0xa661('0x3e'),_0x373034[_0x1c051a][_0x22ddbb]);break;case 0x1:joinOrLeaveQueues(_0x4796b9,_0x2d1b9a,_0xa661('0x3f'),_0x373034[_0x1c051a][_0x22ddbb]);break;case 0x2:joinOrLeaveQueues(_0x4796b9,_0x2d1b9a,_0xa661('0x40'),_0x373034[_0x1c051a][_0x22ddbb]);break;case 0x3:joinOrLeaveQueues(_0x4796b9,_0x2d1b9a,_0xa661('0x41'),_0x373034[_0x1c051a][_0x22ddbb]);break;case 0x4:joinOrLeaveQueues(_0x4796b9,_0x2d1b9a,'mail',_0x373034[_0x1c051a][_0x22ddbb]);break;case 0x5:joinOrLeaveQueues(_0x4796b9,_0x2d1b9a,_0xa661('0x42'),_0x373034[_0x1c051a][_0x22ddbb]);break;case 0x6:_0x4796b9[_0x2d1b9a](util[_0xa661('0x1a')]('telephone:%s',_0x373034[_0x1c051a][_0x22ddbb]['name']));break;case 0x7:_0x4796b9[_0x2d1b9a](util['format'](_0xa661('0x43'),_0x373034[_0x1c051a][_0x22ddbb][_0xa661('0x3')]));break;case 0x8:_0x4796b9[_0x2d1b9a](util[_0xa661('0x1a')]('campaign:%s:%s',_0x373034[_0x1c051a][_0x22ddbb][_0xa661('0x19')],_0x373034[_0x1c051a][_0x22ddbb][_0xa661('0x3')]));break;case 0x9:_0x4796b9[_0x2d1b9a](util[_0xa661('0x1a')](_0xa661('0x1e'),_0x373034[_0x1c051a][_0x22ddbb][_0xa661('0x3')]));break;}}}}})[_0xa661('0x15')](function(){if(_0x2d1b9a===_0xa661('0x44')){var _0xb15ed2=_[_0xa661('0x16')](_0x50be7f[_0xa661('0x23')],'id');return _0x50be7f[_0xa661('0x45')](_0xb15ed2)[_0xa661('0x15')](function(){for(var _0x4da5de=0x0;_0x4da5de<_0xb15ed2[_0xa661('0x1d')];_0x4da5de+=0x1){_0xd804db[_0xa661('0x46')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0xb15ed2[_0x4da5de]),'UserId':Number(_0x50be7f['id'])});}});}})['then'](function(){if(_0x2d1b9a===_0xa661('0x44')){var _0x22ea75=_[_0xa661('0x16')](_0x50be7f[_0xa661('0x25')],'id');return _0x50be7f[_0xa661('0x47')](_0x22ea75)[_0xa661('0x15')](function(){for(var _0x1c3106=0x0;_0x1c3106<_0x22ea75[_0xa661('0x1d')];_0x1c3106+=0x1){_0xd804db['emit'](_0xa661('0x48'),{'MailInteractionId':Number(_0x22ea75[_0x1c3106]),'UserId':Number(_0x50be7f['id'])});}});}})[_0xa661('0x15')](function(){if(_0x2d1b9a==='leave'){var _0x1442a5=_['map'](_0x50be7f['FaxInteractions'],'id');return _0x50be7f[_0xa661('0x49')](_0x1442a5)[_0xa661('0x15')](function(){for(var _0xb574b7=0x0;_0xb574b7<_0x1442a5[_0xa661('0x1d')];_0xb574b7+=0x1){_0xd804db[_0xa661('0x46')](_0xa661('0x4a'),{'FaxInteractionId':Number(_0x1442a5[_0xb574b7]),'UserId':Number(_0x50be7f['id'])});}});}})[_0xa661('0x15')](function(){if(_0x2d1b9a===_0xa661('0x44')){var _0x1d8b66=_[_0xa661('0x16')](_0x50be7f['SmsInteractions'],'id');return _0x50be7f['removeSmsInteractions'](_0x1d8b66)[_0xa661('0x15')](function(){for(var _0x5781b3=0x0;_0x5781b3<_0x1d8b66['length'];_0x5781b3+=0x1){_0xd804db['emit'](_0xa661('0x4b'),{'SmsInteractionId':Number(_0x1d8b66[_0x5781b3]),'UserId':Number(_0x50be7f['id'])});}});}})[_0xa661('0x15')](function(){if(_0x2d1b9a===_0xa661('0x44')){var _0x8ec5e8=_['map'](_0x50be7f['OpenchannelInteractions'],'id');return _0x50be7f[_0xa661('0x4c')](_0x8ec5e8)[_0xa661('0x15')](function(){for(var _0x104191=0x0;_0x104191<_0x8ec5e8[_0xa661('0x1d')];_0x104191+=0x1){_0xd804db[_0xa661('0x46')](_0xa661('0x4d'),{'OpenchannelInteractionId':Number(_0x8ec5e8[_0x104191]),'UserId':Number(_0x50be7f['id'])});}});}})[_0xa661('0x4e')](function(_0x173905){_0x4796b9[_0xa661('0x4f')](_0x173905);});}}function onDisconnect(_0x475c2a,_0x20dd4e){joinOrLeave(_0x475c2a,_0xa661('0x44'),_0x20dd4e);}function onConnect(_0x3a926d){joinOrLeave(_0x3a926d,_0xa661('0x50'));}exports[_0xa661('0x51')]=function(_0x996cc){_0x996cc['on']('connection',function(_0x58e4e4){_0x58e4e4[_0xa661('0x52')](0x0);_0x58e4e4[_0xa661('0x53')]=_0x58e4e4[_0xa661('0x54')][_0xa661('0x55')][_0xa661('0x56')]+':'+_0x58e4e4[_0xa661('0x54')]['connection'][_0xa661('0x57')];_0x58e4e4[_0xa661('0x58')]=new Date();_0x58e4e4[_0xa661('0x4f')]=function(_0x8efda9){console[_0xa661('0x4f')]('SocketIO\x20'+_0x58e4e4[_0xa661('0x59')][_0xa661('0x3')]+'['+_0x58e4e4[_0xa661('0x53')]+']',_0x8efda9);};_0x58e4e4['on'](_0xa661('0x5a'),function(){onDisconnect(_0x58e4e4,_0x996cc);_0x58e4e4['log']('DISCONNECTED');});onConnect(_0x58e4e4);_0x58e4e4['log']('CONNECTED');});};