Built motion from commit ff78e754.|2.6.29
[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 _0x5b47=['remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','User','name','role','agent','type','ivr','UserProfileSection','findOne','then','VoiceQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','map','where','telephone','Campaign','format','%s:queue:%s','Agents','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','user','OpenchannelQueue','WhatsappQueue','Trunk','IvrCampaigns','getVoiceQueues','getSmsQueues','getMailQueues','getWhatsappQueues','voice','chat','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','MailInteractions','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','log','join','default','setMaxListeners','request','connection','remoteAddress'];(function(_0x5a43dc,_0x218612){var _0x303152=function(_0x50af73){while(--_0x50af73){_0x5a43dc['push'](_0x5a43dc['shift']());}};_0x303152(++_0x218612);}(_0x5b47,0x120));var _0x75b4=function(_0x8da08b,_0x3da2c5){_0x8da08b=_0x8da08b-0x0;var _0x40a6f8=_0x5b47[_0x8da08b];return _0x40a6f8;};'use strict';var _=require(_0x75b4('0x0'));var util=require(_0x75b4('0x1'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0x75b4('0x2')],'attributes':['id',_0x75b4('0x3'),_0x75b4('0x4')],'raw':!![],'where':{'role':_0x75b4('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x75b4('0x3')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x75b4('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x75b4('0x6')],'where':{'type':_0x75b4('0x7')}};function getAssociatedResources(_0x411452,_0x167744,_0x127e77){return db[_0x75b4('0x8')][_0x75b4('0x9')]({'where':{'name':_0x411452,'userProfileId':_0x167744},'raw':!![]})[_0x75b4('0xa')](function(_0x33f11d){if(_0x33f11d){if(_0x33f11d['autoAssociation']){switch(_0x411452){case _0x75b4('0xb'):case'ChatQueues':case _0x75b4('0xc'):case _0x75b4('0xd'):case _0x75b4('0xe'):case _0x75b4('0xf'):case _0x75b4('0x10'):return db[_0x127e77][_0x75b4('0x11')](queryQueues);case _0x75b4('0x12'):return db[_0x127e77][_0x75b4('0x11')](queryTelephones);case'Trunks':return db[_0x127e77]['findAll'](queryTrunks);case'IvrCampaigns':return db[_0x127e77][_0x75b4('0x11')](queryCampaigns);}}else{return db[_0x75b4('0x13')]['findAll']({'attributes':[_0x75b4('0x14')],'where':{'sectionId':_0x33f11d['id']},'raw':!![]})[_0x75b4('0xa')](function(_0x3977ca){if(_0x3977ca){var _0x4d8345={'where':{'id':_[_0x75b4('0x15')](_0x3977ca,_0x75b4('0x14'))},'raw':!![]};switch(_0x127e77){case _0x75b4('0x2'):_0x4d8345[_0x75b4('0x16')]['role']=_0x75b4('0x17');break;case _0x75b4('0x18'):_0x4d8345[_0x75b4('0x16')][_0x75b4('0x6')]=_0x75b4('0x7');break;}return db[_0x127e77][_0x75b4('0x11')](_0x4d8345);}else{return[];}});}}else{return[];}})[_0x75b4('0xa')](function(_0x3dde90){return _0x3dde90;});}function joinOrLeaveQueues(_0x2fea13,_0x37c0fd,_0x61d267,_0x39af43){_0x2fea13[_0x37c0fd](util[_0x75b4('0x19')](_0x75b4('0x1a'),_0x61d267,_0x39af43[_0x75b4('0x3')]));if(_0x39af43[_0x75b4('0x1b')]){for(var _0x432a51=0x0;_0x432a51<_0x39af43[_0x75b4('0x1b')][_0x75b4('0x1c')];_0x432a51+=0x1){_0x2fea13[_0x37c0fd](util[_0x75b4('0x19')](_0x75b4('0x1d'),_0x39af43[_0x75b4('0x1b')][_0x432a51][_0x75b4('0x3')]));}}}function joinOrLeave(_0x1a5a29,_0x4beeff,_0x30d338){var _0x59bab1;if(_0x1a5a29[_0x75b4('0x1e')][_0x75b4('0x1f')]['id']){db[_0x75b4('0x2')][_0x75b4('0x20')]({'attributes':['id','name','role',_0x75b4('0x21')],'where':{'id':_0x1a5a29[_0x75b4('0x1e')]['query']['id']},'include':[{'model':db[_0x75b4('0x22')],'as':_0x75b4('0x23'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x75b4('0x24')],'as':_0x75b4('0x25'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x75b4('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x75b4('0x27')],'as':_0x75b4('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x75b4('0x29')],'as':_0x75b4('0x2a'),'attributes':['id'],'raw':!![]}]})[_0x75b4('0xa')](function(_0x5468eb){if(_0x5468eb){_0x59bab1=_0x5468eb;_0x1a5a29[_0x4beeff](util['format'](_0x75b4('0x1d'),_0x5468eb[_0x75b4('0x3')]));var _0x251f03=[];switch(_0x5468eb[_0x75b4('0x4')]){case _0x75b4('0x2b'):_0x1a5a29[_0x4beeff](_0x75b4('0x2c'));_0x1a5a29[_0x4beeff](_0x75b4('0x2d'));if(queryQueues['hasOwnProperty'](_0x75b4('0x2e'))){delete queryQueues[_0x75b4('0x2e')];}_0x251f03[_0x75b4('0x2f')](db[_0x75b4('0x30')][_0x75b4('0x11')](queryQueues));_0x251f03['push'](db[_0x75b4('0x31')]['findAll'](queryQueues));_0x251f03[_0x75b4('0x2f')](db[_0x75b4('0x32')][_0x75b4('0x11')](queryQueues));_0x251f03[_0x75b4('0x2f')](db[_0x75b4('0x33')][_0x75b4('0x11')](queryQueues));_0x251f03['push'](db[_0x75b4('0x34')]['findAll'](queryQueues));_0x251f03['push'](db['OpenchannelQueue'][_0x75b4('0x11')](queryQueues));_0x251f03[_0x75b4('0x2f')](db['WhatsappQueue']['findAll'](queryQueues));_0x251f03['push'](db['User'][_0x75b4('0x11')](queryTelephones));_0x251f03[_0x75b4('0x2f')](db['Trunk'][_0x75b4('0x11')](queryTrunks));_0x251f03[_0x75b4('0x2f')](db[_0x75b4('0x18')][_0x75b4('0x11')](queryCampaigns));_0x251f03[_0x75b4('0x2f')](db['User'][_0x75b4('0x11')](queryAgents));break;case _0x75b4('0x35'):_0x1a5a29[_0x4beeff](_0x75b4('0x2c'));_0x1a5a29[_0x4beeff](_0x75b4('0x2d'));_0x251f03[_0x75b4('0x2f')](getAssociatedResources(_0x75b4('0xb'),_0x5468eb[_0x75b4('0x21')],_0x75b4('0x30')));_0x251f03[_0x75b4('0x2f')](getAssociatedResources('ChatQueues',_0x5468eb[_0x75b4('0x21')],_0x75b4('0x31')));_0x251f03[_0x75b4('0x2f')](getAssociatedResources(_0x75b4('0xc'),_0x5468eb[_0x75b4('0x21')],'FaxQueue'));_0x251f03[_0x75b4('0x2f')](getAssociatedResources(_0x75b4('0xd'),_0x5468eb['userProfileId'],_0x75b4('0x33')));_0x251f03['push'](getAssociatedResources(_0x75b4('0xe'),_0x5468eb[_0x75b4('0x21')],_0x75b4('0x34')));_0x251f03['push'](getAssociatedResources(_0x75b4('0xf'),_0x5468eb['userProfileId'],_0x75b4('0x36')));_0x251f03[_0x75b4('0x2f')](getAssociatedResources(_0x75b4('0x10'),_0x5468eb[_0x75b4('0x21')],_0x75b4('0x37')));_0x251f03[_0x75b4('0x2f')](getAssociatedResources(_0x75b4('0x12'),_0x5468eb[_0x75b4('0x21')],'User'));_0x251f03['push'](getAssociatedResources('Trunks',_0x5468eb[_0x75b4('0x21')],_0x75b4('0x38')));_0x251f03[_0x75b4('0x2f')](getAssociatedResources(_0x75b4('0x39'),_0x5468eb[_0x75b4('0x21')],_0x75b4('0x18')));_0x251f03['push'](db[_0x75b4('0x2')]['findAll'](queryAgents));break;case'agent':_0x1a5a29[_0x4beeff](_0x75b4('0x2c'));_0x1a5a29[_0x4beeff](_0x75b4('0x2d'));_0x251f03[_0x75b4('0x2f')](_0x5468eb[_0x75b4('0x3a')]({'attributes':['id',_0x75b4('0x3')]}));_0x251f03[_0x75b4('0x2f')](_0x5468eb['getChatQueues']({'attributes':['id',_0x75b4('0x3')]}));_0x251f03[_0x75b4('0x2f')](_0x5468eb['getFaxQueues']({'attributes':['id',_0x75b4('0x3')]}));_0x251f03[_0x75b4('0x2f')](_0x5468eb[_0x75b4('0x3b')]({'attributes':['id',_0x75b4('0x3')]}));_0x251f03[_0x75b4('0x2f')](_0x5468eb[_0x75b4('0x3c')]({'attributes':['id',_0x75b4('0x3')]}));_0x251f03[_0x75b4('0x2f')](_0x5468eb['getOpenchannelQueues']({'attributes':['id',_0x75b4('0x3')]}));_0x251f03[_0x75b4('0x2f')](_0x5468eb[_0x75b4('0x3d')]({'attributes':['id','name']}));break;}return BPromise['all'](_0x251f03);}})['then'](function(_0x52abf5){if(_0x52abf5&&_0x52abf5[_0x75b4('0x1c')]){for(var _0x48a5fb=0x0;_0x48a5fb<_0x52abf5[_0x75b4('0x1c')];_0x48a5fb+=0x1){for(var _0x1bb46e=0x0;_0x1bb46e<_0x52abf5[_0x48a5fb]['length'];_0x1bb46e+=0x1){switch(_0x48a5fb){case 0x0:joinOrLeaveQueues(_0x1a5a29,_0x4beeff,_0x75b4('0x3e'),_0x52abf5[_0x48a5fb][_0x1bb46e]);break;case 0x1:joinOrLeaveQueues(_0x1a5a29,_0x4beeff,_0x75b4('0x3f'),_0x52abf5[_0x48a5fb][_0x1bb46e]);break;case 0x2:joinOrLeaveQueues(_0x1a5a29,_0x4beeff,'fax',_0x52abf5[_0x48a5fb][_0x1bb46e]);break;case 0x3:joinOrLeaveQueues(_0x1a5a29,_0x4beeff,'sms',_0x52abf5[_0x48a5fb][_0x1bb46e]);break;case 0x4:joinOrLeaveQueues(_0x1a5a29,_0x4beeff,'mail',_0x52abf5[_0x48a5fb][_0x1bb46e]);break;case 0x5:joinOrLeaveQueues(_0x1a5a29,_0x4beeff,'openchannel',_0x52abf5[_0x48a5fb][_0x1bb46e]);break;case 0x6:joinOrLeaveQueues(_0x1a5a29,_0x4beeff,_0x75b4('0x40'),_0x52abf5[_0x48a5fb][_0x1bb46e]);break;case 0x7:if(_0x59bab1[_0x75b4('0x4')]!==_0x75b4('0x5'))_0x1a5a29[_0x4beeff](util['format'](_0x75b4('0x41'),_0x52abf5[_0x48a5fb][_0x1bb46e]['name']));break;case 0x8:if(_0x59bab1[_0x75b4('0x4')]!=='agent')_0x1a5a29[_0x4beeff](util[_0x75b4('0x19')](_0x75b4('0x42'),_0x52abf5[_0x48a5fb][_0x1bb46e][_0x75b4('0x3')]));break;case 0x9:if(_0x59bab1['role']!==_0x75b4('0x5'))_0x1a5a29[_0x4beeff](util[_0x75b4('0x19')](_0x75b4('0x43'),_0x52abf5[_0x48a5fb][_0x1bb46e][_0x75b4('0x6')],_0x52abf5[_0x48a5fb][_0x1bb46e][_0x75b4('0x3')]));break;case 0xa:_0x1a5a29[_0x4beeff](util['format'](_0x75b4('0x1d'),_0x52abf5[_0x48a5fb][_0x1bb46e]['name']));break;}}}}})[_0x75b4('0xa')](function(){if(_0x4beeff==='leave'){var _0x200b3e=_[_0x75b4('0x15')](_0x59bab1[_0x75b4('0x23')],'id');return _0x59bab1[_0x75b4('0x44')](_0x200b3e)['then'](function(){for(var _0x33a502=0x0;_0x33a502<_0x200b3e[_0x75b4('0x1c')];_0x33a502+=0x1){_0x30d338[_0x75b4('0x45')](_0x75b4('0x46'),{'ChatInteractionId':Number(_0x200b3e[_0x33a502]),'UserId':Number(_0x59bab1['id'])});}});}})[_0x75b4('0xa')](function(){if(_0x4beeff===_0x75b4('0x47')){var _0x1eed1b=_[_0x75b4('0x15')](_0x59bab1[_0x75b4('0x48')],'id');return _0x59bab1[_0x75b4('0x49')](_0x1eed1b)[_0x75b4('0xa')](function(){for(var _0x3901bd=0x0;_0x3901bd<_0x1eed1b[_0x75b4('0x1c')];_0x3901bd+=0x1){_0x30d338[_0x75b4('0x45')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1eed1b[_0x3901bd]),'UserId':Number(_0x59bab1['id'])});}});}})[_0x75b4('0xa')](function(){if(_0x4beeff===_0x75b4('0x47')){var _0x4e0538=_[_0x75b4('0x15')](_0x59bab1[_0x75b4('0x25')],'id');return _0x59bab1[_0x75b4('0x4a')](_0x4e0538)[_0x75b4('0xa')](function(){for(var _0x179164=0x0;_0x179164<_0x4e0538[_0x75b4('0x1c')];_0x179164+=0x1){_0x30d338['emit'](_0x75b4('0x4b'),{'FaxInteractionId':Number(_0x4e0538[_0x179164]),'UserId':Number(_0x59bab1['id'])});}});}})['then'](function(){if(_0x4beeff===_0x75b4('0x47')){var _0x299e4c=_[_0x75b4('0x15')](_0x59bab1[_0x75b4('0x26')],'id');return _0x59bab1[_0x75b4('0x4c')](_0x299e4c)[_0x75b4('0xa')](function(){for(var _0xbbb9d8=0x0;_0xbbb9d8<_0x299e4c['length'];_0xbbb9d8+=0x1){_0x30d338[_0x75b4('0x45')](_0x75b4('0x4d'),{'SmsInteractionId':Number(_0x299e4c[_0xbbb9d8]),'UserId':Number(_0x59bab1['id'])});}});}})[_0x75b4('0xa')](function(){if(_0x4beeff===_0x75b4('0x47')){var _0x5e2949=_[_0x75b4('0x15')](_0x59bab1[_0x75b4('0x28')],'id');return _0x59bab1[_0x75b4('0x4e')](_0x5e2949)[_0x75b4('0xa')](function(){for(var _0x14890b=0x0;_0x14890b<_0x5e2949[_0x75b4('0x1c')];_0x14890b+=0x1){_0x30d338['emit'](_0x75b4('0x4f'),{'OpenchannelInteractionId':Number(_0x5e2949[_0x14890b]),'UserId':Number(_0x59bab1['id'])});}});}})[_0x75b4('0xa')](function(){if(_0x4beeff===_0x75b4('0x47')){var _0x1911c2=_[_0x75b4('0x15')](_0x59bab1[_0x75b4('0x2a')],'id');return _0x59bab1['removeWhatsappInteractions'](_0x1911c2)[_0x75b4('0xa')](function(){for(var _0xc08e08=0x0;_0xc08e08<_0x1911c2['length'];_0xc08e08+=0x1){_0x30d338[_0x75b4('0x45')](_0x75b4('0x50'),{'WhatsappInteractionId':Number(_0x1911c2[_0xc08e08]),'UserId':Number(_0x59bab1['id'])});}});}})['catch'](function(_0x2cbc71){_0x1a5a29[_0x75b4('0x51')](_0x2cbc71);});}}function onDisconnect(_0x5ccde1,_0x33ecbe){joinOrLeave(_0x5ccde1,_0x75b4('0x47'),_0x33ecbe);}function onConnect(_0x57f22c){joinOrLeave(_0x57f22c,_0x75b4('0x52'));}exports[_0x75b4('0x53')]=function(_0x64491d){_0x64491d['on']('connection',function(_0x1ebd6f){_0x1ebd6f[_0x75b4('0x54')](0x0);_0x1ebd6f['address']=_0x1ebd6f[_0x75b4('0x55')][_0x75b4('0x56')][_0x75b4('0x57')]+':'+_0x1ebd6f['request'][_0x75b4('0x56')][_0x75b4('0x58')];_0x1ebd6f[_0x75b4('0x59')]=new Date();_0x1ebd6f[_0x75b4('0x51')]=function(_0x15c1bb){console[_0x75b4('0x51')]('SocketIO\x20'+_0x1ebd6f[_0x75b4('0x5a')][_0x75b4('0x3')]+'['+_0x1ebd6f['address']+']',_0x15c1bb);};_0x1ebd6f['on'](_0x75b4('0x5b'),function(){onDisconnect(_0x1ebd6f,_0x64491d);_0x1ebd6f[_0x75b4('0x51')](_0x75b4('0x5c'));});onConnect(_0x1ebd6f);_0x1ebd6f[_0x75b4('0x51')](_0x75b4('0x5d'));});};