Built motion from commit 953226e6.|2.6.32
[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 _0x83de=['VoiceQueues','FaxQueues','SmsQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','then','map','resourceId','where','Campaign','format','%s:queue:%s','length','user:%s','query','find','role','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','hasOwnProperty','include','VoiceQueue','push','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:outbound','ChatQueues','userProfileId','ChatQueue','MailQueues','MailQueue','agent','getChatQueues','getSmsQueues','getWhatsappQueues','all','voice','chat','mail','whatsapp','telephone:%s','trunk:%s','leave','user_has_chat_interactions:remove','emit','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','connection','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','util','../mysqldb','./environment','Agents','User','name','telephone','type','ivr','autoAssociation'];(function(_0x23ca3a,_0xe44c43){var _0x5c1aab=function(_0x29bcdd){while(--_0x29bcdd){_0x23ca3a['push'](_0x23ca3a['shift']());}};_0x5c1aab(++_0xe44c43);}(_0x83de,0x116));var _0xe83d=function(_0x4e2e00,_0x2fda72){_0x4e2e00=_0x4e2e00-0x0;var _0x197ba8=_0x83de[_0x4e2e00];return _0x197ba8;};'use strict';var _=require('lodash');var util=require(_0xe83d('0x0'));var BPromise=require('bluebird');var db=require(_0xe83d('0x1'))['db'];var config=require(_0xe83d('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0xe83d('0x3'),'model':db[_0xe83d('0x4')],'attributes':['id',_0xe83d('0x5'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xe83d('0x5')],'where':{'role':_0xe83d('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0xe83d('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xe83d('0x5')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0xe83d('0x7')],'where':{'type':_0xe83d('0x8')}};function getAssociatedResources(_0xa747c0,_0x4d2aa0,_0x1527f5){return db['UserProfileSection']['findOne']({'where':{'name':_0xa747c0,'userProfileId':_0x4d2aa0},'raw':!![]})['then'](function(_0x34dd26){if(_0x34dd26){if(_0x34dd26[_0xe83d('0x9')]){switch(_0xa747c0){case _0xe83d('0xa'):case'ChatQueues':case _0xe83d('0xb'):case _0xe83d('0xc'):case'MailQueues':case _0xe83d('0xd'):case'WhatsappQueues':return db[_0x1527f5][_0xe83d('0xe')](queryQueues);case _0xe83d('0xf'):return db[_0x1527f5][_0xe83d('0xe')](queryTelephones);case _0xe83d('0x10'):return db[_0x1527f5][_0xe83d('0xe')](queryTrunks);case _0xe83d('0x11'):return db[_0x1527f5][_0xe83d('0xe')](queryCampaigns);}}else{return db[_0xe83d('0x12')][_0xe83d('0xe')]({'attributes':['resourceId'],'where':{'sectionId':_0x34dd26['id']},'raw':!![]})[_0xe83d('0x13')](function(_0x4c707d){if(_0x4c707d){var _0x36487e={'where':{'id':_[_0xe83d('0x14')](_0x4c707d,_0xe83d('0x15'))},'raw':!![]};switch(_0x1527f5){case _0xe83d('0x4'):_0x36487e[_0xe83d('0x16')]['role']=_0xe83d('0x6');break;case _0xe83d('0x17'):_0x36487e[_0xe83d('0x16')][_0xe83d('0x7')]=_0xe83d('0x8');break;}return db[_0x1527f5][_0xe83d('0xe')](_0x36487e);}else{return[];}});}}else{return[];}})[_0xe83d('0x13')](function(_0x550f4f){return _0x550f4f;});}function joinOrLeaveQueues(_0xb2f3c3,_0x3e3dc1,_0x576a8d,_0x250b41){_0xb2f3c3[_0x3e3dc1](util[_0xe83d('0x18')](_0xe83d('0x19'),_0x576a8d,_0x250b41['name']));if(_0x250b41['Agents']){for(var _0xb4b46e=0x0;_0xb4b46e<_0x250b41[_0xe83d('0x3')][_0xe83d('0x1a')];_0xb4b46e+=0x1){_0xb2f3c3[_0x3e3dc1](util[_0xe83d('0x18')](_0xe83d('0x1b'),_0x250b41['Agents'][_0xb4b46e][_0xe83d('0x5')]));}}}function joinOrLeave(_0x12bcbf,_0x254551,_0x4ea9eb){var _0x1dff3f;if(_0x12bcbf['handshake'][_0xe83d('0x1c')]['id']){db[_0xe83d('0x4')][_0xe83d('0x1d')]({'attributes':['id',_0xe83d('0x5'),_0xe83d('0x1e'),'userProfileId'],'where':{'id':_0x12bcbf['handshake']['query']['id']},'include':[{'model':db[_0xe83d('0x1f')],'as':_0xe83d('0x20'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xe83d('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0xe83d('0x22')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe83d('0x23')],'as':_0xe83d('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xe83d('0x25')],'as':_0xe83d('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xe83d('0x27')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})['then'](function(_0x2afbab){if(_0x2afbab){_0x1dff3f=_0x2afbab;_0x12bcbf[_0x254551](util[_0xe83d('0x18')](_0xe83d('0x1b'),_0x2afbab[_0xe83d('0x5')]));var _0x4083b0=[];switch(_0x2afbab[_0xe83d('0x1e')]){case _0xe83d('0x28'):_0x12bcbf[_0x254551](_0xe83d('0x29'));_0x12bcbf[_0x254551]('voice:outbound');if(queryQueues[_0xe83d('0x2a')](_0xe83d('0x2b'))){delete queryQueues['include'];}_0x4083b0['push'](db[_0xe83d('0x2c')][_0xe83d('0xe')](queryQueues));_0x4083b0[_0xe83d('0x2d')](db['ChatQueue'][_0xe83d('0xe')](queryQueues));_0x4083b0[_0xe83d('0x2d')](db[_0xe83d('0x2e')]['findAll'](queryQueues));_0x4083b0[_0xe83d('0x2d')](db[_0xe83d('0x2f')][_0xe83d('0xe')](queryQueues));_0x4083b0['push'](db['MailQueue'][_0xe83d('0xe')](queryQueues));_0x4083b0[_0xe83d('0x2d')](db[_0xe83d('0x30')][_0xe83d('0xe')](queryQueues));_0x4083b0[_0xe83d('0x2d')](db[_0xe83d('0x31')][_0xe83d('0xe')](queryQueues));_0x4083b0[_0xe83d('0x2d')](db['User'][_0xe83d('0xe')](queryTelephones));_0x4083b0[_0xe83d('0x2d')](db[_0xe83d('0x32')][_0xe83d('0xe')](queryTrunks));_0x4083b0[_0xe83d('0x2d')](db['Campaign'][_0xe83d('0xe')](queryCampaigns));_0x4083b0['push'](db[_0xe83d('0x4')][_0xe83d('0xe')](queryAgents));break;case _0xe83d('0x33'):_0x12bcbf[_0x254551]('voice:inbound');_0x12bcbf[_0x254551](_0xe83d('0x34'));_0x4083b0['push'](getAssociatedResources(_0xe83d('0xa'),_0x2afbab['userProfileId'],_0xe83d('0x2c')));_0x4083b0[_0xe83d('0x2d')](getAssociatedResources(_0xe83d('0x35'),_0x2afbab[_0xe83d('0x36')],_0xe83d('0x37')));_0x4083b0[_0xe83d('0x2d')](getAssociatedResources('FaxQueues',_0x2afbab['userProfileId'],'FaxQueue'));_0x4083b0[_0xe83d('0x2d')](getAssociatedResources(_0xe83d('0xc'),_0x2afbab[_0xe83d('0x36')],_0xe83d('0x2f')));_0x4083b0['push'](getAssociatedResources(_0xe83d('0x38'),_0x2afbab[_0xe83d('0x36')],_0xe83d('0x39')));_0x4083b0[_0xe83d('0x2d')](getAssociatedResources(_0xe83d('0xd'),_0x2afbab[_0xe83d('0x36')],'OpenchannelQueue'));_0x4083b0[_0xe83d('0x2d')](getAssociatedResources('WhatsappQueues',_0x2afbab[_0xe83d('0x36')],_0xe83d('0x31')));_0x4083b0['push'](getAssociatedResources(_0xe83d('0xf'),_0x2afbab[_0xe83d('0x36')],'User'));_0x4083b0['push'](getAssociatedResources(_0xe83d('0x10'),_0x2afbab[_0xe83d('0x36')],_0xe83d('0x32')));_0x4083b0[_0xe83d('0x2d')](getAssociatedResources(_0xe83d('0x11'),_0x2afbab[_0xe83d('0x36')],_0xe83d('0x17')));_0x4083b0['push'](db[_0xe83d('0x4')]['findAll'](queryAgents));break;case _0xe83d('0x3a'):_0x12bcbf[_0x254551]('voice:inbound');_0x12bcbf[_0x254551](_0xe83d('0x34'));_0x4083b0[_0xe83d('0x2d')](_0x2afbab['getVoiceQueues']({'attributes':['id',_0xe83d('0x5')]}));_0x4083b0['push'](_0x2afbab[_0xe83d('0x3b')]({'attributes':['id',_0xe83d('0x5')]}));_0x4083b0[_0xe83d('0x2d')](_0x2afbab['getFaxQueues']({'attributes':['id','name']}));_0x4083b0[_0xe83d('0x2d')](_0x2afbab[_0xe83d('0x3c')]({'attributes':['id',_0xe83d('0x5')]}));_0x4083b0[_0xe83d('0x2d')](_0x2afbab['getMailQueues']({'attributes':['id',_0xe83d('0x5')]}));_0x4083b0[_0xe83d('0x2d')](_0x2afbab['getOpenchannelQueues']({'attributes':['id','name']}));_0x4083b0[_0xe83d('0x2d')](_0x2afbab[_0xe83d('0x3d')]({'attributes':['id',_0xe83d('0x5')]}));break;}return BPromise[_0xe83d('0x3e')](_0x4083b0);}})[_0xe83d('0x13')](function(_0xed190b){if(_0xed190b&&_0xed190b[_0xe83d('0x1a')]){for(var _0x5ca1de=0x0;_0x5ca1de<_0xed190b[_0xe83d('0x1a')];_0x5ca1de+=0x1){for(var _0x1725c3=0x0;_0x1725c3<_0xed190b[_0x5ca1de][_0xe83d('0x1a')];_0x1725c3+=0x1){switch(_0x5ca1de){case 0x0:joinOrLeaveQueues(_0x12bcbf,_0x254551,_0xe83d('0x3f'),_0xed190b[_0x5ca1de][_0x1725c3]);break;case 0x1:joinOrLeaveQueues(_0x12bcbf,_0x254551,_0xe83d('0x40'),_0xed190b[_0x5ca1de][_0x1725c3]);break;case 0x2:joinOrLeaveQueues(_0x12bcbf,_0x254551,'fax',_0xed190b[_0x5ca1de][_0x1725c3]);break;case 0x3:joinOrLeaveQueues(_0x12bcbf,_0x254551,'sms',_0xed190b[_0x5ca1de][_0x1725c3]);break;case 0x4:joinOrLeaveQueues(_0x12bcbf,_0x254551,_0xe83d('0x41'),_0xed190b[_0x5ca1de][_0x1725c3]);break;case 0x5:joinOrLeaveQueues(_0x12bcbf,_0x254551,'openchannel',_0xed190b[_0x5ca1de][_0x1725c3]);break;case 0x6:joinOrLeaveQueues(_0x12bcbf,_0x254551,_0xe83d('0x42'),_0xed190b[_0x5ca1de][_0x1725c3]);break;case 0x7:if(_0x1dff3f[_0xe83d('0x1e')]!==_0xe83d('0x3a'))_0x12bcbf[_0x254551](util['format'](_0xe83d('0x43'),_0xed190b[_0x5ca1de][_0x1725c3][_0xe83d('0x5')]));break;case 0x8:if(_0x1dff3f[_0xe83d('0x1e')]!==_0xe83d('0x3a'))_0x12bcbf[_0x254551](util[_0xe83d('0x18')](_0xe83d('0x44'),_0xed190b[_0x5ca1de][_0x1725c3]['name']));break;case 0x9:if(_0x1dff3f['role']!==_0xe83d('0x3a'))_0x12bcbf[_0x254551](util['format']('campaign:%s:%s',_0xed190b[_0x5ca1de][_0x1725c3][_0xe83d('0x7')],_0xed190b[_0x5ca1de][_0x1725c3][_0xe83d('0x5')]));break;case 0xa:_0x12bcbf[_0x254551](util[_0xe83d('0x18')](_0xe83d('0x1b'),_0xed190b[_0x5ca1de][_0x1725c3][_0xe83d('0x5')]));break;}}}}})[_0xe83d('0x13')](function(){if(_0x254551===_0xe83d('0x45')){var _0x89dcb7=_[_0xe83d('0x14')](_0x1dff3f[_0xe83d('0x20')],'id');return _0x1dff3f['removeChatInteractions'](_0x89dcb7)[_0xe83d('0x13')](function(){for(var _0x22fb6b=0x0;_0x22fb6b<_0x89dcb7[_0xe83d('0x1a')];_0x22fb6b+=0x1){_0x4ea9eb['emit'](_0xe83d('0x46'),{'ChatInteractionId':Number(_0x89dcb7[_0x22fb6b]),'UserId':Number(_0x1dff3f['id'])});}});}})[_0xe83d('0x13')](function(){if(_0x254551==='leave'){var _0x1ad5d2=_[_0xe83d('0x14')](_0x1dff3f[_0xe83d('0x21')],'id');return _0x1dff3f['removeMailInteractions'](_0x1ad5d2)[_0xe83d('0x13')](function(){for(var _0x48fe0c=0x0;_0x48fe0c<_0x1ad5d2['length'];_0x48fe0c+=0x1){_0x4ea9eb[_0xe83d('0x47')](_0xe83d('0x48'),{'MailInteractionId':Number(_0x1ad5d2[_0x48fe0c]),'UserId':Number(_0x1dff3f['id'])});}});}})['then'](function(){if(_0x254551===_0xe83d('0x45')){var _0x382338=_[_0xe83d('0x14')](_0x1dff3f[_0xe83d('0x49')],'id');return _0x1dff3f[_0xe83d('0x4a')](_0x382338)[_0xe83d('0x13')](function(){for(var _0x256a5f=0x0;_0x256a5f<_0x382338[_0xe83d('0x1a')];_0x256a5f+=0x1){_0x4ea9eb[_0xe83d('0x47')](_0xe83d('0x4b'),{'FaxInteractionId':Number(_0x382338[_0x256a5f]),'UserId':Number(_0x1dff3f['id'])});}});}})[_0xe83d('0x13')](function(){if(_0x254551===_0xe83d('0x45')){var _0x5add88=_[_0xe83d('0x14')](_0x1dff3f['SmsInteractions'],'id');return _0x1dff3f[_0xe83d('0x4c')](_0x5add88)[_0xe83d('0x13')](function(){for(var _0x55cd45=0x0;_0x55cd45<_0x5add88['length'];_0x55cd45+=0x1){_0x4ea9eb['emit'](_0xe83d('0x4d'),{'SmsInteractionId':Number(_0x5add88[_0x55cd45]),'UserId':Number(_0x1dff3f['id'])});}});}})[_0xe83d('0x13')](function(){if(_0x254551===_0xe83d('0x45')){var _0x4b850c=_['map'](_0x1dff3f['OpenchannelInteractions'],'id');return _0x1dff3f[_0xe83d('0x4e')](_0x4b850c)[_0xe83d('0x13')](function(){for(var _0x173cab=0x0;_0x173cab<_0x4b850c[_0xe83d('0x1a')];_0x173cab+=0x1){_0x4ea9eb[_0xe83d('0x47')](_0xe83d('0x4f'),{'OpenchannelInteractionId':Number(_0x4b850c[_0x173cab]),'UserId':Number(_0x1dff3f['id'])});}});}})[_0xe83d('0x13')](function(){if(_0x254551==='leave'){var _0x165056=_[_0xe83d('0x14')](_0x1dff3f['WhatsappInteractions'],'id');return _0x1dff3f[_0xe83d('0x50')](_0x165056)['then'](function(){for(var _0x48c6b3=0x0;_0x48c6b3<_0x165056[_0xe83d('0x1a')];_0x48c6b3+=0x1){_0x4ea9eb[_0xe83d('0x47')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x165056[_0x48c6b3]),'UserId':Number(_0x1dff3f['id'])});}});}})[_0xe83d('0x51')](function(_0x5da6f4){_0x12bcbf[_0xe83d('0x52')](_0x5da6f4);});}}function onDisconnect(_0x5d98fe,_0x20021f){joinOrLeave(_0x5d98fe,_0xe83d('0x45'),_0x20021f);}function onConnect(_0x3f7e85){joinOrLeave(_0x3f7e85,_0xe83d('0x53'));}exports[_0xe83d('0x54')]=function(_0x3dc356){_0x3dc356['on'](_0xe83d('0x55'),function(_0x532879){_0x532879['setMaxListeners'](0x0);_0x532879[_0xe83d('0x56')]=_0x532879[_0xe83d('0x57')]['connection'][_0xe83d('0x58')]+':'+_0x532879[_0xe83d('0x57')][_0xe83d('0x55')][_0xe83d('0x59')];_0x532879[_0xe83d('0x5a')]=new Date();_0x532879[_0xe83d('0x52')]=function(_0xb58079){console[_0xe83d('0x52')](_0xe83d('0x5b')+_0x532879[_0xe83d('0x5c')][_0xe83d('0x5')]+'['+_0x532879[_0xe83d('0x56')]+']',_0xb58079);};_0x532879['on'](_0xe83d('0x5d'),function(){onDisconnect(_0x532879,_0x3dc356);_0x532879[_0xe83d('0x52')](_0xe83d('0x5e'));});onConnect(_0x532879);_0x532879[_0xe83d('0x52')](_0xe83d('0x5f'));});};