31f3c971f35cee673fa022868a89f711db9ea6be
[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 _0x50c1=['length','user:%s','handshake','query','userProfileId','ChatInteraction','MailInteraction','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','VoiceQueue','FaxQueues','SmsQueues','MailQueues','Trunks','Trunk','IvrCampaigns','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','emit','leave','removeMailInteractions','FaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','connection','address','request','remoteAddress','connectedAt','log','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','bluebird','./environment','Agents','name','agent','telephone','type','ivr','UserProfileSection','findOne','autoAssociation','VoiceQueues','ChatQueues','OpenchannelQueues','findAll','Telephones','UserProfileResource','resourceId','then','map','User','where','role','Campaign','format','%s:queue:%s'];(function(_0x7275e9,_0x321fa5){var _0x17b99d=function(_0x54af41){while(--_0x54af41){_0x7275e9['push'](_0x7275e9['shift']());}};_0x17b99d(++_0x321fa5);}(_0x50c1,0x171));var _0x150c=function(_0x34e9a9,_0xf7edc2){_0x34e9a9=_0x34e9a9-0x0;var _0xfd7577=_0x50c1[_0x34e9a9];return _0xfd7577;};'use strict';var _=require(_0x150c('0x0'));var util=require('util');var BPromise=require(_0x150c('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x150c('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x150c('0x3'),'model':db['User'],'attributes':['id',_0x150c('0x4'),'role'],'raw':!![],'where':{'role':_0x150c('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x150c('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0x150c('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x150c('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x150c('0x4'),_0x150c('0x7')],'where':{'type':_0x150c('0x8')}};function getAssociatedResources(_0x421818,_0x4a1335,_0x32ab1f){return db[_0x150c('0x9')][_0x150c('0xa')]({'where':{'name':_0x421818,'userProfileId':_0x4a1335},'raw':!![]})['then'](function(_0x50be63){if(_0x50be63){if(_0x50be63[_0x150c('0xb')]){switch(_0x421818){case _0x150c('0xc'):case _0x150c('0xd'):case'FaxQueues':case'SmsQueues':case'MailQueues':case _0x150c('0xe'):case'WhatsappQueues':return db[_0x32ab1f][_0x150c('0xf')](queryQueues);case _0x150c('0x10'):return db[_0x32ab1f]['findAll'](queryTelephones);case'Trunks':return db[_0x32ab1f]['findAll'](queryTrunks);case'IvrCampaigns':return db[_0x32ab1f][_0x150c('0xf')](queryCampaigns);}}else{return db[_0x150c('0x11')][_0x150c('0xf')]({'attributes':[_0x150c('0x12')],'where':{'sectionId':_0x50be63['id']},'raw':!![]})[_0x150c('0x13')](function(_0x56bd65){if(_0x56bd65){var _0x41c4e1={'where':{'id':_[_0x150c('0x14')](_0x56bd65,_0x150c('0x12'))},'raw':!![]};switch(_0x32ab1f){case _0x150c('0x15'):_0x41c4e1[_0x150c('0x16')][_0x150c('0x17')]='telephone';break;case _0x150c('0x18'):_0x41c4e1[_0x150c('0x16')][_0x150c('0x7')]=_0x150c('0x8');break;}return db[_0x32ab1f]['findAll'](_0x41c4e1);}else{return[];}});}}else{return[];}})['then'](function(_0x338836){return _0x338836;});}function joinOrLeaveQueues(_0x3c863c,_0x6467b1,_0x2526ec,_0x40f7c6){_0x3c863c[_0x6467b1](util[_0x150c('0x19')](_0x150c('0x1a'),_0x2526ec,_0x40f7c6[_0x150c('0x4')]));if(_0x40f7c6[_0x150c('0x3')]){for(var _0x32df61=0x0;_0x32df61<_0x40f7c6['Agents'][_0x150c('0x1b')];_0x32df61+=0x1){_0x3c863c[_0x6467b1](util['format'](_0x150c('0x1c'),_0x40f7c6[_0x150c('0x3')][_0x32df61]['name']));}}}function joinOrLeave(_0x3d66b3,_0x5f4dfb,_0x238f09){var _0x56ab6c;if(_0x3d66b3[_0x150c('0x1d')][_0x150c('0x1e')]['id']){db[_0x150c('0x15')]['find']({'attributes':['id',_0x150c('0x4'),_0x150c('0x17'),_0x150c('0x1f')],'where':{'id':_0x3d66b3[_0x150c('0x1d')][_0x150c('0x1e')]['id']},'include':[{'model':db[_0x150c('0x20')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x150c('0x21')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x150c('0x22')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x150c('0x23')],'as':_0x150c('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x150c('0x25')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x150c('0x26')],'as':_0x150c('0x27'),'attributes':['id'],'raw':!![]}]})[_0x150c('0x13')](function(_0x565e31){if(_0x565e31){_0x56ab6c=_0x565e31;_0x3d66b3[_0x5f4dfb](util[_0x150c('0x19')]('user:%s',_0x565e31[_0x150c('0x4')]));var _0x289a44=[];switch(_0x565e31[_0x150c('0x17')]){case _0x150c('0x28'):_0x3d66b3[_0x5f4dfb](_0x150c('0x29'));_0x3d66b3[_0x5f4dfb](_0x150c('0x2a'));if(queryQueues['hasOwnProperty'](_0x150c('0x2b'))){delete queryQueues['include'];}_0x289a44[_0x150c('0x2c')](db['VoiceQueue'][_0x150c('0xf')](queryQueues));_0x289a44['push'](db[_0x150c('0x2d')][_0x150c('0xf')](queryQueues));_0x289a44[_0x150c('0x2c')](db[_0x150c('0x2e')][_0x150c('0xf')](queryQueues));_0x289a44[_0x150c('0x2c')](db[_0x150c('0x2f')][_0x150c('0xf')](queryQueues));_0x289a44[_0x150c('0x2c')](db[_0x150c('0x30')][_0x150c('0xf')](queryQueues));_0x289a44['push'](db[_0x150c('0x31')][_0x150c('0xf')](queryQueues));_0x289a44[_0x150c('0x2c')](db[_0x150c('0x32')]['findAll'](queryQueues));_0x289a44[_0x150c('0x2c')](db[_0x150c('0x15')][_0x150c('0xf')](queryTelephones));_0x289a44[_0x150c('0x2c')](db['Trunk'][_0x150c('0xf')](queryTrunks));_0x289a44['push'](db[_0x150c('0x18')][_0x150c('0xf')](queryCampaigns));_0x289a44[_0x150c('0x2c')](db['User'][_0x150c('0xf')](queryAgents));break;case _0x150c('0x33'):_0x3d66b3[_0x5f4dfb](_0x150c('0x29'));_0x3d66b3[_0x5f4dfb](_0x150c('0x2a'));_0x289a44[_0x150c('0x2c')](getAssociatedResources(_0x150c('0xc'),_0x565e31[_0x150c('0x1f')],_0x150c('0x34')));_0x289a44[_0x150c('0x2c')](getAssociatedResources(_0x150c('0xd'),_0x565e31[_0x150c('0x1f')],_0x150c('0x2d')));_0x289a44[_0x150c('0x2c')](getAssociatedResources(_0x150c('0x35'),_0x565e31[_0x150c('0x1f')],_0x150c('0x2e')));_0x289a44[_0x150c('0x2c')](getAssociatedResources(_0x150c('0x36'),_0x565e31[_0x150c('0x1f')],_0x150c('0x2f')));_0x289a44[_0x150c('0x2c')](getAssociatedResources(_0x150c('0x37'),_0x565e31[_0x150c('0x1f')],'MailQueue'));_0x289a44[_0x150c('0x2c')](getAssociatedResources(_0x150c('0xe'),_0x565e31[_0x150c('0x1f')],_0x150c('0x31')));_0x289a44['push'](getAssociatedResources('WhatsappQueues',_0x565e31[_0x150c('0x1f')],'WhatsappQueue'));_0x289a44['push'](getAssociatedResources(_0x150c('0x10'),_0x565e31['userProfileId'],_0x150c('0x15')));_0x289a44[_0x150c('0x2c')](getAssociatedResources(_0x150c('0x38'),_0x565e31[_0x150c('0x1f')],_0x150c('0x39')));_0x289a44[_0x150c('0x2c')](getAssociatedResources(_0x150c('0x3a'),_0x565e31[_0x150c('0x1f')],'Campaign'));_0x289a44['push'](db[_0x150c('0x15')][_0x150c('0xf')](queryAgents));break;case'agent':_0x3d66b3[_0x5f4dfb](_0x150c('0x29'));_0x3d66b3[_0x5f4dfb]('voice:outbound');_0x289a44[_0x150c('0x2c')](_0x565e31[_0x150c('0x3b')]({'attributes':['id','name']}));_0x289a44[_0x150c('0x2c')](_0x565e31[_0x150c('0x3c')]({'attributes':['id',_0x150c('0x4')]}));_0x289a44[_0x150c('0x2c')](_0x565e31['getFaxQueues']({'attributes':['id',_0x150c('0x4')]}));_0x289a44['push'](_0x565e31[_0x150c('0x3d')]({'attributes':['id',_0x150c('0x4')]}));_0x289a44[_0x150c('0x2c')](_0x565e31[_0x150c('0x3e')]({'attributes':['id',_0x150c('0x4')]}));_0x289a44[_0x150c('0x2c')](_0x565e31[_0x150c('0x3f')]({'attributes':['id',_0x150c('0x4')]}));_0x289a44[_0x150c('0x2c')](_0x565e31[_0x150c('0x40')]({'attributes':['id',_0x150c('0x4')]}));break;}return BPromise[_0x150c('0x41')](_0x289a44);}})[_0x150c('0x13')](function(_0x46d9b8){if(_0x46d9b8&&_0x46d9b8[_0x150c('0x1b')]){for(var _0x2c6745=0x0;_0x2c6745<_0x46d9b8['length'];_0x2c6745+=0x1){for(var _0x398634=0x0;_0x398634<_0x46d9b8[_0x2c6745][_0x150c('0x1b')];_0x398634+=0x1){switch(_0x2c6745){case 0x0:joinOrLeaveQueues(_0x3d66b3,_0x5f4dfb,_0x150c('0x42'),_0x46d9b8[_0x2c6745][_0x398634]);break;case 0x1:joinOrLeaveQueues(_0x3d66b3,_0x5f4dfb,_0x150c('0x43'),_0x46d9b8[_0x2c6745][_0x398634]);break;case 0x2:joinOrLeaveQueues(_0x3d66b3,_0x5f4dfb,_0x150c('0x44'),_0x46d9b8[_0x2c6745][_0x398634]);break;case 0x3:joinOrLeaveQueues(_0x3d66b3,_0x5f4dfb,'sms',_0x46d9b8[_0x2c6745][_0x398634]);break;case 0x4:joinOrLeaveQueues(_0x3d66b3,_0x5f4dfb,'mail',_0x46d9b8[_0x2c6745][_0x398634]);break;case 0x5:joinOrLeaveQueues(_0x3d66b3,_0x5f4dfb,_0x150c('0x45'),_0x46d9b8[_0x2c6745][_0x398634]);break;case 0x6:joinOrLeaveQueues(_0x3d66b3,_0x5f4dfb,_0x150c('0x46'),_0x46d9b8[_0x2c6745][_0x398634]);break;case 0x7:if(_0x56ab6c[_0x150c('0x17')]!==_0x150c('0x5'))_0x3d66b3[_0x5f4dfb](util[_0x150c('0x19')](_0x150c('0x47'),_0x46d9b8[_0x2c6745][_0x398634][_0x150c('0x4')]));break;case 0x8:if(_0x56ab6c[_0x150c('0x17')]!==_0x150c('0x5'))_0x3d66b3[_0x5f4dfb](util['format'](_0x150c('0x48'),_0x46d9b8[_0x2c6745][_0x398634][_0x150c('0x4')]));break;case 0x9:if(_0x56ab6c['role']!==_0x150c('0x5'))_0x3d66b3[_0x5f4dfb](util[_0x150c('0x19')](_0x150c('0x49'),_0x46d9b8[_0x2c6745][_0x398634][_0x150c('0x7')],_0x46d9b8[_0x2c6745][_0x398634]['name']));break;case 0xa:_0x3d66b3[_0x5f4dfb](util[_0x150c('0x19')]('user:%s',_0x46d9b8[_0x2c6745][_0x398634][_0x150c('0x4')]));break;}}}}})[_0x150c('0x13')](function(){if(_0x5f4dfb==='leave'){var _0x20a9cb=_[_0x150c('0x14')](_0x56ab6c['ChatInteractions'],'id');return _0x56ab6c['removeChatInteractions'](_0x20a9cb)['then'](function(){for(var _0x54aabf=0x0;_0x54aabf<_0x20a9cb[_0x150c('0x1b')];_0x54aabf+=0x1){_0x238f09[_0x150c('0x4a')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x20a9cb[_0x54aabf]),'UserId':Number(_0x56ab6c['id'])});}});}})[_0x150c('0x13')](function(){if(_0x5f4dfb===_0x150c('0x4b')){var _0x20a2f8=_[_0x150c('0x14')](_0x56ab6c['MailInteractions'],'id');return _0x56ab6c[_0x150c('0x4c')](_0x20a2f8)[_0x150c('0x13')](function(){for(var _0x17bd25=0x0;_0x17bd25<_0x20a2f8['length'];_0x17bd25+=0x1){_0x238f09[_0x150c('0x4a')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x20a2f8[_0x17bd25]),'UserId':Number(_0x56ab6c['id'])});}});}})[_0x150c('0x13')](function(){if(_0x5f4dfb===_0x150c('0x4b')){var _0x153f92=_[_0x150c('0x14')](_0x56ab6c[_0x150c('0x4d')],'id');return _0x56ab6c['removeFaxInteractions'](_0x153f92)[_0x150c('0x13')](function(){for(var _0x3955a1=0x0;_0x3955a1<_0x153f92['length'];_0x3955a1+=0x1){_0x238f09[_0x150c('0x4a')](_0x150c('0x4e'),{'FaxInteractionId':Number(_0x153f92[_0x3955a1]),'UserId':Number(_0x56ab6c['id'])});}});}})['then'](function(){if(_0x5f4dfb==='leave'){var _0x2def2c=_[_0x150c('0x14')](_0x56ab6c[_0x150c('0x24')],'id');return _0x56ab6c[_0x150c('0x4f')](_0x2def2c)[_0x150c('0x13')](function(){for(var _0x5b9a4f=0x0;_0x5b9a4f<_0x2def2c[_0x150c('0x1b')];_0x5b9a4f+=0x1){_0x238f09[_0x150c('0x4a')](_0x150c('0x50'),{'SmsInteractionId':Number(_0x2def2c[_0x5b9a4f]),'UserId':Number(_0x56ab6c['id'])});}});}})[_0x150c('0x13')](function(){if(_0x5f4dfb===_0x150c('0x4b')){var _0x4670b2=_[_0x150c('0x14')](_0x56ab6c[_0x150c('0x51')],'id');return _0x56ab6c[_0x150c('0x52')](_0x4670b2)['then'](function(){for(var _0x11e6e5=0x0;_0x11e6e5<_0x4670b2['length'];_0x11e6e5+=0x1){_0x238f09[_0x150c('0x4a')](_0x150c('0x53'),{'OpenchannelInteractionId':Number(_0x4670b2[_0x11e6e5]),'UserId':Number(_0x56ab6c['id'])});}});}})[_0x150c('0x13')](function(){if(_0x5f4dfb===_0x150c('0x4b')){var _0x1b14ed=_['map'](_0x56ab6c['WhatsappInteractions'],'id');return _0x56ab6c[_0x150c('0x54')](_0x1b14ed)[_0x150c('0x13')](function(){for(var _0x48772d=0x0;_0x48772d<_0x1b14ed[_0x150c('0x1b')];_0x48772d+=0x1){_0x238f09[_0x150c('0x4a')](_0x150c('0x55'),{'WhatsappInteractionId':Number(_0x1b14ed[_0x48772d]),'UserId':Number(_0x56ab6c['id'])});}});}})[_0x150c('0x56')](function(_0x4e1beb){_0x3d66b3['log'](_0x4e1beb);});}}function onDisconnect(_0x36dc12,_0x9b6045){joinOrLeave(_0x36dc12,_0x150c('0x4b'),_0x9b6045);}function onConnect(_0x573588){joinOrLeave(_0x573588,_0x150c('0x57'));}exports[_0x150c('0x58')]=function(_0x236a0e){_0x236a0e['on'](_0x150c('0x59'),function(_0x12a1d7){_0x12a1d7['setMaxListeners'](0x0);_0x12a1d7[_0x150c('0x5a')]=_0x12a1d7[_0x150c('0x5b')][_0x150c('0x59')][_0x150c('0x5c')]+':'+_0x12a1d7[_0x150c('0x5b')]['connection']['remotePort'];_0x12a1d7[_0x150c('0x5d')]=new Date();_0x12a1d7['log']=function(_0x2c5964){console[_0x150c('0x5e')](_0x150c('0x5f')+_0x12a1d7[_0x150c('0x60')][_0x150c('0x4')]+'['+_0x12a1d7['address']+']',_0x2c5964);};_0x12a1d7['on'](_0x150c('0x61'),function(){onDisconnect(_0x12a1d7,_0x236a0e);_0x12a1d7['log'](_0x150c('0x62'));});onConnect(_0x12a1d7);_0x12a1d7[_0x150c('0x5e')]('CONNECTED');});};