Built motion from commit (unavailable).|2.5.30
[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 _0x24bb=['default','setMaxListeners','connection','request','remotePort','connectedAt','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','./environment','name','User','agent','telephone','type','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','Trunks','UserProfileResource','resourceId','map','where','role','format','%s:queue:%s','Agents','length','user:%s','handshake','find','userProfileId','query','ChatInteraction','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','FaxQueues','FaxQueue','IvrCampaigns','Campaign','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','removeChatInteractions','emit','leave','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','log','join'];(function(_0x29d40e,_0x50bf76){var _0x258106=function(_0x5b3884){while(--_0x5b3884){_0x29d40e['push'](_0x29d40e['shift']());}};_0x258106(++_0x50bf76);}(_0x24bb,0x19f));var _0xb24b=function(_0x34c071,_0x3d5188){_0x34c071=_0x34c071-0x0;var _0x37b16b=_0x24bb[_0x34c071];return _0x37b16b;};'use strict';var _=require(_0xb24b('0x0'));var util=require('util');var BPromise=require(_0xb24b('0x1'));var db=require('../mysqldb')['db'];var config=require(_0xb24b('0x2'));var queryQueues={'attributes':['id',_0xb24b('0x3')],'include':[{'as':'Agents','model':db[_0xb24b('0x4')],'attributes':['id','name','role'],'raw':!![],'where':{'role':_0xb24b('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xb24b('0x3')],'where':{'role':_0xb24b('0x6')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xb24b('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb24b('0x3'),_0xb24b('0x7')],'where':{'type':_0xb24b('0x8')}};function getAssociatedResources(_0x263acc,_0x883b41,_0x268f76){return db[_0xb24b('0x9')]['findOne']({'where':{'name':_0x263acc,'userProfileId':_0x883b41},'raw':!![]})[_0xb24b('0xa')](function(_0x450c9c){if(_0x450c9c){if(_0x450c9c[_0xb24b('0xb')]){switch(_0x263acc){case _0xb24b('0xc'):case'ChatQueues':case'FaxQueues':case _0xb24b('0xd'):case _0xb24b('0xe'):case'OpenchannelQueues':case _0xb24b('0xf'):return db[_0x268f76][_0xb24b('0x10')](queryQueues);case _0xb24b('0x11'):return db[_0x268f76]['findAll'](queryTelephones);case _0xb24b('0x12'):return db[_0x268f76][_0xb24b('0x10')](queryTrunks);case'IvrCampaigns':return db[_0x268f76][_0xb24b('0x10')](queryCampaigns);}}else{return db[_0xb24b('0x13')][_0xb24b('0x10')]({'attributes':[_0xb24b('0x14')],'where':{'sectionId':_0x450c9c['id']},'raw':!![]})[_0xb24b('0xa')](function(_0x4e95c8){if(_0x4e95c8){var _0x3f3676={'where':{'id':_[_0xb24b('0x15')](_0x4e95c8,_0xb24b('0x14'))},'raw':!![]};switch(_0x268f76){case _0xb24b('0x4'):_0x3f3676[_0xb24b('0x16')][_0xb24b('0x17')]=_0xb24b('0x6');break;case'Campaign':_0x3f3676[_0xb24b('0x16')][_0xb24b('0x7')]=_0xb24b('0x8');break;}return db[_0x268f76]['findAll'](_0x3f3676);}else{return[];}});}}else{return[];}})[_0xb24b('0xa')](function(_0x389253){return _0x389253;});}function joinOrLeaveQueues(_0x54eb8a,_0x45f623,_0x3f4339,_0x3f76f0){_0x54eb8a[_0x45f623](util[_0xb24b('0x18')](_0xb24b('0x19'),_0x3f4339,_0x3f76f0[_0xb24b('0x3')]));if(_0x3f76f0['Agents']){for(var _0x163fd0=0x0;_0x163fd0<_0x3f76f0[_0xb24b('0x1a')][_0xb24b('0x1b')];_0x163fd0+=0x1){_0x54eb8a[_0x45f623](util[_0xb24b('0x18')](_0xb24b('0x1c'),_0x3f76f0['Agents'][_0x163fd0][_0xb24b('0x3')]));}}}function joinOrLeave(_0x44ee07,_0x3adea6,_0x30d482){var _0x4de9b6;if(_0x44ee07[_0xb24b('0x1d')]['query']['id']){db['User'][_0xb24b('0x1e')]({'attributes':['id',_0xb24b('0x3'),'role',_0xb24b('0x1f')],'where':{'id':_0x44ee07[_0xb24b('0x1d')][_0xb24b('0x20')]['id']},'include':[{'model':db[_0xb24b('0x21')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb24b('0x22')],'as':_0xb24b('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xb24b('0x24')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb24b('0x25')],'as':_0xb24b('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xb24b('0x27')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xb24b('0xa')](function(_0x12d30a){if(_0x12d30a){_0x4de9b6=_0x12d30a;_0x44ee07[_0x3adea6](util[_0xb24b('0x18')]('user:%s',_0x12d30a[_0xb24b('0x3')]));var _0x33a389=[];switch(_0x12d30a[_0xb24b('0x17')]){case _0xb24b('0x28'):_0x44ee07[_0x3adea6](_0xb24b('0x29'));_0x44ee07[_0x3adea6](_0xb24b('0x2a'));if(queryQueues[_0xb24b('0x2b')]('include')){delete queryQueues[_0xb24b('0x2c')];}_0x33a389[_0xb24b('0x2d')](db[_0xb24b('0x2e')][_0xb24b('0x10')](queryQueues));_0x33a389[_0xb24b('0x2d')](db[_0xb24b('0x2f')][_0xb24b('0x10')](queryQueues));_0x33a389[_0xb24b('0x2d')](db['FaxQueue'][_0xb24b('0x10')](queryQueues));_0x33a389[_0xb24b('0x2d')](db[_0xb24b('0x30')]['findAll'](queryQueues));_0x33a389['push'](db[_0xb24b('0x31')][_0xb24b('0x10')](queryQueues));_0x33a389[_0xb24b('0x2d')](db[_0xb24b('0x32')][_0xb24b('0x10')](queryQueues));_0x33a389[_0xb24b('0x2d')](db[_0xb24b('0x33')]['findAll'](queryQueues));_0x33a389[_0xb24b('0x2d')](db['User'][_0xb24b('0x10')](queryTelephones));_0x33a389[_0xb24b('0x2d')](db[_0xb24b('0x34')]['findAll'](queryTrunks));_0x33a389[_0xb24b('0x2d')](db['Campaign'][_0xb24b('0x10')](queryCampaigns));_0x33a389[_0xb24b('0x2d')](db[_0xb24b('0x4')][_0xb24b('0x10')](queryAgents));break;case _0xb24b('0x35'):_0x44ee07[_0x3adea6]('voice:inbound');_0x44ee07[_0x3adea6](_0xb24b('0x2a'));_0x33a389[_0xb24b('0x2d')](getAssociatedResources('VoiceQueues',_0x12d30a[_0xb24b('0x1f')],_0xb24b('0x2e')));_0x33a389[_0xb24b('0x2d')](getAssociatedResources('ChatQueues',_0x12d30a['userProfileId'],_0xb24b('0x2f')));_0x33a389[_0xb24b('0x2d')](getAssociatedResources(_0xb24b('0x36'),_0x12d30a[_0xb24b('0x1f')],_0xb24b('0x37')));_0x33a389[_0xb24b('0x2d')](getAssociatedResources(_0xb24b('0xd'),_0x12d30a[_0xb24b('0x1f')],_0xb24b('0x30')));_0x33a389[_0xb24b('0x2d')](getAssociatedResources(_0xb24b('0xe'),_0x12d30a[_0xb24b('0x1f')],'MailQueue'));_0x33a389['push'](getAssociatedResources('OpenchannelQueues',_0x12d30a[_0xb24b('0x1f')],_0xb24b('0x32')));_0x33a389['push'](getAssociatedResources(_0xb24b('0xf'),_0x12d30a[_0xb24b('0x1f')],'WhatsappQueue'));_0x33a389[_0xb24b('0x2d')](getAssociatedResources('Telephones',_0x12d30a[_0xb24b('0x1f')],'User'));_0x33a389[_0xb24b('0x2d')](getAssociatedResources(_0xb24b('0x12'),_0x12d30a[_0xb24b('0x1f')],'Trunk'));_0x33a389['push'](getAssociatedResources(_0xb24b('0x38'),_0x12d30a[_0xb24b('0x1f')],_0xb24b('0x39')));_0x33a389[_0xb24b('0x2d')](db[_0xb24b('0x4')]['findAll'](queryAgents));break;case _0xb24b('0x5'):_0x44ee07[_0x3adea6]('voice:inbound');_0x44ee07[_0x3adea6](_0xb24b('0x2a'));_0x33a389[_0xb24b('0x2d')](_0x12d30a[_0xb24b('0x3a')]({'attributes':['id',_0xb24b('0x3')]}));_0x33a389['push'](_0x12d30a[_0xb24b('0x3b')]({'attributes':['id','name']}));_0x33a389[_0xb24b('0x2d')](_0x12d30a[_0xb24b('0x3c')]({'attributes':['id','name']}));_0x33a389[_0xb24b('0x2d')](_0x12d30a[_0xb24b('0x3d')]({'attributes':['id',_0xb24b('0x3')]}));_0x33a389[_0xb24b('0x2d')](_0x12d30a['getMailQueues']({'attributes':['id',_0xb24b('0x3')]}));_0x33a389[_0xb24b('0x2d')](_0x12d30a['getOpenchannelQueues']({'attributes':['id',_0xb24b('0x3')]}));_0x33a389[_0xb24b('0x2d')](_0x12d30a[_0xb24b('0x3e')]({'attributes':['id',_0xb24b('0x3')]}));break;}return BPromise[_0xb24b('0x3f')](_0x33a389);}})[_0xb24b('0xa')](function(_0x5d6644){if(_0x5d6644&&_0x5d6644['length']){for(var _0x250217=0x0;_0x250217<_0x5d6644['length'];_0x250217+=0x1){for(var _0x33bf56=0x0;_0x33bf56<_0x5d6644[_0x250217]['length'];_0x33bf56+=0x1){switch(_0x250217){case 0x0:joinOrLeaveQueues(_0x44ee07,_0x3adea6,_0xb24b('0x40'),_0x5d6644[_0x250217][_0x33bf56]);break;case 0x1:joinOrLeaveQueues(_0x44ee07,_0x3adea6,_0xb24b('0x41'),_0x5d6644[_0x250217][_0x33bf56]);break;case 0x2:joinOrLeaveQueues(_0x44ee07,_0x3adea6,_0xb24b('0x42'),_0x5d6644[_0x250217][_0x33bf56]);break;case 0x3:joinOrLeaveQueues(_0x44ee07,_0x3adea6,_0xb24b('0x43'),_0x5d6644[_0x250217][_0x33bf56]);break;case 0x4:joinOrLeaveQueues(_0x44ee07,_0x3adea6,_0xb24b('0x44'),_0x5d6644[_0x250217][_0x33bf56]);break;case 0x5:joinOrLeaveQueues(_0x44ee07,_0x3adea6,_0xb24b('0x45'),_0x5d6644[_0x250217][_0x33bf56]);break;case 0x6:joinOrLeaveQueues(_0x44ee07,_0x3adea6,_0xb24b('0x46'),_0x5d6644[_0x250217][_0x33bf56]);break;case 0x7:if(_0x4de9b6[_0xb24b('0x17')]!==_0xb24b('0x5'))_0x44ee07[_0x3adea6](util[_0xb24b('0x18')](_0xb24b('0x47'),_0x5d6644[_0x250217][_0x33bf56][_0xb24b('0x3')]));break;case 0x8:if(_0x4de9b6[_0xb24b('0x17')]!==_0xb24b('0x5'))_0x44ee07[_0x3adea6](util[_0xb24b('0x18')]('trunk:%s',_0x5d6644[_0x250217][_0x33bf56][_0xb24b('0x3')]));break;case 0x9:if(_0x4de9b6[_0xb24b('0x17')]!==_0xb24b('0x5'))_0x44ee07[_0x3adea6](util['format'](_0xb24b('0x48'),_0x5d6644[_0x250217][_0x33bf56][_0xb24b('0x7')],_0x5d6644[_0x250217][_0x33bf56][_0xb24b('0x3')]));break;case 0xa:_0x44ee07[_0x3adea6](util[_0xb24b('0x18')](_0xb24b('0x1c'),_0x5d6644[_0x250217][_0x33bf56][_0xb24b('0x3')]));break;}}}}})['then'](function(){if(_0x3adea6==='leave'){var _0xc1dbb8=_[_0xb24b('0x15')](_0x4de9b6['ChatInteractions'],'id');return _0x4de9b6[_0xb24b('0x49')](_0xc1dbb8)[_0xb24b('0xa')](function(){for(var _0xb5ac72=0x0;_0xb5ac72<_0xc1dbb8[_0xb24b('0x1b')];_0xb5ac72+=0x1){_0x30d482[_0xb24b('0x4a')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0xc1dbb8[_0xb5ac72]),'UserId':Number(_0x4de9b6['id'])});}});}})[_0xb24b('0xa')](function(){if(_0x3adea6===_0xb24b('0x4b')){var _0x3ad41a=_[_0xb24b('0x15')](_0x4de9b6[_0xb24b('0x4c')],'id');return _0x4de9b6[_0xb24b('0x4d')](_0x3ad41a)[_0xb24b('0xa')](function(){for(var _0x4faa34=0x0;_0x4faa34<_0x3ad41a[_0xb24b('0x1b')];_0x4faa34+=0x1){_0x30d482[_0xb24b('0x4a')](_0xb24b('0x4e'),{'MailInteractionId':Number(_0x3ad41a[_0x4faa34]),'UserId':Number(_0x4de9b6['id'])});}});}})['then'](function(){if(_0x3adea6===_0xb24b('0x4b')){var _0x4a61e6=_[_0xb24b('0x15')](_0x4de9b6[_0xb24b('0x23')],'id');return _0x4de9b6[_0xb24b('0x4f')](_0x4a61e6)[_0xb24b('0xa')](function(){for(var _0x40df8b=0x0;_0x40df8b<_0x4a61e6['length'];_0x40df8b+=0x1){_0x30d482[_0xb24b('0x4a')](_0xb24b('0x50'),{'FaxInteractionId':Number(_0x4a61e6[_0x40df8b]),'UserId':Number(_0x4de9b6['id'])});}});}})[_0xb24b('0xa')](function(){if(_0x3adea6===_0xb24b('0x4b')){var _0x1bfe85=_['map'](_0x4de9b6[_0xb24b('0x51')],'id');return _0x4de9b6[_0xb24b('0x52')](_0x1bfe85)[_0xb24b('0xa')](function(){for(var _0x5cab81=0x0;_0x5cab81<_0x1bfe85[_0xb24b('0x1b')];_0x5cab81+=0x1){_0x30d482[_0xb24b('0x4a')](_0xb24b('0x53'),{'SmsInteractionId':Number(_0x1bfe85[_0x5cab81]),'UserId':Number(_0x4de9b6['id'])});}});}})[_0xb24b('0xa')](function(){if(_0x3adea6===_0xb24b('0x4b')){var _0x35bd2f=_[_0xb24b('0x15')](_0x4de9b6[_0xb24b('0x26')],'id');return _0x4de9b6[_0xb24b('0x54')](_0x35bd2f)[_0xb24b('0xa')](function(){for(var _0x5c800a=0x0;_0x5c800a<_0x35bd2f[_0xb24b('0x1b')];_0x5c800a+=0x1){_0x30d482[_0xb24b('0x4a')](_0xb24b('0x55'),{'OpenchannelInteractionId':Number(_0x35bd2f[_0x5c800a]),'UserId':Number(_0x4de9b6['id'])});}});}})[_0xb24b('0xa')](function(){if(_0x3adea6==='leave'){var _0xca9be4=_[_0xb24b('0x15')](_0x4de9b6[_0xb24b('0x56')],'id');return _0x4de9b6[_0xb24b('0x57')](_0xca9be4)[_0xb24b('0xa')](function(){for(var _0x4c08b0=0x0;_0x4c08b0<_0xca9be4['length'];_0x4c08b0+=0x1){_0x30d482['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0xca9be4[_0x4c08b0]),'UserId':Number(_0x4de9b6['id'])});}});}})['catch'](function(_0x384eb7){_0x44ee07[_0xb24b('0x58')](_0x384eb7);});}}function onDisconnect(_0x5485c5,_0x17eb5b){joinOrLeave(_0x5485c5,_0xb24b('0x4b'),_0x17eb5b);}function onConnect(_0x870278){joinOrLeave(_0x870278,_0xb24b('0x59'));}exports[_0xb24b('0x5a')]=function(_0x906fc0){_0x906fc0['on']('connection',function(_0x5dd248){_0x5dd248[_0xb24b('0x5b')](0x0);_0x5dd248['address']=_0x5dd248['request'][_0xb24b('0x5c')]['remoteAddress']+':'+_0x5dd248[_0xb24b('0x5d')][_0xb24b('0x5c')][_0xb24b('0x5e')];_0x5dd248[_0xb24b('0x5f')]=new Date();_0x5dd248[_0xb24b('0x58')]=function(_0x18e372){console[_0xb24b('0x58')]('SocketIO\x20'+_0x5dd248[_0xb24b('0x60')][_0xb24b('0x3')]+'['+_0x5dd248[_0xb24b('0x61')]+']',_0x18e372);};_0x5dd248['on'](_0xb24b('0x62'),function(){onDisconnect(_0x5dd248,_0x906fc0);_0x5dd248[_0xb24b('0x58')](_0xb24b('0x63'));});onConnect(_0x5dd248);_0x5dd248['log'](_0xb24b('0x64'));});};