2d648948e642dbc979da072e0d361e29083b0c68
[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 _0xf628=['trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','User','name','role','agent','ivr','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','findAll','Telephones','Trunks','IvrCampaigns','then','map','resourceId','telephone','type','format','user:%s','Agents','handshake','query','userProfileId','ChatInteraction','ChatInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Campaign','ChatQueues','MailQueues','OpenchannelQueues','OpenchannelQueue','getVoiceQueues','getChatQueues','getSmsQueues','getOpenchannelQueues','getWhatsappQueues','all','length','fax','sms','mail','openchannel','whatsapp','telephone:%s'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xf628,0x7f));var _0x8f62=function(_0x55ea56,_0x4a7b79){_0x55ea56=_0x55ea56-0x0;var _0x88315c=_0xf628[_0x55ea56];return _0x88315c;};'use strict';var _=require(_0x8f62('0x0'));var util=require(_0x8f62('0x1'));var BPromise=require(_0x8f62('0x2'));var db=require(_0x8f62('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0x8f62('0x4')],'attributes':['id',_0x8f62('0x5'),_0x8f62('0x6')],'raw':!![],'where':{'role':_0x8f62('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x8f62('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x8f62('0x5')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x8f62('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x8f62('0x5'),'type'],'where':{'type':_0x8f62('0x8')}};function getAssociatedResources(_0x230f8e,_0xf1c4b0,_0x4ef856){return db['UserProfileSection']['findOne']({'where':{'name':_0x230f8e,'userProfileId':_0xf1c4b0},'raw':!![]})['then'](function(_0x4b1e43){if(_0x4b1e43){if(_0x4b1e43[_0x8f62('0x9')]){switch(_0x230f8e){case _0x8f62('0xa'):case'ChatQueues':case _0x8f62('0xb'):case _0x8f62('0xc'):case'MailQueues':case'OpenchannelQueues':case'WhatsappQueues':return db[_0x4ef856][_0x8f62('0xd')](queryQueues);case _0x8f62('0xe'):return db[_0x4ef856][_0x8f62('0xd')](queryTelephones);case _0x8f62('0xf'):return db[_0x4ef856][_0x8f62('0xd')](queryTrunks);case _0x8f62('0x10'):return db[_0x4ef856][_0x8f62('0xd')](queryCampaigns);}}else{return db['UserProfileResource'][_0x8f62('0xd')]({'attributes':['resourceId'],'where':{'sectionId':_0x4b1e43['id']},'raw':!![]})[_0x8f62('0x11')](function(_0x58a7d7){if(_0x58a7d7){var _0xbe2da7={'where':{'id':_[_0x8f62('0x12')](_0x58a7d7,_0x8f62('0x13'))},'raw':!![]};switch(_0x4ef856){case _0x8f62('0x4'):_0xbe2da7['where'][_0x8f62('0x6')]=_0x8f62('0x14');break;case'Campaign':_0xbe2da7['where'][_0x8f62('0x15')]='ivr';break;}return db[_0x4ef856][_0x8f62('0xd')](_0xbe2da7);}else{return[];}});}}else{return[];}})['then'](function(_0x109d91){return _0x109d91;});}function joinOrLeaveQueues(_0xde5808,_0xb8d46a,_0x40b1e6,_0x4a854f){_0xde5808[_0xb8d46a](util[_0x8f62('0x16')]('%s:queue:%s',_0x40b1e6,_0x4a854f['name']));if(_0x4a854f['Agents']){for(var _0x398c08=0x0;_0x398c08<_0x4a854f['Agents']['length'];_0x398c08+=0x1){_0xde5808[_0xb8d46a](util['format'](_0x8f62('0x17'),_0x4a854f[_0x8f62('0x18')][_0x398c08][_0x8f62('0x5')]));}}}function joinOrLeave(_0x4aee91,_0x50f9cd,_0x329dae){var _0x4a0935;if(_0x4aee91[_0x8f62('0x19')][_0x8f62('0x1a')]['id']){db['User']['find']({'attributes':['id','name','role',_0x8f62('0x1b')],'where':{'id':_0x4aee91[_0x8f62('0x19')]['query']['id']},'include':[{'model':db[_0x8f62('0x1c')],'as':_0x8f62('0x1d'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x8f62('0x1e')],'as':_0x8f62('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0x8f62('0x20')],'as':_0x8f62('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x8f62('0x22')],'as':_0x8f62('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x8f62('0x24')],'as':_0x8f62('0x25'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x39d684){if(_0x39d684){_0x4a0935=_0x39d684;_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')]('user:%s',_0x39d684[_0x8f62('0x5')]));var _0x5f2e12=[];switch(_0x39d684[_0x8f62('0x6')]){case _0x8f62('0x26'):_0x4aee91[_0x50f9cd](_0x8f62('0x27'));_0x4aee91[_0x50f9cd](_0x8f62('0x28'));if(queryQueues[_0x8f62('0x29')]('include')){delete queryQueues[_0x8f62('0x2a')];}_0x5f2e12[_0x8f62('0x2b')](db['VoiceQueue'][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x2c')][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x2d')][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x2e')][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x2f')][_0x8f62('0xd')](queryQueues));_0x5f2e12['push'](db['OpenchannelQueue'][_0x8f62('0xd')](queryQueues));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x30')][_0x8f62('0xd')](queryQueues));_0x5f2e12['push'](db[_0x8f62('0x4')][_0x8f62('0xd')](queryTelephones));_0x5f2e12[_0x8f62('0x2b')](db['Trunk'][_0x8f62('0xd')](queryTrunks));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x31')][_0x8f62('0xd')](queryCampaigns));_0x5f2e12[_0x8f62('0x2b')](db[_0x8f62('0x4')]['findAll'](queryAgents));break;case'user':_0x4aee91[_0x50f9cd](_0x8f62('0x27'));_0x4aee91[_0x50f9cd]('voice:outbound');_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0xa'),_0x39d684['userProfileId'],'VoiceQueue'));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0x32'),_0x39d684['userProfileId'],_0x8f62('0x2c')));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0xb'),_0x39d684[_0x8f62('0x1b')],_0x8f62('0x2d')));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources('SmsQueues',_0x39d684[_0x8f62('0x1b')],_0x8f62('0x2e')));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0x33'),_0x39d684[_0x8f62('0x1b')],'MailQueue'));_0x5f2e12['push'](getAssociatedResources(_0x8f62('0x34'),_0x39d684[_0x8f62('0x1b')],_0x8f62('0x35')));_0x5f2e12['push'](getAssociatedResources('WhatsappQueues',_0x39d684[_0x8f62('0x1b')],_0x8f62('0x30')));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0xe'),_0x39d684[_0x8f62('0x1b')],'User'));_0x5f2e12[_0x8f62('0x2b')](getAssociatedResources(_0x8f62('0xf'),_0x39d684[_0x8f62('0x1b')],'Trunk'));_0x5f2e12['push'](getAssociatedResources(_0x8f62('0x10'),_0x39d684['userProfileId'],_0x8f62('0x31')));_0x5f2e12['push'](db['User'][_0x8f62('0xd')](queryAgents));break;case'agent':_0x4aee91[_0x50f9cd](_0x8f62('0x27'));_0x4aee91[_0x50f9cd](_0x8f62('0x28'));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x36')]({'attributes':['id',_0x8f62('0x5')]}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x37')]({'attributes':['id','name']}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684['getFaxQueues']({'attributes':['id','name']}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x38')]({'attributes':['id','name']}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684['getMailQueues']({'attributes':['id',_0x8f62('0x5')]}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x39')]({'attributes':['id',_0x8f62('0x5')]}));_0x5f2e12[_0x8f62('0x2b')](_0x39d684[_0x8f62('0x3a')]({'attributes':['id',_0x8f62('0x5')]}));break;}return BPromise[_0x8f62('0x3b')](_0x5f2e12);}})['then'](function(_0x5c9eba){if(_0x5c9eba&&_0x5c9eba[_0x8f62('0x3c')]){for(var _0x48ec6f=0x0;_0x48ec6f<_0x5c9eba[_0x8f62('0x3c')];_0x48ec6f+=0x1){for(var _0x31bac3=0x0;_0x31bac3<_0x5c9eba[_0x48ec6f][_0x8f62('0x3c')];_0x31bac3+=0x1){switch(_0x48ec6f){case 0x0:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,'voice',_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x1:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,'chat',_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x2:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x3d'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x3:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x3e'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x4:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x3f'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x5:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x40'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x6:joinOrLeaveQueues(_0x4aee91,_0x50f9cd,_0x8f62('0x41'),_0x5c9eba[_0x48ec6f][_0x31bac3]);break;case 0x7:if(_0x4a0935[_0x8f62('0x6')]!==_0x8f62('0x7'))_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')](_0x8f62('0x42'),_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x5')]));break;case 0x8:if(_0x4a0935[_0x8f62('0x6')]!=='agent')_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')](_0x8f62('0x43'),_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x5')]));break;case 0x9:if(_0x4a0935[_0x8f62('0x6')]!=='agent')_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')](_0x8f62('0x44'),_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x15')],_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x5')]));break;case 0xa:_0x4aee91[_0x50f9cd](util[_0x8f62('0x16')](_0x8f62('0x17'),_0x5c9eba[_0x48ec6f][_0x31bac3][_0x8f62('0x5')]));break;}}}}})[_0x8f62('0x11')](function(){if(_0x50f9cd===_0x8f62('0x45')){var _0x265eeb=_[_0x8f62('0x12')](_0x4a0935[_0x8f62('0x1d')],'id');return _0x4a0935[_0x8f62('0x46')](_0x265eeb)['then'](function(){for(var _0x35fe57=0x0;_0x35fe57<_0x265eeb[_0x8f62('0x3c')];_0x35fe57+=0x1){_0x329dae[_0x8f62('0x47')](_0x8f62('0x48'),{'ChatInteractionId':Number(_0x265eeb[_0x35fe57]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd===_0x8f62('0x45')){var _0x3e6190=_[_0x8f62('0x12')](_0x4a0935[_0x8f62('0x49')],'id');return _0x4a0935[_0x8f62('0x4a')](_0x3e6190)[_0x8f62('0x11')](function(){for(var _0x481ccb=0x0;_0x481ccb<_0x3e6190[_0x8f62('0x3c')];_0x481ccb+=0x1){_0x329dae['emit'](_0x8f62('0x4b'),{'MailInteractionId':Number(_0x3e6190[_0x481ccb]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd==='leave'){var _0x25396e=_[_0x8f62('0x12')](_0x4a0935['FaxInteractions'],'id');return _0x4a0935[_0x8f62('0x4c')](_0x25396e)[_0x8f62('0x11')](function(){for(var _0x125495=0x0;_0x125495<_0x25396e[_0x8f62('0x3c')];_0x125495+=0x1){_0x329dae[_0x8f62('0x47')](_0x8f62('0x4d'),{'FaxInteractionId':Number(_0x25396e[_0x125495]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd==='leave'){var _0x56ca96=_[_0x8f62('0x12')](_0x4a0935['SmsInteractions'],'id');return _0x4a0935[_0x8f62('0x4e')](_0x56ca96)[_0x8f62('0x11')](function(){for(var _0x22605c=0x0;_0x22605c<_0x56ca96[_0x8f62('0x3c')];_0x22605c+=0x1){_0x329dae['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x56ca96[_0x22605c]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd===_0x8f62('0x45')){var _0x4af63e=_['map'](_0x4a0935['OpenchannelInteractions'],'id');return _0x4a0935[_0x8f62('0x4f')](_0x4af63e)[_0x8f62('0x11')](function(){for(var _0x1e9bf6=0x0;_0x1e9bf6<_0x4af63e[_0x8f62('0x3c')];_0x1e9bf6+=0x1){_0x329dae['emit'](_0x8f62('0x50'),{'OpenchannelInteractionId':Number(_0x4af63e[_0x1e9bf6]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x11')](function(){if(_0x50f9cd===_0x8f62('0x45')){var _0x2d634f=_[_0x8f62('0x12')](_0x4a0935['WhatsappInteractions'],'id');return _0x4a0935[_0x8f62('0x51')](_0x2d634f)[_0x8f62('0x11')](function(){for(var _0x4684af=0x0;_0x4684af<_0x2d634f[_0x8f62('0x3c')];_0x4684af+=0x1){_0x329dae['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x2d634f[_0x4684af]),'UserId':Number(_0x4a0935['id'])});}});}})[_0x8f62('0x52')](function(_0x339cd7){_0x4aee91[_0x8f62('0x53')](_0x339cd7);});}}function onDisconnect(_0x596fbb,_0x1ca596){joinOrLeave(_0x596fbb,_0x8f62('0x45'),_0x1ca596);}function onConnect(_0x3d0b6f){joinOrLeave(_0x3d0b6f,_0x8f62('0x54'));}exports[_0x8f62('0x55')]=function(_0x16241b){_0x16241b['on']('connection',function(_0x4b38b7){_0x4b38b7[_0x8f62('0x56')](0x0);_0x4b38b7[_0x8f62('0x57')]=_0x4b38b7[_0x8f62('0x58')][_0x8f62('0x59')][_0x8f62('0x5a')]+':'+_0x4b38b7[_0x8f62('0x58')][_0x8f62('0x59')][_0x8f62('0x5b')];_0x4b38b7[_0x8f62('0x5c')]=new Date();_0x4b38b7[_0x8f62('0x53')]=function(_0x3dfd94){console['log']('SocketIO\x20'+_0x4b38b7[_0x8f62('0x5d')][_0x8f62('0x5')]+'['+_0x4b38b7[_0x8f62('0x57')]+']',_0x3dfd94);};_0x4b38b7['on'](_0x8f62('0x5e'),function(){onDisconnect(_0x4b38b7,_0x16241b);_0x4b38b7[_0x8f62('0x53')](_0x8f62('0x5f'));});onConnect(_0x4b38b7);_0x4b38b7['log'](_0x8f62('0x60'));});};