107e923fa99b48e81cba77522890e64c00ad6b5c
[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 _0xf55c=['removeChatInteractions','leave','MailInteractions','removeMailInteractions','emit','user_has_mail_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','join','connection','setMaxListeners','address','remoteAddress','connectedAt','log','nsp','disconnect','DISCONNECTED','lodash','bluebird','../mysqldb','./environment','name','Agents','User','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','role','Campaign','where','%s:queue:%s','length','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','FaxInteractions','SmsInteraction','OpenchannelInteractions','WhatsappInteractions','format','user:%s','admin','voice:outbound','hasOwnProperty','include','push','VoiceQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:inbound','VoiceQueues','ChatQueue','FaxQueue','SmsQueue','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','sms','mail','telephone:%s','trunk:%s'];(function(_0x267c55,_0x327bac){var _0x3990bd=function(_0x41eaf8){while(--_0x41eaf8){_0x267c55['push'](_0x267c55['shift']());}};_0x3990bd(++_0x327bac);}(_0xf55c,0x1e7));var _0xcf55=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xf55c[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0xcf55('0x0'));var util=require('util');var BPromise=require(_0xcf55('0x1'));var db=require(_0xcf55('0x2'))['db'];var config=require(_0xcf55('0x3'));var queryQueues={'attributes':['id',_0xcf55('0x4')],'include':[{'as':_0xcf55('0x5'),'model':db[_0xcf55('0x6')],'attributes':['id',_0xcf55('0x4'),'role'],'raw':!![],'where':{'role':_0xcf55('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xcf55('0x4')],'where':{'role':_0xcf55('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xcf55('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xcf55('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xcf55('0x4'),_0xcf55('0x9')],'where':{'type':_0xcf55('0xa')}};function getAssociatedResources(_0x576566,_0x428f2,_0x3ce5d2){return db[_0xcf55('0xb')][_0xcf55('0xc')]({'where':{'name':_0x576566,'userProfileId':_0x428f2},'raw':!![]})[_0xcf55('0xd')](function(_0x1d8ffc){if(_0x1d8ffc){if(_0x1d8ffc[_0xcf55('0xe')]){switch(_0x576566){case'VoiceQueues':case _0xcf55('0xf'):case _0xcf55('0x10'):case'SmsQueues':case'MailQueues':case _0xcf55('0x11'):case _0xcf55('0x12'):return db[_0x3ce5d2][_0xcf55('0x13')](queryQueues);case _0xcf55('0x14'):return db[_0x3ce5d2][_0xcf55('0x13')](queryTelephones);case _0xcf55('0x15'):return db[_0x3ce5d2][_0xcf55('0x13')](queryTrunks);case _0xcf55('0x16'):return db[_0x3ce5d2][_0xcf55('0x13')](queryCampaigns);}}else{return db[_0xcf55('0x17')][_0xcf55('0x13')]({'attributes':[_0xcf55('0x18')],'where':{'sectionId':_0x1d8ffc['id']},'raw':!![]})['then'](function(_0x410f47){if(_0x410f47){var _0xfba091={'where':{'id':_[_0xcf55('0x19')](_0x410f47,_0xcf55('0x18'))},'raw':!![]};switch(_0x3ce5d2){case _0xcf55('0x6'):_0xfba091['where'][_0xcf55('0x1a')]=_0xcf55('0x8');break;case _0xcf55('0x1b'):_0xfba091[_0xcf55('0x1c')][_0xcf55('0x9')]='ivr';break;}return db[_0x3ce5d2][_0xcf55('0x13')](_0xfba091);}else{return[];}});}}else{return[];}})['then'](function(_0x64f5b3){return _0x64f5b3;});}function joinOrLeaveQueues(_0x1511ba,_0x168bc7,_0x5ca906,_0x5b7612){_0x1511ba[_0x168bc7](util['format'](_0xcf55('0x1d'),_0x5ca906,_0x5b7612[_0xcf55('0x4')]));if(_0x5b7612[_0xcf55('0x5')]){for(var _0x5df9e9=0x0;_0x5df9e9<_0x5b7612[_0xcf55('0x5')][_0xcf55('0x1e')];_0x5df9e9+=0x1){_0x1511ba[_0x168bc7](util['format']('user:%s',_0x5b7612[_0xcf55('0x5')][_0x5df9e9][_0xcf55('0x4')]));}}}function joinOrLeave(_0x5de5af,_0x1891d1,_0x6dbf56){var _0x1bb5cf;if(_0x5de5af[_0xcf55('0x1f')][_0xcf55('0x20')]['id']){db[_0xcf55('0x6')][_0xcf55('0x21')]({'attributes':['id',_0xcf55('0x4'),'role',_0xcf55('0x22')],'where':{'id':_0x5de5af['handshake'][_0xcf55('0x20')]['id']},'include':[{'model':db[_0xcf55('0x23')],'as':_0xcf55('0x24'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0xcf55('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xcf55('0x26')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xcf55('0x27'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xcf55('0x28'),'attributes':['id'],'raw':!![]}]})[_0xcf55('0xd')](function(_0x1f9ed9){if(_0x1f9ed9){_0x1bb5cf=_0x1f9ed9;_0x5de5af[_0x1891d1](util[_0xcf55('0x29')](_0xcf55('0x2a'),_0x1f9ed9[_0xcf55('0x4')]));var _0x3cf082=[];switch(_0x1f9ed9['role']){case _0xcf55('0x2b'):_0x5de5af[_0x1891d1]('voice:inbound');_0x5de5af[_0x1891d1](_0xcf55('0x2c'));if(queryQueues[_0xcf55('0x2d')](_0xcf55('0x2e'))){delete queryQueues['include'];}_0x3cf082[_0xcf55('0x2f')](db[_0xcf55('0x30')][_0xcf55('0x13')](queryQueues));_0x3cf082[_0xcf55('0x2f')](db['ChatQueue'][_0xcf55('0x13')](queryQueues));_0x3cf082['push'](db['FaxQueue']['findAll'](queryQueues));_0x3cf082[_0xcf55('0x2f')](db['SmsQueue']['findAll'](queryQueues));_0x3cf082[_0xcf55('0x2f')](db[_0xcf55('0x31')]['findAll'](queryQueues));_0x3cf082[_0xcf55('0x2f')](db[_0xcf55('0x32')]['findAll'](queryQueues));_0x3cf082['push'](db[_0xcf55('0x33')][_0xcf55('0x13')](queryQueues));_0x3cf082[_0xcf55('0x2f')](db[_0xcf55('0x6')]['findAll'](queryTelephones));_0x3cf082[_0xcf55('0x2f')](db[_0xcf55('0x34')][_0xcf55('0x13')](queryTrunks));_0x3cf082[_0xcf55('0x2f')](db[_0xcf55('0x1b')][_0xcf55('0x13')](queryCampaigns));_0x3cf082['push'](db[_0xcf55('0x6')][_0xcf55('0x13')](queryAgents));break;case _0xcf55('0x35'):_0x5de5af[_0x1891d1](_0xcf55('0x36'));_0x5de5af[_0x1891d1]('voice:outbound');_0x3cf082[_0xcf55('0x2f')](getAssociatedResources(_0xcf55('0x37'),_0x1f9ed9['userProfileId'],_0xcf55('0x30')));_0x3cf082[_0xcf55('0x2f')](getAssociatedResources(_0xcf55('0xf'),_0x1f9ed9[_0xcf55('0x22')],_0xcf55('0x38')));_0x3cf082[_0xcf55('0x2f')](getAssociatedResources(_0xcf55('0x10'),_0x1f9ed9[_0xcf55('0x22')],_0xcf55('0x39')));_0x3cf082[_0xcf55('0x2f')](getAssociatedResources('SmsQueues',_0x1f9ed9[_0xcf55('0x22')],_0xcf55('0x3a')));_0x3cf082[_0xcf55('0x2f')](getAssociatedResources('MailQueues',_0x1f9ed9['userProfileId'],_0xcf55('0x31')));_0x3cf082[_0xcf55('0x2f')](getAssociatedResources(_0xcf55('0x11'),_0x1f9ed9['userProfileId'],_0xcf55('0x32')));_0x3cf082['push'](getAssociatedResources('WhatsappQueues',_0x1f9ed9[_0xcf55('0x22')],_0xcf55('0x33')));_0x3cf082['push'](getAssociatedResources(_0xcf55('0x14'),_0x1f9ed9[_0xcf55('0x22')],'User'));_0x3cf082['push'](getAssociatedResources(_0xcf55('0x15'),_0x1f9ed9[_0xcf55('0x22')],'Trunk'));_0x3cf082[_0xcf55('0x2f')](getAssociatedResources(_0xcf55('0x16'),_0x1f9ed9[_0xcf55('0x22')],_0xcf55('0x1b')));_0x3cf082[_0xcf55('0x2f')](db['User'][_0xcf55('0x13')](queryAgents));break;case'agent':_0x5de5af[_0x1891d1](_0xcf55('0x36'));_0x5de5af[_0x1891d1](_0xcf55('0x2c'));_0x3cf082[_0xcf55('0x2f')](_0x1f9ed9[_0xcf55('0x3b')]({'attributes':['id','name']}));_0x3cf082['push'](_0x1f9ed9[_0xcf55('0x3c')]({'attributes':['id',_0xcf55('0x4')]}));_0x3cf082[_0xcf55('0x2f')](_0x1f9ed9[_0xcf55('0x3d')]({'attributes':['id','name']}));_0x3cf082[_0xcf55('0x2f')](_0x1f9ed9['getSmsQueues']({'attributes':['id','name']}));_0x3cf082[_0xcf55('0x2f')](_0x1f9ed9[_0xcf55('0x3e')]({'attributes':['id',_0xcf55('0x4')]}));_0x3cf082[_0xcf55('0x2f')](_0x1f9ed9[_0xcf55('0x3f')]({'attributes':['id',_0xcf55('0x4')]}));_0x3cf082[_0xcf55('0x2f')](_0x1f9ed9['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0xcf55('0x40')](_0x3cf082);}})[_0xcf55('0xd')](function(_0x4fcf4a){if(_0x4fcf4a&&_0x4fcf4a[_0xcf55('0x1e')]){for(var _0x351dc8=0x0;_0x351dc8<_0x4fcf4a[_0xcf55('0x1e')];_0x351dc8+=0x1){for(var _0x5f209e=0x0;_0x5f209e<_0x4fcf4a[_0x351dc8][_0xcf55('0x1e')];_0x5f209e+=0x1){switch(_0x351dc8){case 0x0:joinOrLeaveQueues(_0x5de5af,_0x1891d1,_0xcf55('0x41'),_0x4fcf4a[_0x351dc8][_0x5f209e]);break;case 0x1:joinOrLeaveQueues(_0x5de5af,_0x1891d1,_0xcf55('0x42'),_0x4fcf4a[_0x351dc8][_0x5f209e]);break;case 0x2:joinOrLeaveQueues(_0x5de5af,_0x1891d1,'fax',_0x4fcf4a[_0x351dc8][_0x5f209e]);break;case 0x3:joinOrLeaveQueues(_0x5de5af,_0x1891d1,_0xcf55('0x43'),_0x4fcf4a[_0x351dc8][_0x5f209e]);break;case 0x4:joinOrLeaveQueues(_0x5de5af,_0x1891d1,_0xcf55('0x44'),_0x4fcf4a[_0x351dc8][_0x5f209e]);break;case 0x5:joinOrLeaveQueues(_0x5de5af,_0x1891d1,'openchannel',_0x4fcf4a[_0x351dc8][_0x5f209e]);break;case 0x6:joinOrLeaveQueues(_0x5de5af,_0x1891d1,'whatsapp',_0x4fcf4a[_0x351dc8][_0x5f209e]);break;case 0x7:if(_0x1bb5cf[_0xcf55('0x1a')]!==_0xcf55('0x7'))_0x5de5af[_0x1891d1](util[_0xcf55('0x29')](_0xcf55('0x45'),_0x4fcf4a[_0x351dc8][_0x5f209e][_0xcf55('0x4')]));break;case 0x8:if(_0x1bb5cf['role']!==_0xcf55('0x7'))_0x5de5af[_0x1891d1](util[_0xcf55('0x29')](_0xcf55('0x46'),_0x4fcf4a[_0x351dc8][_0x5f209e][_0xcf55('0x4')]));break;case 0x9:if(_0x1bb5cf[_0xcf55('0x1a')]!=='agent')_0x5de5af[_0x1891d1](util[_0xcf55('0x29')]('campaign:%s:%s',_0x4fcf4a[_0x351dc8][_0x5f209e]['type'],_0x4fcf4a[_0x351dc8][_0x5f209e][_0xcf55('0x4')]));break;case 0xa:_0x5de5af[_0x1891d1](util[_0xcf55('0x29')](_0xcf55('0x2a'),_0x4fcf4a[_0x351dc8][_0x5f209e][_0xcf55('0x4')]));break;}}}}})[_0xcf55('0xd')](function(){if(_0x1891d1==='leave'){var _0x1039eb=_[_0xcf55('0x19')](_0x1bb5cf[_0xcf55('0x24')],'id');return _0x1bb5cf[_0xcf55('0x47')](_0x1039eb)['then'](function(){for(var _0x18dd33=0x0;_0x18dd33<_0x1039eb[_0xcf55('0x1e')];_0x18dd33+=0x1){_0x6dbf56['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x1039eb[_0x18dd33]),'UserId':Number(_0x1bb5cf['id'])});}});}})['then'](function(){if(_0x1891d1===_0xcf55('0x48')){var _0x209998=_[_0xcf55('0x19')](_0x1bb5cf[_0xcf55('0x49')],'id');return _0x1bb5cf[_0xcf55('0x4a')](_0x209998)[_0xcf55('0xd')](function(){for(var _0x3c0404=0x0;_0x3c0404<_0x209998[_0xcf55('0x1e')];_0x3c0404+=0x1){_0x6dbf56[_0xcf55('0x4b')](_0xcf55('0x4c'),{'MailInteractionId':Number(_0x209998[_0x3c0404]),'UserId':Number(_0x1bb5cf['id'])});}});}})[_0xcf55('0xd')](function(){if(_0x1891d1===_0xcf55('0x48')){var _0x17ee25=_['map'](_0x1bb5cf[_0xcf55('0x25')],'id');return _0x1bb5cf['removeFaxInteractions'](_0x17ee25)[_0xcf55('0xd')](function(){for(var _0x1f73ca=0x0;_0x1f73ca<_0x17ee25[_0xcf55('0x1e')];_0x1f73ca+=0x1){_0x6dbf56[_0xcf55('0x4b')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x17ee25[_0x1f73ca]),'UserId':Number(_0x1bb5cf['id'])});}});}})[_0xcf55('0xd')](function(){if(_0x1891d1==='leave'){var _0xb765fd=_['map'](_0x1bb5cf[_0xcf55('0x4d')],'id');return _0x1bb5cf[_0xcf55('0x4e')](_0xb765fd)[_0xcf55('0xd')](function(){for(var _0x2a1c1a=0x0;_0x2a1c1a<_0xb765fd[_0xcf55('0x1e')];_0x2a1c1a+=0x1){_0x6dbf56[_0xcf55('0x4b')](_0xcf55('0x4f'),{'SmsInteractionId':Number(_0xb765fd[_0x2a1c1a]),'UserId':Number(_0x1bb5cf['id'])});}});}})[_0xcf55('0xd')](function(){if(_0x1891d1===_0xcf55('0x48')){var _0x44a08d=_[_0xcf55('0x19')](_0x1bb5cf[_0xcf55('0x27')],'id');return _0x1bb5cf[_0xcf55('0x50')](_0x44a08d)['then'](function(){for(var _0x3eed38=0x0;_0x3eed38<_0x44a08d[_0xcf55('0x1e')];_0x3eed38+=0x1){_0x6dbf56[_0xcf55('0x4b')](_0xcf55('0x51'),{'OpenchannelInteractionId':Number(_0x44a08d[_0x3eed38]),'UserId':Number(_0x1bb5cf['id'])});}});}})[_0xcf55('0xd')](function(){if(_0x1891d1===_0xcf55('0x48')){var _0x580b57=_[_0xcf55('0x19')](_0x1bb5cf['WhatsappInteractions'],'id');return _0x1bb5cf['removeWhatsappInteractions'](_0x580b57)[_0xcf55('0xd')](function(){for(var _0x6ca65b=0x0;_0x6ca65b<_0x580b57[_0xcf55('0x1e')];_0x6ca65b+=0x1){_0x6dbf56['emit'](_0xcf55('0x52'),{'WhatsappInteractionId':Number(_0x580b57[_0x6ca65b]),'UserId':Number(_0x1bb5cf['id'])});}});}})['catch'](function(_0x50f0e8){_0x5de5af['log'](_0x50f0e8);});}}function onDisconnect(_0x1a705f,_0x18ba1e){joinOrLeave(_0x1a705f,_0xcf55('0x48'),_0x18ba1e);}function onConnect(_0x13ad88){joinOrLeave(_0x13ad88,_0xcf55('0x53'));}exports['default']=function(_0x367808){_0x367808['on'](_0xcf55('0x54'),function(_0x5e3b9e){_0x5e3b9e[_0xcf55('0x55')](0x0);_0x5e3b9e[_0xcf55('0x56')]=_0x5e3b9e['request'][_0xcf55('0x54')][_0xcf55('0x57')]+':'+_0x5e3b9e['request'][_0xcf55('0x54')]['remotePort'];_0x5e3b9e[_0xcf55('0x58')]=new Date();_0x5e3b9e[_0xcf55('0x59')]=function(_0x5c0909){console[_0xcf55('0x59')]('SocketIO\x20'+_0x5e3b9e[_0xcf55('0x5a')][_0xcf55('0x4')]+'['+_0x5e3b9e[_0xcf55('0x56')]+']',_0x5c0909);};_0x5e3b9e['on'](_0xcf55('0x5b'),function(){onDisconnect(_0x5e3b9e,_0x367808);_0x5e3b9e[_0xcf55('0x59')](_0xcf55('0x5c'));});onConnect(_0x5e3b9e);_0x5e3b9e['log']('CONNECTED');});};