10e18e1d133fd1af09a2f1d6983c169526fb939f
[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 _0xadf9=['MailInteraction','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:outbound','hasOwnProperty','include','VoiceQueue','push','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Campaign','user','voice:inbound','VoiceQueues','Telephones','Trunks','Trunk','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','leave','ChatInteractions','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','emit','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','connection','setMaxListeners','address','connectedAt','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','name','Agents','role','agent','telephone','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','resourceId','map','User','where','type','%s:queue:%s','length','format','user:%s','handshake','query','userProfileId'];(function(_0x4bfb9e,_0x361106){var _0x1f6ab6=function(_0x55ce74){while(--_0x55ce74){_0x4bfb9e['push'](_0x4bfb9e['shift']());}};_0x1f6ab6(++_0x361106);}(_0xadf9,0xa4));var _0x9adf=function(_0x242e4b,_0x4fecfb){_0x242e4b=_0x242e4b-0x0;var _0x3e8438=_0xadf9[_0x242e4b];return _0x3e8438;};'use strict';var _=require(_0x9adf('0x0'));var util=require(_0x9adf('0x1'));var BPromise=require(_0x9adf('0x2'));var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x9adf('0x3')],'include':[{'as':_0x9adf('0x4'),'model':db['User'],'attributes':['id',_0x9adf('0x3'),_0x9adf('0x5')],'raw':!![],'where':{'role':_0x9adf('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x9adf('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x9adf('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x9adf('0x3')],'where':{'role':_0x9adf('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x9adf('0x3'),'type'],'where':{'type':_0x9adf('0x8')}};function getAssociatedResources(_0x1d7d85,_0x4f5245,_0x1efdef){return db[_0x9adf('0x9')][_0x9adf('0xa')]({'where':{'name':_0x1d7d85,'userProfileId':_0x4f5245},'raw':!![]})[_0x9adf('0xb')](function(_0xa62065){if(_0xa62065){if(_0xa62065[_0x9adf('0xc')]){switch(_0x1d7d85){case'VoiceQueues':case _0x9adf('0xd'):case _0x9adf('0xe'):case _0x9adf('0xf'):case _0x9adf('0x10'):case _0x9adf('0x11'):case _0x9adf('0x12'):return db[_0x1efdef][_0x9adf('0x13')](queryQueues);case'Telephones':return db[_0x1efdef][_0x9adf('0x13')](queryTelephones);case'Trunks':return db[_0x1efdef][_0x9adf('0x13')](queryTrunks);case'IvrCampaigns':return db[_0x1efdef][_0x9adf('0x13')](queryCampaigns);}}else{return db['UserProfileResource'][_0x9adf('0x13')]({'attributes':[_0x9adf('0x14')],'where':{'sectionId':_0xa62065['id']},'raw':!![]})[_0x9adf('0xb')](function(_0x5552c4){if(_0x5552c4){var _0x442dc1={'where':{'id':_[_0x9adf('0x15')](_0x5552c4,'resourceId')},'raw':!![]};switch(_0x1efdef){case _0x9adf('0x16'):_0x442dc1[_0x9adf('0x17')][_0x9adf('0x5')]=_0x9adf('0x7');break;case'Campaign':_0x442dc1[_0x9adf('0x17')][_0x9adf('0x18')]=_0x9adf('0x8');break;}return db[_0x1efdef][_0x9adf('0x13')](_0x442dc1);}else{return[];}});}}else{return[];}})['then'](function(_0x16c882){return _0x16c882;});}function joinOrLeaveQueues(_0x44905a,_0x511c10,_0x5797ba,_0x545e37){_0x44905a[_0x511c10](util['format'](_0x9adf('0x19'),_0x5797ba,_0x545e37['name']));if(_0x545e37['Agents']){for(var _0x195fd9=0x0;_0x195fd9<_0x545e37[_0x9adf('0x4')][_0x9adf('0x1a')];_0x195fd9+=0x1){_0x44905a[_0x511c10](util[_0x9adf('0x1b')](_0x9adf('0x1c'),_0x545e37[_0x9adf('0x4')][_0x195fd9]['name']));}}}function joinOrLeave(_0x59ca89,_0x4ea066,_0x5ce2cd){var _0x2e8eb0;if(_0x59ca89[_0x9adf('0x1d')][_0x9adf('0x1e')]['id']){db['User']['find']({'attributes':['id',_0x9adf('0x3'),_0x9adf('0x5'),_0x9adf('0x1f')],'where':{'id':_0x59ca89[_0x9adf('0x1d')][_0x9adf('0x1e')]['id']},'include':[{'model':db['ChatInteraction'],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x9adf('0x20')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x9adf('0x21')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x9adf('0x22')],'as':_0x9adf('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x9adf('0x24')],'as':_0x9adf('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x9adf('0x26')],'as':_0x9adf('0x27'),'attributes':['id'],'raw':!![]}]})[_0x9adf('0xb')](function(_0x191b46){if(_0x191b46){_0x2e8eb0=_0x191b46;_0x59ca89[_0x4ea066](util[_0x9adf('0x1b')](_0x9adf('0x1c'),_0x191b46[_0x9adf('0x3')]));var _0x3a6250=[];switch(_0x191b46[_0x9adf('0x5')]){case _0x9adf('0x28'):_0x59ca89[_0x4ea066]('voice:inbound');_0x59ca89[_0x4ea066](_0x9adf('0x29'));if(queryQueues[_0x9adf('0x2a')](_0x9adf('0x2b'))){delete queryQueues[_0x9adf('0x2b')];}_0x3a6250['push'](db[_0x9adf('0x2c')][_0x9adf('0x13')](queryQueues));_0x3a6250['push'](db['ChatQueue'][_0x9adf('0x13')](queryQueues));_0x3a6250[_0x9adf('0x2d')](db[_0x9adf('0x2e')]['findAll'](queryQueues));_0x3a6250[_0x9adf('0x2d')](db[_0x9adf('0x2f')]['findAll'](queryQueues));_0x3a6250[_0x9adf('0x2d')](db[_0x9adf('0x30')][_0x9adf('0x13')](queryQueues));_0x3a6250[_0x9adf('0x2d')](db[_0x9adf('0x31')][_0x9adf('0x13')](queryQueues));_0x3a6250[_0x9adf('0x2d')](db[_0x9adf('0x32')]['findAll'](queryQueues));_0x3a6250[_0x9adf('0x2d')](db[_0x9adf('0x16')][_0x9adf('0x13')](queryTelephones));_0x3a6250[_0x9adf('0x2d')](db['Trunk']['findAll'](queryTrunks));_0x3a6250['push'](db[_0x9adf('0x33')][_0x9adf('0x13')](queryCampaigns));_0x3a6250[_0x9adf('0x2d')](db[_0x9adf('0x16')]['findAll'](queryAgents));break;case _0x9adf('0x34'):_0x59ca89[_0x4ea066](_0x9adf('0x35'));_0x59ca89[_0x4ea066]('voice:outbound');_0x3a6250[_0x9adf('0x2d')](getAssociatedResources(_0x9adf('0x36'),_0x191b46[_0x9adf('0x1f')],_0x9adf('0x2c')));_0x3a6250[_0x9adf('0x2d')](getAssociatedResources(_0x9adf('0xd'),_0x191b46[_0x9adf('0x1f')],'ChatQueue'));_0x3a6250[_0x9adf('0x2d')](getAssociatedResources(_0x9adf('0xe'),_0x191b46['userProfileId'],_0x9adf('0x2e')));_0x3a6250['push'](getAssociatedResources(_0x9adf('0xf'),_0x191b46[_0x9adf('0x1f')],'SmsQueue'));_0x3a6250[_0x9adf('0x2d')](getAssociatedResources(_0x9adf('0x10'),_0x191b46[_0x9adf('0x1f')],_0x9adf('0x30')));_0x3a6250[_0x9adf('0x2d')](getAssociatedResources(_0x9adf('0x11'),_0x191b46[_0x9adf('0x1f')],_0x9adf('0x31')));_0x3a6250[_0x9adf('0x2d')](getAssociatedResources(_0x9adf('0x12'),_0x191b46[_0x9adf('0x1f')],_0x9adf('0x32')));_0x3a6250[_0x9adf('0x2d')](getAssociatedResources(_0x9adf('0x37'),_0x191b46[_0x9adf('0x1f')],_0x9adf('0x16')));_0x3a6250[_0x9adf('0x2d')](getAssociatedResources(_0x9adf('0x38'),_0x191b46[_0x9adf('0x1f')],_0x9adf('0x39')));_0x3a6250[_0x9adf('0x2d')](getAssociatedResources(_0x9adf('0x3a'),_0x191b46[_0x9adf('0x1f')],_0x9adf('0x33')));_0x3a6250[_0x9adf('0x2d')](db[_0x9adf('0x16')][_0x9adf('0x13')](queryAgents));break;case _0x9adf('0x6'):_0x59ca89[_0x4ea066](_0x9adf('0x35'));_0x59ca89[_0x4ea066](_0x9adf('0x29'));_0x3a6250[_0x9adf('0x2d')](_0x191b46[_0x9adf('0x3b')]({'attributes':['id',_0x9adf('0x3')]}));_0x3a6250[_0x9adf('0x2d')](_0x191b46[_0x9adf('0x3c')]({'attributes':['id',_0x9adf('0x3')]}));_0x3a6250[_0x9adf('0x2d')](_0x191b46[_0x9adf('0x3d')]({'attributes':['id',_0x9adf('0x3')]}));_0x3a6250[_0x9adf('0x2d')](_0x191b46[_0x9adf('0x3e')]({'attributes':['id',_0x9adf('0x3')]}));_0x3a6250['push'](_0x191b46[_0x9adf('0x3f')]({'attributes':['id',_0x9adf('0x3')]}));_0x3a6250[_0x9adf('0x2d')](_0x191b46['getOpenchannelQueues']({'attributes':['id',_0x9adf('0x3')]}));_0x3a6250[_0x9adf('0x2d')](_0x191b46[_0x9adf('0x40')]({'attributes':['id',_0x9adf('0x3')]}));break;}return BPromise[_0x9adf('0x41')](_0x3a6250);}})['then'](function(_0x950ae3){if(_0x950ae3&&_0x950ae3[_0x9adf('0x1a')]){for(var _0x363003=0x0;_0x363003<_0x950ae3[_0x9adf('0x1a')];_0x363003+=0x1){for(var _0xed94a4=0x0;_0xed94a4<_0x950ae3[_0x363003][_0x9adf('0x1a')];_0xed94a4+=0x1){switch(_0x363003){case 0x0:joinOrLeaveQueues(_0x59ca89,_0x4ea066,'voice',_0x950ae3[_0x363003][_0xed94a4]);break;case 0x1:joinOrLeaveQueues(_0x59ca89,_0x4ea066,_0x9adf('0x42'),_0x950ae3[_0x363003][_0xed94a4]);break;case 0x2:joinOrLeaveQueues(_0x59ca89,_0x4ea066,_0x9adf('0x43'),_0x950ae3[_0x363003][_0xed94a4]);break;case 0x3:joinOrLeaveQueues(_0x59ca89,_0x4ea066,_0x9adf('0x44'),_0x950ae3[_0x363003][_0xed94a4]);break;case 0x4:joinOrLeaveQueues(_0x59ca89,_0x4ea066,_0x9adf('0x45'),_0x950ae3[_0x363003][_0xed94a4]);break;case 0x5:joinOrLeaveQueues(_0x59ca89,_0x4ea066,_0x9adf('0x46'),_0x950ae3[_0x363003][_0xed94a4]);break;case 0x6:joinOrLeaveQueues(_0x59ca89,_0x4ea066,_0x9adf('0x47'),_0x950ae3[_0x363003][_0xed94a4]);break;case 0x7:if(_0x2e8eb0['role']!==_0x9adf('0x6'))_0x59ca89[_0x4ea066](util[_0x9adf('0x1b')](_0x9adf('0x48'),_0x950ae3[_0x363003][_0xed94a4]['name']));break;case 0x8:if(_0x2e8eb0[_0x9adf('0x5')]!=='agent')_0x59ca89[_0x4ea066](util[_0x9adf('0x1b')](_0x9adf('0x49'),_0x950ae3[_0x363003][_0xed94a4][_0x9adf('0x3')]));break;case 0x9:if(_0x2e8eb0['role']!==_0x9adf('0x6'))_0x59ca89[_0x4ea066](util[_0x9adf('0x1b')]('campaign:%s:%s',_0x950ae3[_0x363003][_0xed94a4][_0x9adf('0x18')],_0x950ae3[_0x363003][_0xed94a4][_0x9adf('0x3')]));break;case 0xa:_0x59ca89[_0x4ea066](util[_0x9adf('0x1b')](_0x9adf('0x1c'),_0x950ae3[_0x363003][_0xed94a4]['name']));break;}}}}})['then'](function(){if(_0x4ea066===_0x9adf('0x4a')){var _0x2442f7=_['map'](_0x2e8eb0[_0x9adf('0x4b')],'id');return _0x2e8eb0['removeChatInteractions'](_0x2442f7)[_0x9adf('0xb')](function(){for(var _0x181ee1=0x0;_0x181ee1<_0x2442f7[_0x9adf('0x1a')];_0x181ee1+=0x1){_0x5ce2cd['emit'](_0x9adf('0x4c'),{'ChatInteractionId':Number(_0x2442f7[_0x181ee1]),'UserId':Number(_0x2e8eb0['id'])});}});}})['then'](function(){if(_0x4ea066===_0x9adf('0x4a')){var _0xeca6d4=_[_0x9adf('0x15')](_0x2e8eb0[_0x9adf('0x4d')],'id');return _0x2e8eb0[_0x9adf('0x4e')](_0xeca6d4)['then'](function(){for(var _0xa777f=0x0;_0xa777f<_0xeca6d4[_0x9adf('0x1a')];_0xa777f+=0x1){_0x5ce2cd[_0x9adf('0x4f')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0xeca6d4[_0xa777f]),'UserId':Number(_0x2e8eb0['id'])});}});}})['then'](function(){if(_0x4ea066===_0x9adf('0x4a')){var _0x2c869e=_[_0x9adf('0x15')](_0x2e8eb0[_0x9adf('0x50')],'id');return _0x2e8eb0[_0x9adf('0x51')](_0x2c869e)[_0x9adf('0xb')](function(){for(var _0x32ffe3=0x0;_0x32ffe3<_0x2c869e[_0x9adf('0x1a')];_0x32ffe3+=0x1){_0x5ce2cd[_0x9adf('0x4f')](_0x9adf('0x52'),{'FaxInteractionId':Number(_0x2c869e[_0x32ffe3]),'UserId':Number(_0x2e8eb0['id'])});}});}})[_0x9adf('0xb')](function(){if(_0x4ea066==='leave'){var _0x3fb531=_['map'](_0x2e8eb0[_0x9adf('0x23')],'id');return _0x2e8eb0[_0x9adf('0x53')](_0x3fb531)[_0x9adf('0xb')](function(){for(var _0x45f279=0x0;_0x45f279<_0x3fb531[_0x9adf('0x1a')];_0x45f279+=0x1){_0x5ce2cd[_0x9adf('0x4f')](_0x9adf('0x54'),{'SmsInteractionId':Number(_0x3fb531[_0x45f279]),'UserId':Number(_0x2e8eb0['id'])});}});}})[_0x9adf('0xb')](function(){if(_0x4ea066===_0x9adf('0x4a')){var _0x5c4296=_[_0x9adf('0x15')](_0x2e8eb0[_0x9adf('0x25')],'id');return _0x2e8eb0[_0x9adf('0x55')](_0x5c4296)['then'](function(){for(var _0x338a54=0x0;_0x338a54<_0x5c4296[_0x9adf('0x1a')];_0x338a54+=0x1){_0x5ce2cd[_0x9adf('0x4f')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x5c4296[_0x338a54]),'UserId':Number(_0x2e8eb0['id'])});}});}})[_0x9adf('0xb')](function(){if(_0x4ea066===_0x9adf('0x4a')){var _0xf7326f=_[_0x9adf('0x15')](_0x2e8eb0['WhatsappInteractions'],'id');return _0x2e8eb0[_0x9adf('0x56')](_0xf7326f)[_0x9adf('0xb')](function(){for(var _0x9e86ee=0x0;_0x9e86ee<_0xf7326f[_0x9adf('0x1a')];_0x9e86ee+=0x1){_0x5ce2cd['emit'](_0x9adf('0x57'),{'WhatsappInteractionId':Number(_0xf7326f[_0x9e86ee]),'UserId':Number(_0x2e8eb0['id'])});}});}})['catch'](function(_0x6f689b){_0x59ca89[_0x9adf('0x58')](_0x6f689b);});}}function onDisconnect(_0x145d51,_0x3724fb){joinOrLeave(_0x145d51,_0x9adf('0x4a'),_0x3724fb);}function onConnect(_0x23c7e0){joinOrLeave(_0x23c7e0,_0x9adf('0x59'));}exports[_0x9adf('0x5a')]=function(_0x1e7e1e){_0x1e7e1e['on'](_0x9adf('0x5b'),function(_0x388eba){_0x388eba[_0x9adf('0x5c')](0x0);_0x388eba[_0x9adf('0x5d')]=_0x388eba['request'][_0x9adf('0x5b')]['remoteAddress']+':'+_0x388eba['request'][_0x9adf('0x5b')]['remotePort'];_0x388eba[_0x9adf('0x5e')]=new Date();_0x388eba[_0x9adf('0x58')]=function(_0x4d8db3){console[_0x9adf('0x58')]('SocketIO\x20'+_0x388eba['nsp'][_0x9adf('0x3')]+'['+_0x388eba['address']+']',_0x4d8db3);};_0x388eba['on'](_0x9adf('0x5f'),function(){onDisconnect(_0x388eba,_0x1e7e1e);_0x388eba[_0x9adf('0x58')](_0x9adf('0x60'));});onConnect(_0x388eba);_0x388eba[_0x9adf('0x58')](_0x9adf('0x61'));});};