e5600f146bfb0fb1c6b43a2827ab23c688d6c04a
[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 _0x323f=['findAll','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','where','Campaign','format','%s:queue:%s','length','user:%s','handshake','query','find','userProfileId','ChatInteractions','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','MailQueues','MailQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','fax','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','SocketIO\x20','nsp','disconnect','DISCONNECTED','util','../mysqldb','./environment','name','Agents','User','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x323f,0x1ee));var _0xf323=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x323f[_0x4154a6];return _0x3b2786;};'use strict';var _=require('lodash');var util=require(_0xf323('0x0'));var BPromise=require('bluebird');var db=require(_0xf323('0x1'))['db'];var config=require(_0xf323('0x2'));var queryQueues={'attributes':['id',_0xf323('0x3')],'include':[{'as':_0xf323('0x4'),'model':db[_0xf323('0x5')],'attributes':['id',_0xf323('0x3'),_0xf323('0x6')],'raw':!![],'where':{'role':_0xf323('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xf323('0x3')],'where':{'role':_0xf323('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xf323('0x3')],'where':{'role':_0xf323('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xf323('0x3'),_0xf323('0x9')],'where':{'type':_0xf323('0xa')}};function getAssociatedResources(_0x3c416a,_0x105b93,_0x2b24a2){return db[_0xf323('0xb')][_0xf323('0xc')]({'where':{'name':_0x3c416a,'userProfileId':_0x105b93},'raw':!![]})[_0xf323('0xd')](function(_0x4196b5){if(_0x4196b5){if(_0x4196b5[_0xf323('0xe')]){switch(_0x3c416a){case _0xf323('0xf'):case _0xf323('0x10'):case _0xf323('0x11'):case _0xf323('0x12'):case'MailQueues':case _0xf323('0x13'):case _0xf323('0x14'):return db[_0x2b24a2][_0xf323('0x15')](queryQueues);case'Telephones':return db[_0x2b24a2][_0xf323('0x15')](queryTelephones);case _0xf323('0x16'):return db[_0x2b24a2][_0xf323('0x15')](queryTrunks);case _0xf323('0x17'):return db[_0x2b24a2][_0xf323('0x15')](queryCampaigns);}}else{return db[_0xf323('0x18')]['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x4196b5['id']},'raw':!![]})[_0xf323('0xd')](function(_0x447517){if(_0x447517){var _0x38fd4c={'where':{'id':_[_0xf323('0x19')](_0x447517,_0xf323('0x1a'))},'raw':!![]};switch(_0x2b24a2){case'User':_0x38fd4c[_0xf323('0x1b')][_0xf323('0x6')]=_0xf323('0x8');break;case _0xf323('0x1c'):_0x38fd4c['where'][_0xf323('0x9')]=_0xf323('0xa');break;}return db[_0x2b24a2][_0xf323('0x15')](_0x38fd4c);}else{return[];}});}}else{return[];}})[_0xf323('0xd')](function(_0x5955ea){return _0x5955ea;});}function joinOrLeaveQueues(_0x409b16,_0x9ce1ba,_0x5baab2,_0x32d7b0){_0x409b16[_0x9ce1ba](util[_0xf323('0x1d')](_0xf323('0x1e'),_0x5baab2,_0x32d7b0[_0xf323('0x3')]));if(_0x32d7b0['Agents']){for(var _0xdc7891=0x0;_0xdc7891<_0x32d7b0[_0xf323('0x4')][_0xf323('0x1f')];_0xdc7891+=0x1){_0x409b16[_0x9ce1ba](util['format'](_0xf323('0x20'),_0x32d7b0[_0xf323('0x4')][_0xdc7891][_0xf323('0x3')]));}}}function joinOrLeave(_0x3450d6,_0x13ec1f,_0xa3362c){var _0x189b23;if(_0x3450d6[_0xf323('0x21')][_0xf323('0x22')]['id']){db['User'][_0xf323('0x23')]({'attributes':['id',_0xf323('0x3'),_0xf323('0x6'),_0xf323('0x24')],'where':{'id':_0x3450d6[_0xf323('0x21')][_0xf323('0x22')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0xf323('0x25'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xf323('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xf323('0x27')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xf323('0x28')],'as':_0xf323('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0xf323('0x2a')],'as':_0xf323('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0xf323('0x2c')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xf323('0xd')](function(_0x34b536){if(_0x34b536){_0x189b23=_0x34b536;_0x3450d6[_0x13ec1f](util[_0xf323('0x1d')](_0xf323('0x20'),_0x34b536[_0xf323('0x3')]));var _0x36bd3f=[];switch(_0x34b536[_0xf323('0x6')]){case _0xf323('0x2d'):_0x3450d6[_0x13ec1f](_0xf323('0x2e'));_0x3450d6[_0x13ec1f]('voice:outbound');if(queryQueues[_0xf323('0x2f')](_0xf323('0x30'))){delete queryQueues[_0xf323('0x30')];}_0x36bd3f[_0xf323('0x31')](db[_0xf323('0x32')]['findAll'](queryQueues));_0x36bd3f[_0xf323('0x31')](db[_0xf323('0x33')][_0xf323('0x15')](queryQueues));_0x36bd3f[_0xf323('0x31')](db[_0xf323('0x34')]['findAll'](queryQueues));_0x36bd3f[_0xf323('0x31')](db[_0xf323('0x35')][_0xf323('0x15')](queryQueues));_0x36bd3f[_0xf323('0x31')](db['MailQueue'][_0xf323('0x15')](queryQueues));_0x36bd3f['push'](db[_0xf323('0x36')][_0xf323('0x15')](queryQueues));_0x36bd3f['push'](db[_0xf323('0x37')]['findAll'](queryQueues));_0x36bd3f[_0xf323('0x31')](db['User'][_0xf323('0x15')](queryTelephones));_0x36bd3f['push'](db[_0xf323('0x38')][_0xf323('0x15')](queryTrunks));_0x36bd3f['push'](db['Campaign']['findAll'](queryCampaigns));_0x36bd3f[_0xf323('0x31')](db[_0xf323('0x5')][_0xf323('0x15')](queryAgents));break;case _0xf323('0x39'):_0x3450d6[_0x13ec1f](_0xf323('0x2e'));_0x3450d6[_0x13ec1f]('voice:outbound');_0x36bd3f['push'](getAssociatedResources('VoiceQueues',_0x34b536[_0xf323('0x24')],'VoiceQueue'));_0x36bd3f[_0xf323('0x31')](getAssociatedResources('ChatQueues',_0x34b536[_0xf323('0x24')],_0xf323('0x33')));_0x36bd3f[_0xf323('0x31')](getAssociatedResources(_0xf323('0x11'),_0x34b536[_0xf323('0x24')],'FaxQueue'));_0x36bd3f[_0xf323('0x31')](getAssociatedResources(_0xf323('0x12'),_0x34b536[_0xf323('0x24')],_0xf323('0x35')));_0x36bd3f[_0xf323('0x31')](getAssociatedResources(_0xf323('0x3a'),_0x34b536[_0xf323('0x24')],_0xf323('0x3b')));_0x36bd3f[_0xf323('0x31')](getAssociatedResources(_0xf323('0x13'),_0x34b536[_0xf323('0x24')],_0xf323('0x36')));_0x36bd3f[_0xf323('0x31')](getAssociatedResources(_0xf323('0x14'),_0x34b536[_0xf323('0x24')],_0xf323('0x37')));_0x36bd3f['push'](getAssociatedResources('Telephones',_0x34b536[_0xf323('0x24')],_0xf323('0x5')));_0x36bd3f[_0xf323('0x31')](getAssociatedResources(_0xf323('0x16'),_0x34b536[_0xf323('0x24')],_0xf323('0x38')));_0x36bd3f[_0xf323('0x31')](getAssociatedResources(_0xf323('0x17'),_0x34b536[_0xf323('0x24')],_0xf323('0x1c')));_0x36bd3f[_0xf323('0x31')](db[_0xf323('0x5')][_0xf323('0x15')](queryAgents));break;case'agent':_0x3450d6[_0x13ec1f](_0xf323('0x2e'));_0x3450d6[_0x13ec1f]('voice:outbound');_0x36bd3f['push'](_0x34b536[_0xf323('0x3c')]({'attributes':['id','name']}));_0x36bd3f['push'](_0x34b536[_0xf323('0x3d')]({'attributes':['id',_0xf323('0x3')]}));_0x36bd3f[_0xf323('0x31')](_0x34b536[_0xf323('0x3e')]({'attributes':['id',_0xf323('0x3')]}));_0x36bd3f[_0xf323('0x31')](_0x34b536[_0xf323('0x3f')]({'attributes':['id',_0xf323('0x3')]}));_0x36bd3f[_0xf323('0x31')](_0x34b536[_0xf323('0x40')]({'attributes':['id',_0xf323('0x3')]}));_0x36bd3f['push'](_0x34b536[_0xf323('0x41')]({'attributes':['id','name']}));_0x36bd3f[_0xf323('0x31')](_0x34b536[_0xf323('0x42')]({'attributes':['id',_0xf323('0x3')]}));break;}return BPromise[_0xf323('0x43')](_0x36bd3f);}})['then'](function(_0x57dbe2){if(_0x57dbe2&&_0x57dbe2[_0xf323('0x1f')]){for(var _0x5e284f=0x0;_0x5e284f<_0x57dbe2[_0xf323('0x1f')];_0x5e284f+=0x1){for(var _0x494685=0x0;_0x494685<_0x57dbe2[_0x5e284f][_0xf323('0x1f')];_0x494685+=0x1){switch(_0x5e284f){case 0x0:joinOrLeaveQueues(_0x3450d6,_0x13ec1f,_0xf323('0x44'),_0x57dbe2[_0x5e284f][_0x494685]);break;case 0x1:joinOrLeaveQueues(_0x3450d6,_0x13ec1f,'chat',_0x57dbe2[_0x5e284f][_0x494685]);break;case 0x2:joinOrLeaveQueues(_0x3450d6,_0x13ec1f,_0xf323('0x45'),_0x57dbe2[_0x5e284f][_0x494685]);break;case 0x3:joinOrLeaveQueues(_0x3450d6,_0x13ec1f,_0xf323('0x46'),_0x57dbe2[_0x5e284f][_0x494685]);break;case 0x4:joinOrLeaveQueues(_0x3450d6,_0x13ec1f,_0xf323('0x47'),_0x57dbe2[_0x5e284f][_0x494685]);break;case 0x5:joinOrLeaveQueues(_0x3450d6,_0x13ec1f,_0xf323('0x48'),_0x57dbe2[_0x5e284f][_0x494685]);break;case 0x6:joinOrLeaveQueues(_0x3450d6,_0x13ec1f,_0xf323('0x49'),_0x57dbe2[_0x5e284f][_0x494685]);break;case 0x7:if(_0x189b23[_0xf323('0x6')]!==_0xf323('0x7'))_0x3450d6[_0x13ec1f](util[_0xf323('0x1d')](_0xf323('0x4a'),_0x57dbe2[_0x5e284f][_0x494685][_0xf323('0x3')]));break;case 0x8:if(_0x189b23[_0xf323('0x6')]!==_0xf323('0x7'))_0x3450d6[_0x13ec1f](util[_0xf323('0x1d')]('trunk:%s',_0x57dbe2[_0x5e284f][_0x494685][_0xf323('0x3')]));break;case 0x9:if(_0x189b23[_0xf323('0x6')]!==_0xf323('0x7'))_0x3450d6[_0x13ec1f](util[_0xf323('0x1d')](_0xf323('0x4b'),_0x57dbe2[_0x5e284f][_0x494685][_0xf323('0x9')],_0x57dbe2[_0x5e284f][_0x494685]['name']));break;case 0xa:_0x3450d6[_0x13ec1f](util[_0xf323('0x1d')](_0xf323('0x20'),_0x57dbe2[_0x5e284f][_0x494685]['name']));break;}}}}})[_0xf323('0xd')](function(){if(_0x13ec1f===_0xf323('0x4c')){var _0x5ae678=_['map'](_0x189b23[_0xf323('0x25')],'id');return _0x189b23[_0xf323('0x4d')](_0x5ae678)[_0xf323('0xd')](function(){for(var _0x1479c5=0x0;_0x1479c5<_0x5ae678[_0xf323('0x1f')];_0x1479c5+=0x1){_0xa3362c[_0xf323('0x4e')](_0xf323('0x4f'),{'ChatInteractionId':Number(_0x5ae678[_0x1479c5]),'UserId':Number(_0x189b23['id'])});}});}})[_0xf323('0xd')](function(){if(_0x13ec1f==='leave'){var _0x342a0d=_[_0xf323('0x19')](_0x189b23[_0xf323('0x26')],'id');return _0x189b23[_0xf323('0x50')](_0x342a0d)[_0xf323('0xd')](function(){for(var _0x146b7e=0x0;_0x146b7e<_0x342a0d[_0xf323('0x1f')];_0x146b7e+=0x1){_0xa3362c['emit'](_0xf323('0x51'),{'MailInteractionId':Number(_0x342a0d[_0x146b7e]),'UserId':Number(_0x189b23['id'])});}});}})[_0xf323('0xd')](function(){if(_0x13ec1f===_0xf323('0x4c')){var _0x23bd20=_[_0xf323('0x19')](_0x189b23[_0xf323('0x52')],'id');return _0x189b23[_0xf323('0x53')](_0x23bd20)[_0xf323('0xd')](function(){for(var _0x3f0cfe=0x0;_0x3f0cfe<_0x23bd20['length'];_0x3f0cfe+=0x1){_0xa3362c[_0xf323('0x4e')](_0xf323('0x54'),{'FaxInteractionId':Number(_0x23bd20[_0x3f0cfe]),'UserId':Number(_0x189b23['id'])});}});}})[_0xf323('0xd')](function(){if(_0x13ec1f==='leave'){var _0x818953=_[_0xf323('0x19')](_0x189b23['SmsInteractions'],'id');return _0x189b23[_0xf323('0x55')](_0x818953)[_0xf323('0xd')](function(){for(var _0x564f02=0x0;_0x564f02<_0x818953[_0xf323('0x1f')];_0x564f02+=0x1){_0xa3362c[_0xf323('0x4e')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x818953[_0x564f02]),'UserId':Number(_0x189b23['id'])});}});}})[_0xf323('0xd')](function(){if(_0x13ec1f===_0xf323('0x4c')){var _0x120b72=_[_0xf323('0x19')](_0x189b23[_0xf323('0x2b')],'id');return _0x189b23[_0xf323('0x56')](_0x120b72)[_0xf323('0xd')](function(){for(var _0x5538d5=0x0;_0x5538d5<_0x120b72[_0xf323('0x1f')];_0x5538d5+=0x1){_0xa3362c['emit'](_0xf323('0x57'),{'OpenchannelInteractionId':Number(_0x120b72[_0x5538d5]),'UserId':Number(_0x189b23['id'])});}});}})[_0xf323('0xd')](function(){if(_0x13ec1f==='leave'){var _0x318cf1=_[_0xf323('0x19')](_0x189b23['WhatsappInteractions'],'id');return _0x189b23[_0xf323('0x58')](_0x318cf1)[_0xf323('0xd')](function(){for(var _0x3ac04a=0x0;_0x3ac04a<_0x318cf1[_0xf323('0x1f')];_0x3ac04a+=0x1){_0xa3362c['emit'](_0xf323('0x59'),{'WhatsappInteractionId':Number(_0x318cf1[_0x3ac04a]),'UserId':Number(_0x189b23['id'])});}});}})[_0xf323('0x5a')](function(_0xa672b4){_0x3450d6[_0xf323('0x5b')](_0xa672b4);});}}function onDisconnect(_0x4f7162,_0x219327){joinOrLeave(_0x4f7162,_0xf323('0x4c'),_0x219327);}function onConnect(_0x6375d){joinOrLeave(_0x6375d,_0xf323('0x5c'));}exports[_0xf323('0x5d')]=function(_0xa53245){_0xa53245['on'](_0xf323('0x5e'),function(_0x1a91c8){_0x1a91c8[_0xf323('0x5f')](0x0);_0x1a91c8[_0xf323('0x60')]=_0x1a91c8[_0xf323('0x61')][_0xf323('0x5e')][_0xf323('0x62')]+':'+_0x1a91c8[_0xf323('0x61')][_0xf323('0x5e')]['remotePort'];_0x1a91c8['connectedAt']=new Date();_0x1a91c8[_0xf323('0x5b')]=function(_0x3f49d1){console[_0xf323('0x5b')](_0xf323('0x63')+_0x1a91c8[_0xf323('0x64')][_0xf323('0x3')]+'['+_0x1a91c8['address']+']',_0x3f49d1);};_0x1a91c8['on'](_0xf323('0x65'),function(){onDisconnect(_0x1a91c8,_0xa53245);_0x1a91c8[_0xf323('0x5b')](_0xf323('0x66'));});onConnect(_0x1a91c8);_0x1a91c8[_0xf323('0x5b')]('CONNECTED');});};