5d17bc92c014be683adad6820c23fd600561373e
[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 _0x620b=['format','%s:queue:%s','Agents','find','userProfileId','query','ChatInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','user:%s','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','OpenchannelQueue','WhatsappQueue','user','voice:inbound','voice:outbound','MailQueue','OpenchannelQueues','Trunk','IvrCampaigns','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','length','voice','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','ChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','catch','log','default','address','request','remoteAddress','connection','remotePort','connectedAt','SocketIO\x20','CONNECTED','lodash','util','bluebird','User','role','telephone','name','agent','type','ivr','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','MailQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','map','Campaign','where'];(function(_0x39d345,_0x47fe2f){var _0x49e9fb=function(_0x5b117b){while(--_0x5b117b){_0x39d345['push'](_0x39d345['shift']());}};_0x49e9fb(++_0x47fe2f);}(_0x620b,0x167));var _0xb620=function(_0x3521d6,_0x592eab){_0x3521d6=_0x3521d6-0x0;var _0x51d1af=_0x620b[_0x3521d6];return _0x51d1af;};'use strict';var _=require(_0xb620('0x0'));var util=require(_0xb620('0x1'));var BPromise=require(_0xb620('0x2'));var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0xb620('0x3')],'attributes':['id','name',_0xb620('0x4')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xb620('0x5')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xb620('0x6')],'where':{'role':_0xb620('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb620('0x6'),_0xb620('0x8')],'where':{'type':_0xb620('0x9')}};function getAssociatedResources(_0x3c455e,_0x3e47f4,_0x2a5e53){return db['UserProfileSection'][_0xb620('0xa')]({'where':{'name':_0x3c455e,'userProfileId':_0x3e47f4},'raw':!![]})[_0xb620('0xb')](function(_0x59d62f){if(_0x59d62f){if(_0x59d62f[_0xb620('0xc')]){switch(_0x3c455e){case _0xb620('0xd'):case _0xb620('0xe'):case _0xb620('0xf'):case'SmsQueues':case _0xb620('0x10'):case'OpenchannelQueues':case _0xb620('0x11'):return db[_0x2a5e53][_0xb620('0x12')](queryQueues);case _0xb620('0x13'):return db[_0x2a5e53][_0xb620('0x12')](queryTelephones);case'Trunks':return db[_0x2a5e53][_0xb620('0x12')](queryTrunks);case'IvrCampaigns':return db[_0x2a5e53][_0xb620('0x12')](queryCampaigns);}}else{return db[_0xb620('0x14')][_0xb620('0x12')]({'attributes':[_0xb620('0x15')],'where':{'sectionId':_0x59d62f['id']},'raw':!![]})[_0xb620('0xb')](function(_0xa715af){if(_0xa715af){var _0x192423={'where':{'id':_[_0xb620('0x16')](_0xa715af,'resourceId')},'raw':!![]};switch(_0x2a5e53){case _0xb620('0x3'):_0x192423['where'][_0xb620('0x4')]=_0xb620('0x5');break;case _0xb620('0x17'):_0x192423[_0xb620('0x18')][_0xb620('0x8')]=_0xb620('0x9');break;}return db[_0x2a5e53][_0xb620('0x12')](_0x192423);}else{return[];}});}}else{return[];}})['then'](function(_0x588124){return _0x588124;});}function joinOrLeaveQueues(_0x1924b2,_0x19c73a,_0x5cd782,_0x9ba50b){_0x1924b2[_0x19c73a](util[_0xb620('0x19')](_0xb620('0x1a'),_0x5cd782,_0x9ba50b[_0xb620('0x6')]));if(_0x9ba50b['Agents']){for(var _0x2fa1ca=0x0;_0x2fa1ca<_0x9ba50b[_0xb620('0x1b')]['length'];_0x2fa1ca+=0x1){_0x1924b2[_0x19c73a](util[_0xb620('0x19')]('user:%s',_0x9ba50b[_0xb620('0x1b')][_0x2fa1ca]['name']));}}}function joinOrLeave(_0x239e37,_0x3dd0c6,_0x48d87f){var _0x23c9d8;if(_0x239e37['handshake']['query']['id']){db[_0xb620('0x3')][_0xb620('0x1c')]({'attributes':['id',_0xb620('0x6'),_0xb620('0x4'),_0xb620('0x1d')],'where':{'id':_0x239e37['handshake'][_0xb620('0x1e')]['id']},'include':[{'model':db[_0xb620('0x1f')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xb620('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0xb620('0x21')],'as':_0xb620('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xb620('0x23')],'as':_0xb620('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xb620('0x25')],'as':_0xb620('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xb620('0x27')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xb620('0xb')](function(_0x1ef1cb){if(_0x1ef1cb){_0x23c9d8=_0x1ef1cb;_0x239e37[_0x3dd0c6](util['format'](_0xb620('0x28'),_0x1ef1cb['name']));var _0x3b68d3=[];switch(_0x1ef1cb[_0xb620('0x4')]){case'admin':_0x239e37[_0x3dd0c6]('voice:inbound');_0x239e37[_0x3dd0c6]('voice:outbound');if(queryQueues[_0xb620('0x29')](_0xb620('0x2a'))){delete queryQueues[_0xb620('0x2a')];}_0x3b68d3[_0xb620('0x2b')](db[_0xb620('0x2c')][_0xb620('0x12')](queryQueues));_0x3b68d3[_0xb620('0x2b')](db[_0xb620('0x2d')][_0xb620('0x12')](queryQueues));_0x3b68d3[_0xb620('0x2b')](db[_0xb620('0x2e')]['findAll'](queryQueues));_0x3b68d3['push'](db['SmsQueue'][_0xb620('0x12')](queryQueues));_0x3b68d3[_0xb620('0x2b')](db['MailQueue'][_0xb620('0x12')](queryQueues));_0x3b68d3[_0xb620('0x2b')](db[_0xb620('0x2f')][_0xb620('0x12')](queryQueues));_0x3b68d3[_0xb620('0x2b')](db[_0xb620('0x30')][_0xb620('0x12')](queryQueues));_0x3b68d3[_0xb620('0x2b')](db[_0xb620('0x3')][_0xb620('0x12')](queryTelephones));_0x3b68d3[_0xb620('0x2b')](db['Trunk'][_0xb620('0x12')](queryTrunks));_0x3b68d3[_0xb620('0x2b')](db['Campaign'][_0xb620('0x12')](queryCampaigns));_0x3b68d3[_0xb620('0x2b')](db[_0xb620('0x3')]['findAll'](queryAgents));break;case _0xb620('0x31'):_0x239e37[_0x3dd0c6](_0xb620('0x32'));_0x239e37[_0x3dd0c6](_0xb620('0x33'));_0x3b68d3[_0xb620('0x2b')](getAssociatedResources('VoiceQueues',_0x1ef1cb['userProfileId'],_0xb620('0x2c')));_0x3b68d3['push'](getAssociatedResources('ChatQueues',_0x1ef1cb['userProfileId'],'ChatQueue'));_0x3b68d3['push'](getAssociatedResources('FaxQueues',_0x1ef1cb[_0xb620('0x1d')],_0xb620('0x2e')));_0x3b68d3[_0xb620('0x2b')](getAssociatedResources('SmsQueues',_0x1ef1cb['userProfileId'],'SmsQueue'));_0x3b68d3[_0xb620('0x2b')](getAssociatedResources('MailQueues',_0x1ef1cb[_0xb620('0x1d')],_0xb620('0x34')));_0x3b68d3[_0xb620('0x2b')](getAssociatedResources(_0xb620('0x35'),_0x1ef1cb['userProfileId'],'OpenchannelQueue'));_0x3b68d3['push'](getAssociatedResources('WhatsappQueues',_0x1ef1cb[_0xb620('0x1d')],'WhatsappQueue'));_0x3b68d3[_0xb620('0x2b')](getAssociatedResources('Telephones',_0x1ef1cb[_0xb620('0x1d')],_0xb620('0x3')));_0x3b68d3['push'](getAssociatedResources('Trunks',_0x1ef1cb[_0xb620('0x1d')],_0xb620('0x36')));_0x3b68d3[_0xb620('0x2b')](getAssociatedResources(_0xb620('0x37'),_0x1ef1cb['userProfileId'],_0xb620('0x17')));_0x3b68d3[_0xb620('0x2b')](db['User'][_0xb620('0x12')](queryAgents));break;case _0xb620('0x7'):_0x239e37[_0x3dd0c6](_0xb620('0x32'));_0x239e37[_0x3dd0c6](_0xb620('0x33'));_0x3b68d3[_0xb620('0x2b')](_0x1ef1cb[_0xb620('0x38')]({'attributes':['id',_0xb620('0x6')]}));_0x3b68d3[_0xb620('0x2b')](_0x1ef1cb[_0xb620('0x39')]({'attributes':['id','name']}));_0x3b68d3['push'](_0x1ef1cb['getFaxQueues']({'attributes':['id',_0xb620('0x6')]}));_0x3b68d3[_0xb620('0x2b')](_0x1ef1cb[_0xb620('0x3a')]({'attributes':['id','name']}));_0x3b68d3[_0xb620('0x2b')](_0x1ef1cb[_0xb620('0x3b')]({'attributes':['id',_0xb620('0x6')]}));_0x3b68d3['push'](_0x1ef1cb[_0xb620('0x3c')]({'attributes':['id','name']}));_0x3b68d3[_0xb620('0x2b')](_0x1ef1cb[_0xb620('0x3d')]({'attributes':['id','name']}));break;}return BPromise['all'](_0x3b68d3);}})[_0xb620('0xb')](function(_0x126d28){if(_0x126d28&&_0x126d28[_0xb620('0x3e')]){for(var _0x109c6=0x0;_0x109c6<_0x126d28[_0xb620('0x3e')];_0x109c6+=0x1){for(var _0x38b695=0x0;_0x38b695<_0x126d28[_0x109c6][_0xb620('0x3e')];_0x38b695+=0x1){switch(_0x109c6){case 0x0:joinOrLeaveQueues(_0x239e37,_0x3dd0c6,_0xb620('0x3f'),_0x126d28[_0x109c6][_0x38b695]);break;case 0x1:joinOrLeaveQueues(_0x239e37,_0x3dd0c6,_0xb620('0x40'),_0x126d28[_0x109c6][_0x38b695]);break;case 0x2:joinOrLeaveQueues(_0x239e37,_0x3dd0c6,'fax',_0x126d28[_0x109c6][_0x38b695]);break;case 0x3:joinOrLeaveQueues(_0x239e37,_0x3dd0c6,_0xb620('0x41'),_0x126d28[_0x109c6][_0x38b695]);break;case 0x4:joinOrLeaveQueues(_0x239e37,_0x3dd0c6,_0xb620('0x42'),_0x126d28[_0x109c6][_0x38b695]);break;case 0x5:joinOrLeaveQueues(_0x239e37,_0x3dd0c6,_0xb620('0x43'),_0x126d28[_0x109c6][_0x38b695]);break;case 0x6:joinOrLeaveQueues(_0x239e37,_0x3dd0c6,_0xb620('0x44'),_0x126d28[_0x109c6][_0x38b695]);break;case 0x7:if(_0x23c9d8['role']!==_0xb620('0x7'))_0x239e37[_0x3dd0c6](util[_0xb620('0x19')](_0xb620('0x45'),_0x126d28[_0x109c6][_0x38b695][_0xb620('0x6')]));break;case 0x8:if(_0x23c9d8[_0xb620('0x4')]!=='agent')_0x239e37[_0x3dd0c6](util[_0xb620('0x19')](_0xb620('0x46'),_0x126d28[_0x109c6][_0x38b695][_0xb620('0x6')]));break;case 0x9:if(_0x23c9d8[_0xb620('0x4')]!==_0xb620('0x7'))_0x239e37[_0x3dd0c6](util[_0xb620('0x19')](_0xb620('0x47'),_0x126d28[_0x109c6][_0x38b695][_0xb620('0x8')],_0x126d28[_0x109c6][_0x38b695][_0xb620('0x6')]));break;case 0xa:_0x239e37[_0x3dd0c6](util[_0xb620('0x19')](_0xb620('0x28'),_0x126d28[_0x109c6][_0x38b695][_0xb620('0x6')]));break;}}}}})['then'](function(){if(_0x3dd0c6===_0xb620('0x48')){var _0x6c544b=_[_0xb620('0x16')](_0x23c9d8[_0xb620('0x49')],'id');return _0x23c9d8['removeChatInteractions'](_0x6c544b)['then'](function(){for(var _0x1589c6=0x0;_0x1589c6<_0x6c544b[_0xb620('0x3e')];_0x1589c6+=0x1){_0x48d87f[_0xb620('0x4a')](_0xb620('0x4b'),{'ChatInteractionId':Number(_0x6c544b[_0x1589c6]),'UserId':Number(_0x23c9d8['id'])});}});}})[_0xb620('0xb')](function(){if(_0x3dd0c6===_0xb620('0x48')){var _0x52f449=_[_0xb620('0x16')](_0x23c9d8[_0xb620('0x20')],'id');return _0x23c9d8[_0xb620('0x4c')](_0x52f449)[_0xb620('0xb')](function(){for(var _0x3c81a4=0x0;_0x3c81a4<_0x52f449['length'];_0x3c81a4+=0x1){_0x48d87f[_0xb620('0x4a')](_0xb620('0x4d'),{'MailInteractionId':Number(_0x52f449[_0x3c81a4]),'UserId':Number(_0x23c9d8['id'])});}});}})[_0xb620('0xb')](function(){if(_0x3dd0c6===_0xb620('0x48')){var _0x1ba65f=_[_0xb620('0x16')](_0x23c9d8['FaxInteractions'],'id');return _0x23c9d8[_0xb620('0x4e')](_0x1ba65f)[_0xb620('0xb')](function(){for(var _0x565e7c=0x0;_0x565e7c<_0x1ba65f[_0xb620('0x3e')];_0x565e7c+=0x1){_0x48d87f[_0xb620('0x4a')](_0xb620('0x4f'),{'FaxInteractionId':Number(_0x1ba65f[_0x565e7c]),'UserId':Number(_0x23c9d8['id'])});}});}})[_0xb620('0xb')](function(){if(_0x3dd0c6===_0xb620('0x48')){var _0x41712d=_[_0xb620('0x16')](_0x23c9d8[_0xb620('0x24')],'id');return _0x23c9d8[_0xb620('0x50')](_0x41712d)['then'](function(){for(var _0x2e3d5e=0x0;_0x2e3d5e<_0x41712d[_0xb620('0x3e')];_0x2e3d5e+=0x1){_0x48d87f[_0xb620('0x4a')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x41712d[_0x2e3d5e]),'UserId':Number(_0x23c9d8['id'])});}});}})[_0xb620('0xb')](function(){if(_0x3dd0c6===_0xb620('0x48')){var _0xea0d5c=_[_0xb620('0x16')](_0x23c9d8[_0xb620('0x26')],'id');return _0x23c9d8[_0xb620('0x51')](_0xea0d5c)[_0xb620('0xb')](function(){for(var _0x239cdd=0x0;_0x239cdd<_0xea0d5c['length'];_0x239cdd+=0x1){_0x48d87f[_0xb620('0x4a')](_0xb620('0x52'),{'OpenchannelInteractionId':Number(_0xea0d5c[_0x239cdd]),'UserId':Number(_0x23c9d8['id'])});}});}})[_0xb620('0xb')](function(){if(_0x3dd0c6===_0xb620('0x48')){var _0x27828b=_['map'](_0x23c9d8[_0xb620('0x53')],'id');return _0x23c9d8[_0xb620('0x54')](_0x27828b)[_0xb620('0xb')](function(){for(var _0x5d9d63=0x0;_0x5d9d63<_0x27828b[_0xb620('0x3e')];_0x5d9d63+=0x1){_0x48d87f[_0xb620('0x4a')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x27828b[_0x5d9d63]),'UserId':Number(_0x23c9d8['id'])});}});}})[_0xb620('0x55')](function(_0xf6ca16){_0x239e37[_0xb620('0x56')](_0xf6ca16);});}}function onDisconnect(_0x3d88bf,_0x3b20df){joinOrLeave(_0x3d88bf,_0xb620('0x48'),_0x3b20df);}function onConnect(_0x4050cd){joinOrLeave(_0x4050cd,'join');}exports[_0xb620('0x57')]=function(_0x56d4e2){_0x56d4e2['on']('connection',function(_0x2e03e8){_0x2e03e8['setMaxListeners'](0x0);_0x2e03e8[_0xb620('0x58')]=_0x2e03e8[_0xb620('0x59')]['connection'][_0xb620('0x5a')]+':'+_0x2e03e8[_0xb620('0x59')][_0xb620('0x5b')][_0xb620('0x5c')];_0x2e03e8[_0xb620('0x5d')]=new Date();_0x2e03e8[_0xb620('0x56')]=function(_0x5ce421){console[_0xb620('0x56')](_0xb620('0x5e')+_0x2e03e8['nsp']['name']+'['+_0x2e03e8[_0xb620('0x58')]+']',_0x5ce421);};_0x2e03e8['on']('disconnect',function(){onDisconnect(_0x2e03e8,_0x56d4e2);_0x2e03e8[_0xb620('0x56')]('DISCONNECTED');});onConnect(_0x2e03e8);_0x2e03e8[_0xb620('0x56')](_0xb620('0x5f'));});};