Built motion from commit d1eab355.|2.6.28
[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 _0x753c=['Trunk','VoiceQueues','VoiceQueue','OpenchannelQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','voice','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','user:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','connectedAt','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED','util','../mysqldb','./environment','name','Agents','User','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','MailQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','format','%s:queue:%s','length','handshake','query','userProfileId','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue'];(function(_0x5a1970,_0x12c29b){var _0x1aaa24=function(_0x385a26){while(--_0x385a26){_0x5a1970['push'](_0x5a1970['shift']());}};_0x1aaa24(++_0x12c29b);}(_0x753c,0x96));var _0xc753=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x753c[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var util=require(_0xc753('0x0'));var BPromise=require('bluebird');var db=require(_0xc753('0x1'))['db'];var config=require(_0xc753('0x2'));var queryQueues={'attributes':['id',_0xc753('0x3')],'include':[{'as':_0xc753('0x4'),'model':db[_0xc753('0x5')],'attributes':['id',_0xc753('0x3'),_0xc753('0x6')],'raw':!![],'where':{'role':_0xc753('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xc753('0x3')],'where':{'role':_0xc753('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xc753('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0xc753('0x3')],'where':{'role':_0xc753('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xc753('0x3'),_0xc753('0x9')],'where':{'type':_0xc753('0xa')}};function getAssociatedResources(_0x200f9e,_0x351836,_0x128610){return db[_0xc753('0xb')][_0xc753('0xc')]({'where':{'name':_0x200f9e,'userProfileId':_0x351836},'raw':!![]})[_0xc753('0xd')](function(_0x358393){if(_0x358393){if(_0x358393[_0xc753('0xe')]){switch(_0x200f9e){case'VoiceQueues':case _0xc753('0xf'):case _0xc753('0x10'):case'SmsQueues':case _0xc753('0x11'):case'OpenchannelQueues':case _0xc753('0x12'):return db[_0x128610][_0xc753('0x13')](queryQueues);case _0xc753('0x14'):return db[_0x128610]['findAll'](queryTelephones);case _0xc753('0x15'):return db[_0x128610]['findAll'](queryTrunks);case _0xc753('0x16'):return db[_0x128610]['findAll'](queryCampaigns);}}else{return db[_0xc753('0x17')][_0xc753('0x13')]({'attributes':[_0xc753('0x18')],'where':{'sectionId':_0x358393['id']},'raw':!![]})[_0xc753('0xd')](function(_0x4650ed){if(_0x4650ed){var _0x4fae9f={'where':{'id':_[_0xc753('0x19')](_0x4650ed,_0xc753('0x18'))},'raw':!![]};switch(_0x128610){case _0xc753('0x5'):_0x4fae9f[_0xc753('0x1a')][_0xc753('0x6')]=_0xc753('0x8');break;case _0xc753('0x1b'):_0x4fae9f[_0xc753('0x1a')]['type']=_0xc753('0xa');break;}return db[_0x128610][_0xc753('0x13')](_0x4fae9f);}else{return[];}});}}else{return[];}})[_0xc753('0xd')](function(_0x2adbc2){return _0x2adbc2;});}function joinOrLeaveQueues(_0x23c46a,_0xc612dc,_0x40a22e,_0x42a222){_0x23c46a[_0xc612dc](util[_0xc753('0x1c')](_0xc753('0x1d'),_0x40a22e,_0x42a222[_0xc753('0x3')]));if(_0x42a222[_0xc753('0x4')]){for(var _0x464e6a=0x0;_0x464e6a<_0x42a222[_0xc753('0x4')][_0xc753('0x1e')];_0x464e6a+=0x1){_0x23c46a[_0xc612dc](util[_0xc753('0x1c')]('user:%s',_0x42a222[_0xc753('0x4')][_0x464e6a][_0xc753('0x3')]));}}}function joinOrLeave(_0x5158ee,_0x512d9c,_0x2b8ed4){var _0x3aeda8;if(_0x5158ee[_0xc753('0x1f')][_0xc753('0x20')]['id']){db[_0xc753('0x5')]['find']({'attributes':['id',_0xc753('0x3'),_0xc753('0x6'),_0xc753('0x21')],'where':{'id':_0x5158ee[_0xc753('0x1f')][_0xc753('0x20')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0xc753('0x22'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xc753('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xc753('0x24')],'as':_0xc753('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xc753('0x26')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xc753('0x27')],'as':_0xc753('0x28'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xc753('0x29'),'attributes':['id'],'raw':!![]}]})['then'](function(_0xed387e){if(_0xed387e){_0x3aeda8=_0xed387e;_0x5158ee[_0x512d9c](util['format']('user:%s',_0xed387e[_0xc753('0x3')]));var _0x285cad=[];switch(_0xed387e['role']){case _0xc753('0x2a'):_0x5158ee[_0x512d9c](_0xc753('0x2b'));_0x5158ee[_0x512d9c](_0xc753('0x2c'));if(queryQueues[_0xc753('0x2d')](_0xc753('0x2e'))){delete queryQueues['include'];}_0x285cad[_0xc753('0x2f')](db['VoiceQueue'][_0xc753('0x13')](queryQueues));_0x285cad[_0xc753('0x2f')](db[_0xc753('0x30')]['findAll'](queryQueues));_0x285cad[_0xc753('0x2f')](db[_0xc753('0x31')][_0xc753('0x13')](queryQueues));_0x285cad[_0xc753('0x2f')](db[_0xc753('0x32')][_0xc753('0x13')](queryQueues));_0x285cad[_0xc753('0x2f')](db[_0xc753('0x33')]['findAll'](queryQueues));_0x285cad[_0xc753('0x2f')](db[_0xc753('0x34')][_0xc753('0x13')](queryQueues));_0x285cad['push'](db[_0xc753('0x35')]['findAll'](queryQueues));_0x285cad[_0xc753('0x2f')](db[_0xc753('0x5')][_0xc753('0x13')](queryTelephones));_0x285cad[_0xc753('0x2f')](db[_0xc753('0x36')][_0xc753('0x13')](queryTrunks));_0x285cad[_0xc753('0x2f')](db[_0xc753('0x1b')][_0xc753('0x13')](queryCampaigns));_0x285cad['push'](db[_0xc753('0x5')]['findAll'](queryAgents));break;case'user':_0x5158ee[_0x512d9c](_0xc753('0x2b'));_0x5158ee[_0x512d9c](_0xc753('0x2c'));_0x285cad['push'](getAssociatedResources(_0xc753('0x37'),_0xed387e[_0xc753('0x21')],_0xc753('0x38')));_0x285cad[_0xc753('0x2f')](getAssociatedResources(_0xc753('0xf'),_0xed387e[_0xc753('0x21')],_0xc753('0x30')));_0x285cad['push'](getAssociatedResources('FaxQueues',_0xed387e[_0xc753('0x21')],_0xc753('0x31')));_0x285cad[_0xc753('0x2f')](getAssociatedResources('SmsQueues',_0xed387e[_0xc753('0x21')],'SmsQueue'));_0x285cad[_0xc753('0x2f')](getAssociatedResources(_0xc753('0x11'),_0xed387e[_0xc753('0x21')],_0xc753('0x33')));_0x285cad['push'](getAssociatedResources(_0xc753('0x39'),_0xed387e[_0xc753('0x21')],_0xc753('0x34')));_0x285cad['push'](getAssociatedResources('WhatsappQueues',_0xed387e[_0xc753('0x21')],_0xc753('0x35')));_0x285cad[_0xc753('0x2f')](getAssociatedResources(_0xc753('0x14'),_0xed387e['userProfileId'],_0xc753('0x5')));_0x285cad[_0xc753('0x2f')](getAssociatedResources('Trunks',_0xed387e[_0xc753('0x21')],_0xc753('0x36')));_0x285cad[_0xc753('0x2f')](getAssociatedResources(_0xc753('0x16'),_0xed387e[_0xc753('0x21')],'Campaign'));_0x285cad[_0xc753('0x2f')](db[_0xc753('0x5')][_0xc753('0x13')](queryAgents));break;case _0xc753('0x7'):_0x5158ee[_0x512d9c](_0xc753('0x2b'));_0x5158ee[_0x512d9c](_0xc753('0x2c'));_0x285cad['push'](_0xed387e[_0xc753('0x3a')]({'attributes':['id',_0xc753('0x3')]}));_0x285cad[_0xc753('0x2f')](_0xed387e[_0xc753('0x3b')]({'attributes':['id',_0xc753('0x3')]}));_0x285cad[_0xc753('0x2f')](_0xed387e[_0xc753('0x3c')]({'attributes':['id',_0xc753('0x3')]}));_0x285cad['push'](_0xed387e[_0xc753('0x3d')]({'attributes':['id',_0xc753('0x3')]}));_0x285cad[_0xc753('0x2f')](_0xed387e[_0xc753('0x3e')]({'attributes':['id','name']}));_0x285cad[_0xc753('0x2f')](_0xed387e[_0xc753('0x3f')]({'attributes':['id',_0xc753('0x3')]}));_0x285cad[_0xc753('0x2f')](_0xed387e['getWhatsappQueues']({'attributes':['id',_0xc753('0x3')]}));break;}return BPromise['all'](_0x285cad);}})[_0xc753('0xd')](function(_0x49396a){if(_0x49396a&&_0x49396a['length']){for(var _0x5e8d56=0x0;_0x5e8d56<_0x49396a[_0xc753('0x1e')];_0x5e8d56+=0x1){for(var _0xe77a8e=0x0;_0xe77a8e<_0x49396a[_0x5e8d56][_0xc753('0x1e')];_0xe77a8e+=0x1){switch(_0x5e8d56){case 0x0:joinOrLeaveQueues(_0x5158ee,_0x512d9c,_0xc753('0x40'),_0x49396a[_0x5e8d56][_0xe77a8e]);break;case 0x1:joinOrLeaveQueues(_0x5158ee,_0x512d9c,_0xc753('0x41'),_0x49396a[_0x5e8d56][_0xe77a8e]);break;case 0x2:joinOrLeaveQueues(_0x5158ee,_0x512d9c,_0xc753('0x42'),_0x49396a[_0x5e8d56][_0xe77a8e]);break;case 0x3:joinOrLeaveQueues(_0x5158ee,_0x512d9c,_0xc753('0x43'),_0x49396a[_0x5e8d56][_0xe77a8e]);break;case 0x4:joinOrLeaveQueues(_0x5158ee,_0x512d9c,_0xc753('0x44'),_0x49396a[_0x5e8d56][_0xe77a8e]);break;case 0x5:joinOrLeaveQueues(_0x5158ee,_0x512d9c,'openchannel',_0x49396a[_0x5e8d56][_0xe77a8e]);break;case 0x6:joinOrLeaveQueues(_0x5158ee,_0x512d9c,_0xc753('0x45'),_0x49396a[_0x5e8d56][_0xe77a8e]);break;case 0x7:if(_0x3aeda8[_0xc753('0x6')]!==_0xc753('0x7'))_0x5158ee[_0x512d9c](util[_0xc753('0x1c')](_0xc753('0x46'),_0x49396a[_0x5e8d56][_0xe77a8e][_0xc753('0x3')]));break;case 0x8:if(_0x3aeda8['role']!=='agent')_0x5158ee[_0x512d9c](util[_0xc753('0x1c')](_0xc753('0x47'),_0x49396a[_0x5e8d56][_0xe77a8e][_0xc753('0x3')]));break;case 0x9:if(_0x3aeda8['role']!==_0xc753('0x7'))_0x5158ee[_0x512d9c](util[_0xc753('0x1c')](_0xc753('0x48'),_0x49396a[_0x5e8d56][_0xe77a8e][_0xc753('0x9')],_0x49396a[_0x5e8d56][_0xe77a8e]['name']));break;case 0xa:_0x5158ee[_0x512d9c](util[_0xc753('0x1c')](_0xc753('0x49'),_0x49396a[_0x5e8d56][_0xe77a8e]['name']));break;}}}}})[_0xc753('0xd')](function(){if(_0x512d9c===_0xc753('0x4a')){var _0x557b82=_[_0xc753('0x19')](_0x3aeda8['ChatInteractions'],'id');return _0x3aeda8[_0xc753('0x4b')](_0x557b82)[_0xc753('0xd')](function(){for(var _0x1368de=0x0;_0x1368de<_0x557b82['length'];_0x1368de+=0x1){_0x2b8ed4[_0xc753('0x4c')](_0xc753('0x4d'),{'ChatInteractionId':Number(_0x557b82[_0x1368de]),'UserId':Number(_0x3aeda8['id'])});}});}})[_0xc753('0xd')](function(){if(_0x512d9c===_0xc753('0x4a')){var _0x5b7c59=_[_0xc753('0x19')](_0x3aeda8[_0xc753('0x23')],'id');return _0x3aeda8[_0xc753('0x4e')](_0x5b7c59)[_0xc753('0xd')](function(){for(var _0x214e18=0x0;_0x214e18<_0x5b7c59[_0xc753('0x1e')];_0x214e18+=0x1){_0x2b8ed4[_0xc753('0x4c')](_0xc753('0x4f'),{'MailInteractionId':Number(_0x5b7c59[_0x214e18]),'UserId':Number(_0x3aeda8['id'])});}});}})[_0xc753('0xd')](function(){if(_0x512d9c==='leave'){var _0xcf3ead=_['map'](_0x3aeda8[_0xc753('0x25')],'id');return _0x3aeda8['removeFaxInteractions'](_0xcf3ead)[_0xc753('0xd')](function(){for(var _0x5f1101=0x0;_0x5f1101<_0xcf3ead[_0xc753('0x1e')];_0x5f1101+=0x1){_0x2b8ed4['emit'](_0xc753('0x50'),{'FaxInteractionId':Number(_0xcf3ead[_0x5f1101]),'UserId':Number(_0x3aeda8['id'])});}});}})[_0xc753('0xd')](function(){if(_0x512d9c===_0xc753('0x4a')){var _0x2cf637=_[_0xc753('0x19')](_0x3aeda8[_0xc753('0x51')],'id');return _0x3aeda8[_0xc753('0x52')](_0x2cf637)[_0xc753('0xd')](function(){for(var _0x485279=0x0;_0x485279<_0x2cf637['length'];_0x485279+=0x1){_0x2b8ed4[_0xc753('0x4c')](_0xc753('0x53'),{'SmsInteractionId':Number(_0x2cf637[_0x485279]),'UserId':Number(_0x3aeda8['id'])});}});}})[_0xc753('0xd')](function(){if(_0x512d9c===_0xc753('0x4a')){var _0x1a3067=_['map'](_0x3aeda8[_0xc753('0x28')],'id');return _0x3aeda8[_0xc753('0x54')](_0x1a3067)[_0xc753('0xd')](function(){for(var _0x517318=0x0;_0x517318<_0x1a3067[_0xc753('0x1e')];_0x517318+=0x1){_0x2b8ed4[_0xc753('0x4c')](_0xc753('0x55'),{'OpenchannelInteractionId':Number(_0x1a3067[_0x517318]),'UserId':Number(_0x3aeda8['id'])});}});}})['then'](function(){if(_0x512d9c===_0xc753('0x4a')){var _0x32f27d=_[_0xc753('0x19')](_0x3aeda8[_0xc753('0x29')],'id');return _0x3aeda8[_0xc753('0x56')](_0x32f27d)['then'](function(){for(var _0x593945=0x0;_0x593945<_0x32f27d[_0xc753('0x1e')];_0x593945+=0x1){_0x2b8ed4[_0xc753('0x4c')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x32f27d[_0x593945]),'UserId':Number(_0x3aeda8['id'])});}});}})[_0xc753('0x57')](function(_0x5a0a69){_0x5158ee[_0xc753('0x58')](_0x5a0a69);});}}function onDisconnect(_0x3f536c,_0x28940d){joinOrLeave(_0x3f536c,'leave',_0x28940d);}function onConnect(_0x53926c){joinOrLeave(_0x53926c,_0xc753('0x59'));}exports[_0xc753('0x5a')]=function(_0x2c1822){_0x2c1822['on']('connection',function(_0x3bddbb){_0x3bddbb[_0xc753('0x5b')](0x0);_0x3bddbb[_0xc753('0x5c')]=_0x3bddbb[_0xc753('0x5d')][_0xc753('0x5e')][_0xc753('0x5f')]+':'+_0x3bddbb[_0xc753('0x5d')]['connection'][_0xc753('0x60')];_0x3bddbb[_0xc753('0x61')]=new Date();_0x3bddbb[_0xc753('0x58')]=function(_0x1e8cbb){console['log'](_0xc753('0x62')+_0x3bddbb['nsp']['name']+'['+_0x3bddbb[_0xc753('0x5c')]+']',_0x1e8cbb);};_0x3bddbb['on'](_0xc753('0x63'),function(){onDisconnect(_0x3bddbb,_0x2c1822);_0x3bddbb[_0xc753('0x58')](_0xc753('0x64'));});onConnect(_0x3bddbb);_0x3bddbb['log'](_0xc753('0x65'));});};