Built motion from commit 9d1906d1.|2.5.40
[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 _0x18d4=['remoteAddress','connectedAt','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','bluebird','name','Agents','User','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','format','%s:queue:%s','user:%s','handshake','query','find','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','voice:inbound','userProfileId','SmsQueue','MailQueues','WhatsappQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','chat','sms','openchannel','whatsapp','telephone:%s','trunk:%s','emit','user_has_chat_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','leave','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','setMaxListeners','address','request','connection'];(function(_0x4926b1,_0x403ed1){var _0x184072=function(_0x93912){while(--_0x93912){_0x4926b1['push'](_0x4926b1['shift']());}};_0x184072(++_0x403ed1);}(_0x18d4,0x19e));var _0x418d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x18d4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x418d('0x0'));var util=require(_0x418d('0x1'));var BPromise=require(_0x418d('0x2'));var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x418d('0x3')],'include':[{'as':_0x418d('0x4'),'model':db[_0x418d('0x5')],'attributes':['id',_0x418d('0x3'),_0x418d('0x6')],'raw':!![],'where':{'role':_0x418d('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x418d('0x3')],'where':{'role':_0x418d('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x418d('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x418d('0x3')],'where':{'role':_0x418d('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x418d('0x3'),_0x418d('0x9')],'where':{'type':_0x418d('0xa')}};function getAssociatedResources(_0xf39286,_0x3db41c,_0x32ee36){return db[_0x418d('0xb')][_0x418d('0xc')]({'where':{'name':_0xf39286,'userProfileId':_0x3db41c},'raw':!![]})[_0x418d('0xd')](function(_0x3754bf){if(_0x3754bf){if(_0x3754bf['autoAssociation']){switch(_0xf39286){case _0x418d('0xe'):case _0x418d('0xf'):case _0x418d('0x10'):case _0x418d('0x11'):case'MailQueues':case _0x418d('0x12'):case'WhatsappQueues':return db[_0x32ee36][_0x418d('0x13')](queryQueues);case _0x418d('0x14'):return db[_0x32ee36][_0x418d('0x13')](queryTelephones);case _0x418d('0x15'):return db[_0x32ee36][_0x418d('0x13')](queryTrunks);case _0x418d('0x16'):return db[_0x32ee36]['findAll'](queryCampaigns);}}else{return db[_0x418d('0x17')]['findAll']({'attributes':[_0x418d('0x18')],'where':{'sectionId':_0x3754bf['id']},'raw':!![]})[_0x418d('0xd')](function(_0x3f910a){if(_0x3f910a){var _0x23281c={'where':{'id':_[_0x418d('0x19')](_0x3f910a,_0x418d('0x18'))},'raw':!![]};switch(_0x32ee36){case'User':_0x23281c[_0x418d('0x1a')][_0x418d('0x6')]=_0x418d('0x8');break;case _0x418d('0x1b'):_0x23281c[_0x418d('0x1a')][_0x418d('0x9')]=_0x418d('0xa');break;}return db[_0x32ee36][_0x418d('0x13')](_0x23281c);}else{return[];}});}}else{return[];}})[_0x418d('0xd')](function(_0x2e8a92){return _0x2e8a92;});}function joinOrLeaveQueues(_0x19be63,_0x5b038e,_0x386e50,_0x55f2a4){_0x19be63[_0x5b038e](util[_0x418d('0x1c')](_0x418d('0x1d'),_0x386e50,_0x55f2a4[_0x418d('0x3')]));if(_0x55f2a4['Agents']){for(var _0x4ae933=0x0;_0x4ae933<_0x55f2a4[_0x418d('0x4')]['length'];_0x4ae933+=0x1){_0x19be63[_0x5b038e](util[_0x418d('0x1c')](_0x418d('0x1e'),_0x55f2a4[_0x418d('0x4')][_0x4ae933][_0x418d('0x3')]));}}}function joinOrLeave(_0x5a1509,_0x5837b1,_0x49812a){var _0x4c97a3;if(_0x5a1509[_0x418d('0x1f')][_0x418d('0x20')]['id']){db['User'][_0x418d('0x21')]({'attributes':['id',_0x418d('0x3'),_0x418d('0x6'),'userProfileId'],'where':{'id':_0x5a1509[_0x418d('0x1f')]['query']['id']},'include':[{'model':db[_0x418d('0x22')],'as':_0x418d('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x418d('0x24')],'as':_0x418d('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x418d('0x26')],'as':_0x418d('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x418d('0x28')],'as':_0x418d('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x418d('0x2a')],'as':_0x418d('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x418d('0x2c')],'as':_0x418d('0x2d'),'attributes':['id'],'raw':!![]}]})[_0x418d('0xd')](function(_0x4b7c0f){if(_0x4b7c0f){_0x4c97a3=_0x4b7c0f;_0x5a1509[_0x5837b1](util['format'](_0x418d('0x1e'),_0x4b7c0f[_0x418d('0x3')]));var _0x5ed414=[];switch(_0x4b7c0f[_0x418d('0x6')]){case _0x418d('0x2e'):_0x5a1509[_0x5837b1]('voice:inbound');_0x5a1509[_0x5837b1](_0x418d('0x2f'));if(queryQueues['hasOwnProperty'](_0x418d('0x30'))){delete queryQueues['include'];}_0x5ed414[_0x418d('0x31')](db[_0x418d('0x32')][_0x418d('0x13')](queryQueues));_0x5ed414[_0x418d('0x31')](db[_0x418d('0x33')][_0x418d('0x13')](queryQueues));_0x5ed414[_0x418d('0x31')](db[_0x418d('0x34')][_0x418d('0x13')](queryQueues));_0x5ed414[_0x418d('0x31')](db['SmsQueue'][_0x418d('0x13')](queryQueues));_0x5ed414[_0x418d('0x31')](db[_0x418d('0x35')]['findAll'](queryQueues));_0x5ed414['push'](db[_0x418d('0x36')]['findAll'](queryQueues));_0x5ed414['push'](db[_0x418d('0x37')][_0x418d('0x13')](queryQueues));_0x5ed414['push'](db['User'][_0x418d('0x13')](queryTelephones));_0x5ed414[_0x418d('0x31')](db['Trunk'][_0x418d('0x13')](queryTrunks));_0x5ed414[_0x418d('0x31')](db[_0x418d('0x1b')][_0x418d('0x13')](queryCampaigns));_0x5ed414[_0x418d('0x31')](db['User']['findAll'](queryAgents));break;case _0x418d('0x38'):_0x5a1509[_0x5837b1](_0x418d('0x39'));_0x5a1509[_0x5837b1](_0x418d('0x2f'));_0x5ed414['push'](getAssociatedResources(_0x418d('0xe'),_0x4b7c0f['userProfileId'],'VoiceQueue'));_0x5ed414[_0x418d('0x31')](getAssociatedResources(_0x418d('0xf'),_0x4b7c0f['userProfileId'],'ChatQueue'));_0x5ed414[_0x418d('0x31')](getAssociatedResources('FaxQueues',_0x4b7c0f[_0x418d('0x3a')],'FaxQueue'));_0x5ed414['push'](getAssociatedResources(_0x418d('0x11'),_0x4b7c0f[_0x418d('0x3a')],_0x418d('0x3b')));_0x5ed414[_0x418d('0x31')](getAssociatedResources(_0x418d('0x3c'),_0x4b7c0f['userProfileId'],_0x418d('0x35')));_0x5ed414[_0x418d('0x31')](getAssociatedResources('OpenchannelQueues',_0x4b7c0f[_0x418d('0x3a')],_0x418d('0x36')));_0x5ed414['push'](getAssociatedResources(_0x418d('0x3d'),_0x4b7c0f[_0x418d('0x3a')],_0x418d('0x37')));_0x5ed414[_0x418d('0x31')](getAssociatedResources(_0x418d('0x14'),_0x4b7c0f[_0x418d('0x3a')],_0x418d('0x5')));_0x5ed414[_0x418d('0x31')](getAssociatedResources(_0x418d('0x15'),_0x4b7c0f[_0x418d('0x3a')],'Trunk'));_0x5ed414[_0x418d('0x31')](getAssociatedResources(_0x418d('0x16'),_0x4b7c0f[_0x418d('0x3a')],'Campaign'));_0x5ed414[_0x418d('0x31')](db[_0x418d('0x5')][_0x418d('0x13')](queryAgents));break;case _0x418d('0x7'):_0x5a1509[_0x5837b1](_0x418d('0x39'));_0x5a1509[_0x5837b1](_0x418d('0x2f'));_0x5ed414[_0x418d('0x31')](_0x4b7c0f[_0x418d('0x3e')]({'attributes':['id',_0x418d('0x3')]}));_0x5ed414[_0x418d('0x31')](_0x4b7c0f[_0x418d('0x3f')]({'attributes':['id',_0x418d('0x3')]}));_0x5ed414['push'](_0x4b7c0f[_0x418d('0x40')]({'attributes':['id',_0x418d('0x3')]}));_0x5ed414['push'](_0x4b7c0f[_0x418d('0x41')]({'attributes':['id',_0x418d('0x3')]}));_0x5ed414[_0x418d('0x31')](_0x4b7c0f[_0x418d('0x42')]({'attributes':['id',_0x418d('0x3')]}));_0x5ed414[_0x418d('0x31')](_0x4b7c0f[_0x418d('0x43')]({'attributes':['id',_0x418d('0x3')]}));_0x5ed414[_0x418d('0x31')](_0x4b7c0f[_0x418d('0x44')]({'attributes':['id',_0x418d('0x3')]}));break;}return BPromise[_0x418d('0x45')](_0x5ed414);}})['then'](function(_0x4e5967){if(_0x4e5967&&_0x4e5967[_0x418d('0x46')]){for(var _0x18c8f0=0x0;_0x18c8f0<_0x4e5967[_0x418d('0x46')];_0x18c8f0+=0x1){for(var _0x407da4=0x0;_0x407da4<_0x4e5967[_0x18c8f0][_0x418d('0x46')];_0x407da4+=0x1){switch(_0x18c8f0){case 0x0:joinOrLeaveQueues(_0x5a1509,_0x5837b1,_0x418d('0x47'),_0x4e5967[_0x18c8f0][_0x407da4]);break;case 0x1:joinOrLeaveQueues(_0x5a1509,_0x5837b1,_0x418d('0x48'),_0x4e5967[_0x18c8f0][_0x407da4]);break;case 0x2:joinOrLeaveQueues(_0x5a1509,_0x5837b1,'fax',_0x4e5967[_0x18c8f0][_0x407da4]);break;case 0x3:joinOrLeaveQueues(_0x5a1509,_0x5837b1,_0x418d('0x49'),_0x4e5967[_0x18c8f0][_0x407da4]);break;case 0x4:joinOrLeaveQueues(_0x5a1509,_0x5837b1,'mail',_0x4e5967[_0x18c8f0][_0x407da4]);break;case 0x5:joinOrLeaveQueues(_0x5a1509,_0x5837b1,_0x418d('0x4a'),_0x4e5967[_0x18c8f0][_0x407da4]);break;case 0x6:joinOrLeaveQueues(_0x5a1509,_0x5837b1,_0x418d('0x4b'),_0x4e5967[_0x18c8f0][_0x407da4]);break;case 0x7:if(_0x4c97a3['role']!==_0x418d('0x7'))_0x5a1509[_0x5837b1](util[_0x418d('0x1c')](_0x418d('0x4c'),_0x4e5967[_0x18c8f0][_0x407da4][_0x418d('0x3')]));break;case 0x8:if(_0x4c97a3['role']!=='agent')_0x5a1509[_0x5837b1](util['format'](_0x418d('0x4d'),_0x4e5967[_0x18c8f0][_0x407da4][_0x418d('0x3')]));break;case 0x9:if(_0x4c97a3[_0x418d('0x6')]!=='agent')_0x5a1509[_0x5837b1](util[_0x418d('0x1c')]('campaign:%s:%s',_0x4e5967[_0x18c8f0][_0x407da4][_0x418d('0x9')],_0x4e5967[_0x18c8f0][_0x407da4]['name']));break;case 0xa:_0x5a1509[_0x5837b1](util[_0x418d('0x1c')](_0x418d('0x1e'),_0x4e5967[_0x18c8f0][_0x407da4][_0x418d('0x3')]));break;}}}}})[_0x418d('0xd')](function(){if(_0x5837b1==='leave'){var _0x374e04=_[_0x418d('0x19')](_0x4c97a3[_0x418d('0x23')],'id');return _0x4c97a3['removeChatInteractions'](_0x374e04)[_0x418d('0xd')](function(){for(var _0x446022=0x0;_0x446022<_0x374e04[_0x418d('0x46')];_0x446022+=0x1){_0x49812a[_0x418d('0x4e')](_0x418d('0x4f'),{'ChatInteractionId':Number(_0x374e04[_0x446022]),'UserId':Number(_0x4c97a3['id'])});}});}})[_0x418d('0xd')](function(){if(_0x5837b1==='leave'){var _0x58c83b=_[_0x418d('0x19')](_0x4c97a3['MailInteractions'],'id');return _0x4c97a3['removeMailInteractions'](_0x58c83b)[_0x418d('0xd')](function(){for(var _0x947a04=0x0;_0x947a04<_0x58c83b[_0x418d('0x46')];_0x947a04+=0x1){_0x49812a[_0x418d('0x4e')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x58c83b[_0x947a04]),'UserId':Number(_0x4c97a3['id'])});}});}})[_0x418d('0xd')](function(){if(_0x5837b1==='leave'){var _0x108de7=_[_0x418d('0x19')](_0x4c97a3[_0x418d('0x27')],'id');return _0x4c97a3[_0x418d('0x50')](_0x108de7)['then'](function(){for(var _0x1dbf1a=0x0;_0x1dbf1a<_0x108de7[_0x418d('0x46')];_0x1dbf1a+=0x1){_0x49812a[_0x418d('0x4e')](_0x418d('0x51'),{'FaxInteractionId':Number(_0x108de7[_0x1dbf1a]),'UserId':Number(_0x4c97a3['id'])});}});}})[_0x418d('0xd')](function(){if(_0x5837b1===_0x418d('0x52')){var _0xa17c9a=_[_0x418d('0x19')](_0x4c97a3[_0x418d('0x29')],'id');return _0x4c97a3[_0x418d('0x53')](_0xa17c9a)['then'](function(){for(var _0x2cfa4b=0x0;_0x2cfa4b<_0xa17c9a[_0x418d('0x46')];_0x2cfa4b+=0x1){_0x49812a[_0x418d('0x4e')](_0x418d('0x54'),{'SmsInteractionId':Number(_0xa17c9a[_0x2cfa4b]),'UserId':Number(_0x4c97a3['id'])});}});}})[_0x418d('0xd')](function(){if(_0x5837b1===_0x418d('0x52')){var _0x1fea37=_[_0x418d('0x19')](_0x4c97a3[_0x418d('0x2b')],'id');return _0x4c97a3[_0x418d('0x55')](_0x1fea37)[_0x418d('0xd')](function(){for(var _0x443789=0x0;_0x443789<_0x1fea37[_0x418d('0x46')];_0x443789+=0x1){_0x49812a['emit'](_0x418d('0x56'),{'OpenchannelInteractionId':Number(_0x1fea37[_0x443789]),'UserId':Number(_0x4c97a3['id'])});}});}})[_0x418d('0xd')](function(){if(_0x5837b1==='leave'){var _0x458724=_[_0x418d('0x19')](_0x4c97a3[_0x418d('0x2d')],'id');return _0x4c97a3[_0x418d('0x57')](_0x458724)[_0x418d('0xd')](function(){for(var _0x427df3=0x0;_0x427df3<_0x458724[_0x418d('0x46')];_0x427df3+=0x1){_0x49812a[_0x418d('0x4e')](_0x418d('0x58'),{'WhatsappInteractionId':Number(_0x458724[_0x427df3]),'UserId':Number(_0x4c97a3['id'])});}});}})['catch'](function(_0x22833e){_0x5a1509[_0x418d('0x59')](_0x22833e);});}}function onDisconnect(_0x3c0c10,_0x44e56c){joinOrLeave(_0x3c0c10,_0x418d('0x52'),_0x44e56c);}function onConnect(_0x505b7b){joinOrLeave(_0x505b7b,_0x418d('0x5a'));}exports[_0x418d('0x5b')]=function(_0x500ee5){_0x500ee5['on']('connection',function(_0xf20347){_0xf20347[_0x418d('0x5c')](0x0);_0xf20347[_0x418d('0x5d')]=_0xf20347[_0x418d('0x5e')][_0x418d('0x5f')][_0x418d('0x60')]+':'+_0xf20347[_0x418d('0x5e')][_0x418d('0x5f')]['remotePort'];_0xf20347[_0x418d('0x61')]=new Date();_0xf20347[_0x418d('0x59')]=function(_0x350b49){console[_0x418d('0x59')](_0x418d('0x62')+_0xf20347[_0x418d('0x63')][_0x418d('0x3')]+'['+_0xf20347[_0x418d('0x5d')]+']',_0x350b49);};_0xf20347['on'](_0x418d('0x64'),function(){onDisconnect(_0xf20347,_0x500ee5);_0xf20347[_0x418d('0x59')]('DISCONNECTED');});onConnect(_0xf20347);_0xf20347[_0x418d('0x59')](_0x418d('0x65'));});};