545ed90878edb6f97d8e94c20018f59d6048ca98
[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 _0x1178=['WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','Campaign','type','format','length','handshake','query','find','userProfileId','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','user:%s','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','FaxQueues','MailQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','fax','sms','openchannel','whatsapp','telephone:%s','trunk:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','emit','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','join','default','connection','address','request','remoteAddress','remotePort','connectedAt','log','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','telephone','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','OpenchannelQueues'];(function(_0x41daa2,_0x16102f){var _0x16d533=function(_0xbe95f5){while(--_0xbe95f5){_0x41daa2['push'](_0x41daa2['shift']());}};_0x16d533(++_0x16102f);}(_0x1178,0xb7));var _0x8117=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x1178[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x8117('0x0'));var util=require(_0x8117('0x1'));var BPromise=require(_0x8117('0x2'));var db=require(_0x8117('0x3'))['db'];var config=require(_0x8117('0x4'));var queryQueues={'attributes':['id',_0x8117('0x5')],'include':[{'as':_0x8117('0x6'),'model':db[_0x8117('0x7')],'attributes':['id',_0x8117('0x5'),_0x8117('0x8')],'raw':!![],'where':{'role':_0x8117('0x9')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x8117('0x5')],'where':{'role':_0x8117('0xa')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x8117('0x5')],'where':{'role':_0x8117('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x8117('0x5'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x2eb5d9,_0xf3d0b2,_0x4e1df0){return db[_0x8117('0xb')][_0x8117('0xc')]({'where':{'name':_0x2eb5d9,'userProfileId':_0xf3d0b2},'raw':!![]})[_0x8117('0xd')](function(_0x2c0b85){if(_0x2c0b85){if(_0x2c0b85[_0x8117('0xe')]){switch(_0x2eb5d9){case _0x8117('0xf'):case _0x8117('0x10'):case'FaxQueues':case _0x8117('0x11'):case'MailQueues':case _0x8117('0x12'):case _0x8117('0x13'):return db[_0x4e1df0][_0x8117('0x14')](queryQueues);case _0x8117('0x15'):return db[_0x4e1df0][_0x8117('0x14')](queryTelephones);case _0x8117('0x16'):return db[_0x4e1df0][_0x8117('0x14')](queryTrunks);case _0x8117('0x17'):return db[_0x4e1df0][_0x8117('0x14')](queryCampaigns);}}else{return db[_0x8117('0x18')][_0x8117('0x14')]({'attributes':[_0x8117('0x19')],'where':{'sectionId':_0x2c0b85['id']},'raw':!![]})[_0x8117('0xd')](function(_0x424d24){if(_0x424d24){var _0x323a42={'where':{'id':_[_0x8117('0x1a')](_0x424d24,_0x8117('0x19'))},'raw':!![]};switch(_0x4e1df0){case _0x8117('0x7'):_0x323a42['where'][_0x8117('0x8')]=_0x8117('0xa');break;case _0x8117('0x1b'):_0x323a42['where'][_0x8117('0x1c')]='ivr';break;}return db[_0x4e1df0][_0x8117('0x14')](_0x323a42);}else{return[];}});}}else{return[];}})[_0x8117('0xd')](function(_0x14dbf1){return _0x14dbf1;});}function joinOrLeaveQueues(_0x1ba254,_0xcc2f60,_0x4ac6ca,_0x2d36a0){_0x1ba254[_0xcc2f60](util[_0x8117('0x1d')]('%s:queue:%s',_0x4ac6ca,_0x2d36a0[_0x8117('0x5')]));if(_0x2d36a0[_0x8117('0x6')]){for(var _0x1ce57e=0x0;_0x1ce57e<_0x2d36a0[_0x8117('0x6')][_0x8117('0x1e')];_0x1ce57e+=0x1){_0x1ba254[_0xcc2f60](util['format']('user:%s',_0x2d36a0[_0x8117('0x6')][_0x1ce57e][_0x8117('0x5')]));}}}function joinOrLeave(_0x35b9ef,_0x520969,_0x36464b){var _0x5579fd;if(_0x35b9ef[_0x8117('0x1f')][_0x8117('0x20')]['id']){db[_0x8117('0x7')][_0x8117('0x21')]({'attributes':['id',_0x8117('0x5'),'role',_0x8117('0x22')],'where':{'id':_0x35b9ef['handshake']['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0x8117('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x8117('0x24')],'as':_0x8117('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x8117('0x26')],'as':_0x8117('0x27'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x8117('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x8117('0x29')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x8117('0x2a')],'as':_0x8117('0x2b'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x52bcf2){if(_0x52bcf2){_0x5579fd=_0x52bcf2;_0x35b9ef[_0x520969](util['format'](_0x8117('0x2c'),_0x52bcf2[_0x8117('0x5')]));var _0x97bb2d=[];switch(_0x52bcf2[_0x8117('0x8')]){case'admin':_0x35b9ef[_0x520969](_0x8117('0x2d'));_0x35b9ef[_0x520969](_0x8117('0x2e'));if(queryQueues['hasOwnProperty'](_0x8117('0x2f'))){delete queryQueues[_0x8117('0x2f')];}_0x97bb2d[_0x8117('0x30')](db[_0x8117('0x31')]['findAll'](queryQueues));_0x97bb2d['push'](db[_0x8117('0x32')][_0x8117('0x14')](queryQueues));_0x97bb2d[_0x8117('0x30')](db[_0x8117('0x33')][_0x8117('0x14')](queryQueues));_0x97bb2d[_0x8117('0x30')](db[_0x8117('0x34')][_0x8117('0x14')](queryQueues));_0x97bb2d['push'](db[_0x8117('0x35')]['findAll'](queryQueues));_0x97bb2d[_0x8117('0x30')](db[_0x8117('0x36')][_0x8117('0x14')](queryQueues));_0x97bb2d['push'](db[_0x8117('0x37')][_0x8117('0x14')](queryQueues));_0x97bb2d[_0x8117('0x30')](db[_0x8117('0x7')][_0x8117('0x14')](queryTelephones));_0x97bb2d[_0x8117('0x30')](db[_0x8117('0x38')]['findAll'](queryTrunks));_0x97bb2d['push'](db[_0x8117('0x1b')]['findAll'](queryCampaigns));_0x97bb2d[_0x8117('0x30')](db[_0x8117('0x7')][_0x8117('0x14')](queryAgents));break;case _0x8117('0x39'):_0x35b9ef[_0x520969](_0x8117('0x2d'));_0x35b9ef[_0x520969](_0x8117('0x2e'));_0x97bb2d['push'](getAssociatedResources(_0x8117('0xf'),_0x52bcf2[_0x8117('0x22')],'VoiceQueue'));_0x97bb2d[_0x8117('0x30')](getAssociatedResources(_0x8117('0x10'),_0x52bcf2[_0x8117('0x22')],'ChatQueue'));_0x97bb2d[_0x8117('0x30')](getAssociatedResources(_0x8117('0x3a'),_0x52bcf2['userProfileId'],_0x8117('0x33')));_0x97bb2d[_0x8117('0x30')](getAssociatedResources('SmsQueues',_0x52bcf2[_0x8117('0x22')],'SmsQueue'));_0x97bb2d[_0x8117('0x30')](getAssociatedResources(_0x8117('0x3b'),_0x52bcf2[_0x8117('0x22')],_0x8117('0x35')));_0x97bb2d[_0x8117('0x30')](getAssociatedResources(_0x8117('0x12'),_0x52bcf2[_0x8117('0x22')],'OpenchannelQueue'));_0x97bb2d[_0x8117('0x30')](getAssociatedResources('WhatsappQueues',_0x52bcf2['userProfileId'],_0x8117('0x37')));_0x97bb2d[_0x8117('0x30')](getAssociatedResources(_0x8117('0x15'),_0x52bcf2['userProfileId'],_0x8117('0x7')));_0x97bb2d[_0x8117('0x30')](getAssociatedResources(_0x8117('0x16'),_0x52bcf2[_0x8117('0x22')],'Trunk'));_0x97bb2d[_0x8117('0x30')](getAssociatedResources('IvrCampaigns',_0x52bcf2['userProfileId'],_0x8117('0x1b')));_0x97bb2d[_0x8117('0x30')](db['User'][_0x8117('0x14')](queryAgents));break;case _0x8117('0x9'):_0x35b9ef[_0x520969](_0x8117('0x2d'));_0x35b9ef[_0x520969](_0x8117('0x2e'));_0x97bb2d[_0x8117('0x30')](_0x52bcf2[_0x8117('0x3c')]({'attributes':['id',_0x8117('0x5')]}));_0x97bb2d[_0x8117('0x30')](_0x52bcf2[_0x8117('0x3d')]({'attributes':['id',_0x8117('0x5')]}));_0x97bb2d['push'](_0x52bcf2[_0x8117('0x3e')]({'attributes':['id',_0x8117('0x5')]}));_0x97bb2d['push'](_0x52bcf2[_0x8117('0x3f')]({'attributes':['id',_0x8117('0x5')]}));_0x97bb2d[_0x8117('0x30')](_0x52bcf2[_0x8117('0x40')]({'attributes':['id',_0x8117('0x5')]}));_0x97bb2d[_0x8117('0x30')](_0x52bcf2[_0x8117('0x41')]({'attributes':['id',_0x8117('0x5')]}));_0x97bb2d['push'](_0x52bcf2['getWhatsappQueues']({'attributes':['id',_0x8117('0x5')]}));break;}return BPromise[_0x8117('0x42')](_0x97bb2d);}})[_0x8117('0xd')](function(_0x59b5af){if(_0x59b5af&&_0x59b5af[_0x8117('0x1e')]){for(var _0x5f1d7c=0x0;_0x5f1d7c<_0x59b5af['length'];_0x5f1d7c+=0x1){for(var _0x275db1=0x0;_0x275db1<_0x59b5af[_0x5f1d7c][_0x8117('0x1e')];_0x275db1+=0x1){switch(_0x5f1d7c){case 0x0:joinOrLeaveQueues(_0x35b9ef,_0x520969,_0x8117('0x43'),_0x59b5af[_0x5f1d7c][_0x275db1]);break;case 0x1:joinOrLeaveQueues(_0x35b9ef,_0x520969,_0x8117('0x44'),_0x59b5af[_0x5f1d7c][_0x275db1]);break;case 0x2:joinOrLeaveQueues(_0x35b9ef,_0x520969,_0x8117('0x45'),_0x59b5af[_0x5f1d7c][_0x275db1]);break;case 0x3:joinOrLeaveQueues(_0x35b9ef,_0x520969,_0x8117('0x46'),_0x59b5af[_0x5f1d7c][_0x275db1]);break;case 0x4:joinOrLeaveQueues(_0x35b9ef,_0x520969,'mail',_0x59b5af[_0x5f1d7c][_0x275db1]);break;case 0x5:joinOrLeaveQueues(_0x35b9ef,_0x520969,_0x8117('0x47'),_0x59b5af[_0x5f1d7c][_0x275db1]);break;case 0x6:joinOrLeaveQueues(_0x35b9ef,_0x520969,_0x8117('0x48'),_0x59b5af[_0x5f1d7c][_0x275db1]);break;case 0x7:_0x35b9ef[_0x520969](util[_0x8117('0x1d')](_0x8117('0x49'),_0x59b5af[_0x5f1d7c][_0x275db1][_0x8117('0x5')]));break;case 0x8:_0x35b9ef[_0x520969](util[_0x8117('0x1d')](_0x8117('0x4a'),_0x59b5af[_0x5f1d7c][_0x275db1][_0x8117('0x5')]));break;case 0x9:_0x35b9ef[_0x520969](util[_0x8117('0x1d')]('campaign:%s:%s',_0x59b5af[_0x5f1d7c][_0x275db1]['type'],_0x59b5af[_0x5f1d7c][_0x275db1][_0x8117('0x5')]));break;case 0xa:_0x35b9ef[_0x520969](util['format']('user:%s',_0x59b5af[_0x5f1d7c][_0x275db1][_0x8117('0x5')]));break;}}}}})['then'](function(){if(_0x520969===_0x8117('0x4b')){var _0x15431a=_[_0x8117('0x1a')](_0x5579fd[_0x8117('0x23')],'id');return _0x5579fd[_0x8117('0x4c')](_0x15431a)[_0x8117('0xd')](function(){for(var _0x2535d3=0x0;_0x2535d3<_0x15431a[_0x8117('0x1e')];_0x2535d3+=0x1){_0x36464b['emit'](_0x8117('0x4d'),{'ChatInteractionId':Number(_0x15431a[_0x2535d3]),'UserId':Number(_0x5579fd['id'])});}});}})['then'](function(){if(_0x520969===_0x8117('0x4b')){var _0xe886d2=_[_0x8117('0x1a')](_0x5579fd[_0x8117('0x25')],'id');return _0x5579fd[_0x8117('0x4e')](_0xe886d2)[_0x8117('0xd')](function(){for(var _0x2b1767=0x0;_0x2b1767<_0xe886d2[_0x8117('0x1e')];_0x2b1767+=0x1){_0x36464b[_0x8117('0x4f')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0xe886d2[_0x2b1767]),'UserId':Number(_0x5579fd['id'])});}});}})['then'](function(){if(_0x520969===_0x8117('0x4b')){var _0x55b35d=_[_0x8117('0x1a')](_0x5579fd[_0x8117('0x27')],'id');return _0x5579fd[_0x8117('0x50')](_0x55b35d)[_0x8117('0xd')](function(){for(var _0x15656d=0x0;_0x15656d<_0x55b35d['length'];_0x15656d+=0x1){_0x36464b[_0x8117('0x4f')](_0x8117('0x51'),{'FaxInteractionId':Number(_0x55b35d[_0x15656d]),'UserId':Number(_0x5579fd['id'])});}});}})['then'](function(){if(_0x520969===_0x8117('0x4b')){var _0x15a324=_[_0x8117('0x1a')](_0x5579fd['SmsInteractions'],'id');return _0x5579fd[_0x8117('0x52')](_0x15a324)[_0x8117('0xd')](function(){for(var _0x32e8f1=0x0;_0x32e8f1<_0x15a324[_0x8117('0x1e')];_0x32e8f1+=0x1){_0x36464b[_0x8117('0x4f')](_0x8117('0x53'),{'SmsInteractionId':Number(_0x15a324[_0x32e8f1]),'UserId':Number(_0x5579fd['id'])});}});}})[_0x8117('0xd')](function(){if(_0x520969===_0x8117('0x4b')){var _0x94be12=_[_0x8117('0x1a')](_0x5579fd[_0x8117('0x54')],'id');return _0x5579fd['removeOpenchannelInteractions'](_0x94be12)[_0x8117('0xd')](function(){for(var _0x3bf371=0x0;_0x3bf371<_0x94be12[_0x8117('0x1e')];_0x3bf371+=0x1){_0x36464b[_0x8117('0x4f')](_0x8117('0x55'),{'OpenchannelInteractionId':Number(_0x94be12[_0x3bf371]),'UserId':Number(_0x5579fd['id'])});}});}})[_0x8117('0xd')](function(){if(_0x520969===_0x8117('0x4b')){var _0x1959c1=_[_0x8117('0x1a')](_0x5579fd[_0x8117('0x2b')],'id');return _0x5579fd[_0x8117('0x56')](_0x1959c1)['then'](function(){for(var _0x268d5a=0x0;_0x268d5a<_0x1959c1['length'];_0x268d5a+=0x1){_0x36464b[_0x8117('0x4f')](_0x8117('0x57'),{'WhatsappInteractionId':Number(_0x1959c1[_0x268d5a]),'UserId':Number(_0x5579fd['id'])});}});}})['catch'](function(_0x3698a6){_0x35b9ef['log'](_0x3698a6);});}}function onDisconnect(_0x4a18e3,_0x4122d6){joinOrLeave(_0x4a18e3,_0x8117('0x4b'),_0x4122d6);}function onConnect(_0xf5daa6){joinOrLeave(_0xf5daa6,_0x8117('0x58'));}exports[_0x8117('0x59')]=function(_0x451f48){_0x451f48['on'](_0x8117('0x5a'),function(_0x32f1e7){_0x32f1e7['setMaxListeners'](0x0);_0x32f1e7[_0x8117('0x5b')]=_0x32f1e7[_0x8117('0x5c')][_0x8117('0x5a')][_0x8117('0x5d')]+':'+_0x32f1e7[_0x8117('0x5c')]['connection'][_0x8117('0x5e')];_0x32f1e7[_0x8117('0x5f')]=new Date();_0x32f1e7[_0x8117('0x60')]=function(_0x4dae3b){console[_0x8117('0x60')]('SocketIO\x20'+_0x32f1e7[_0x8117('0x61')]['name']+'['+_0x32f1e7[_0x8117('0x5b')]+']',_0x4dae3b);};_0x32f1e7['on'](_0x8117('0x62'),function(){onDisconnect(_0x32f1e7,_0x451f48);_0x32f1e7[_0x8117('0x60')](_0x8117('0x63'));});onConnect(_0x32f1e7);_0x32f1e7[_0x8117('0x60')](_0x8117('0x64'));});};