133803d88a5d3e8c4cd43446293fe5e88088f55c
[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 _0xd9eb=['Agents','User','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','%s:queue:%s','length','format','handshake','query','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','user:%s','admin','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','WhatsappQueue','user','userProfileId','FaxQueue','MailQueues','MailQueue','OpenchannelQueue','Trunk','voice:inbound','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','sms','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','remoteAddress','request','connection','remotePort','connectedAt','SocketIO\x20','address','DISCONNECTED','lodash','util','bluebird','../mysqldb','./environment','name'];(function(_0x282ccc,_0x5d66a1){var _0x27c2dd=function(_0x58431a){while(--_0x58431a){_0x282ccc['push'](_0x282ccc['shift']());}};_0x27c2dd(++_0x5d66a1);}(_0xd9eb,0xca));var _0xbd9e=function(_0x5a7282,_0xa6e195){_0x5a7282=_0x5a7282-0x0;var _0x4928ec=_0xd9eb[_0x5a7282];return _0x4928ec;};'use strict';var _=require(_0xbd9e('0x0'));var util=require(_0xbd9e('0x1'));var BPromise=require(_0xbd9e('0x2'));var db=require(_0xbd9e('0x3'))['db'];var config=require(_0xbd9e('0x4'));var queryQueues={'attributes':['id',_0xbd9e('0x5')],'include':[{'as':_0xbd9e('0x6'),'model':db[_0xbd9e('0x7')],'attributes':['id',_0xbd9e('0x5'),_0xbd9e('0x8')],'raw':!![],'where':{'role':_0xbd9e('0x9')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xbd9e('0x5')],'where':{'role':_0xbd9e('0xa')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xbd9e('0x5')],'where':{'role':_0xbd9e('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xbd9e('0x5'),_0xbd9e('0xb')],'where':{'type':_0xbd9e('0xc')}};function getAssociatedResources(_0x7755b8,_0x131530,_0x82e476){return db[_0xbd9e('0xd')][_0xbd9e('0xe')]({'where':{'name':_0x7755b8,'userProfileId':_0x131530},'raw':!![]})[_0xbd9e('0xf')](function(_0x1e3c0b){if(_0x1e3c0b){if(_0x1e3c0b['autoAssociation']){switch(_0x7755b8){case _0xbd9e('0x10'):case _0xbd9e('0x11'):case'FaxQueues':case _0xbd9e('0x12'):case'MailQueues':case _0xbd9e('0x13'):case _0xbd9e('0x14'):return db[_0x82e476][_0xbd9e('0x15')](queryQueues);case _0xbd9e('0x16'):return db[_0x82e476][_0xbd9e('0x15')](queryTelephones);case _0xbd9e('0x17'):return db[_0x82e476][_0xbd9e('0x15')](queryTrunks);case _0xbd9e('0x18'):return db[_0x82e476]['findAll'](queryCampaigns);}}else{return db[_0xbd9e('0x19')][_0xbd9e('0x15')]({'attributes':[_0xbd9e('0x1a')],'where':{'sectionId':_0x1e3c0b['id']},'raw':!![]})[_0xbd9e('0xf')](function(_0x243802){if(_0x243802){var _0x339d79={'where':{'id':_[_0xbd9e('0x1b')](_0x243802,_0xbd9e('0x1a'))},'raw':!![]};switch(_0x82e476){case _0xbd9e('0x7'):_0x339d79[_0xbd9e('0x1c')][_0xbd9e('0x8')]='telephone';break;case _0xbd9e('0x1d'):_0x339d79[_0xbd9e('0x1c')][_0xbd9e('0xb')]=_0xbd9e('0xc');break;}return db[_0x82e476][_0xbd9e('0x15')](_0x339d79);}else{return[];}});}}else{return[];}})['then'](function(_0x5bf755){return _0x5bf755;});}function joinOrLeaveQueues(_0x36bdc1,_0x37e6d8,_0xb9ff26,_0x1165e0){_0x36bdc1[_0x37e6d8](util['format'](_0xbd9e('0x1e'),_0xb9ff26,_0x1165e0['name']));if(_0x1165e0['Agents']){for(var _0x30d92f=0x0;_0x30d92f<_0x1165e0[_0xbd9e('0x6')][_0xbd9e('0x1f')];_0x30d92f+=0x1){_0x36bdc1[_0x37e6d8](util[_0xbd9e('0x20')]('user:%s',_0x1165e0[_0xbd9e('0x6')][_0x30d92f][_0xbd9e('0x5')]));}}}function joinOrLeave(_0x4e53cd,_0x4efbe2,_0x2733cb){var _0x2957d1;if(_0x4e53cd[_0xbd9e('0x21')][_0xbd9e('0x22')]['id']){db['User']['find']({'attributes':['id','name',_0xbd9e('0x8'),'userProfileId'],'where':{'id':_0x4e53cd[_0xbd9e('0x21')]['query']['id']},'include':[{'model':db[_0xbd9e('0x23')],'as':_0xbd9e('0x24'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xbd9e('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xbd9e('0x26')],'as':_0xbd9e('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0xbd9e('0x28')],'as':_0xbd9e('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0xbd9e('0x2a')],'as':_0xbd9e('0x2b'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xbd9e('0x2c'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x33d152){if(_0x33d152){_0x2957d1=_0x33d152;_0x4e53cd[_0x4efbe2](util['format'](_0xbd9e('0x2d'),_0x33d152[_0xbd9e('0x5')]));var _0x5485ec=[];switch(_0x33d152[_0xbd9e('0x8')]){case _0xbd9e('0x2e'):_0x4e53cd[_0x4efbe2]('voice:inbound');_0x4e53cd[_0x4efbe2](_0xbd9e('0x2f'));if(queryQueues[_0xbd9e('0x30')]('include')){delete queryQueues[_0xbd9e('0x31')];}_0x5485ec[_0xbd9e('0x32')](db[_0xbd9e('0x33')]['findAll'](queryQueues));_0x5485ec[_0xbd9e('0x32')](db[_0xbd9e('0x34')][_0xbd9e('0x15')](queryQueues));_0x5485ec[_0xbd9e('0x32')](db['FaxQueue']['findAll'](queryQueues));_0x5485ec['push'](db[_0xbd9e('0x35')]['findAll'](queryQueues));_0x5485ec[_0xbd9e('0x32')](db['MailQueue']['findAll'](queryQueues));_0x5485ec[_0xbd9e('0x32')](db['OpenchannelQueue'][_0xbd9e('0x15')](queryQueues));_0x5485ec[_0xbd9e('0x32')](db[_0xbd9e('0x36')][_0xbd9e('0x15')](queryQueues));_0x5485ec[_0xbd9e('0x32')](db[_0xbd9e('0x7')]['findAll'](queryTelephones));_0x5485ec[_0xbd9e('0x32')](db['Trunk'][_0xbd9e('0x15')](queryTrunks));_0x5485ec['push'](db['Campaign']['findAll'](queryCampaigns));_0x5485ec[_0xbd9e('0x32')](db['User']['findAll'](queryAgents));break;case _0xbd9e('0x37'):_0x4e53cd[_0x4efbe2]('voice:inbound');_0x4e53cd[_0x4efbe2](_0xbd9e('0x2f'));_0x5485ec['push'](getAssociatedResources(_0xbd9e('0x10'),_0x33d152[_0xbd9e('0x38')],_0xbd9e('0x33')));_0x5485ec[_0xbd9e('0x32')](getAssociatedResources(_0xbd9e('0x11'),_0x33d152['userProfileId'],_0xbd9e('0x34')));_0x5485ec[_0xbd9e('0x32')](getAssociatedResources('FaxQueues',_0x33d152[_0xbd9e('0x38')],_0xbd9e('0x39')));_0x5485ec[_0xbd9e('0x32')](getAssociatedResources(_0xbd9e('0x12'),_0x33d152[_0xbd9e('0x38')],'SmsQueue'));_0x5485ec[_0xbd9e('0x32')](getAssociatedResources(_0xbd9e('0x3a'),_0x33d152[_0xbd9e('0x38')],_0xbd9e('0x3b')));_0x5485ec[_0xbd9e('0x32')](getAssociatedResources(_0xbd9e('0x13'),_0x33d152['userProfileId'],_0xbd9e('0x3c')));_0x5485ec[_0xbd9e('0x32')](getAssociatedResources(_0xbd9e('0x14'),_0x33d152['userProfileId'],_0xbd9e('0x36')));_0x5485ec[_0xbd9e('0x32')](getAssociatedResources('Telephones',_0x33d152['userProfileId'],'User'));_0x5485ec[_0xbd9e('0x32')](getAssociatedResources(_0xbd9e('0x17'),_0x33d152['userProfileId'],_0xbd9e('0x3d')));_0x5485ec[_0xbd9e('0x32')](getAssociatedResources(_0xbd9e('0x18'),_0x33d152[_0xbd9e('0x38')],_0xbd9e('0x1d')));_0x5485ec[_0xbd9e('0x32')](db[_0xbd9e('0x7')][_0xbd9e('0x15')](queryAgents));break;case'agent':_0x4e53cd[_0x4efbe2](_0xbd9e('0x3e'));_0x4e53cd[_0x4efbe2](_0xbd9e('0x2f'));_0x5485ec[_0xbd9e('0x32')](_0x33d152[_0xbd9e('0x3f')]({'attributes':['id','name']}));_0x5485ec['push'](_0x33d152[_0xbd9e('0x40')]({'attributes':['id',_0xbd9e('0x5')]}));_0x5485ec['push'](_0x33d152[_0xbd9e('0x41')]({'attributes':['id','name']}));_0x5485ec[_0xbd9e('0x32')](_0x33d152[_0xbd9e('0x42')]({'attributes':['id','name']}));_0x5485ec['push'](_0x33d152['getMailQueues']({'attributes':['id',_0xbd9e('0x5')]}));_0x5485ec[_0xbd9e('0x32')](_0x33d152[_0xbd9e('0x43')]({'attributes':['id',_0xbd9e('0x5')]}));_0x5485ec[_0xbd9e('0x32')](_0x33d152[_0xbd9e('0x44')]({'attributes':['id','name']}));break;}return BPromise[_0xbd9e('0x45')](_0x5485ec);}})['then'](function(_0x53c961){if(_0x53c961&&_0x53c961[_0xbd9e('0x1f')]){for(var _0x9e55e7=0x0;_0x9e55e7<_0x53c961[_0xbd9e('0x1f')];_0x9e55e7+=0x1){for(var _0x5c8485=0x0;_0x5c8485<_0x53c961[_0x9e55e7][_0xbd9e('0x1f')];_0x5c8485+=0x1){switch(_0x9e55e7){case 0x0:joinOrLeaveQueues(_0x4e53cd,_0x4efbe2,_0xbd9e('0x46'),_0x53c961[_0x9e55e7][_0x5c8485]);break;case 0x1:joinOrLeaveQueues(_0x4e53cd,_0x4efbe2,_0xbd9e('0x47'),_0x53c961[_0x9e55e7][_0x5c8485]);break;case 0x2:joinOrLeaveQueues(_0x4e53cd,_0x4efbe2,'fax',_0x53c961[_0x9e55e7][_0x5c8485]);break;case 0x3:joinOrLeaveQueues(_0x4e53cd,_0x4efbe2,_0xbd9e('0x48'),_0x53c961[_0x9e55e7][_0x5c8485]);break;case 0x4:joinOrLeaveQueues(_0x4e53cd,_0x4efbe2,'mail',_0x53c961[_0x9e55e7][_0x5c8485]);break;case 0x5:joinOrLeaveQueues(_0x4e53cd,_0x4efbe2,_0xbd9e('0x49'),_0x53c961[_0x9e55e7][_0x5c8485]);break;case 0x6:joinOrLeaveQueues(_0x4e53cd,_0x4efbe2,_0xbd9e('0x4a'),_0x53c961[_0x9e55e7][_0x5c8485]);break;case 0x7:if(_0x2957d1[_0xbd9e('0x8')]!==_0xbd9e('0x9'))_0x4e53cd[_0x4efbe2](util[_0xbd9e('0x20')](_0xbd9e('0x4b'),_0x53c961[_0x9e55e7][_0x5c8485][_0xbd9e('0x5')]));break;case 0x8:if(_0x2957d1[_0xbd9e('0x8')]!==_0xbd9e('0x9'))_0x4e53cd[_0x4efbe2](util[_0xbd9e('0x20')](_0xbd9e('0x4c'),_0x53c961[_0x9e55e7][_0x5c8485][_0xbd9e('0x5')]));break;case 0x9:if(_0x2957d1[_0xbd9e('0x8')]!=='agent')_0x4e53cd[_0x4efbe2](util[_0xbd9e('0x20')](_0xbd9e('0x4d'),_0x53c961[_0x9e55e7][_0x5c8485][_0xbd9e('0xb')],_0x53c961[_0x9e55e7][_0x5c8485][_0xbd9e('0x5')]));break;case 0xa:_0x4e53cd[_0x4efbe2](util[_0xbd9e('0x20')](_0xbd9e('0x2d'),_0x53c961[_0x9e55e7][_0x5c8485][_0xbd9e('0x5')]));break;}}}}})[_0xbd9e('0xf')](function(){if(_0x4efbe2==='leave'){var _0x4c56e5=_[_0xbd9e('0x1b')](_0x2957d1[_0xbd9e('0x24')],'id');return _0x2957d1[_0xbd9e('0x4e')](_0x4c56e5)[_0xbd9e('0xf')](function(){for(var _0x328799=0x0;_0x328799<_0x4c56e5['length'];_0x328799+=0x1){_0x2733cb[_0xbd9e('0x4f')](_0xbd9e('0x50'),{'ChatInteractionId':Number(_0x4c56e5[_0x328799]),'UserId':Number(_0x2957d1['id'])});}});}})['then'](function(){if(_0x4efbe2===_0xbd9e('0x51')){var _0x15c9c6=_[_0xbd9e('0x1b')](_0x2957d1[_0xbd9e('0x25')],'id');return _0x2957d1[_0xbd9e('0x52')](_0x15c9c6)[_0xbd9e('0xf')](function(){for(var _0x81363f=0x0;_0x81363f<_0x15c9c6['length'];_0x81363f+=0x1){_0x2733cb['emit'](_0xbd9e('0x53'),{'MailInteractionId':Number(_0x15c9c6[_0x81363f]),'UserId':Number(_0x2957d1['id'])});}});}})[_0xbd9e('0xf')](function(){if(_0x4efbe2===_0xbd9e('0x51')){var _0x1f5fa6=_[_0xbd9e('0x1b')](_0x2957d1[_0xbd9e('0x27')],'id');return _0x2957d1[_0xbd9e('0x54')](_0x1f5fa6)[_0xbd9e('0xf')](function(){for(var _0x512ec7=0x0;_0x512ec7<_0x1f5fa6[_0xbd9e('0x1f')];_0x512ec7+=0x1){_0x2733cb[_0xbd9e('0x4f')](_0xbd9e('0x55'),{'FaxInteractionId':Number(_0x1f5fa6[_0x512ec7]),'UserId':Number(_0x2957d1['id'])});}});}})[_0xbd9e('0xf')](function(){if(_0x4efbe2===_0xbd9e('0x51')){var _0x9a6dfe=_[_0xbd9e('0x1b')](_0x2957d1[_0xbd9e('0x29')],'id');return _0x2957d1[_0xbd9e('0x56')](_0x9a6dfe)[_0xbd9e('0xf')](function(){for(var _0x530b17=0x0;_0x530b17<_0x9a6dfe[_0xbd9e('0x1f')];_0x530b17+=0x1){_0x2733cb['emit'](_0xbd9e('0x57'),{'SmsInteractionId':Number(_0x9a6dfe[_0x530b17]),'UserId':Number(_0x2957d1['id'])});}});}})['then'](function(){if(_0x4efbe2==='leave'){var _0x58bc0a=_[_0xbd9e('0x1b')](_0x2957d1['OpenchannelInteractions'],'id');return _0x2957d1[_0xbd9e('0x58')](_0x58bc0a)[_0xbd9e('0xf')](function(){for(var _0x3dcd10=0x0;_0x3dcd10<_0x58bc0a[_0xbd9e('0x1f')];_0x3dcd10+=0x1){_0x2733cb[_0xbd9e('0x4f')](_0xbd9e('0x59'),{'OpenchannelInteractionId':Number(_0x58bc0a[_0x3dcd10]),'UserId':Number(_0x2957d1['id'])});}});}})[_0xbd9e('0xf')](function(){if(_0x4efbe2===_0xbd9e('0x51')){var _0x4754d3=_['map'](_0x2957d1['WhatsappInteractions'],'id');return _0x2957d1[_0xbd9e('0x5a')](_0x4754d3)[_0xbd9e('0xf')](function(){for(var _0x2fb385=0x0;_0x2fb385<_0x4754d3[_0xbd9e('0x1f')];_0x2fb385+=0x1){_0x2733cb[_0xbd9e('0x4f')](_0xbd9e('0x5b'),{'WhatsappInteractionId':Number(_0x4754d3[_0x2fb385]),'UserId':Number(_0x2957d1['id'])});}});}})[_0xbd9e('0x5c')](function(_0x4e9056){_0x4e53cd[_0xbd9e('0x5d')](_0x4e9056);});}}function onDisconnect(_0x52e794,_0x34b792){joinOrLeave(_0x52e794,_0xbd9e('0x51'),_0x34b792);}function onConnect(_0x3b8566){joinOrLeave(_0x3b8566,_0xbd9e('0x5e'));}exports[_0xbd9e('0x5f')]=function(_0x467868){_0x467868['on']('connection',function(_0x5b0222){_0x5b0222['setMaxListeners'](0x0);_0x5b0222['address']=_0x5b0222['request']['connection'][_0xbd9e('0x60')]+':'+_0x5b0222[_0xbd9e('0x61')][_0xbd9e('0x62')][_0xbd9e('0x63')];_0x5b0222[_0xbd9e('0x64')]=new Date();_0x5b0222[_0xbd9e('0x5d')]=function(_0x508e86){console[_0xbd9e('0x5d')](_0xbd9e('0x65')+_0x5b0222['nsp'][_0xbd9e('0x5')]+'['+_0x5b0222[_0xbd9e('0x66')]+']',_0x508e86);};_0x5b0222['on']('disconnect',function(){onDisconnect(_0x5b0222,_0x467868);_0x5b0222[_0xbd9e('0x5d')](_0xbd9e('0x67'));});onConnect(_0x5b0222);_0x5b0222[_0xbd9e('0x5d')]('CONNECTED');});};