644b8bc5c63aca48415ad6b979ae273f5b329a23
[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 _0x0650=['SmsQueue','OpenchannelQueues','Telephones','IvrCampaigns','voice:outbound','getVoiceQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','openchannel','telephone:%s','trunk:%s','campaign:%s:%s','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','SmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','connection','setMaxListeners','request','connectedAt','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','lodash','bluebird','../mysqldb','name','User','role','agent','type','ivr','UserProfileSection','findOne','autoAssociation','SmsQueues','MailQueues','WhatsappQueues','findAll','Trunks','resourceId','map','where','telephone','Campaign','format','%s:queue:%s','Agents','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','MailInteraction','FaxInteractions','SmsInteraction','WhatsappInteraction','WhatsappInteractions','then','admin','voice:inbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueues','ChatQueues','FaxQueues'];(function(_0x4461ed,_0x35a71b){var _0x4e923a=function(_0x4ef032){while(--_0x4ef032){_0x4461ed['push'](_0x4461ed['shift']());}};_0x4e923a(++_0x35a71b);}(_0x0650,0xed));var _0x0065=function(_0x519ee1,_0x3aab5c){_0x519ee1=_0x519ee1-0x0;var _0x101c5a=_0x0650[_0x519ee1];return _0x101c5a;};'use strict';var _=require(_0x0065('0x0'));var util=require('util');var BPromise=require(_0x0065('0x1'));var db=require(_0x0065('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x0065('0x3')],'include':[{'as':'Agents','model':db[_0x0065('0x4')],'attributes':['id',_0x0065('0x3'),_0x0065('0x5')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x0065('0x3')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x0065('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x0065('0x3'),_0x0065('0x7')],'where':{'type':_0x0065('0x8')}};function getAssociatedResources(_0x317492,_0x227196,_0x8974f){return db[_0x0065('0x9')][_0x0065('0xa')]({'where':{'name':_0x317492,'userProfileId':_0x227196},'raw':!![]})['then'](function(_0x2850c0){if(_0x2850c0){if(_0x2850c0[_0x0065('0xb')]){switch(_0x317492){case'VoiceQueues':case'ChatQueues':case'FaxQueues':case _0x0065('0xc'):case _0x0065('0xd'):case'OpenchannelQueues':case _0x0065('0xe'):return db[_0x8974f][_0x0065('0xf')](queryQueues);case'Telephones':return db[_0x8974f][_0x0065('0xf')](queryTelephones);case _0x0065('0x10'):return db[_0x8974f]['findAll'](queryTrunks);case'IvrCampaigns':return db[_0x8974f][_0x0065('0xf')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0x0065('0x11')],'where':{'sectionId':_0x2850c0['id']},'raw':!![]})['then'](function(_0x38a870){if(_0x38a870){var _0x48d817={'where':{'id':_[_0x0065('0x12')](_0x38a870,_0x0065('0x11'))},'raw':!![]};switch(_0x8974f){case _0x0065('0x4'):_0x48d817[_0x0065('0x13')][_0x0065('0x5')]=_0x0065('0x14');break;case _0x0065('0x15'):_0x48d817[_0x0065('0x13')]['type']=_0x0065('0x8');break;}return db[_0x8974f][_0x0065('0xf')](_0x48d817);}else{return[];}});}}else{return[];}})['then'](function(_0x967398){return _0x967398;});}function joinOrLeaveQueues(_0x3a0517,_0x278dff,_0x2eed20,_0x44c2e0){_0x3a0517[_0x278dff](util[_0x0065('0x16')](_0x0065('0x17'),_0x2eed20,_0x44c2e0['name']));if(_0x44c2e0['Agents']){for(var _0x4b1213=0x0;_0x4b1213<_0x44c2e0[_0x0065('0x18')][_0x0065('0x19')];_0x4b1213+=0x1){_0x3a0517[_0x278dff](util['format'](_0x0065('0x1a'),_0x44c2e0['Agents'][_0x4b1213][_0x0065('0x3')]));}}}function joinOrLeave(_0x451e9a,_0x3ec265,_0x376452){var _0x161b4c;if(_0x451e9a[_0x0065('0x1b')][_0x0065('0x1c')]['id']){db['User'][_0x0065('0x1d')]({'attributes':['id','name','role',_0x0065('0x1e')],'where':{'id':_0x451e9a['handshake'][_0x0065('0x1c')]['id']},'include':[{'model':db[_0x0065('0x1f')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x0065('0x20')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x0065('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x0065('0x22')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x0065('0x23')],'as':_0x0065('0x24'),'attributes':['id'],'raw':!![]}]})[_0x0065('0x25')](function(_0x1f8813){if(_0x1f8813){_0x161b4c=_0x1f8813;_0x451e9a[_0x3ec265](util[_0x0065('0x16')]('user:%s',_0x1f8813['name']));var _0x5d98ec=[];switch(_0x1f8813[_0x0065('0x5')]){case _0x0065('0x26'):_0x451e9a[_0x3ec265](_0x0065('0x27'));_0x451e9a[_0x3ec265]('voice:outbound');if(queryQueues[_0x0065('0x28')](_0x0065('0x29'))){delete queryQueues['include'];}_0x5d98ec[_0x0065('0x2a')](db[_0x0065('0x2b')][_0x0065('0xf')](queryQueues));_0x5d98ec[_0x0065('0x2a')](db[_0x0065('0x2c')][_0x0065('0xf')](queryQueues));_0x5d98ec[_0x0065('0x2a')](db[_0x0065('0x2d')]['findAll'](queryQueues));_0x5d98ec['push'](db['SmsQueue'][_0x0065('0xf')](queryQueues));_0x5d98ec[_0x0065('0x2a')](db[_0x0065('0x2e')][_0x0065('0xf')](queryQueues));_0x5d98ec[_0x0065('0x2a')](db[_0x0065('0x2f')][_0x0065('0xf')](queryQueues));_0x5d98ec['push'](db[_0x0065('0x30')][_0x0065('0xf')](queryQueues));_0x5d98ec[_0x0065('0x2a')](db[_0x0065('0x4')][_0x0065('0xf')](queryTelephones));_0x5d98ec['push'](db[_0x0065('0x31')][_0x0065('0xf')](queryTrunks));_0x5d98ec[_0x0065('0x2a')](db[_0x0065('0x15')][_0x0065('0xf')](queryCampaigns));_0x5d98ec[_0x0065('0x2a')](db[_0x0065('0x4')][_0x0065('0xf')](queryAgents));break;case _0x0065('0x32'):_0x451e9a[_0x3ec265](_0x0065('0x27'));_0x451e9a[_0x3ec265]('voice:outbound');_0x5d98ec[_0x0065('0x2a')](getAssociatedResources(_0x0065('0x33'),_0x1f8813[_0x0065('0x1e')],'VoiceQueue'));_0x5d98ec[_0x0065('0x2a')](getAssociatedResources(_0x0065('0x34'),_0x1f8813[_0x0065('0x1e')],_0x0065('0x2c')));_0x5d98ec[_0x0065('0x2a')](getAssociatedResources(_0x0065('0x35'),_0x1f8813['userProfileId'],_0x0065('0x2d')));_0x5d98ec[_0x0065('0x2a')](getAssociatedResources(_0x0065('0xc'),_0x1f8813['userProfileId'],_0x0065('0x36')));_0x5d98ec['push'](getAssociatedResources(_0x0065('0xd'),_0x1f8813[_0x0065('0x1e')],'MailQueue'));_0x5d98ec[_0x0065('0x2a')](getAssociatedResources(_0x0065('0x37'),_0x1f8813[_0x0065('0x1e')],_0x0065('0x2f')));_0x5d98ec[_0x0065('0x2a')](getAssociatedResources(_0x0065('0xe'),_0x1f8813['userProfileId'],_0x0065('0x30')));_0x5d98ec[_0x0065('0x2a')](getAssociatedResources(_0x0065('0x38'),_0x1f8813[_0x0065('0x1e')],_0x0065('0x4')));_0x5d98ec[_0x0065('0x2a')](getAssociatedResources(_0x0065('0x10'),_0x1f8813[_0x0065('0x1e')],_0x0065('0x31')));_0x5d98ec[_0x0065('0x2a')](getAssociatedResources(_0x0065('0x39'),_0x1f8813[_0x0065('0x1e')],_0x0065('0x15')));_0x5d98ec[_0x0065('0x2a')](db[_0x0065('0x4')][_0x0065('0xf')](queryAgents));break;case _0x0065('0x6'):_0x451e9a[_0x3ec265](_0x0065('0x27'));_0x451e9a[_0x3ec265](_0x0065('0x3a'));_0x5d98ec[_0x0065('0x2a')](_0x1f8813[_0x0065('0x3b')]({'attributes':['id',_0x0065('0x3')]}));_0x5d98ec[_0x0065('0x2a')](_0x1f8813['getChatQueues']({'attributes':['id',_0x0065('0x3')]}));_0x5d98ec['push'](_0x1f8813[_0x0065('0x3c')]({'attributes':['id','name']}));_0x5d98ec[_0x0065('0x2a')](_0x1f8813['getSmsQueues']({'attributes':['id',_0x0065('0x3')]}));_0x5d98ec[_0x0065('0x2a')](_0x1f8813[_0x0065('0x3d')]({'attributes':['id','name']}));_0x5d98ec['push'](_0x1f8813[_0x0065('0x3e')]({'attributes':['id',_0x0065('0x3')]}));_0x5d98ec[_0x0065('0x2a')](_0x1f8813[_0x0065('0x3f')]({'attributes':['id','name']}));break;}return BPromise[_0x0065('0x40')](_0x5d98ec);}})[_0x0065('0x25')](function(_0x1a8592){if(_0x1a8592&&_0x1a8592[_0x0065('0x19')]){for(var _0x3d967a=0x0;_0x3d967a<_0x1a8592['length'];_0x3d967a+=0x1){for(var _0xf45ce5=0x0;_0xf45ce5<_0x1a8592[_0x3d967a]['length'];_0xf45ce5+=0x1){switch(_0x3d967a){case 0x0:joinOrLeaveQueues(_0x451e9a,_0x3ec265,_0x0065('0x41'),_0x1a8592[_0x3d967a][_0xf45ce5]);break;case 0x1:joinOrLeaveQueues(_0x451e9a,_0x3ec265,_0x0065('0x42'),_0x1a8592[_0x3d967a][_0xf45ce5]);break;case 0x2:joinOrLeaveQueues(_0x451e9a,_0x3ec265,_0x0065('0x43'),_0x1a8592[_0x3d967a][_0xf45ce5]);break;case 0x3:joinOrLeaveQueues(_0x451e9a,_0x3ec265,_0x0065('0x44'),_0x1a8592[_0x3d967a][_0xf45ce5]);break;case 0x4:joinOrLeaveQueues(_0x451e9a,_0x3ec265,'mail',_0x1a8592[_0x3d967a][_0xf45ce5]);break;case 0x5:joinOrLeaveQueues(_0x451e9a,_0x3ec265,_0x0065('0x45'),_0x1a8592[_0x3d967a][_0xf45ce5]);break;case 0x6:joinOrLeaveQueues(_0x451e9a,_0x3ec265,'whatsapp',_0x1a8592[_0x3d967a][_0xf45ce5]);break;case 0x7:if(_0x161b4c[_0x0065('0x5')]!==_0x0065('0x6'))_0x451e9a[_0x3ec265](util[_0x0065('0x16')](_0x0065('0x46'),_0x1a8592[_0x3d967a][_0xf45ce5][_0x0065('0x3')]));break;case 0x8:if(_0x161b4c[_0x0065('0x5')]!==_0x0065('0x6'))_0x451e9a[_0x3ec265](util[_0x0065('0x16')](_0x0065('0x47'),_0x1a8592[_0x3d967a][_0xf45ce5][_0x0065('0x3')]));break;case 0x9:if(_0x161b4c[_0x0065('0x5')]!=='agent')_0x451e9a[_0x3ec265](util[_0x0065('0x16')](_0x0065('0x48'),_0x1a8592[_0x3d967a][_0xf45ce5][_0x0065('0x7')],_0x1a8592[_0x3d967a][_0xf45ce5][_0x0065('0x3')]));break;case 0xa:_0x451e9a[_0x3ec265](util[_0x0065('0x16')](_0x0065('0x1a'),_0x1a8592[_0x3d967a][_0xf45ce5][_0x0065('0x3')]));break;}}}}})['then'](function(){if(_0x3ec265==='leave'){var _0x29480f=_[_0x0065('0x12')](_0x161b4c[_0x0065('0x49')],'id');return _0x161b4c[_0x0065('0x4a')](_0x29480f)[_0x0065('0x25')](function(){for(var _0x2c9e53=0x0;_0x2c9e53<_0x29480f[_0x0065('0x19')];_0x2c9e53+=0x1){_0x376452[_0x0065('0x4b')](_0x0065('0x4c'),{'ChatInteractionId':Number(_0x29480f[_0x2c9e53]),'UserId':Number(_0x161b4c['id'])});}});}})[_0x0065('0x25')](function(){if(_0x3ec265===_0x0065('0x4d')){var _0x109f40=_[_0x0065('0x12')](_0x161b4c['MailInteractions'],'id');return _0x161b4c[_0x0065('0x4e')](_0x109f40)[_0x0065('0x25')](function(){for(var _0x4f28c6=0x0;_0x4f28c6<_0x109f40[_0x0065('0x19')];_0x4f28c6+=0x1){_0x376452[_0x0065('0x4b')](_0x0065('0x4f'),{'MailInteractionId':Number(_0x109f40[_0x4f28c6]),'UserId':Number(_0x161b4c['id'])});}});}})['then'](function(){if(_0x3ec265===_0x0065('0x4d')){var _0x1f4dd8=_[_0x0065('0x12')](_0x161b4c[_0x0065('0x21')],'id');return _0x161b4c['removeFaxInteractions'](_0x1f4dd8)[_0x0065('0x25')](function(){for(var _0x2efef6=0x0;_0x2efef6<_0x1f4dd8[_0x0065('0x19')];_0x2efef6+=0x1){_0x376452[_0x0065('0x4b')](_0x0065('0x50'),{'FaxInteractionId':Number(_0x1f4dd8[_0x2efef6]),'UserId':Number(_0x161b4c['id'])});}});}})[_0x0065('0x25')](function(){if(_0x3ec265==='leave'){var _0x8f637e=_['map'](_0x161b4c[_0x0065('0x51')],'id');return _0x161b4c['removeSmsInteractions'](_0x8f637e)[_0x0065('0x25')](function(){for(var _0x58b49a=0x0;_0x58b49a<_0x8f637e[_0x0065('0x19')];_0x58b49a+=0x1){_0x376452[_0x0065('0x4b')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x8f637e[_0x58b49a]),'UserId':Number(_0x161b4c['id'])});}});}})['then'](function(){if(_0x3ec265===_0x0065('0x4d')){var _0x215390=_[_0x0065('0x12')](_0x161b4c['OpenchannelInteractions'],'id');return _0x161b4c[_0x0065('0x52')](_0x215390)[_0x0065('0x25')](function(){for(var _0x59d521=0x0;_0x59d521<_0x215390['length'];_0x59d521+=0x1){_0x376452[_0x0065('0x4b')](_0x0065('0x53'),{'OpenchannelInteractionId':Number(_0x215390[_0x59d521]),'UserId':Number(_0x161b4c['id'])});}});}})[_0x0065('0x25')](function(){if(_0x3ec265==='leave'){var _0x13f2b7=_['map'](_0x161b4c[_0x0065('0x24')],'id');return _0x161b4c[_0x0065('0x54')](_0x13f2b7)['then'](function(){for(var _0x1fa2b5=0x0;_0x1fa2b5<_0x13f2b7[_0x0065('0x19')];_0x1fa2b5+=0x1){_0x376452[_0x0065('0x4b')](_0x0065('0x55'),{'WhatsappInteractionId':Number(_0x13f2b7[_0x1fa2b5]),'UserId':Number(_0x161b4c['id'])});}});}})['catch'](function(_0x46aa51){_0x451e9a[_0x0065('0x56')](_0x46aa51);});}}function onDisconnect(_0x19cdd0,_0x4b2830){joinOrLeave(_0x19cdd0,'leave',_0x4b2830);}function onConnect(_0x2e975d){joinOrLeave(_0x2e975d,_0x0065('0x57'));}exports['default']=function(_0x402c4f){_0x402c4f['on'](_0x0065('0x58'),function(_0x228fc4){_0x228fc4[_0x0065('0x59')](0x0);_0x228fc4['address']=_0x228fc4[_0x0065('0x5a')][_0x0065('0x58')]['remoteAddress']+':'+_0x228fc4[_0x0065('0x5a')][_0x0065('0x58')]['remotePort'];_0x228fc4[_0x0065('0x5b')]=new Date();_0x228fc4[_0x0065('0x56')]=function(_0x33afbf){console['log'](_0x0065('0x5c')+_0x228fc4[_0x0065('0x5d')][_0x0065('0x3')]+'['+_0x228fc4[_0x0065('0x5e')]+']',_0x33afbf);};_0x228fc4['on'](_0x0065('0x5f'),function(){onDisconnect(_0x228fc4,_0x402c4f);_0x228fc4[_0x0065('0x56')](_0x0065('0x60'));});onConnect(_0x228fc4);_0x228fc4['log']('CONNECTED');});};