Built motion from commit d69f4380.|2.6.29
[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 _0x87d5=['removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','log','join','default','connection','setMaxListeners','address','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','./environment','name','Agents','User','role','agent','type','ivr','UserProfileSection','then','VoiceQueues','ChatQueues','MailQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','Trunks','IvrCampaigns','UserProfileResource','where','telephone','Campaign','%s:queue:%s','length','format','query','find','userProfileId','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','ChatQueue','FaxQueues','SmsQueues','SmsQueue','Trunk','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','voice','fax','mail','openchannel','whatsapp','telephone:%s','user:%s','leave','map','removeChatInteractions','emit','user_has_chat_interactions:remove','user_has_fax_interactions:remove','SmsInteractions','user_has_sms_interactions:remove'];(function(_0x269645,_0x13e9f2){var _0x4460d3=function(_0x413fbb){while(--_0x413fbb){_0x269645['push'](_0x269645['shift']());}};_0x4460d3(++_0x13e9f2);}(_0x87d5,0x6b));var _0x587d=function(_0xce0b84,_0x2b7229){_0xce0b84=_0xce0b84-0x0;var _0x2267ef=_0x87d5[_0xce0b84];return _0x2267ef;};'use strict';var _=require(_0x587d('0x0'));var util=require('util');var BPromise=require(_0x587d('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x587d('0x2'));var queryQueues={'attributes':['id',_0x587d('0x3')],'include':[{'as':_0x587d('0x4'),'model':db[_0x587d('0x5')],'attributes':['id','name',_0x587d('0x6')],'raw':!![],'where':{'role':_0x587d('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x587d('0x3')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x587d('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x587d('0x3')],'where':{'role':_0x587d('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x587d('0x8')],'where':{'type':_0x587d('0x9')}};function getAssociatedResources(_0x1bd7f1,_0x197713,_0x2c8d20){return db[_0x587d('0xa')]['findOne']({'where':{'name':_0x1bd7f1,'userProfileId':_0x197713},'raw':!![]})[_0x587d('0xb')](function(_0x26230e){if(_0x26230e){if(_0x26230e['autoAssociation']){switch(_0x1bd7f1){case _0x587d('0xc'):case _0x587d('0xd'):case'FaxQueues':case'SmsQueues':case _0x587d('0xe'):case _0x587d('0xf'):case _0x587d('0x10'):return db[_0x2c8d20]['findAll'](queryQueues);case _0x587d('0x11'):return db[_0x2c8d20][_0x587d('0x12')](queryTelephones);case _0x587d('0x13'):return db[_0x2c8d20][_0x587d('0x12')](queryTrunks);case _0x587d('0x14'):return db[_0x2c8d20][_0x587d('0x12')](queryCampaigns);}}else{return db[_0x587d('0x15')][_0x587d('0x12')]({'attributes':['resourceId'],'where':{'sectionId':_0x26230e['id']},'raw':!![]})[_0x587d('0xb')](function(_0x4b2b77){if(_0x4b2b77){var _0x272e09={'where':{'id':_['map'](_0x4b2b77,'resourceId')},'raw':!![]};switch(_0x2c8d20){case'User':_0x272e09[_0x587d('0x16')][_0x587d('0x6')]=_0x587d('0x17');break;case _0x587d('0x18'):_0x272e09[_0x587d('0x16')][_0x587d('0x8')]='ivr';break;}return db[_0x2c8d20][_0x587d('0x12')](_0x272e09);}else{return[];}});}}else{return[];}})[_0x587d('0xb')](function(_0x4c66db){return _0x4c66db;});}function joinOrLeaveQueues(_0x4a66da,_0x5721eb,_0x2653c8,_0x3a4f66){_0x4a66da[_0x5721eb](util['format'](_0x587d('0x19'),_0x2653c8,_0x3a4f66['name']));if(_0x3a4f66[_0x587d('0x4')]){for(var _0x2f7717=0x0;_0x2f7717<_0x3a4f66['Agents'][_0x587d('0x1a')];_0x2f7717+=0x1){_0x4a66da[_0x5721eb](util[_0x587d('0x1b')]('user:%s',_0x3a4f66['Agents'][_0x2f7717][_0x587d('0x3')]));}}}function joinOrLeave(_0x45af9e,_0x443c5c,_0x3830a0){var _0x2e8278;if(_0x45af9e['handshake'][_0x587d('0x1c')]['id']){db[_0x587d('0x5')][_0x587d('0x1d')]({'attributes':['id',_0x587d('0x3'),_0x587d('0x6'),_0x587d('0x1e')],'where':{'id':_0x45af9e['handshake'][_0x587d('0x1c')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x587d('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0x587d('0x20')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x587d('0x21')],'as':_0x587d('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x587d('0x23')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x587d('0x24')],'as':_0x587d('0x25'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x587d('0x26'),'attributes':['id'],'raw':!![]}]})[_0x587d('0xb')](function(_0x5d3136){if(_0x5d3136){_0x2e8278=_0x5d3136;_0x45af9e[_0x443c5c](util[_0x587d('0x1b')]('user:%s',_0x5d3136[_0x587d('0x3')]));var _0xa2b2a6=[];switch(_0x5d3136['role']){case'admin':_0x45af9e[_0x443c5c](_0x587d('0x27'));_0x45af9e[_0x443c5c](_0x587d('0x28'));if(queryQueues[_0x587d('0x29')](_0x587d('0x2a'))){delete queryQueues[_0x587d('0x2a')];}_0xa2b2a6[_0x587d('0x2b')](db['VoiceQueue']['findAll'](queryQueues));_0xa2b2a6[_0x587d('0x2b')](db['ChatQueue'][_0x587d('0x12')](queryQueues));_0xa2b2a6[_0x587d('0x2b')](db[_0x587d('0x2c')][_0x587d('0x12')](queryQueues));_0xa2b2a6[_0x587d('0x2b')](db['SmsQueue']['findAll'](queryQueues));_0xa2b2a6[_0x587d('0x2b')](db[_0x587d('0x2d')]['findAll'](queryQueues));_0xa2b2a6[_0x587d('0x2b')](db[_0x587d('0x2e')][_0x587d('0x12')](queryQueues));_0xa2b2a6[_0x587d('0x2b')](db[_0x587d('0x2f')]['findAll'](queryQueues));_0xa2b2a6[_0x587d('0x2b')](db['User'][_0x587d('0x12')](queryTelephones));_0xa2b2a6[_0x587d('0x2b')](db['Trunk'][_0x587d('0x12')](queryTrunks));_0xa2b2a6[_0x587d('0x2b')](db['Campaign'][_0x587d('0x12')](queryCampaigns));_0xa2b2a6[_0x587d('0x2b')](db[_0x587d('0x5')][_0x587d('0x12')](queryAgents));break;case'user':_0x45af9e[_0x443c5c]('voice:inbound');_0x45af9e[_0x443c5c](_0x587d('0x28'));_0xa2b2a6['push'](getAssociatedResources(_0x587d('0xc'),_0x5d3136['userProfileId'],'VoiceQueue'));_0xa2b2a6[_0x587d('0x2b')](getAssociatedResources(_0x587d('0xd'),_0x5d3136[_0x587d('0x1e')],_0x587d('0x30')));_0xa2b2a6[_0x587d('0x2b')](getAssociatedResources(_0x587d('0x31'),_0x5d3136[_0x587d('0x1e')],_0x587d('0x2c')));_0xa2b2a6[_0x587d('0x2b')](getAssociatedResources(_0x587d('0x32'),_0x5d3136['userProfileId'],_0x587d('0x33')));_0xa2b2a6[_0x587d('0x2b')](getAssociatedResources(_0x587d('0xe'),_0x5d3136['userProfileId'],_0x587d('0x2d')));_0xa2b2a6[_0x587d('0x2b')](getAssociatedResources(_0x587d('0xf'),_0x5d3136['userProfileId'],_0x587d('0x2e')));_0xa2b2a6[_0x587d('0x2b')](getAssociatedResources(_0x587d('0x10'),_0x5d3136[_0x587d('0x1e')],'WhatsappQueue'));_0xa2b2a6['push'](getAssociatedResources('Telephones',_0x5d3136[_0x587d('0x1e')],_0x587d('0x5')));_0xa2b2a6[_0x587d('0x2b')](getAssociatedResources(_0x587d('0x13'),_0x5d3136['userProfileId'],_0x587d('0x34')));_0xa2b2a6[_0x587d('0x2b')](getAssociatedResources('IvrCampaigns',_0x5d3136[_0x587d('0x1e')],_0x587d('0x18')));_0xa2b2a6[_0x587d('0x2b')](db[_0x587d('0x5')][_0x587d('0x12')](queryAgents));break;case _0x587d('0x7'):_0x45af9e[_0x443c5c](_0x587d('0x27'));_0x45af9e[_0x443c5c]('voice:outbound');_0xa2b2a6[_0x587d('0x2b')](_0x5d3136[_0x587d('0x35')]({'attributes':['id','name']}));_0xa2b2a6['push'](_0x5d3136[_0x587d('0x36')]({'attributes':['id',_0x587d('0x3')]}));_0xa2b2a6[_0x587d('0x2b')](_0x5d3136[_0x587d('0x37')]({'attributes':['id',_0x587d('0x3')]}));_0xa2b2a6[_0x587d('0x2b')](_0x5d3136[_0x587d('0x38')]({'attributes':['id',_0x587d('0x3')]}));_0xa2b2a6[_0x587d('0x2b')](_0x5d3136[_0x587d('0x39')]({'attributes':['id','name']}));_0xa2b2a6[_0x587d('0x2b')](_0x5d3136[_0x587d('0x3a')]({'attributes':['id','name']}));_0xa2b2a6['push'](_0x5d3136[_0x587d('0x3b')]({'attributes':['id',_0x587d('0x3')]}));break;}return BPromise['all'](_0xa2b2a6);}})['then'](function(_0x40b6ed){if(_0x40b6ed&&_0x40b6ed['length']){for(var _0x26deda=0x0;_0x26deda<_0x40b6ed[_0x587d('0x1a')];_0x26deda+=0x1){for(var _0x440bd5=0x0;_0x440bd5<_0x40b6ed[_0x26deda][_0x587d('0x1a')];_0x440bd5+=0x1){switch(_0x26deda){case 0x0:joinOrLeaveQueues(_0x45af9e,_0x443c5c,_0x587d('0x3c'),_0x40b6ed[_0x26deda][_0x440bd5]);break;case 0x1:joinOrLeaveQueues(_0x45af9e,_0x443c5c,'chat',_0x40b6ed[_0x26deda][_0x440bd5]);break;case 0x2:joinOrLeaveQueues(_0x45af9e,_0x443c5c,_0x587d('0x3d'),_0x40b6ed[_0x26deda][_0x440bd5]);break;case 0x3:joinOrLeaveQueues(_0x45af9e,_0x443c5c,'sms',_0x40b6ed[_0x26deda][_0x440bd5]);break;case 0x4:joinOrLeaveQueues(_0x45af9e,_0x443c5c,_0x587d('0x3e'),_0x40b6ed[_0x26deda][_0x440bd5]);break;case 0x5:joinOrLeaveQueues(_0x45af9e,_0x443c5c,_0x587d('0x3f'),_0x40b6ed[_0x26deda][_0x440bd5]);break;case 0x6:joinOrLeaveQueues(_0x45af9e,_0x443c5c,_0x587d('0x40'),_0x40b6ed[_0x26deda][_0x440bd5]);break;case 0x7:if(_0x2e8278[_0x587d('0x6')]!==_0x587d('0x7'))_0x45af9e[_0x443c5c](util[_0x587d('0x1b')](_0x587d('0x41'),_0x40b6ed[_0x26deda][_0x440bd5][_0x587d('0x3')]));break;case 0x8:if(_0x2e8278[_0x587d('0x6')]!==_0x587d('0x7'))_0x45af9e[_0x443c5c](util[_0x587d('0x1b')]('trunk:%s',_0x40b6ed[_0x26deda][_0x440bd5][_0x587d('0x3')]));break;case 0x9:if(_0x2e8278[_0x587d('0x6')]!=='agent')_0x45af9e[_0x443c5c](util[_0x587d('0x1b')]('campaign:%s:%s',_0x40b6ed[_0x26deda][_0x440bd5][_0x587d('0x8')],_0x40b6ed[_0x26deda][_0x440bd5][_0x587d('0x3')]));break;case 0xa:_0x45af9e[_0x443c5c](util['format'](_0x587d('0x42'),_0x40b6ed[_0x26deda][_0x440bd5][_0x587d('0x3')]));break;}}}}})[_0x587d('0xb')](function(){if(_0x443c5c===_0x587d('0x43')){var _0x561860=_[_0x587d('0x44')](_0x2e8278[_0x587d('0x1f')],'id');return _0x2e8278[_0x587d('0x45')](_0x561860)[_0x587d('0xb')](function(){for(var _0x4c57c9=0x0;_0x4c57c9<_0x561860[_0x587d('0x1a')];_0x4c57c9+=0x1){_0x3830a0[_0x587d('0x46')](_0x587d('0x47'),{'ChatInteractionId':Number(_0x561860[_0x4c57c9]),'UserId':Number(_0x2e8278['id'])});}});}})[_0x587d('0xb')](function(){if(_0x443c5c===_0x587d('0x43')){var _0x18e6f7=_[_0x587d('0x44')](_0x2e8278['MailInteractions'],'id');return _0x2e8278['removeMailInteractions'](_0x18e6f7)[_0x587d('0xb')](function(){for(var _0x8a671=0x0;_0x8a671<_0x18e6f7[_0x587d('0x1a')];_0x8a671+=0x1){_0x3830a0[_0x587d('0x46')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x18e6f7[_0x8a671]),'UserId':Number(_0x2e8278['id'])});}});}})['then'](function(){if(_0x443c5c==='leave'){var _0x39a4c0=_[_0x587d('0x44')](_0x2e8278[_0x587d('0x22')],'id');return _0x2e8278['removeFaxInteractions'](_0x39a4c0)[_0x587d('0xb')](function(){for(var _0x3053c3=0x0;_0x3053c3<_0x39a4c0[_0x587d('0x1a')];_0x3053c3+=0x1){_0x3830a0[_0x587d('0x46')](_0x587d('0x48'),{'FaxInteractionId':Number(_0x39a4c0[_0x3053c3]),'UserId':Number(_0x2e8278['id'])});}});}})[_0x587d('0xb')](function(){if(_0x443c5c===_0x587d('0x43')){var _0xb1b44b=_['map'](_0x2e8278[_0x587d('0x49')],'id');return _0x2e8278['removeSmsInteractions'](_0xb1b44b)[_0x587d('0xb')](function(){for(var _0x39b781=0x0;_0x39b781<_0xb1b44b[_0x587d('0x1a')];_0x39b781+=0x1){_0x3830a0[_0x587d('0x46')](_0x587d('0x4a'),{'SmsInteractionId':Number(_0xb1b44b[_0x39b781]),'UserId':Number(_0x2e8278['id'])});}});}})['then'](function(){if(_0x443c5c===_0x587d('0x43')){var _0x2ec4b9=_[_0x587d('0x44')](_0x2e8278[_0x587d('0x25')],'id');return _0x2e8278[_0x587d('0x4b')](_0x2ec4b9)[_0x587d('0xb')](function(){for(var _0x35be4c=0x0;_0x35be4c<_0x2ec4b9['length'];_0x35be4c+=0x1){_0x3830a0['emit'](_0x587d('0x4c'),{'OpenchannelInteractionId':Number(_0x2ec4b9[_0x35be4c]),'UserId':Number(_0x2e8278['id'])});}});}})[_0x587d('0xb')](function(){if(_0x443c5c===_0x587d('0x43')){var _0x2be479=_['map'](_0x2e8278[_0x587d('0x26')],'id');return _0x2e8278['removeWhatsappInteractions'](_0x2be479)[_0x587d('0xb')](function(){for(var _0x4b70a5=0x0;_0x4b70a5<_0x2be479['length'];_0x4b70a5+=0x1){_0x3830a0[_0x587d('0x46')](_0x587d('0x4d'),{'WhatsappInteractionId':Number(_0x2be479[_0x4b70a5]),'UserId':Number(_0x2e8278['id'])});}});}})['catch'](function(_0x401f69){_0x45af9e[_0x587d('0x4e')](_0x401f69);});}}function onDisconnect(_0x52a00e,_0x4d0a7a){joinOrLeave(_0x52a00e,'leave',_0x4d0a7a);}function onConnect(_0xf93849){joinOrLeave(_0xf93849,_0x587d('0x4f'));}exports[_0x587d('0x50')]=function(_0x4e71d4){_0x4e71d4['on'](_0x587d('0x51'),function(_0x300608){_0x300608[_0x587d('0x52')](0x0);_0x300608[_0x587d('0x53')]=_0x300608['request'][_0x587d('0x51')]['remoteAddress']+':'+_0x300608['request'][_0x587d('0x51')][_0x587d('0x54')];_0x300608[_0x587d('0x55')]=new Date();_0x300608[_0x587d('0x4e')]=function(_0x4744e3){console[_0x587d('0x4e')](_0x587d('0x56')+_0x300608[_0x587d('0x57')][_0x587d('0x3')]+'['+_0x300608[_0x587d('0x53')]+']',_0x4744e3);};_0x300608['on'](_0x587d('0x58'),function(){onDisconnect(_0x300608,_0x4e71d4);_0x300608['log'](_0x587d('0x59'));});onConnect(_0x300608);_0x300608['log'](_0x587d('0x5a'));});};