Built motion from commit (unavailable).|2.5.22
[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 _0x9a6d=['SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','voice:outbound','userProfileId','OpenchannelQueues','Trunks','voice:inbound','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','chat','fax','sms','mail','openchannel','whatsapp','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','default','connection','setMaxListeners','remoteAddress','request','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','util','../mysqldb','./environment','name','Agents','User','role','agent','type','ivr','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','IvrCampaigns','UserProfileResource','resourceId','map','where','telephone','Campaign','format','user:%s','handshake','query','find','ChatInteractions','MailInteraction','MailInteractions','FaxInteractions','SmsInteraction'];(function(_0x1dae31,_0xb467ef){var _0x3827f4=function(_0x1dc606){while(--_0x1dc606){_0x1dae31['push'](_0x1dae31['shift']());}};_0x3827f4(++_0xb467ef);}(_0x9a6d,0x10b));var _0xd9a6=function(_0x4043cf,_0x505cf9){_0x4043cf=_0x4043cf-0x0;var _0x4a6d0d=_0x9a6d[_0x4043cf];return _0x4a6d0d;};'use strict';var _=require(_0xd9a6('0x0'));var util=require(_0xd9a6('0x1'));var BPromise=require('bluebird');var db=require(_0xd9a6('0x2'))['db'];var config=require(_0xd9a6('0x3'));var queryQueues={'attributes':['id',_0xd9a6('0x4')],'include':[{'as':_0xd9a6('0x5'),'model':db[_0xd9a6('0x6')],'attributes':['id','name',_0xd9a6('0x7')],'raw':!![],'where':{'role':_0xd9a6('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xd9a6('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xd9a6('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xd9a6('0x4')],'where':{'role':_0xd9a6('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0xd9a6('0x9')],'where':{'type':_0xd9a6('0xa')}};function getAssociatedResources(_0x3b9443,_0x271c48,_0x16f656){return db['UserProfileSection'][_0xd9a6('0xb')]({'where':{'name':_0x3b9443,'userProfileId':_0x271c48},'raw':!![]})[_0xd9a6('0xc')](function(_0x261b31){if(_0x261b31){if(_0x261b31[_0xd9a6('0xd')]){switch(_0x3b9443){case _0xd9a6('0xe'):case _0xd9a6('0xf'):case _0xd9a6('0x10'):case _0xd9a6('0x11'):case _0xd9a6('0x12'):case'OpenchannelQueues':case _0xd9a6('0x13'):return db[_0x16f656][_0xd9a6('0x14')](queryQueues);case _0xd9a6('0x15'):return db[_0x16f656]['findAll'](queryTelephones);case'Trunks':return db[_0x16f656][_0xd9a6('0x14')](queryTrunks);case _0xd9a6('0x16'):return db[_0x16f656]['findAll'](queryCampaigns);}}else{return db[_0xd9a6('0x17')][_0xd9a6('0x14')]({'attributes':[_0xd9a6('0x18')],'where':{'sectionId':_0x261b31['id']},'raw':!![]})[_0xd9a6('0xc')](function(_0x2ec958){if(_0x2ec958){var _0xef2e8a={'where':{'id':_[_0xd9a6('0x19')](_0x2ec958,_0xd9a6('0x18'))},'raw':!![]};switch(_0x16f656){case'User':_0xef2e8a[_0xd9a6('0x1a')][_0xd9a6('0x7')]=_0xd9a6('0x1b');break;case _0xd9a6('0x1c'):_0xef2e8a[_0xd9a6('0x1a')][_0xd9a6('0x9')]=_0xd9a6('0xa');break;}return db[_0x16f656]['findAll'](_0xef2e8a);}else{return[];}});}}else{return[];}})[_0xd9a6('0xc')](function(_0xbabe69){return _0xbabe69;});}function joinOrLeaveQueues(_0x4beb16,_0x3a68d8,_0x1613b3,_0x36252f){_0x4beb16[_0x3a68d8](util[_0xd9a6('0x1d')]('%s:queue:%s',_0x1613b3,_0x36252f[_0xd9a6('0x4')]));if(_0x36252f[_0xd9a6('0x5')]){for(var _0x48f346=0x0;_0x48f346<_0x36252f[_0xd9a6('0x5')]['length'];_0x48f346+=0x1){_0x4beb16[_0x3a68d8](util[_0xd9a6('0x1d')](_0xd9a6('0x1e'),_0x36252f[_0xd9a6('0x5')][_0x48f346]['name']));}}}function joinOrLeave(_0xda6448,_0x458ac6,_0x2e1c26){var _0x443a3c;if(_0xda6448[_0xd9a6('0x1f')][_0xd9a6('0x20')]['id']){db[_0xd9a6('0x6')][_0xd9a6('0x21')]({'attributes':['id',_0xd9a6('0x4'),_0xd9a6('0x7'),'userProfileId'],'where':{'id':_0xda6448[_0xd9a6('0x1f')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0xd9a6('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xd9a6('0x23')],'as':_0xd9a6('0x24'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0xd9a6('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xd9a6('0x26')],'as':_0xd9a6('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xd9a6('0x28')],'as':_0xd9a6('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0xd9a6('0x2a')],'as':_0xd9a6('0x2b'),'attributes':['id'],'raw':!![]}]})[_0xd9a6('0xc')](function(_0x17e3e3){if(_0x17e3e3){_0x443a3c=_0x17e3e3;_0xda6448[_0x458ac6](util[_0xd9a6('0x1d')]('user:%s',_0x17e3e3['name']));var _0x599e4a=[];switch(_0x17e3e3[_0xd9a6('0x7')]){case'admin':_0xda6448[_0x458ac6]('voice:inbound');_0xda6448[_0x458ac6]('voice:outbound');if(queryQueues[_0xd9a6('0x2c')]('include')){delete queryQueues[_0xd9a6('0x2d')];}_0x599e4a['push'](db[_0xd9a6('0x2e')][_0xd9a6('0x14')](queryQueues));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x30')]['findAll'](queryQueues));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x31')][_0xd9a6('0x14')](queryQueues));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x32')][_0xd9a6('0x14')](queryQueues));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x33')]['findAll'](queryQueues));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x34')][_0xd9a6('0x14')](queryQueues));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x35')][_0xd9a6('0x14')](queryQueues));_0x599e4a['push'](db[_0xd9a6('0x6')][_0xd9a6('0x14')](queryTelephones));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x36')][_0xd9a6('0x14')](queryTrunks));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x1c')][_0xd9a6('0x14')](queryCampaigns));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x6')]['findAll'](queryAgents));break;case'user':_0xda6448[_0x458ac6]('voice:inbound');_0xda6448[_0x458ac6](_0xd9a6('0x37'));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources(_0xd9a6('0xe'),_0x17e3e3['userProfileId'],'VoiceQueue'));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources(_0xd9a6('0xf'),_0x17e3e3[_0xd9a6('0x38')],_0xd9a6('0x30')));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources(_0xd9a6('0x10'),_0x17e3e3['userProfileId'],_0xd9a6('0x31')));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources(_0xd9a6('0x11'),_0x17e3e3[_0xd9a6('0x38')],_0xd9a6('0x32')));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources(_0xd9a6('0x12'),_0x17e3e3[_0xd9a6('0x38')],_0xd9a6('0x33')));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources(_0xd9a6('0x39'),_0x17e3e3['userProfileId'],_0xd9a6('0x34')));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources('WhatsappQueues',_0x17e3e3[_0xd9a6('0x38')],'WhatsappQueue'));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources('Telephones',_0x17e3e3['userProfileId'],_0xd9a6('0x6')));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources(_0xd9a6('0x3a'),_0x17e3e3[_0xd9a6('0x38')],'Trunk'));_0x599e4a[_0xd9a6('0x2f')](getAssociatedResources(_0xd9a6('0x16'),_0x17e3e3[_0xd9a6('0x38')],_0xd9a6('0x1c')));_0x599e4a[_0xd9a6('0x2f')](db[_0xd9a6('0x6')][_0xd9a6('0x14')](queryAgents));break;case _0xd9a6('0x8'):_0xda6448[_0x458ac6](_0xd9a6('0x3b'));_0xda6448[_0x458ac6](_0xd9a6('0x37'));_0x599e4a[_0xd9a6('0x2f')](_0x17e3e3[_0xd9a6('0x3c')]({'attributes':['id','name']}));_0x599e4a[_0xd9a6('0x2f')](_0x17e3e3[_0xd9a6('0x3d')]({'attributes':['id','name']}));_0x599e4a['push'](_0x17e3e3[_0xd9a6('0x3e')]({'attributes':['id',_0xd9a6('0x4')]}));_0x599e4a['push'](_0x17e3e3[_0xd9a6('0x3f')]({'attributes':['id',_0xd9a6('0x4')]}));_0x599e4a[_0xd9a6('0x2f')](_0x17e3e3[_0xd9a6('0x40')]({'attributes':['id',_0xd9a6('0x4')]}));_0x599e4a[_0xd9a6('0x2f')](_0x17e3e3[_0xd9a6('0x41')]({'attributes':['id',_0xd9a6('0x4')]}));_0x599e4a[_0xd9a6('0x2f')](_0x17e3e3[_0xd9a6('0x42')]({'attributes':['id',_0xd9a6('0x4')]}));break;}return BPromise[_0xd9a6('0x43')](_0x599e4a);}})['then'](function(_0x20acd5){if(_0x20acd5&&_0x20acd5[_0xd9a6('0x44')]){for(var _0x7a5adf=0x0;_0x7a5adf<_0x20acd5[_0xd9a6('0x44')];_0x7a5adf+=0x1){for(var _0x25ffef=0x0;_0x25ffef<_0x20acd5[_0x7a5adf][_0xd9a6('0x44')];_0x25ffef+=0x1){switch(_0x7a5adf){case 0x0:joinOrLeaveQueues(_0xda6448,_0x458ac6,_0xd9a6('0x45'),_0x20acd5[_0x7a5adf][_0x25ffef]);break;case 0x1:joinOrLeaveQueues(_0xda6448,_0x458ac6,_0xd9a6('0x46'),_0x20acd5[_0x7a5adf][_0x25ffef]);break;case 0x2:joinOrLeaveQueues(_0xda6448,_0x458ac6,_0xd9a6('0x47'),_0x20acd5[_0x7a5adf][_0x25ffef]);break;case 0x3:joinOrLeaveQueues(_0xda6448,_0x458ac6,_0xd9a6('0x48'),_0x20acd5[_0x7a5adf][_0x25ffef]);break;case 0x4:joinOrLeaveQueues(_0xda6448,_0x458ac6,_0xd9a6('0x49'),_0x20acd5[_0x7a5adf][_0x25ffef]);break;case 0x5:joinOrLeaveQueues(_0xda6448,_0x458ac6,_0xd9a6('0x4a'),_0x20acd5[_0x7a5adf][_0x25ffef]);break;case 0x6:joinOrLeaveQueues(_0xda6448,_0x458ac6,_0xd9a6('0x4b'),_0x20acd5[_0x7a5adf][_0x25ffef]);break;case 0x7:if(_0x443a3c[_0xd9a6('0x7')]!==_0xd9a6('0x8'))_0xda6448[_0x458ac6](util['format']('telephone:%s',_0x20acd5[_0x7a5adf][_0x25ffef][_0xd9a6('0x4')]));break;case 0x8:if(_0x443a3c[_0xd9a6('0x7')]!=='agent')_0xda6448[_0x458ac6](util[_0xd9a6('0x1d')]('trunk:%s',_0x20acd5[_0x7a5adf][_0x25ffef][_0xd9a6('0x4')]));break;case 0x9:if(_0x443a3c[_0xd9a6('0x7')]!==_0xd9a6('0x8'))_0xda6448[_0x458ac6](util[_0xd9a6('0x1d')](_0xd9a6('0x4c'),_0x20acd5[_0x7a5adf][_0x25ffef][_0xd9a6('0x9')],_0x20acd5[_0x7a5adf][_0x25ffef][_0xd9a6('0x4')]));break;case 0xa:_0xda6448[_0x458ac6](util[_0xd9a6('0x1d')]('user:%s',_0x20acd5[_0x7a5adf][_0x25ffef][_0xd9a6('0x4')]));break;}}}}})[_0xd9a6('0xc')](function(){if(_0x458ac6===_0xd9a6('0x4d')){var _0x3114d0=_[_0xd9a6('0x19')](_0x443a3c[_0xd9a6('0x22')],'id');return _0x443a3c[_0xd9a6('0x4e')](_0x3114d0)[_0xd9a6('0xc')](function(){for(var _0x32c9ae=0x0;_0x32c9ae<_0x3114d0[_0xd9a6('0x44')];_0x32c9ae+=0x1){_0x2e1c26[_0xd9a6('0x4f')](_0xd9a6('0x50'),{'ChatInteractionId':Number(_0x3114d0[_0x32c9ae]),'UserId':Number(_0x443a3c['id'])});}});}})[_0xd9a6('0xc')](function(){if(_0x458ac6===_0xd9a6('0x4d')){var _0x2c4ebf=_['map'](_0x443a3c[_0xd9a6('0x24')],'id');return _0x443a3c[_0xd9a6('0x51')](_0x2c4ebf)[_0xd9a6('0xc')](function(){for(var _0x57a706=0x0;_0x57a706<_0x2c4ebf['length'];_0x57a706+=0x1){_0x2e1c26[_0xd9a6('0x4f')](_0xd9a6('0x52'),{'MailInteractionId':Number(_0x2c4ebf[_0x57a706]),'UserId':Number(_0x443a3c['id'])});}});}})[_0xd9a6('0xc')](function(){if(_0x458ac6===_0xd9a6('0x4d')){var _0xc9079d=_['map'](_0x443a3c[_0xd9a6('0x25')],'id');return _0x443a3c['removeFaxInteractions'](_0xc9079d)[_0xd9a6('0xc')](function(){for(var _0x2e8c04=0x0;_0x2e8c04<_0xc9079d[_0xd9a6('0x44')];_0x2e8c04+=0x1){_0x2e1c26[_0xd9a6('0x4f')](_0xd9a6('0x53'),{'FaxInteractionId':Number(_0xc9079d[_0x2e8c04]),'UserId':Number(_0x443a3c['id'])});}});}})[_0xd9a6('0xc')](function(){if(_0x458ac6==='leave'){var _0x30f8e3=_[_0xd9a6('0x19')](_0x443a3c[_0xd9a6('0x27')],'id');return _0x443a3c[_0xd9a6('0x54')](_0x30f8e3)[_0xd9a6('0xc')](function(){for(var _0x138515=0x0;_0x138515<_0x30f8e3['length'];_0x138515+=0x1){_0x2e1c26[_0xd9a6('0x4f')](_0xd9a6('0x55'),{'SmsInteractionId':Number(_0x30f8e3[_0x138515]),'UserId':Number(_0x443a3c['id'])});}});}})['then'](function(){if(_0x458ac6===_0xd9a6('0x4d')){var _0x18355b=_[_0xd9a6('0x19')](_0x443a3c[_0xd9a6('0x29')],'id');return _0x443a3c['removeOpenchannelInteractions'](_0x18355b)[_0xd9a6('0xc')](function(){for(var _0x2ab979=0x0;_0x2ab979<_0x18355b['length'];_0x2ab979+=0x1){_0x2e1c26['emit'](_0xd9a6('0x56'),{'OpenchannelInteractionId':Number(_0x18355b[_0x2ab979]),'UserId':Number(_0x443a3c['id'])});}});}})[_0xd9a6('0xc')](function(){if(_0x458ac6===_0xd9a6('0x4d')){var _0x4b665a=_[_0xd9a6('0x19')](_0x443a3c[_0xd9a6('0x2b')],'id');return _0x443a3c[_0xd9a6('0x57')](_0x4b665a)[_0xd9a6('0xc')](function(){for(var _0x91a68a=0x0;_0x91a68a<_0x4b665a[_0xd9a6('0x44')];_0x91a68a+=0x1){_0x2e1c26['emit'](_0xd9a6('0x58'),{'WhatsappInteractionId':Number(_0x4b665a[_0x91a68a]),'UserId':Number(_0x443a3c['id'])});}});}})[_0xd9a6('0x59')](function(_0x58f7d8){_0xda6448[_0xd9a6('0x5a')](_0x58f7d8);});}}function onDisconnect(_0x3e42b8,_0x40b16b){joinOrLeave(_0x3e42b8,_0xd9a6('0x4d'),_0x40b16b);}function onConnect(_0x4ab5ab){joinOrLeave(_0x4ab5ab,'join');}exports[_0xd9a6('0x5b')]=function(_0x46f6b5){_0x46f6b5['on'](_0xd9a6('0x5c'),function(_0x4b07f3){_0x4b07f3[_0xd9a6('0x5d')](0x0);_0x4b07f3['address']=_0x4b07f3['request'][_0xd9a6('0x5c')][_0xd9a6('0x5e')]+':'+_0x4b07f3[_0xd9a6('0x5f')][_0xd9a6('0x5c')][_0xd9a6('0x60')];_0x4b07f3[_0xd9a6('0x61')]=new Date();_0x4b07f3[_0xd9a6('0x5a')]=function(_0x2fe37f){console[_0xd9a6('0x5a')](_0xd9a6('0x62')+_0x4b07f3[_0xd9a6('0x63')]['name']+'['+_0x4b07f3['address']+']',_0x2fe37f);};_0x4b07f3['on'](_0xd9a6('0x64'),function(){onDisconnect(_0x4b07f3,_0x46f6b5);_0x4b07f3[_0xd9a6('0x5a')](_0xd9a6('0x65'));});onConnect(_0x4b07f3);_0x4b07f3[_0xd9a6('0x5a')]('CONNECTED');});};