0f39a14f2e0d7d2e93186fabd6f9c90138e399f0
[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 _0x4cab=['telephone:%s','trunk:%s','map','removeChatInteractions','emit','user_has_chat_interactions:remove','user_has_mail_interactions:remove','leave','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','log','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED','lodash','util','../mysqldb','./environment','name','Agents','User','role','telephone','agent','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','where','type','format','%s:queue:%s','length','find','userProfileId','handshake','query','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','user','WhatsappQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','mail','openchannel'];(function(_0x5bffed,_0x2b9fb7){var _0x5c4697=function(_0x17bf2d){while(--_0x17bf2d){_0x5bffed['push'](_0x5bffed['shift']());}};_0x5c4697(++_0x2b9fb7);}(_0x4cab,0x144));var _0xb4ca=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0x4cab[_0x298ed3];return _0x5aad28;};'use strict';var _=require(_0xb4ca('0x0'));var util=require(_0xb4ca('0x1'));var BPromise=require('bluebird');var db=require(_0xb4ca('0x2'))['db'];var config=require(_0xb4ca('0x3'));var queryQueues={'attributes':['id',_0xb4ca('0x4')],'include':[{'as':_0xb4ca('0x5'),'model':db[_0xb4ca('0x6')],'attributes':['id',_0xb4ca('0x4'),_0xb4ca('0x7')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xb4ca('0x4')],'where':{'role':_0xb4ca('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xb4ca('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xb4ca('0x4')],'where':{'role':_0xb4ca('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb4ca('0x4'),'type'],'where':{'type':_0xb4ca('0xa')}};function getAssociatedResources(_0xa602b3,_0x470fb2,_0x77825b){return db[_0xb4ca('0xb')][_0xb4ca('0xc')]({'where':{'name':_0xa602b3,'userProfileId':_0x470fb2},'raw':!![]})[_0xb4ca('0xd')](function(_0xb86668){if(_0xb86668){if(_0xb86668[_0xb4ca('0xe')]){switch(_0xa602b3){case _0xb4ca('0xf'):case _0xb4ca('0x10'):case _0xb4ca('0x11'):case _0xb4ca('0x12'):case _0xb4ca('0x13'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x77825b][_0xb4ca('0x14')](queryQueues);case _0xb4ca('0x15'):return db[_0x77825b]['findAll'](queryTelephones);case _0xb4ca('0x16'):return db[_0x77825b][_0xb4ca('0x14')](queryTrunks);case _0xb4ca('0x17'):return db[_0x77825b][_0xb4ca('0x14')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0xb4ca('0x18')],'where':{'sectionId':_0xb86668['id']},'raw':!![]})[_0xb4ca('0xd')](function(_0x1862dd){if(_0x1862dd){var _0x111113={'where':{'id':_['map'](_0x1862dd,_0xb4ca('0x18'))},'raw':!![]};switch(_0x77825b){case _0xb4ca('0x6'):_0x111113[_0xb4ca('0x19')][_0xb4ca('0x7')]=_0xb4ca('0x8');break;case'Campaign':_0x111113['where'][_0xb4ca('0x1a')]=_0xb4ca('0xa');break;}return db[_0x77825b][_0xb4ca('0x14')](_0x111113);}else{return[];}});}}else{return[];}})[_0xb4ca('0xd')](function(_0x2e5236){return _0x2e5236;});}function joinOrLeaveQueues(_0x15371a,_0x348725,_0x3fd927,_0x339330){_0x15371a[_0x348725](util[_0xb4ca('0x1b')](_0xb4ca('0x1c'),_0x3fd927,_0x339330['name']));if(_0x339330[_0xb4ca('0x5')]){for(var _0x3569c2=0x0;_0x3569c2<_0x339330['Agents'][_0xb4ca('0x1d')];_0x3569c2+=0x1){_0x15371a[_0x348725](util[_0xb4ca('0x1b')]('user:%s',_0x339330[_0xb4ca('0x5')][_0x3569c2][_0xb4ca('0x4')]));}}}function joinOrLeave(_0x2ec304,_0x340849,_0x1a07c9){var _0x2c7156;if(_0x2ec304['handshake']['query']['id']){db[_0xb4ca('0x6')][_0xb4ca('0x1e')]({'attributes':['id',_0xb4ca('0x4'),_0xb4ca('0x7'),_0xb4ca('0x1f')],'where':{'id':_0x2ec304[_0xb4ca('0x20')][_0xb4ca('0x21')]['id']},'include':[{'model':db[_0xb4ca('0x22')],'as':_0xb4ca('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xb4ca('0x24')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb4ca('0x25')],'as':_0xb4ca('0x26'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0xb4ca('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xb4ca('0x28')],'as':_0xb4ca('0x29'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xb4ca('0x2a'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x33316b){if(_0x33316b){_0x2c7156=_0x33316b;_0x2ec304[_0x340849](util[_0xb4ca('0x1b')](_0xb4ca('0x2b'),_0x33316b['name']));var _0x11db95=[];switch(_0x33316b[_0xb4ca('0x7')]){case _0xb4ca('0x2c'):_0x2ec304[_0x340849](_0xb4ca('0x2d'));_0x2ec304[_0x340849](_0xb4ca('0x2e'));if(queryQueues[_0xb4ca('0x2f')](_0xb4ca('0x30'))){delete queryQueues[_0xb4ca('0x30')];}_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x32')][_0xb4ca('0x14')](queryQueues));_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x33')]['findAll'](queryQueues));_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x34')][_0xb4ca('0x14')](queryQueues));_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x35')]['findAll'](queryQueues));_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x36')]['findAll'](queryQueues));_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x37')][_0xb4ca('0x14')](queryQueues));_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x38')]['findAll'](queryQueues));_0x11db95['push'](db[_0xb4ca('0x6')][_0xb4ca('0x14')](queryTelephones));_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x39')]['findAll'](queryTrunks));_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x3a')][_0xb4ca('0x14')](queryCampaigns));_0x11db95[_0xb4ca('0x31')](db[_0xb4ca('0x6')][_0xb4ca('0x14')](queryAgents));break;case _0xb4ca('0x3b'):_0x2ec304[_0x340849]('voice:inbound');_0x2ec304[_0x340849]('voice:outbound');_0x11db95[_0xb4ca('0x31')](getAssociatedResources(_0xb4ca('0xf'),_0x33316b[_0xb4ca('0x1f')],_0xb4ca('0x32')));_0x11db95[_0xb4ca('0x31')](getAssociatedResources(_0xb4ca('0x10'),_0x33316b[_0xb4ca('0x1f')],_0xb4ca('0x33')));_0x11db95['push'](getAssociatedResources(_0xb4ca('0x11'),_0x33316b['userProfileId'],_0xb4ca('0x34')));_0x11db95[_0xb4ca('0x31')](getAssociatedResources(_0xb4ca('0x12'),_0x33316b[_0xb4ca('0x1f')],_0xb4ca('0x35')));_0x11db95[_0xb4ca('0x31')](getAssociatedResources(_0xb4ca('0x13'),_0x33316b[_0xb4ca('0x1f')],_0xb4ca('0x36')));_0x11db95[_0xb4ca('0x31')](getAssociatedResources('OpenchannelQueues',_0x33316b[_0xb4ca('0x1f')],_0xb4ca('0x37')));_0x11db95[_0xb4ca('0x31')](getAssociatedResources(_0xb4ca('0x3c'),_0x33316b[_0xb4ca('0x1f')],_0xb4ca('0x38')));_0x11db95['push'](getAssociatedResources('Telephones',_0x33316b['userProfileId'],_0xb4ca('0x6')));_0x11db95[_0xb4ca('0x31')](getAssociatedResources(_0xb4ca('0x16'),_0x33316b[_0xb4ca('0x1f')],_0xb4ca('0x39')));_0x11db95['push'](getAssociatedResources(_0xb4ca('0x17'),_0x33316b[_0xb4ca('0x1f')],_0xb4ca('0x3a')));_0x11db95[_0xb4ca('0x31')](db['User']['findAll'](queryAgents));break;case'agent':_0x2ec304[_0x340849](_0xb4ca('0x2d'));_0x2ec304[_0x340849](_0xb4ca('0x2e'));_0x11db95[_0xb4ca('0x31')](_0x33316b['getVoiceQueues']({'attributes':['id',_0xb4ca('0x4')]}));_0x11db95['push'](_0x33316b[_0xb4ca('0x3d')]({'attributes':['id',_0xb4ca('0x4')]}));_0x11db95[_0xb4ca('0x31')](_0x33316b[_0xb4ca('0x3e')]({'attributes':['id',_0xb4ca('0x4')]}));_0x11db95['push'](_0x33316b['getSmsQueues']({'attributes':['id',_0xb4ca('0x4')]}));_0x11db95[_0xb4ca('0x31')](_0x33316b[_0xb4ca('0x3f')]({'attributes':['id',_0xb4ca('0x4')]}));_0x11db95[_0xb4ca('0x31')](_0x33316b[_0xb4ca('0x40')]({'attributes':['id','name']}));_0x11db95['push'](_0x33316b[_0xb4ca('0x41')]({'attributes':['id','name']}));break;}return BPromise[_0xb4ca('0x42')](_0x11db95);}})['then'](function(_0x8d0ded){if(_0x8d0ded&&_0x8d0ded[_0xb4ca('0x1d')]){for(var _0x4b20c3=0x0;_0x4b20c3<_0x8d0ded[_0xb4ca('0x1d')];_0x4b20c3+=0x1){for(var _0x1ee7f8=0x0;_0x1ee7f8<_0x8d0ded[_0x4b20c3][_0xb4ca('0x1d')];_0x1ee7f8+=0x1){switch(_0x4b20c3){case 0x0:joinOrLeaveQueues(_0x2ec304,_0x340849,_0xb4ca('0x43'),_0x8d0ded[_0x4b20c3][_0x1ee7f8]);break;case 0x1:joinOrLeaveQueues(_0x2ec304,_0x340849,_0xb4ca('0x44'),_0x8d0ded[_0x4b20c3][_0x1ee7f8]);break;case 0x2:joinOrLeaveQueues(_0x2ec304,_0x340849,_0xb4ca('0x45'),_0x8d0ded[_0x4b20c3][_0x1ee7f8]);break;case 0x3:joinOrLeaveQueues(_0x2ec304,_0x340849,'sms',_0x8d0ded[_0x4b20c3][_0x1ee7f8]);break;case 0x4:joinOrLeaveQueues(_0x2ec304,_0x340849,_0xb4ca('0x46'),_0x8d0ded[_0x4b20c3][_0x1ee7f8]);break;case 0x5:joinOrLeaveQueues(_0x2ec304,_0x340849,_0xb4ca('0x47'),_0x8d0ded[_0x4b20c3][_0x1ee7f8]);break;case 0x6:joinOrLeaveQueues(_0x2ec304,_0x340849,'whatsapp',_0x8d0ded[_0x4b20c3][_0x1ee7f8]);break;case 0x7:_0x2ec304[_0x340849](util['format'](_0xb4ca('0x48'),_0x8d0ded[_0x4b20c3][_0x1ee7f8][_0xb4ca('0x4')]));break;case 0x8:_0x2ec304[_0x340849](util['format'](_0xb4ca('0x49'),_0x8d0ded[_0x4b20c3][_0x1ee7f8][_0xb4ca('0x4')]));break;case 0x9:_0x2ec304[_0x340849](util[_0xb4ca('0x1b')]('campaign:%s:%s',_0x8d0ded[_0x4b20c3][_0x1ee7f8][_0xb4ca('0x1a')],_0x8d0ded[_0x4b20c3][_0x1ee7f8][_0xb4ca('0x4')]));break;case 0xa:_0x2ec304[_0x340849](util[_0xb4ca('0x1b')](_0xb4ca('0x2b'),_0x8d0ded[_0x4b20c3][_0x1ee7f8][_0xb4ca('0x4')]));break;}}}}})[_0xb4ca('0xd')](function(){if(_0x340849==='leave'){var _0x1cdc0a=_[_0xb4ca('0x4a')](_0x2c7156[_0xb4ca('0x23')],'id');return _0x2c7156[_0xb4ca('0x4b')](_0x1cdc0a)['then'](function(){for(var _0x470225=0x0;_0x470225<_0x1cdc0a[_0xb4ca('0x1d')];_0x470225+=0x1){_0x1a07c9[_0xb4ca('0x4c')](_0xb4ca('0x4d'),{'ChatInteractionId':Number(_0x1cdc0a[_0x470225]),'UserId':Number(_0x2c7156['id'])});}});}})[_0xb4ca('0xd')](function(){if(_0x340849==='leave'){var _0x62e7a2=_[_0xb4ca('0x4a')](_0x2c7156['MailInteractions'],'id');return _0x2c7156['removeMailInteractions'](_0x62e7a2)[_0xb4ca('0xd')](function(){for(var _0x91e71f=0x0;_0x91e71f<_0x62e7a2[_0xb4ca('0x1d')];_0x91e71f+=0x1){_0x1a07c9[_0xb4ca('0x4c')](_0xb4ca('0x4e'),{'MailInteractionId':Number(_0x62e7a2[_0x91e71f]),'UserId':Number(_0x2c7156['id'])});}});}})[_0xb4ca('0xd')](function(){if(_0x340849===_0xb4ca('0x4f')){var _0x17b1bb=_[_0xb4ca('0x4a')](_0x2c7156[_0xb4ca('0x26')],'id');return _0x2c7156[_0xb4ca('0x50')](_0x17b1bb)[_0xb4ca('0xd')](function(){for(var _0x4e87ea=0x0;_0x4e87ea<_0x17b1bb[_0xb4ca('0x1d')];_0x4e87ea+=0x1){_0x1a07c9[_0xb4ca('0x4c')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x17b1bb[_0x4e87ea]),'UserId':Number(_0x2c7156['id'])});}});}})[_0xb4ca('0xd')](function(){if(_0x340849===_0xb4ca('0x4f')){var _0x4a5c90=_[_0xb4ca('0x4a')](_0x2c7156['SmsInteractions'],'id');return _0x2c7156[_0xb4ca('0x51')](_0x4a5c90)[_0xb4ca('0xd')](function(){for(var _0x46ad2c=0x0;_0x46ad2c<_0x4a5c90[_0xb4ca('0x1d')];_0x46ad2c+=0x1){_0x1a07c9[_0xb4ca('0x4c')](_0xb4ca('0x52'),{'SmsInteractionId':Number(_0x4a5c90[_0x46ad2c]),'UserId':Number(_0x2c7156['id'])});}});}})[_0xb4ca('0xd')](function(){if(_0x340849==='leave'){var _0x218ed5=_['map'](_0x2c7156['OpenchannelInteractions'],'id');return _0x2c7156['removeOpenchannelInteractions'](_0x218ed5)[_0xb4ca('0xd')](function(){for(var _0x4e5277=0x0;_0x4e5277<_0x218ed5[_0xb4ca('0x1d')];_0x4e5277+=0x1){_0x1a07c9[_0xb4ca('0x4c')](_0xb4ca('0x53'),{'OpenchannelInteractionId':Number(_0x218ed5[_0x4e5277]),'UserId':Number(_0x2c7156['id'])});}});}})[_0xb4ca('0xd')](function(){if(_0x340849===_0xb4ca('0x4f')){var _0xa2c356=_[_0xb4ca('0x4a')](_0x2c7156[_0xb4ca('0x2a')],'id');return _0x2c7156[_0xb4ca('0x54')](_0xa2c356)[_0xb4ca('0xd')](function(){for(var _0xd8e6fe=0x0;_0xd8e6fe<_0xa2c356['length'];_0xd8e6fe+=0x1){_0x1a07c9['emit'](_0xb4ca('0x55'),{'WhatsappInteractionId':Number(_0xa2c356[_0xd8e6fe]),'UserId':Number(_0x2c7156['id'])});}});}})[_0xb4ca('0x56')](function(_0x366f12){_0x2ec304['log'](_0x366f12);});}}function onDisconnect(_0x2a2b30,_0x1c8f1d){joinOrLeave(_0x2a2b30,_0xb4ca('0x4f'),_0x1c8f1d);}function onConnect(_0x3f3ad5){joinOrLeave(_0x3f3ad5,'join');}exports[_0xb4ca('0x57')]=function(_0x27656f){_0x27656f['on'](_0xb4ca('0x58'),function(_0x260a24){_0x260a24[_0xb4ca('0x59')](0x0);_0x260a24[_0xb4ca('0x5a')]=_0x260a24[_0xb4ca('0x5b')]['connection'][_0xb4ca('0x5c')]+':'+_0x260a24[_0xb4ca('0x5b')][_0xb4ca('0x58')][_0xb4ca('0x5d')];_0x260a24['connectedAt']=new Date();_0x260a24['log']=function(_0x5f2c57){console[_0xb4ca('0x5e')](_0xb4ca('0x5f')+_0x260a24['nsp'][_0xb4ca('0x4')]+'['+_0x260a24['address']+']',_0x5f2c57);};_0x260a24['on'](_0xb4ca('0x60'),function(){onDisconnect(_0x260a24,_0x27656f);_0x260a24['log'](_0xb4ca('0x61'));});onConnect(_0x260a24);_0x260a24['log'](_0xb4ca('0x62'));});};