Built motion from commit 9d7072cc.|2.5.39
[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 _0x23bb=['removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','request','remoteAddress','remotePort','connectedAt','nsp','disconnect','CONNECTED','lodash','../mysqldb','./environment','name','User','role','type','UserProfileSection','then','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','telephone','Campaign','format','%s:queue:%s','Agents','length','user:%s','query','find','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','voice:outbound','SmsQueues','agent','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','leave','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions'];(function(_0x58a840,_0x165547){var _0x712328=function(_0x4c7a2b){while(--_0x4c7a2b){_0x58a840['push'](_0x58a840['shift']());}};_0x712328(++_0x165547);}(_0x23bb,0x79));var _0xb23b=function(_0x5a585b,_0x3e0674){_0x5a585b=_0x5a585b-0x0;var _0x4cd398=_0x23bb[_0x5a585b];return _0x4cd398;};'use strict';var _=require(_0xb23b('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0xb23b('0x1'))['db'];var config=require(_0xb23b('0x2'));var queryQueues={'attributes':['id',_0xb23b('0x3')],'include':[{'as':'Agents','model':db[_0xb23b('0x4')],'attributes':['id',_0xb23b('0x3'),_0xb23b('0x5')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xb23b('0x3')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0xb23b('0x6')],'where':{'type':'ivr'}};function getAssociatedResources(_0x117bd5,_0x5360a1,_0x23270c){return db[_0xb23b('0x7')]['findOne']({'where':{'name':_0x117bd5,'userProfileId':_0x5360a1},'raw':!![]})[_0xb23b('0x8')](function(_0x2fe30e){if(_0x2fe30e){if(_0x2fe30e['autoAssociation']){switch(_0x117bd5){case _0xb23b('0x9'):case _0xb23b('0xa'):case _0xb23b('0xb'):case'SmsQueues':case _0xb23b('0xc'):case _0xb23b('0xd'):case _0xb23b('0xe'):return db[_0x23270c][_0xb23b('0xf')](queryQueues);case _0xb23b('0x10'):return db[_0x23270c][_0xb23b('0xf')](queryTelephones);case _0xb23b('0x11'):return db[_0x23270c][_0xb23b('0xf')](queryTrunks);case _0xb23b('0x12'):return db[_0x23270c][_0xb23b('0xf')](queryCampaigns);}}else{return db[_0xb23b('0x13')][_0xb23b('0xf')]({'attributes':[_0xb23b('0x14')],'where':{'sectionId':_0x2fe30e['id']},'raw':!![]})[_0xb23b('0x8')](function(_0x338275){if(_0x338275){var _0x1a03a6={'where':{'id':_[_0xb23b('0x15')](_0x338275,'resourceId')},'raw':!![]};switch(_0x23270c){case _0xb23b('0x4'):_0x1a03a6[_0xb23b('0x16')][_0xb23b('0x5')]=_0xb23b('0x17');break;case _0xb23b('0x18'):_0x1a03a6['where'][_0xb23b('0x6')]='ivr';break;}return db[_0x23270c][_0xb23b('0xf')](_0x1a03a6);}else{return[];}});}}else{return[];}})[_0xb23b('0x8')](function(_0x2941ea){return _0x2941ea;});}function joinOrLeaveQueues(_0x5ddf16,_0x57c0df,_0x12a658,_0x354e9d){_0x5ddf16[_0x57c0df](util[_0xb23b('0x19')](_0xb23b('0x1a'),_0x12a658,_0x354e9d[_0xb23b('0x3')]));if(_0x354e9d[_0xb23b('0x1b')]){for(var _0x65c746=0x0;_0x65c746<_0x354e9d['Agents'][_0xb23b('0x1c')];_0x65c746+=0x1){_0x5ddf16[_0x57c0df](util[_0xb23b('0x19')](_0xb23b('0x1d'),_0x354e9d[_0xb23b('0x1b')][_0x65c746]['name']));}}}function joinOrLeave(_0x14c99c,_0x3bec93,_0x4c2d1d){var _0x11aaac;if(_0x14c99c['handshake'][_0xb23b('0x1e')]['id']){db['User'][_0xb23b('0x1f')]({'attributes':['id',_0xb23b('0x3'),'role',_0xb23b('0x20')],'where':{'id':_0x14c99c[_0xb23b('0x21')][_0xb23b('0x1e')]['id']},'include':[{'model':db[_0xb23b('0x22')],'as':_0xb23b('0x23'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xb23b('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xb23b('0x25')],'as':_0xb23b('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xb23b('0x27')],'as':_0xb23b('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xb23b('0x29')],'as':_0xb23b('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0xb23b('0x2b')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xb23b('0x8')](function(_0x2758d7){if(_0x2758d7){_0x11aaac=_0x2758d7;_0x14c99c[_0x3bec93](util[_0xb23b('0x19')]('user:%s',_0x2758d7[_0xb23b('0x3')]));var _0x57c1ef=[];switch(_0x2758d7[_0xb23b('0x5')]){case _0xb23b('0x2c'):_0x14c99c[_0x3bec93](_0xb23b('0x2d'));_0x14c99c[_0x3bec93]('voice:outbound');if(queryQueues[_0xb23b('0x2e')](_0xb23b('0x2f'))){delete queryQueues[_0xb23b('0x2f')];}_0x57c1ef[_0xb23b('0x30')](db[_0xb23b('0x31')][_0xb23b('0xf')](queryQueues));_0x57c1ef[_0xb23b('0x30')](db[_0xb23b('0x32')][_0xb23b('0xf')](queryQueues));_0x57c1ef[_0xb23b('0x30')](db[_0xb23b('0x33')][_0xb23b('0xf')](queryQueues));_0x57c1ef['push'](db[_0xb23b('0x34')][_0xb23b('0xf')](queryQueues));_0x57c1ef[_0xb23b('0x30')](db[_0xb23b('0x35')]['findAll'](queryQueues));_0x57c1ef[_0xb23b('0x30')](db[_0xb23b('0x36')][_0xb23b('0xf')](queryQueues));_0x57c1ef[_0xb23b('0x30')](db[_0xb23b('0x37')]['findAll'](queryQueues));_0x57c1ef[_0xb23b('0x30')](db['User'][_0xb23b('0xf')](queryTelephones));_0x57c1ef['push'](db[_0xb23b('0x38')]['findAll'](queryTrunks));_0x57c1ef[_0xb23b('0x30')](db['Campaign']['findAll'](queryCampaigns));_0x57c1ef[_0xb23b('0x30')](db[_0xb23b('0x4')][_0xb23b('0xf')](queryAgents));break;case'user':_0x14c99c[_0x3bec93](_0xb23b('0x2d'));_0x14c99c[_0x3bec93](_0xb23b('0x39'));_0x57c1ef[_0xb23b('0x30')](getAssociatedResources(_0xb23b('0x9'),_0x2758d7[_0xb23b('0x20')],_0xb23b('0x31')));_0x57c1ef[_0xb23b('0x30')](getAssociatedResources(_0xb23b('0xa'),_0x2758d7[_0xb23b('0x20')],_0xb23b('0x32')));_0x57c1ef['push'](getAssociatedResources(_0xb23b('0xb'),_0x2758d7[_0xb23b('0x20')],_0xb23b('0x33')));_0x57c1ef[_0xb23b('0x30')](getAssociatedResources(_0xb23b('0x3a'),_0x2758d7[_0xb23b('0x20')],_0xb23b('0x34')));_0x57c1ef[_0xb23b('0x30')](getAssociatedResources(_0xb23b('0xc'),_0x2758d7[_0xb23b('0x20')],_0xb23b('0x35')));_0x57c1ef[_0xb23b('0x30')](getAssociatedResources(_0xb23b('0xd'),_0x2758d7[_0xb23b('0x20')],_0xb23b('0x36')));_0x57c1ef['push'](getAssociatedResources(_0xb23b('0xe'),_0x2758d7['userProfileId'],_0xb23b('0x37')));_0x57c1ef[_0xb23b('0x30')](getAssociatedResources(_0xb23b('0x10'),_0x2758d7[_0xb23b('0x20')],_0xb23b('0x4')));_0x57c1ef[_0xb23b('0x30')](getAssociatedResources('Trunks',_0x2758d7[_0xb23b('0x20')],_0xb23b('0x38')));_0x57c1ef[_0xb23b('0x30')](getAssociatedResources(_0xb23b('0x12'),_0x2758d7[_0xb23b('0x20')],_0xb23b('0x18')));_0x57c1ef[_0xb23b('0x30')](db[_0xb23b('0x4')][_0xb23b('0xf')](queryAgents));break;case _0xb23b('0x3b'):_0x14c99c[_0x3bec93](_0xb23b('0x2d'));_0x14c99c[_0x3bec93]('voice:outbound');_0x57c1ef[_0xb23b('0x30')](_0x2758d7[_0xb23b('0x3c')]({'attributes':['id','name']}));_0x57c1ef[_0xb23b('0x30')](_0x2758d7[_0xb23b('0x3d')]({'attributes':['id','name']}));_0x57c1ef[_0xb23b('0x30')](_0x2758d7[_0xb23b('0x3e')]({'attributes':['id',_0xb23b('0x3')]}));_0x57c1ef[_0xb23b('0x30')](_0x2758d7[_0xb23b('0x3f')]({'attributes':['id',_0xb23b('0x3')]}));_0x57c1ef[_0xb23b('0x30')](_0x2758d7['getMailQueues']({'attributes':['id',_0xb23b('0x3')]}));_0x57c1ef[_0xb23b('0x30')](_0x2758d7[_0xb23b('0x40')]({'attributes':['id','name']}));_0x57c1ef['push'](_0x2758d7[_0xb23b('0x41')]({'attributes':['id','name']}));break;}return BPromise[_0xb23b('0x42')](_0x57c1ef);}})[_0xb23b('0x8')](function(_0x50703c){if(_0x50703c&&_0x50703c[_0xb23b('0x1c')]){for(var _0x32b0bc=0x0;_0x32b0bc<_0x50703c[_0xb23b('0x1c')];_0x32b0bc+=0x1){for(var _0x4d5d85=0x0;_0x4d5d85<_0x50703c[_0x32b0bc][_0xb23b('0x1c')];_0x4d5d85+=0x1){switch(_0x32b0bc){case 0x0:joinOrLeaveQueues(_0x14c99c,_0x3bec93,_0xb23b('0x43'),_0x50703c[_0x32b0bc][_0x4d5d85]);break;case 0x1:joinOrLeaveQueues(_0x14c99c,_0x3bec93,_0xb23b('0x44'),_0x50703c[_0x32b0bc][_0x4d5d85]);break;case 0x2:joinOrLeaveQueues(_0x14c99c,_0x3bec93,'fax',_0x50703c[_0x32b0bc][_0x4d5d85]);break;case 0x3:joinOrLeaveQueues(_0x14c99c,_0x3bec93,_0xb23b('0x45'),_0x50703c[_0x32b0bc][_0x4d5d85]);break;case 0x4:joinOrLeaveQueues(_0x14c99c,_0x3bec93,_0xb23b('0x46'),_0x50703c[_0x32b0bc][_0x4d5d85]);break;case 0x5:joinOrLeaveQueues(_0x14c99c,_0x3bec93,_0xb23b('0x47'),_0x50703c[_0x32b0bc][_0x4d5d85]);break;case 0x6:joinOrLeaveQueues(_0x14c99c,_0x3bec93,_0xb23b('0x48'),_0x50703c[_0x32b0bc][_0x4d5d85]);break;case 0x7:if(_0x11aaac[_0xb23b('0x5')]!==_0xb23b('0x3b'))_0x14c99c[_0x3bec93](util[_0xb23b('0x19')](_0xb23b('0x49'),_0x50703c[_0x32b0bc][_0x4d5d85][_0xb23b('0x3')]));break;case 0x8:if(_0x11aaac[_0xb23b('0x5')]!==_0xb23b('0x3b'))_0x14c99c[_0x3bec93](util[_0xb23b('0x19')](_0xb23b('0x4a'),_0x50703c[_0x32b0bc][_0x4d5d85][_0xb23b('0x3')]));break;case 0x9:if(_0x11aaac[_0xb23b('0x5')]!=='agent')_0x14c99c[_0x3bec93](util[_0xb23b('0x19')]('campaign:%s:%s',_0x50703c[_0x32b0bc][_0x4d5d85][_0xb23b('0x6')],_0x50703c[_0x32b0bc][_0x4d5d85]['name']));break;case 0xa:_0x14c99c[_0x3bec93](util['format'](_0xb23b('0x1d'),_0x50703c[_0x32b0bc][_0x4d5d85]['name']));break;}}}}})[_0xb23b('0x8')](function(){if(_0x3bec93===_0xb23b('0x4b')){var _0x5f2ec5=_[_0xb23b('0x15')](_0x11aaac['ChatInteractions'],'id');return _0x11aaac['removeChatInteractions'](_0x5f2ec5)['then'](function(){for(var _0x24d44b=0x0;_0x24d44b<_0x5f2ec5[_0xb23b('0x1c')];_0x24d44b+=0x1){_0x4c2d1d[_0xb23b('0x4c')](_0xb23b('0x4d'),{'ChatInteractionId':Number(_0x5f2ec5[_0x24d44b]),'UserId':Number(_0x11aaac['id'])});}});}})['then'](function(){if(_0x3bec93==='leave'){var _0x40fab4=_['map'](_0x11aaac[_0xb23b('0x24')],'id');return _0x11aaac[_0xb23b('0x4e')](_0x40fab4)[_0xb23b('0x8')](function(){for(var _0x125077=0x0;_0x125077<_0x40fab4[_0xb23b('0x1c')];_0x125077+=0x1){_0x4c2d1d[_0xb23b('0x4c')](_0xb23b('0x4f'),{'MailInteractionId':Number(_0x40fab4[_0x125077]),'UserId':Number(_0x11aaac['id'])});}});}})[_0xb23b('0x8')](function(){if(_0x3bec93==='leave'){var _0x1b7ac3=_[_0xb23b('0x15')](_0x11aaac[_0xb23b('0x26')],'id');return _0x11aaac[_0xb23b('0x50')](_0x1b7ac3)[_0xb23b('0x8')](function(){for(var _0x18f1ee=0x0;_0x18f1ee<_0x1b7ac3['length'];_0x18f1ee+=0x1){_0x4c2d1d['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x1b7ac3[_0x18f1ee]),'UserId':Number(_0x11aaac['id'])});}});}})[_0xb23b('0x8')](function(){if(_0x3bec93===_0xb23b('0x4b')){var _0x4d158e=_[_0xb23b('0x15')](_0x11aaac['SmsInteractions'],'id');return _0x11aaac[_0xb23b('0x51')](_0x4d158e)[_0xb23b('0x8')](function(){for(var _0x630faf=0x0;_0x630faf<_0x4d158e[_0xb23b('0x1c')];_0x630faf+=0x1){_0x4c2d1d[_0xb23b('0x4c')](_0xb23b('0x52'),{'SmsInteractionId':Number(_0x4d158e[_0x630faf]),'UserId':Number(_0x11aaac['id'])});}});}})[_0xb23b('0x8')](function(){if(_0x3bec93===_0xb23b('0x4b')){var _0x3bd4d7=_[_0xb23b('0x15')](_0x11aaac['OpenchannelInteractions'],'id');return _0x11aaac[_0xb23b('0x53')](_0x3bd4d7)[_0xb23b('0x8')](function(){for(var _0x24e44a=0x0;_0x24e44a<_0x3bd4d7[_0xb23b('0x1c')];_0x24e44a+=0x1){_0x4c2d1d[_0xb23b('0x4c')](_0xb23b('0x54'),{'OpenchannelInteractionId':Number(_0x3bd4d7[_0x24e44a]),'UserId':Number(_0x11aaac['id'])});}});}})['then'](function(){if(_0x3bec93===_0xb23b('0x4b')){var _0x1aa2b6=_[_0xb23b('0x15')](_0x11aaac[_0xb23b('0x55')],'id');return _0x11aaac[_0xb23b('0x56')](_0x1aa2b6)['then'](function(){for(var _0x2cd985=0x0;_0x2cd985<_0x1aa2b6['length'];_0x2cd985+=0x1){_0x4c2d1d[_0xb23b('0x4c')](_0xb23b('0x57'),{'WhatsappInteractionId':Number(_0x1aa2b6[_0x2cd985]),'UserId':Number(_0x11aaac['id'])});}});}})[_0xb23b('0x58')](function(_0xc3d1f2){_0x14c99c[_0xb23b('0x59')](_0xc3d1f2);});}}function onDisconnect(_0x43f397,_0x1c0e0b){joinOrLeave(_0x43f397,_0xb23b('0x4b'),_0x1c0e0b);}function onConnect(_0x42b30f){joinOrLeave(_0x42b30f,_0xb23b('0x5a'));}exports[_0xb23b('0x5b')]=function(_0xd08a7d){_0xd08a7d['on'](_0xb23b('0x5c'),function(_0x39289f){_0x39289f[_0xb23b('0x5d')](0x0);_0x39289f['address']=_0x39289f[_0xb23b('0x5e')][_0xb23b('0x5c')][_0xb23b('0x5f')]+':'+_0x39289f[_0xb23b('0x5e')][_0xb23b('0x5c')][_0xb23b('0x60')];_0x39289f[_0xb23b('0x61')]=new Date();_0x39289f[_0xb23b('0x59')]=function(_0x5117b6){console[_0xb23b('0x59')]('SocketIO\x20'+_0x39289f[_0xb23b('0x62')]['name']+'['+_0x39289f['address']+']',_0x5117b6);};_0x39289f['on'](_0xb23b('0x63'),function(){onDisconnect(_0x39289f,_0xd08a7d);_0x39289f[_0xb23b('0x59')]('DISCONNECTED');});onConnect(_0x39289f);_0x39289f[_0xb23b('0x59')](_0xb23b('0x64'));});};