Built motion from commit 06a208af.|2.6.26
[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 _0x14c5=['role','agent','telephone','type','ivr','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Trunks','UserProfileResource','resourceId','map','where','Campaign','format','%s:queue:%s','user:%s','handshake','userProfileId','query','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:inbound','FaxQueue','WhatsappQueues','IvrCampaigns','voice:outbound','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','chat','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','emit','removeMailInteractions','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','catch','log','join','setMaxListeners','address','request','connection','remoteAddress','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','./environment','name','Agents','User'];(function(_0x1fe8be,_0x5e7860){var _0x1449bb=function(_0x17b23e){while(--_0x17b23e){_0x1fe8be['push'](_0x1fe8be['shift']());}};_0x1449bb(++_0x5e7860);}(_0x14c5,0x1de));var _0x514c=function(_0x69ad20,_0x49e707){_0x69ad20=_0x69ad20-0x0;var _0x500b1b=_0x14c5[_0x69ad20];return _0x500b1b;};'use strict';var _=require(_0x514c('0x0'));var util=require(_0x514c('0x1'));var BPromise=require(_0x514c('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x514c('0x3'));var queryQueues={'attributes':['id',_0x514c('0x4')],'include':[{'as':_0x514c('0x5'),'model':db[_0x514c('0x6')],'attributes':['id',_0x514c('0x4'),_0x514c('0x7')],'raw':!![],'where':{'role':_0x514c('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x514c('0x4')],'where':{'role':_0x514c('0x9')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x514c('0x4')],'where':{'role':_0x514c('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x514c('0x4'),_0x514c('0xa')],'where':{'type':_0x514c('0xb')}};function getAssociatedResources(_0xfe0593,_0x3a5b1d,_0x11895f){return db['UserProfileSection'][_0x514c('0xc')]({'where':{'name':_0xfe0593,'userProfileId':_0x3a5b1d},'raw':!![]})[_0x514c('0xd')](function(_0x1a84e5){if(_0x1a84e5){if(_0x1a84e5[_0x514c('0xe')]){switch(_0xfe0593){case _0x514c('0xf'):case _0x514c('0x10'):case _0x514c('0x11'):case _0x514c('0x12'):case _0x514c('0x13'):case _0x514c('0x14'):case'WhatsappQueues':return db[_0x11895f][_0x514c('0x15')](queryQueues);case'Telephones':return db[_0x11895f][_0x514c('0x15')](queryTelephones);case _0x514c('0x16'):return db[_0x11895f][_0x514c('0x15')](queryTrunks);case'IvrCampaigns':return db[_0x11895f][_0x514c('0x15')](queryCampaigns);}}else{return db[_0x514c('0x17')][_0x514c('0x15')]({'attributes':[_0x514c('0x18')],'where':{'sectionId':_0x1a84e5['id']},'raw':!![]})['then'](function(_0x306b5b){if(_0x306b5b){var _0x28d9ff={'where':{'id':_[_0x514c('0x19')](_0x306b5b,_0x514c('0x18'))},'raw':!![]};switch(_0x11895f){case _0x514c('0x6'):_0x28d9ff[_0x514c('0x1a')][_0x514c('0x7')]='telephone';break;case _0x514c('0x1b'):_0x28d9ff[_0x514c('0x1a')][_0x514c('0xa')]='ivr';break;}return db[_0x11895f][_0x514c('0x15')](_0x28d9ff);}else{return[];}});}}else{return[];}})[_0x514c('0xd')](function(_0x560703){return _0x560703;});}function joinOrLeaveQueues(_0x52ba4f,_0x281622,_0x461d55,_0x2848d8){_0x52ba4f[_0x281622](util[_0x514c('0x1c')](_0x514c('0x1d'),_0x461d55,_0x2848d8[_0x514c('0x4')]));if(_0x2848d8[_0x514c('0x5')]){for(var _0x554cd0=0x0;_0x554cd0<_0x2848d8[_0x514c('0x5')]['length'];_0x554cd0+=0x1){_0x52ba4f[_0x281622](util['format'](_0x514c('0x1e'),_0x2848d8['Agents'][_0x554cd0][_0x514c('0x4')]));}}}function joinOrLeave(_0x1a7a55,_0x2f3863,_0x1be1fe){var _0x39f5d4;if(_0x1a7a55[_0x514c('0x1f')]['query']['id']){db[_0x514c('0x6')]['find']({'attributes':['id',_0x514c('0x4'),_0x514c('0x7'),_0x514c('0x20')],'where':{'id':_0x1a7a55[_0x514c('0x1f')][_0x514c('0x21')]['id']},'include':[{'model':db[_0x514c('0x22')],'as':_0x514c('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x514c('0x24')],'as':_0x514c('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x514c('0x26')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x514c('0x27')],'as':_0x514c('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x514c('0x29')],'as':_0x514c('0x2a'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x514c('0x2b'),'attributes':['id'],'raw':!![]}]})[_0x514c('0xd')](function(_0x2e2bec){if(_0x2e2bec){_0x39f5d4=_0x2e2bec;_0x1a7a55[_0x2f3863](util[_0x514c('0x1c')](_0x514c('0x1e'),_0x2e2bec['name']));var _0x22994a=[];switch(_0x2e2bec[_0x514c('0x7')]){case _0x514c('0x2c'):_0x1a7a55[_0x2f3863]('voice:inbound');_0x1a7a55[_0x2f3863]('voice:outbound');if(queryQueues[_0x514c('0x2d')](_0x514c('0x2e'))){delete queryQueues[_0x514c('0x2e')];}_0x22994a[_0x514c('0x2f')](db[_0x514c('0x30')]['findAll'](queryQueues));_0x22994a[_0x514c('0x2f')](db[_0x514c('0x31')]['findAll'](queryQueues));_0x22994a['push'](db['FaxQueue'][_0x514c('0x15')](queryQueues));_0x22994a[_0x514c('0x2f')](db[_0x514c('0x32')][_0x514c('0x15')](queryQueues));_0x22994a[_0x514c('0x2f')](db[_0x514c('0x33')]['findAll'](queryQueues));_0x22994a[_0x514c('0x2f')](db[_0x514c('0x34')][_0x514c('0x15')](queryQueues));_0x22994a[_0x514c('0x2f')](db[_0x514c('0x35')][_0x514c('0x15')](queryQueues));_0x22994a['push'](db[_0x514c('0x6')][_0x514c('0x15')](queryTelephones));_0x22994a['push'](db[_0x514c('0x36')]['findAll'](queryTrunks));_0x22994a[_0x514c('0x2f')](db[_0x514c('0x1b')][_0x514c('0x15')](queryCampaigns));_0x22994a[_0x514c('0x2f')](db[_0x514c('0x6')][_0x514c('0x15')](queryAgents));break;case _0x514c('0x37'):_0x1a7a55[_0x2f3863](_0x514c('0x38'));_0x1a7a55[_0x2f3863]('voice:outbound');_0x22994a['push'](getAssociatedResources(_0x514c('0xf'),_0x2e2bec[_0x514c('0x20')],_0x514c('0x30')));_0x22994a['push'](getAssociatedResources('ChatQueues',_0x2e2bec[_0x514c('0x20')],_0x514c('0x31')));_0x22994a['push'](getAssociatedResources(_0x514c('0x11'),_0x2e2bec[_0x514c('0x20')],_0x514c('0x39')));_0x22994a[_0x514c('0x2f')](getAssociatedResources(_0x514c('0x12'),_0x2e2bec['userProfileId'],'SmsQueue'));_0x22994a['push'](getAssociatedResources(_0x514c('0x13'),_0x2e2bec[_0x514c('0x20')],_0x514c('0x33')));_0x22994a[_0x514c('0x2f')](getAssociatedResources(_0x514c('0x14'),_0x2e2bec[_0x514c('0x20')],'OpenchannelQueue'));_0x22994a[_0x514c('0x2f')](getAssociatedResources(_0x514c('0x3a'),_0x2e2bec['userProfileId'],'WhatsappQueue'));_0x22994a[_0x514c('0x2f')](getAssociatedResources('Telephones',_0x2e2bec[_0x514c('0x20')],_0x514c('0x6')));_0x22994a[_0x514c('0x2f')](getAssociatedResources(_0x514c('0x16'),_0x2e2bec['userProfileId'],_0x514c('0x36')));_0x22994a[_0x514c('0x2f')](getAssociatedResources(_0x514c('0x3b'),_0x2e2bec[_0x514c('0x20')],_0x514c('0x1b')));_0x22994a[_0x514c('0x2f')](db['User'][_0x514c('0x15')](queryAgents));break;case _0x514c('0x8'):_0x1a7a55[_0x2f3863](_0x514c('0x38'));_0x1a7a55[_0x2f3863](_0x514c('0x3c'));_0x22994a[_0x514c('0x2f')](_0x2e2bec[_0x514c('0x3d')]({'attributes':['id','name']}));_0x22994a[_0x514c('0x2f')](_0x2e2bec[_0x514c('0x3e')]({'attributes':['id','name']}));_0x22994a[_0x514c('0x2f')](_0x2e2bec['getFaxQueues']({'attributes':['id','name']}));_0x22994a['push'](_0x2e2bec[_0x514c('0x3f')]({'attributes':['id','name']}));_0x22994a['push'](_0x2e2bec[_0x514c('0x40')]({'attributes':['id',_0x514c('0x4')]}));_0x22994a[_0x514c('0x2f')](_0x2e2bec[_0x514c('0x41')]({'attributes':['id',_0x514c('0x4')]}));_0x22994a[_0x514c('0x2f')](_0x2e2bec[_0x514c('0x42')]({'attributes':['id','name']}));break;}return BPromise[_0x514c('0x43')](_0x22994a);}})[_0x514c('0xd')](function(_0x3971a3){if(_0x3971a3&&_0x3971a3[_0x514c('0x44')]){for(var _0x5c688c=0x0;_0x5c688c<_0x3971a3[_0x514c('0x44')];_0x5c688c+=0x1){for(var _0x39fe9b=0x0;_0x39fe9b<_0x3971a3[_0x5c688c][_0x514c('0x44')];_0x39fe9b+=0x1){switch(_0x5c688c){case 0x0:joinOrLeaveQueues(_0x1a7a55,_0x2f3863,'voice',_0x3971a3[_0x5c688c][_0x39fe9b]);break;case 0x1:joinOrLeaveQueues(_0x1a7a55,_0x2f3863,_0x514c('0x45'),_0x3971a3[_0x5c688c][_0x39fe9b]);break;case 0x2:joinOrLeaveQueues(_0x1a7a55,_0x2f3863,'fax',_0x3971a3[_0x5c688c][_0x39fe9b]);break;case 0x3:joinOrLeaveQueues(_0x1a7a55,_0x2f3863,'sms',_0x3971a3[_0x5c688c][_0x39fe9b]);break;case 0x4:joinOrLeaveQueues(_0x1a7a55,_0x2f3863,'mail',_0x3971a3[_0x5c688c][_0x39fe9b]);break;case 0x5:joinOrLeaveQueues(_0x1a7a55,_0x2f3863,_0x514c('0x46'),_0x3971a3[_0x5c688c][_0x39fe9b]);break;case 0x6:joinOrLeaveQueues(_0x1a7a55,_0x2f3863,_0x514c('0x47'),_0x3971a3[_0x5c688c][_0x39fe9b]);break;case 0x7:if(_0x39f5d4[_0x514c('0x7')]!==_0x514c('0x8'))_0x1a7a55[_0x2f3863](util[_0x514c('0x1c')](_0x514c('0x48'),_0x3971a3[_0x5c688c][_0x39fe9b][_0x514c('0x4')]));break;case 0x8:if(_0x39f5d4[_0x514c('0x7')]!==_0x514c('0x8'))_0x1a7a55[_0x2f3863](util[_0x514c('0x1c')]('trunk:%s',_0x3971a3[_0x5c688c][_0x39fe9b][_0x514c('0x4')]));break;case 0x9:if(_0x39f5d4[_0x514c('0x7')]!=='agent')_0x1a7a55[_0x2f3863](util['format'](_0x514c('0x49'),_0x3971a3[_0x5c688c][_0x39fe9b][_0x514c('0xa')],_0x3971a3[_0x5c688c][_0x39fe9b][_0x514c('0x4')]));break;case 0xa:_0x1a7a55[_0x2f3863](util[_0x514c('0x1c')](_0x514c('0x1e'),_0x3971a3[_0x5c688c][_0x39fe9b][_0x514c('0x4')]));break;}}}}})[_0x514c('0xd')](function(){if(_0x2f3863===_0x514c('0x4a')){var _0x466c80=_[_0x514c('0x19')](_0x39f5d4['ChatInteractions'],'id');return _0x39f5d4['removeChatInteractions'](_0x466c80)['then'](function(){for(var _0x17ee89=0x0;_0x17ee89<_0x466c80[_0x514c('0x44')];_0x17ee89+=0x1){_0x1be1fe[_0x514c('0x4b')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x466c80[_0x17ee89]),'UserId':Number(_0x39f5d4['id'])});}});}})['then'](function(){if(_0x2f3863===_0x514c('0x4a')){var _0x53bc47=_['map'](_0x39f5d4[_0x514c('0x25')],'id');return _0x39f5d4[_0x514c('0x4c')](_0x53bc47)[_0x514c('0xd')](function(){for(var _0xd162b2=0x0;_0xd162b2<_0x53bc47[_0x514c('0x44')];_0xd162b2+=0x1){_0x1be1fe['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x53bc47[_0xd162b2]),'UserId':Number(_0x39f5d4['id'])});}});}})[_0x514c('0xd')](function(){if(_0x2f3863===_0x514c('0x4a')){var _0x59c3d7=_[_0x514c('0x19')](_0x39f5d4[_0x514c('0x4d')],'id');return _0x39f5d4[_0x514c('0x4e')](_0x59c3d7)[_0x514c('0xd')](function(){for(var _0x379532=0x0;_0x379532<_0x59c3d7[_0x514c('0x44')];_0x379532+=0x1){_0x1be1fe[_0x514c('0x4b')](_0x514c('0x4f'),{'FaxInteractionId':Number(_0x59c3d7[_0x379532]),'UserId':Number(_0x39f5d4['id'])});}});}})[_0x514c('0xd')](function(){if(_0x2f3863===_0x514c('0x4a')){var _0x47eb09=_[_0x514c('0x19')](_0x39f5d4[_0x514c('0x28')],'id');return _0x39f5d4[_0x514c('0x50')](_0x47eb09)[_0x514c('0xd')](function(){for(var _0x1e83b6=0x0;_0x1e83b6<_0x47eb09[_0x514c('0x44')];_0x1e83b6+=0x1){_0x1be1fe['emit'](_0x514c('0x51'),{'SmsInteractionId':Number(_0x47eb09[_0x1e83b6]),'UserId':Number(_0x39f5d4['id'])});}});}})[_0x514c('0xd')](function(){if(_0x2f3863===_0x514c('0x4a')){var _0x1b758e=_[_0x514c('0x19')](_0x39f5d4[_0x514c('0x2a')],'id');return _0x39f5d4[_0x514c('0x52')](_0x1b758e)[_0x514c('0xd')](function(){for(var _0x40b1ff=0x0;_0x40b1ff<_0x1b758e[_0x514c('0x44')];_0x40b1ff+=0x1){_0x1be1fe['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x1b758e[_0x40b1ff]),'UserId':Number(_0x39f5d4['id'])});}});}})['then'](function(){if(_0x2f3863===_0x514c('0x4a')){var _0x351fe2=_['map'](_0x39f5d4[_0x514c('0x2b')],'id');return _0x39f5d4[_0x514c('0x53')](_0x351fe2)[_0x514c('0xd')](function(){for(var _0x455134=0x0;_0x455134<_0x351fe2[_0x514c('0x44')];_0x455134+=0x1){_0x1be1fe[_0x514c('0x4b')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x351fe2[_0x455134]),'UserId':Number(_0x39f5d4['id'])});}});}})[_0x514c('0x54')](function(_0xe1ec7b){_0x1a7a55[_0x514c('0x55')](_0xe1ec7b);});}}function onDisconnect(_0x882ac7,_0x3a8853){joinOrLeave(_0x882ac7,_0x514c('0x4a'),_0x3a8853);}function onConnect(_0x2b19be){joinOrLeave(_0x2b19be,_0x514c('0x56'));}exports['default']=function(_0x3ff5a9){_0x3ff5a9['on']('connection',function(_0xf5875){_0xf5875[_0x514c('0x57')](0x0);_0xf5875[_0x514c('0x58')]=_0xf5875[_0x514c('0x59')][_0x514c('0x5a')][_0x514c('0x5b')]+':'+_0xf5875[_0x514c('0x59')][_0x514c('0x5a')]['remotePort'];_0xf5875['connectedAt']=new Date();_0xf5875['log']=function(_0x408da4){console[_0x514c('0x55')](_0x514c('0x5c')+_0xf5875[_0x514c('0x5d')][_0x514c('0x4')]+'['+_0xf5875[_0x514c('0x58')]+']',_0x408da4);};_0xf5875['on'](_0x514c('0x5e'),function(){onDisconnect(_0xf5875,_0x3ff5a9);_0xf5875['log'](_0x514c('0x5f'));});onConnect(_0xf5875);_0xf5875[_0x514c('0x55')](_0x514c('0x60'));});};