a121abd5f574d33dcb1662d534897d0801fcd356
[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 _0xf04a=['format','%s:queue:%s','length','user:%s','handshake','query','userProfileId','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','user','Telephones','Trunks','Campaign','getChatQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','mail','openchannel','whatsapp','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','map','removeMailInteractions','user_has_fax_interactions:remove','removeSmsInteractions','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','connection','setMaxListeners','remoteAddress','request','log','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','util','bluebird','../mysqldb','./environment','name','Agents','User','role','telephone','agent','type','ivr','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','IvrCampaigns','UserProfileResource','resourceId','where'];(function(_0x2e9e6c,_0x5f12d4){var _0x560cd0=function(_0x3208d0){while(--_0x3208d0){_0x2e9e6c['push'](_0x2e9e6c['shift']());}};_0x560cd0(++_0x5f12d4);}(_0xf04a,0xa9));var _0xaf04=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xf04a[_0x4565bf];return _0x5610ba;};'use strict';var _=require('lodash');var util=require(_0xaf04('0x0'));var BPromise=require(_0xaf04('0x1'));var db=require(_0xaf04('0x2'))['db'];var config=require(_0xaf04('0x3'));var queryQueues={'attributes':['id',_0xaf04('0x4')],'include':[{'as':_0xaf04('0x5'),'model':db[_0xaf04('0x6')],'attributes':['id',_0xaf04('0x4'),_0xaf04('0x7')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xaf04('0x4')],'where':{'role':_0xaf04('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xaf04('0x4')],'where':{'role':_0xaf04('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0xaf04('0xa')],'where':{'type':_0xaf04('0xb')}};function getAssociatedResources(_0x370e24,_0x1fcc04,_0x285396){return db['UserProfileSection']['findOne']({'where':{'name':_0x370e24,'userProfileId':_0x1fcc04},'raw':!![]})[_0xaf04('0xc')](function(_0x4a9d98){if(_0x4a9d98){if(_0x4a9d98[_0xaf04('0xd')]){switch(_0x370e24){case _0xaf04('0xe'):case _0xaf04('0xf'):case _0xaf04('0x10'):case _0xaf04('0x11'):case _0xaf04('0x12'):case _0xaf04('0x13'):case'WhatsappQueues':return db[_0x285396][_0xaf04('0x14')](queryQueues);case'Telephones':return db[_0x285396][_0xaf04('0x14')](queryTelephones);case'Trunks':return db[_0x285396][_0xaf04('0x14')](queryTrunks);case _0xaf04('0x15'):return db[_0x285396]['findAll'](queryCampaigns);}}else{return db[_0xaf04('0x16')][_0xaf04('0x14')]({'attributes':[_0xaf04('0x17')],'where':{'sectionId':_0x4a9d98['id']},'raw':!![]})['then'](function(_0x5870d3){if(_0x5870d3){var _0x4ec0c8={'where':{'id':_['map'](_0x5870d3,_0xaf04('0x17'))},'raw':!![]};switch(_0x285396){case _0xaf04('0x6'):_0x4ec0c8[_0xaf04('0x18')][_0xaf04('0x7')]=_0xaf04('0x8');break;case'Campaign':_0x4ec0c8[_0xaf04('0x18')][_0xaf04('0xa')]=_0xaf04('0xb');break;}return db[_0x285396][_0xaf04('0x14')](_0x4ec0c8);}else{return[];}});}}else{return[];}})[_0xaf04('0xc')](function(_0xa32b33){return _0xa32b33;});}function joinOrLeaveQueues(_0xa1ca39,_0x52b9f1,_0x5c3179,_0x44071e){_0xa1ca39[_0x52b9f1](util[_0xaf04('0x19')](_0xaf04('0x1a'),_0x5c3179,_0x44071e[_0xaf04('0x4')]));if(_0x44071e[_0xaf04('0x5')]){for(var _0x310d4f=0x0;_0x310d4f<_0x44071e[_0xaf04('0x5')][_0xaf04('0x1b')];_0x310d4f+=0x1){_0xa1ca39[_0x52b9f1](util[_0xaf04('0x19')](_0xaf04('0x1c'),_0x44071e[_0xaf04('0x5')][_0x310d4f]['name']));}}}function joinOrLeave(_0x269ca1,_0x45b7a2,_0x56d378){var _0x5a4f28;if(_0x269ca1[_0xaf04('0x1d')][_0xaf04('0x1e')]['id']){db['User']['find']({'attributes':['id',_0xaf04('0x4'),'role',_0xaf04('0x1f')],'where':{'id':_0x269ca1[_0xaf04('0x1d')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0xaf04('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0xaf04('0x21')],'as':_0xaf04('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xaf04('0x23')],'as':_0xaf04('0x24'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0xaf04('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xaf04('0x26')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xaf04('0x27')],'as':_0xaf04('0x28'),'attributes':['id'],'raw':!![]}]})[_0xaf04('0xc')](function(_0x3840e4){if(_0x3840e4){_0x5a4f28=_0x3840e4;_0x269ca1[_0x45b7a2](util[_0xaf04('0x19')](_0xaf04('0x1c'),_0x3840e4[_0xaf04('0x4')]));var _0x12c7c4=[];switch(_0x3840e4[_0xaf04('0x7')]){case'admin':_0x269ca1[_0x45b7a2](_0xaf04('0x29'));_0x269ca1[_0x45b7a2](_0xaf04('0x2a'));if(queryQueues[_0xaf04('0x2b')](_0xaf04('0x2c'))){delete queryQueues['include'];}_0x12c7c4[_0xaf04('0x2d')](db[_0xaf04('0x2e')]['findAll'](queryQueues));_0x12c7c4[_0xaf04('0x2d')](db[_0xaf04('0x2f')]['findAll'](queryQueues));_0x12c7c4['push'](db[_0xaf04('0x30')][_0xaf04('0x14')](queryQueues));_0x12c7c4[_0xaf04('0x2d')](db[_0xaf04('0x31')]['findAll'](queryQueues));_0x12c7c4[_0xaf04('0x2d')](db[_0xaf04('0x32')][_0xaf04('0x14')](queryQueues));_0x12c7c4[_0xaf04('0x2d')](db['OpenchannelQueue'][_0xaf04('0x14')](queryQueues));_0x12c7c4[_0xaf04('0x2d')](db[_0xaf04('0x33')][_0xaf04('0x14')](queryQueues));_0x12c7c4[_0xaf04('0x2d')](db[_0xaf04('0x6')]['findAll'](queryTelephones));_0x12c7c4[_0xaf04('0x2d')](db[_0xaf04('0x34')][_0xaf04('0x14')](queryTrunks));_0x12c7c4[_0xaf04('0x2d')](db['Campaign'][_0xaf04('0x14')](queryCampaigns));_0x12c7c4[_0xaf04('0x2d')](db['User']['findAll'](queryAgents));break;case _0xaf04('0x35'):_0x269ca1[_0x45b7a2](_0xaf04('0x29'));_0x269ca1[_0x45b7a2](_0xaf04('0x2a'));_0x12c7c4[_0xaf04('0x2d')](getAssociatedResources(_0xaf04('0xe'),_0x3840e4[_0xaf04('0x1f')],'VoiceQueue'));_0x12c7c4['push'](getAssociatedResources(_0xaf04('0xf'),_0x3840e4[_0xaf04('0x1f')],_0xaf04('0x2f')));_0x12c7c4[_0xaf04('0x2d')](getAssociatedResources('FaxQueues',_0x3840e4['userProfileId'],'FaxQueue'));_0x12c7c4[_0xaf04('0x2d')](getAssociatedResources(_0xaf04('0x11'),_0x3840e4[_0xaf04('0x1f')],_0xaf04('0x31')));_0x12c7c4[_0xaf04('0x2d')](getAssociatedResources(_0xaf04('0x12'),_0x3840e4[_0xaf04('0x1f')],'MailQueue'));_0x12c7c4['push'](getAssociatedResources(_0xaf04('0x13'),_0x3840e4[_0xaf04('0x1f')],'OpenchannelQueue'));_0x12c7c4[_0xaf04('0x2d')](getAssociatedResources('WhatsappQueues',_0x3840e4['userProfileId'],_0xaf04('0x33')));_0x12c7c4['push'](getAssociatedResources(_0xaf04('0x36'),_0x3840e4[_0xaf04('0x1f')],_0xaf04('0x6')));_0x12c7c4[_0xaf04('0x2d')](getAssociatedResources(_0xaf04('0x37'),_0x3840e4['userProfileId'],'Trunk'));_0x12c7c4[_0xaf04('0x2d')](getAssociatedResources(_0xaf04('0x15'),_0x3840e4['userProfileId'],_0xaf04('0x38')));_0x12c7c4[_0xaf04('0x2d')](db[_0xaf04('0x6')][_0xaf04('0x14')](queryAgents));break;case'agent':_0x269ca1[_0x45b7a2](_0xaf04('0x29'));_0x269ca1[_0x45b7a2](_0xaf04('0x2a'));_0x12c7c4[_0xaf04('0x2d')](_0x3840e4['getVoiceQueues']({'attributes':['id',_0xaf04('0x4')]}));_0x12c7c4[_0xaf04('0x2d')](_0x3840e4[_0xaf04('0x39')]({'attributes':['id',_0xaf04('0x4')]}));_0x12c7c4[_0xaf04('0x2d')](_0x3840e4['getFaxQueues']({'attributes':['id',_0xaf04('0x4')]}));_0x12c7c4[_0xaf04('0x2d')](_0x3840e4['getSmsQueues']({'attributes':['id',_0xaf04('0x4')]}));_0x12c7c4[_0xaf04('0x2d')](_0x3840e4[_0xaf04('0x3a')]({'attributes':['id',_0xaf04('0x4')]}));_0x12c7c4[_0xaf04('0x2d')](_0x3840e4[_0xaf04('0x3b')]({'attributes':['id',_0xaf04('0x4')]}));_0x12c7c4[_0xaf04('0x2d')](_0x3840e4[_0xaf04('0x3c')]({'attributes':['id',_0xaf04('0x4')]}));break;}return BPromise[_0xaf04('0x3d')](_0x12c7c4);}})[_0xaf04('0xc')](function(_0x303a59){if(_0x303a59&&_0x303a59['length']){for(var _0x3b6860=0x0;_0x3b6860<_0x303a59[_0xaf04('0x1b')];_0x3b6860+=0x1){for(var _0x32b60c=0x0;_0x32b60c<_0x303a59[_0x3b6860][_0xaf04('0x1b')];_0x32b60c+=0x1){switch(_0x3b6860){case 0x0:joinOrLeaveQueues(_0x269ca1,_0x45b7a2,_0xaf04('0x3e'),_0x303a59[_0x3b6860][_0x32b60c]);break;case 0x1:joinOrLeaveQueues(_0x269ca1,_0x45b7a2,_0xaf04('0x3f'),_0x303a59[_0x3b6860][_0x32b60c]);break;case 0x2:joinOrLeaveQueues(_0x269ca1,_0x45b7a2,_0xaf04('0x40'),_0x303a59[_0x3b6860][_0x32b60c]);break;case 0x3:joinOrLeaveQueues(_0x269ca1,_0x45b7a2,'sms',_0x303a59[_0x3b6860][_0x32b60c]);break;case 0x4:joinOrLeaveQueues(_0x269ca1,_0x45b7a2,_0xaf04('0x41'),_0x303a59[_0x3b6860][_0x32b60c]);break;case 0x5:joinOrLeaveQueues(_0x269ca1,_0x45b7a2,_0xaf04('0x42'),_0x303a59[_0x3b6860][_0x32b60c]);break;case 0x6:joinOrLeaveQueues(_0x269ca1,_0x45b7a2,_0xaf04('0x43'),_0x303a59[_0x3b6860][_0x32b60c]);break;case 0x7:_0x269ca1[_0x45b7a2](util['format']('telephone:%s',_0x303a59[_0x3b6860][_0x32b60c]['name']));break;case 0x8:_0x269ca1[_0x45b7a2](util['format'](_0xaf04('0x44'),_0x303a59[_0x3b6860][_0x32b60c][_0xaf04('0x4')]));break;case 0x9:_0x269ca1[_0x45b7a2](util[_0xaf04('0x19')](_0xaf04('0x45'),_0x303a59[_0x3b6860][_0x32b60c][_0xaf04('0xa')],_0x303a59[_0x3b6860][_0x32b60c]['name']));break;case 0xa:_0x269ca1[_0x45b7a2](util[_0xaf04('0x19')](_0xaf04('0x1c'),_0x303a59[_0x3b6860][_0x32b60c][_0xaf04('0x4')]));break;}}}}})[_0xaf04('0xc')](function(){if(_0x45b7a2===_0xaf04('0x46')){var _0x3455ea=_['map'](_0x5a4f28['ChatInteractions'],'id');return _0x5a4f28[_0xaf04('0x47')](_0x3455ea)['then'](function(){for(var _0x244574=0x0;_0x244574<_0x3455ea[_0xaf04('0x1b')];_0x244574+=0x1){_0x56d378[_0xaf04('0x48')](_0xaf04('0x49'),{'ChatInteractionId':Number(_0x3455ea[_0x244574]),'UserId':Number(_0x5a4f28['id'])});}});}})[_0xaf04('0xc')](function(){if(_0x45b7a2===_0xaf04('0x46')){var _0xdafb5f=_[_0xaf04('0x4a')](_0x5a4f28['MailInteractions'],'id');return _0x5a4f28[_0xaf04('0x4b')](_0xdafb5f)[_0xaf04('0xc')](function(){for(var _0x2ba6e0=0x0;_0x2ba6e0<_0xdafb5f[_0xaf04('0x1b')];_0x2ba6e0+=0x1){_0x56d378[_0xaf04('0x48')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0xdafb5f[_0x2ba6e0]),'UserId':Number(_0x5a4f28['id'])});}});}})[_0xaf04('0xc')](function(){if(_0x45b7a2===_0xaf04('0x46')){var _0x37e796=_[_0xaf04('0x4a')](_0x5a4f28['FaxInteractions'],'id');return _0x5a4f28['removeFaxInteractions'](_0x37e796)[_0xaf04('0xc')](function(){for(var _0x21cd2e=0x0;_0x21cd2e<_0x37e796[_0xaf04('0x1b')];_0x21cd2e+=0x1){_0x56d378[_0xaf04('0x48')](_0xaf04('0x4c'),{'FaxInteractionId':Number(_0x37e796[_0x21cd2e]),'UserId':Number(_0x5a4f28['id'])});}});}})[_0xaf04('0xc')](function(){if(_0x45b7a2===_0xaf04('0x46')){var _0x1faa9f=_[_0xaf04('0x4a')](_0x5a4f28[_0xaf04('0x25')],'id');return _0x5a4f28[_0xaf04('0x4d')](_0x1faa9f)['then'](function(){for(var _0x51754d=0x0;_0x51754d<_0x1faa9f['length'];_0x51754d+=0x1){_0x56d378[_0xaf04('0x48')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x1faa9f[_0x51754d]),'UserId':Number(_0x5a4f28['id'])});}});}})[_0xaf04('0xc')](function(){if(_0x45b7a2===_0xaf04('0x46')){var _0x459064=_[_0xaf04('0x4a')](_0x5a4f28[_0xaf04('0x4e')],'id');return _0x5a4f28[_0xaf04('0x4f')](_0x459064)[_0xaf04('0xc')](function(){for(var _0x18466e=0x0;_0x18466e<_0x459064[_0xaf04('0x1b')];_0x18466e+=0x1){_0x56d378[_0xaf04('0x48')](_0xaf04('0x50'),{'OpenchannelInteractionId':Number(_0x459064[_0x18466e]),'UserId':Number(_0x5a4f28['id'])});}});}})[_0xaf04('0xc')](function(){if(_0x45b7a2===_0xaf04('0x46')){var _0x50473e=_[_0xaf04('0x4a')](_0x5a4f28['WhatsappInteractions'],'id');return _0x5a4f28[_0xaf04('0x51')](_0x50473e)[_0xaf04('0xc')](function(){for(var _0x41e20b=0x0;_0x41e20b<_0x50473e[_0xaf04('0x1b')];_0x41e20b+=0x1){_0x56d378['emit'](_0xaf04('0x52'),{'WhatsappInteractionId':Number(_0x50473e[_0x41e20b]),'UserId':Number(_0x5a4f28['id'])});}});}})[_0xaf04('0x53')](function(_0x485c21){_0x269ca1['log'](_0x485c21);});}}function onDisconnect(_0x4817b8,_0x340c4b){joinOrLeave(_0x4817b8,_0xaf04('0x46'),_0x340c4b);}function onConnect(_0x32b9dc){joinOrLeave(_0x32b9dc,_0xaf04('0x54'));}exports[_0xaf04('0x55')]=function(_0x4b7a26){_0x4b7a26['on'](_0xaf04('0x56'),function(_0x1f140e){_0x1f140e[_0xaf04('0x57')](0x0);_0x1f140e['address']=_0x1f140e['request'][_0xaf04('0x56')][_0xaf04('0x58')]+':'+_0x1f140e[_0xaf04('0x59')][_0xaf04('0x56')]['remotePort'];_0x1f140e['connectedAt']=new Date();_0x1f140e[_0xaf04('0x5a')]=function(_0x509d67){console['log'](_0xaf04('0x5b')+_0x1f140e[_0xaf04('0x5c')][_0xaf04('0x4')]+'['+_0x1f140e[_0xaf04('0x5d')]+']',_0x509d67);};_0x1f140e['on'](_0xaf04('0x5e'),function(){onDisconnect(_0x1f140e,_0x4b7a26);_0x1f140e[_0xaf04('0x5a')](_0xaf04('0x5f'));});onConnect(_0x1f140e);_0x1f140e[_0xaf04('0x5a')](_0xaf04('0x60'));});};