8d2ab241ebb5bbdb182a13ccaee5351276fc11f0
[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 _0x3114=['leave','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','connection','setMaxListeners','address','remoteAddress','remotePort','log','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','agent','telephone','type','ivr','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','map','Campaign','where','format','%s:queue:%s','length','handshake','query','find','role','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteractions','WhatsappInteractions','voice:inbound','voice:outbound','include','push','ChatQueue','SmsQueue','MailQueue','user','userProfileId','VoiceQueue','FaxQueue','OpenchannelQueue','WhatsappQueues','WhatsappQueue','Trunk','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s'];(function(_0x56cd62,_0x34ac7b){var _0x2fd401=function(_0x49e3ab){while(--_0x49e3ab){_0x56cd62['push'](_0x56cd62['shift']());}};_0x2fd401(++_0x34ac7b);}(_0x3114,0x19f));var _0x4311=function(_0x160ce8,_0x4b3856){_0x160ce8=_0x160ce8-0x0;var _0x5a1b89=_0x3114[_0x160ce8];return _0x5a1b89;};'use strict';var _=require(_0x4311('0x0'));var util=require(_0x4311('0x1'));var BPromise=require(_0x4311('0x2'));var db=require(_0x4311('0x3'))['db'];var config=require(_0x4311('0x4'));var queryQueues={'attributes':['id',_0x4311('0x5')],'include':[{'as':_0x4311('0x6'),'model':db[_0x4311('0x7')],'attributes':['id',_0x4311('0x5'),'role'],'raw':!![],'where':{'role':_0x4311('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x4311('0x5')],'where':{'role':_0x4311('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x4311('0x5')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x4311('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x4311('0x5'),_0x4311('0xa')],'where':{'type':_0x4311('0xb')}};function getAssociatedResources(_0x1c818b,_0x5119fa,_0x4e2445){return db[_0x4311('0xc')][_0x4311('0xd')]({'where':{'name':_0x1c818b,'userProfileId':_0x5119fa},'raw':!![]})[_0x4311('0xe')](function(_0x262b92){if(_0x262b92){if(_0x262b92['autoAssociation']){switch(_0x1c818b){case _0x4311('0xf'):case _0x4311('0x10'):case _0x4311('0x11'):case _0x4311('0x12'):case _0x4311('0x13'):case _0x4311('0x14'):case'WhatsappQueues':return db[_0x4e2445][_0x4311('0x15')](queryQueues);case _0x4311('0x16'):return db[_0x4e2445][_0x4311('0x15')](queryTelephones);case _0x4311('0x17'):return db[_0x4e2445][_0x4311('0x15')](queryTrunks);case _0x4311('0x18'):return db[_0x4e2445][_0x4311('0x15')](queryCampaigns);}}else{return db['UserProfileResource'][_0x4311('0x15')]({'attributes':['resourceId'],'where':{'sectionId':_0x262b92['id']},'raw':!![]})['then'](function(_0x5cbe10){if(_0x5cbe10){var _0x384f59={'where':{'id':_[_0x4311('0x19')](_0x5cbe10,'resourceId')},'raw':!![]};switch(_0x4e2445){case'User':_0x384f59['where']['role']=_0x4311('0x9');break;case _0x4311('0x1a'):_0x384f59[_0x4311('0x1b')]['type']=_0x4311('0xb');break;}return db[_0x4e2445][_0x4311('0x15')](_0x384f59);}else{return[];}});}}else{return[];}})[_0x4311('0xe')](function(_0x4b7f4f){return _0x4b7f4f;});}function joinOrLeaveQueues(_0x3febdd,_0x119ecc,_0x5dcc54,_0x1668ba){_0x3febdd[_0x119ecc](util[_0x4311('0x1c')](_0x4311('0x1d'),_0x5dcc54,_0x1668ba[_0x4311('0x5')]));if(_0x1668ba[_0x4311('0x6')]){for(var _0x5964b4=0x0;_0x5964b4<_0x1668ba[_0x4311('0x6')][_0x4311('0x1e')];_0x5964b4+=0x1){_0x3febdd[_0x119ecc](util[_0x4311('0x1c')]('user:%s',_0x1668ba[_0x4311('0x6')][_0x5964b4][_0x4311('0x5')]));}}}function joinOrLeave(_0x5b6630,_0x16297d,_0x17e08a){var _0x151ed3;if(_0x5b6630[_0x4311('0x1f')][_0x4311('0x20')]['id']){db[_0x4311('0x7')][_0x4311('0x21')]({'attributes':['id','name',_0x4311('0x22'),'userProfileId'],'where':{'id':_0x5b6630[_0x4311('0x1f')][_0x4311('0x20')]['id']},'include':[{'model':db[_0x4311('0x23')],'as':_0x4311('0x24'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x4311('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x4311('0x26')],'as':_0x4311('0x27'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x4311('0x28'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x4311('0x29'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x4311('0x2a'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x514167){if(_0x514167){_0x151ed3=_0x514167;_0x5b6630[_0x16297d](util['format']('user:%s',_0x514167[_0x4311('0x5')]));var _0x3ac832=[];switch(_0x514167[_0x4311('0x22')]){case'admin':_0x5b6630[_0x16297d](_0x4311('0x2b'));_0x5b6630[_0x16297d](_0x4311('0x2c'));if(queryQueues['hasOwnProperty'](_0x4311('0x2d'))){delete queryQueues[_0x4311('0x2d')];}_0x3ac832[_0x4311('0x2e')](db['VoiceQueue'][_0x4311('0x15')](queryQueues));_0x3ac832[_0x4311('0x2e')](db[_0x4311('0x2f')][_0x4311('0x15')](queryQueues));_0x3ac832[_0x4311('0x2e')](db['FaxQueue'][_0x4311('0x15')](queryQueues));_0x3ac832[_0x4311('0x2e')](db[_0x4311('0x30')][_0x4311('0x15')](queryQueues));_0x3ac832[_0x4311('0x2e')](db[_0x4311('0x31')][_0x4311('0x15')](queryQueues));_0x3ac832[_0x4311('0x2e')](db['OpenchannelQueue'][_0x4311('0x15')](queryQueues));_0x3ac832[_0x4311('0x2e')](db['WhatsappQueue'][_0x4311('0x15')](queryQueues));_0x3ac832[_0x4311('0x2e')](db['User'][_0x4311('0x15')](queryTelephones));_0x3ac832['push'](db['Trunk'][_0x4311('0x15')](queryTrunks));_0x3ac832[_0x4311('0x2e')](db[_0x4311('0x1a')][_0x4311('0x15')](queryCampaigns));_0x3ac832[_0x4311('0x2e')](db[_0x4311('0x7')][_0x4311('0x15')](queryAgents));break;case _0x4311('0x32'):_0x5b6630[_0x16297d](_0x4311('0x2b'));_0x5b6630[_0x16297d](_0x4311('0x2c'));_0x3ac832['push'](getAssociatedResources('VoiceQueues',_0x514167[_0x4311('0x33')],_0x4311('0x34')));_0x3ac832[_0x4311('0x2e')](getAssociatedResources('ChatQueues',_0x514167['userProfileId'],_0x4311('0x2f')));_0x3ac832[_0x4311('0x2e')](getAssociatedResources(_0x4311('0x11'),_0x514167[_0x4311('0x33')],_0x4311('0x35')));_0x3ac832[_0x4311('0x2e')](getAssociatedResources(_0x4311('0x12'),_0x514167[_0x4311('0x33')],'SmsQueue'));_0x3ac832[_0x4311('0x2e')](getAssociatedResources(_0x4311('0x13'),_0x514167[_0x4311('0x33')],_0x4311('0x31')));_0x3ac832[_0x4311('0x2e')](getAssociatedResources('OpenchannelQueues',_0x514167[_0x4311('0x33')],_0x4311('0x36')));_0x3ac832[_0x4311('0x2e')](getAssociatedResources(_0x4311('0x37'),_0x514167[_0x4311('0x33')],_0x4311('0x38')));_0x3ac832['push'](getAssociatedResources(_0x4311('0x16'),_0x514167['userProfileId'],_0x4311('0x7')));_0x3ac832[_0x4311('0x2e')](getAssociatedResources(_0x4311('0x17'),_0x514167['userProfileId'],_0x4311('0x39')));_0x3ac832[_0x4311('0x2e')](getAssociatedResources(_0x4311('0x18'),_0x514167[_0x4311('0x33')],_0x4311('0x1a')));_0x3ac832[_0x4311('0x2e')](db[_0x4311('0x7')]['findAll'](queryAgents));break;case'agent':_0x5b6630[_0x16297d]('voice:inbound');_0x5b6630[_0x16297d]('voice:outbound');_0x3ac832[_0x4311('0x2e')](_0x514167[_0x4311('0x3a')]({'attributes':['id',_0x4311('0x5')]}));_0x3ac832['push'](_0x514167['getChatQueues']({'attributes':['id','name']}));_0x3ac832[_0x4311('0x2e')](_0x514167[_0x4311('0x3b')]({'attributes':['id',_0x4311('0x5')]}));_0x3ac832['push'](_0x514167[_0x4311('0x3c')]({'attributes':['id',_0x4311('0x5')]}));_0x3ac832[_0x4311('0x2e')](_0x514167[_0x4311('0x3d')]({'attributes':['id',_0x4311('0x5')]}));_0x3ac832[_0x4311('0x2e')](_0x514167[_0x4311('0x3e')]({'attributes':['id',_0x4311('0x5')]}));_0x3ac832[_0x4311('0x2e')](_0x514167[_0x4311('0x3f')]({'attributes':['id',_0x4311('0x5')]}));break;}return BPromise[_0x4311('0x40')](_0x3ac832);}})[_0x4311('0xe')](function(_0x592cb4){if(_0x592cb4&&_0x592cb4['length']){for(var _0x4f2094=0x0;_0x4f2094<_0x592cb4[_0x4311('0x1e')];_0x4f2094+=0x1){for(var _0x47f966=0x0;_0x47f966<_0x592cb4[_0x4f2094][_0x4311('0x1e')];_0x47f966+=0x1){switch(_0x4f2094){case 0x0:joinOrLeaveQueues(_0x5b6630,_0x16297d,_0x4311('0x41'),_0x592cb4[_0x4f2094][_0x47f966]);break;case 0x1:joinOrLeaveQueues(_0x5b6630,_0x16297d,_0x4311('0x42'),_0x592cb4[_0x4f2094][_0x47f966]);break;case 0x2:joinOrLeaveQueues(_0x5b6630,_0x16297d,_0x4311('0x43'),_0x592cb4[_0x4f2094][_0x47f966]);break;case 0x3:joinOrLeaveQueues(_0x5b6630,_0x16297d,_0x4311('0x44'),_0x592cb4[_0x4f2094][_0x47f966]);break;case 0x4:joinOrLeaveQueues(_0x5b6630,_0x16297d,_0x4311('0x45'),_0x592cb4[_0x4f2094][_0x47f966]);break;case 0x5:joinOrLeaveQueues(_0x5b6630,_0x16297d,_0x4311('0x46'),_0x592cb4[_0x4f2094][_0x47f966]);break;case 0x6:joinOrLeaveQueues(_0x5b6630,_0x16297d,_0x4311('0x47'),_0x592cb4[_0x4f2094][_0x47f966]);break;case 0x7:_0x5b6630[_0x16297d](util[_0x4311('0x1c')](_0x4311('0x48'),_0x592cb4[_0x4f2094][_0x47f966][_0x4311('0x5')]));break;case 0x8:_0x5b6630[_0x16297d](util['format'](_0x4311('0x49'),_0x592cb4[_0x4f2094][_0x47f966][_0x4311('0x5')]));break;case 0x9:_0x5b6630[_0x16297d](util[_0x4311('0x1c')](_0x4311('0x4a'),_0x592cb4[_0x4f2094][_0x47f966][_0x4311('0xa')],_0x592cb4[_0x4f2094][_0x47f966][_0x4311('0x5')]));break;case 0xa:_0x5b6630[_0x16297d](util['format']('user:%s',_0x592cb4[_0x4f2094][_0x47f966]['name']));break;}}}}})[_0x4311('0xe')](function(){if(_0x16297d===_0x4311('0x4b')){var _0x5e55b0=_[_0x4311('0x19')](_0x151ed3[_0x4311('0x24')],'id');return _0x151ed3['removeChatInteractions'](_0x5e55b0)[_0x4311('0xe')](function(){for(var _0x2efd13=0x0;_0x2efd13<_0x5e55b0[_0x4311('0x1e')];_0x2efd13+=0x1){_0x17e08a[_0x4311('0x4c')](_0x4311('0x4d'),{'ChatInteractionId':Number(_0x5e55b0[_0x2efd13]),'UserId':Number(_0x151ed3['id'])});}});}})[_0x4311('0xe')](function(){if(_0x16297d==='leave'){var _0x1cc063=_['map'](_0x151ed3[_0x4311('0x25')],'id');return _0x151ed3[_0x4311('0x4e')](_0x1cc063)[_0x4311('0xe')](function(){for(var _0x52635e=0x0;_0x52635e<_0x1cc063[_0x4311('0x1e')];_0x52635e+=0x1){_0x17e08a['emit'](_0x4311('0x4f'),{'MailInteractionId':Number(_0x1cc063[_0x52635e]),'UserId':Number(_0x151ed3['id'])});}});}})[_0x4311('0xe')](function(){if(_0x16297d===_0x4311('0x4b')){var _0x5981b6=_['map'](_0x151ed3['FaxInteractions'],'id');return _0x151ed3[_0x4311('0x50')](_0x5981b6)[_0x4311('0xe')](function(){for(var _0x327ddf=0x0;_0x327ddf<_0x5981b6[_0x4311('0x1e')];_0x327ddf+=0x1){_0x17e08a[_0x4311('0x4c')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x5981b6[_0x327ddf]),'UserId':Number(_0x151ed3['id'])});}});}})[_0x4311('0xe')](function(){if(_0x16297d===_0x4311('0x4b')){var _0x3829d6=_[_0x4311('0x19')](_0x151ed3['SmsInteractions'],'id');return _0x151ed3[_0x4311('0x51')](_0x3829d6)[_0x4311('0xe')](function(){for(var _0x530c28=0x0;_0x530c28<_0x3829d6[_0x4311('0x1e')];_0x530c28+=0x1){_0x17e08a[_0x4311('0x4c')](_0x4311('0x52'),{'SmsInteractionId':Number(_0x3829d6[_0x530c28]),'UserId':Number(_0x151ed3['id'])});}});}})[_0x4311('0xe')](function(){if(_0x16297d===_0x4311('0x4b')){var _0x5113fd=_['map'](_0x151ed3[_0x4311('0x29')],'id');return _0x151ed3[_0x4311('0x53')](_0x5113fd)['then'](function(){for(var _0x5c20e5=0x0;_0x5c20e5<_0x5113fd[_0x4311('0x1e')];_0x5c20e5+=0x1){_0x17e08a[_0x4311('0x4c')](_0x4311('0x54'),{'OpenchannelInteractionId':Number(_0x5113fd[_0x5c20e5]),'UserId':Number(_0x151ed3['id'])});}});}})[_0x4311('0xe')](function(){if(_0x16297d===_0x4311('0x4b')){var _0x36eb76=_[_0x4311('0x19')](_0x151ed3['WhatsappInteractions'],'id');return _0x151ed3[_0x4311('0x55')](_0x36eb76)[_0x4311('0xe')](function(){for(var _0x54e3ee=0x0;_0x54e3ee<_0x36eb76[_0x4311('0x1e')];_0x54e3ee+=0x1){_0x17e08a['emit'](_0x4311('0x56'),{'WhatsappInteractionId':Number(_0x36eb76[_0x54e3ee]),'UserId':Number(_0x151ed3['id'])});}});}})[_0x4311('0x57')](function(_0x5f566d){_0x5b6630['log'](_0x5f566d);});}}function onDisconnect(_0x2434bf,_0x3e50ef){joinOrLeave(_0x2434bf,_0x4311('0x4b'),_0x3e50ef);}function onConnect(_0x7c6403){joinOrLeave(_0x7c6403,'join');}exports['default']=function(_0x4983a5){_0x4983a5['on'](_0x4311('0x58'),function(_0xb6e3f7){_0xb6e3f7[_0x4311('0x59')](0x0);_0xb6e3f7[_0x4311('0x5a')]=_0xb6e3f7['request']['connection'][_0x4311('0x5b')]+':'+_0xb6e3f7['request'][_0x4311('0x58')][_0x4311('0x5c')];_0xb6e3f7['connectedAt']=new Date();_0xb6e3f7[_0x4311('0x5d')]=function(_0x5c656c){console[_0x4311('0x5d')](_0x4311('0x5e')+_0xb6e3f7[_0x4311('0x5f')]['name']+'['+_0xb6e3f7[_0x4311('0x5a')]+']',_0x5c656c);};_0xb6e3f7['on'](_0x4311('0x60'),function(){onDisconnect(_0xb6e3f7,_0x4983a5);_0xb6e3f7[_0x4311('0x5d')](_0x4311('0x61'));});onConnect(_0xb6e3f7);_0xb6e3f7[_0x4311('0x5d')]('CONNECTED');});};