Built motion from commit (unavailable).|2.5.29
[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 _0xb408=['ChatQueues','OpenchannelQueues','OpenchannelQueue','WhatsappQueue','Trunks','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','all','length','voice','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','MailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','default','connection','setMaxListeners','request','remoteAddress','remotePort','SocketIO\x20','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','../mysqldb','./environment','Agents','User','name','telephone','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','map','where','role','Campaign','%s:queue:%s','format','user:%s','query','find','userProfileId','ChatInteraction','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','Trunk','user','VoiceQueues'];(function(_0x5202cd,_0x32ff8c){var _0x2eb22c=function(_0x22ad7f){while(--_0x22ad7f){_0x5202cd['push'](_0x5202cd['shift']());}};_0x2eb22c(++_0x32ff8c);}(_0xb408,0x15f));var _0x8b40=function(_0x1c2d57,_0x295a8e){_0x1c2d57=_0x1c2d57-0x0;var _0x4231ea=_0xb408[_0x1c2d57];return _0x4231ea;};'use strict';var _=require(_0x8b40('0x0'));var util=require(_0x8b40('0x1'));var BPromise=require('bluebird');var db=require(_0x8b40('0x2'))['db'];var config=require(_0x8b40('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x8b40('0x4'),'model':db[_0x8b40('0x5')],'attributes':['id','name','role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x8b40('0x6')],'where':{'role':_0x8b40('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x8b40('0x6')]};var queryAgents={'raw':!![],'attributes':['id',_0x8b40('0x6')],'where':{'role':_0x8b40('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x8b40('0x6'),_0x8b40('0x9')],'where':{'type':_0x8b40('0xa')}};function getAssociatedResources(_0x2f8377,_0x4a7846,_0x414cdd){return db[_0x8b40('0xb')][_0x8b40('0xc')]({'where':{'name':_0x2f8377,'userProfileId':_0x4a7846},'raw':!![]})[_0x8b40('0xd')](function(_0x325f09){if(_0x325f09){if(_0x325f09[_0x8b40('0xe')]){switch(_0x2f8377){case'VoiceQueues':case'ChatQueues':case _0x8b40('0xf'):case _0x8b40('0x10'):case _0x8b40('0x11'):case'OpenchannelQueues':case _0x8b40('0x12'):return db[_0x414cdd][_0x8b40('0x13')](queryQueues);case _0x8b40('0x14'):return db[_0x414cdd]['findAll'](queryTelephones);case'Trunks':return db[_0x414cdd]['findAll'](queryTrunks);case'IvrCampaigns':return db[_0x414cdd][_0x8b40('0x13')](queryCampaigns);}}else{return db[_0x8b40('0x15')][_0x8b40('0x13')]({'attributes':[_0x8b40('0x16')],'where':{'sectionId':_0x325f09['id']},'raw':!![]})['then'](function(_0x398d16){if(_0x398d16){var _0x5abc8a={'where':{'id':_[_0x8b40('0x17')](_0x398d16,'resourceId')},'raw':!![]};switch(_0x414cdd){case _0x8b40('0x5'):_0x5abc8a[_0x8b40('0x18')][_0x8b40('0x19')]=_0x8b40('0x7');break;case _0x8b40('0x1a'):_0x5abc8a[_0x8b40('0x18')][_0x8b40('0x9')]='ivr';break;}return db[_0x414cdd][_0x8b40('0x13')](_0x5abc8a);}else{return[];}});}}else{return[];}})['then'](function(_0xd3ae86){return _0xd3ae86;});}function joinOrLeaveQueues(_0x609dd8,_0x16a64b,_0x54c3af,_0x586b04){_0x609dd8[_0x16a64b](util['format'](_0x8b40('0x1b'),_0x54c3af,_0x586b04[_0x8b40('0x6')]));if(_0x586b04[_0x8b40('0x4')]){for(var _0x559f0c=0x0;_0x559f0c<_0x586b04[_0x8b40('0x4')]['length'];_0x559f0c+=0x1){_0x609dd8[_0x16a64b](util[_0x8b40('0x1c')](_0x8b40('0x1d'),_0x586b04[_0x8b40('0x4')][_0x559f0c]['name']));}}}function joinOrLeave(_0x464f8f,_0x4a76f4,_0x5090f5){var _0x33db2e;if(_0x464f8f['handshake'][_0x8b40('0x1e')]['id']){db[_0x8b40('0x5')][_0x8b40('0x1f')]({'attributes':['id','name',_0x8b40('0x19'),_0x8b40('0x20')],'where':{'id':_0x464f8f['handshake'][_0x8b40('0x1e')]['id']},'include':[{'model':db[_0x8b40('0x21')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x8b40('0x22')],'as':_0x8b40('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x8b40('0x24')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x8b40('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x8b40('0x26')],'as':_0x8b40('0x27'),'attributes':['id'],'raw':!![]}]})[_0x8b40('0xd')](function(_0x2f96b1){if(_0x2f96b1){_0x33db2e=_0x2f96b1;_0x464f8f[_0x4a76f4](util[_0x8b40('0x1c')](_0x8b40('0x1d'),_0x2f96b1['name']));var _0x173d62=[];switch(_0x2f96b1[_0x8b40('0x19')]){case _0x8b40('0x28'):_0x464f8f[_0x4a76f4](_0x8b40('0x29'));_0x464f8f[_0x4a76f4](_0x8b40('0x2a'));if(queryQueues['hasOwnProperty'](_0x8b40('0x2b'))){delete queryQueues[_0x8b40('0x2b')];}_0x173d62[_0x8b40('0x2c')](db[_0x8b40('0x2d')][_0x8b40('0x13')](queryQueues));_0x173d62[_0x8b40('0x2c')](db[_0x8b40('0x2e')][_0x8b40('0x13')](queryQueues));_0x173d62[_0x8b40('0x2c')](db[_0x8b40('0x2f')][_0x8b40('0x13')](queryQueues));_0x173d62[_0x8b40('0x2c')](db[_0x8b40('0x30')]['findAll'](queryQueues));_0x173d62[_0x8b40('0x2c')](db[_0x8b40('0x31')][_0x8b40('0x13')](queryQueues));_0x173d62[_0x8b40('0x2c')](db['OpenchannelQueue']['findAll'](queryQueues));_0x173d62['push'](db['WhatsappQueue'][_0x8b40('0x13')](queryQueues));_0x173d62[_0x8b40('0x2c')](db[_0x8b40('0x5')][_0x8b40('0x13')](queryTelephones));_0x173d62['push'](db[_0x8b40('0x32')][_0x8b40('0x13')](queryTrunks));_0x173d62[_0x8b40('0x2c')](db[_0x8b40('0x1a')][_0x8b40('0x13')](queryCampaigns));_0x173d62[_0x8b40('0x2c')](db[_0x8b40('0x5')][_0x8b40('0x13')](queryAgents));break;case _0x8b40('0x33'):_0x464f8f[_0x4a76f4]('voice:inbound');_0x464f8f[_0x4a76f4](_0x8b40('0x2a'));_0x173d62[_0x8b40('0x2c')](getAssociatedResources(_0x8b40('0x34'),_0x2f96b1[_0x8b40('0x20')],'VoiceQueue'));_0x173d62['push'](getAssociatedResources(_0x8b40('0x35'),_0x2f96b1['userProfileId'],_0x8b40('0x2e')));_0x173d62[_0x8b40('0x2c')](getAssociatedResources(_0x8b40('0xf'),_0x2f96b1[_0x8b40('0x20')],_0x8b40('0x2f')));_0x173d62['push'](getAssociatedResources(_0x8b40('0x10'),_0x2f96b1['userProfileId'],'SmsQueue'));_0x173d62[_0x8b40('0x2c')](getAssociatedResources(_0x8b40('0x11'),_0x2f96b1[_0x8b40('0x20')],'MailQueue'));_0x173d62[_0x8b40('0x2c')](getAssociatedResources(_0x8b40('0x36'),_0x2f96b1[_0x8b40('0x20')],_0x8b40('0x37')));_0x173d62[_0x8b40('0x2c')](getAssociatedResources(_0x8b40('0x12'),_0x2f96b1[_0x8b40('0x20')],_0x8b40('0x38')));_0x173d62[_0x8b40('0x2c')](getAssociatedResources(_0x8b40('0x14'),_0x2f96b1[_0x8b40('0x20')],_0x8b40('0x5')));_0x173d62[_0x8b40('0x2c')](getAssociatedResources(_0x8b40('0x39'),_0x2f96b1[_0x8b40('0x20')],_0x8b40('0x32')));_0x173d62[_0x8b40('0x2c')](getAssociatedResources(_0x8b40('0x3a'),_0x2f96b1[_0x8b40('0x20')],_0x8b40('0x1a')));_0x173d62['push'](db[_0x8b40('0x5')][_0x8b40('0x13')](queryAgents));break;case'agent':_0x464f8f[_0x4a76f4](_0x8b40('0x29'));_0x464f8f[_0x4a76f4](_0x8b40('0x2a'));_0x173d62[_0x8b40('0x2c')](_0x2f96b1[_0x8b40('0x3b')]({'attributes':['id','name']}));_0x173d62['push'](_0x2f96b1[_0x8b40('0x3c')]({'attributes':['id',_0x8b40('0x6')]}));_0x173d62[_0x8b40('0x2c')](_0x2f96b1[_0x8b40('0x3d')]({'attributes':['id',_0x8b40('0x6')]}));_0x173d62[_0x8b40('0x2c')](_0x2f96b1['getSmsQueues']({'attributes':['id',_0x8b40('0x6')]}));_0x173d62[_0x8b40('0x2c')](_0x2f96b1[_0x8b40('0x3e')]({'attributes':['id','name']}));_0x173d62['push'](_0x2f96b1[_0x8b40('0x3f')]({'attributes':['id',_0x8b40('0x6')]}));_0x173d62[_0x8b40('0x2c')](_0x2f96b1['getWhatsappQueues']({'attributes':['id',_0x8b40('0x6')]}));break;}return BPromise[_0x8b40('0x40')](_0x173d62);}})[_0x8b40('0xd')](function(_0x4a81d0){if(_0x4a81d0&&_0x4a81d0[_0x8b40('0x41')]){for(var _0x1c3f34=0x0;_0x1c3f34<_0x4a81d0[_0x8b40('0x41')];_0x1c3f34+=0x1){for(var _0x17733e=0x0;_0x17733e<_0x4a81d0[_0x1c3f34]['length'];_0x17733e+=0x1){switch(_0x1c3f34){case 0x0:joinOrLeaveQueues(_0x464f8f,_0x4a76f4,_0x8b40('0x42'),_0x4a81d0[_0x1c3f34][_0x17733e]);break;case 0x1:joinOrLeaveQueues(_0x464f8f,_0x4a76f4,'chat',_0x4a81d0[_0x1c3f34][_0x17733e]);break;case 0x2:joinOrLeaveQueues(_0x464f8f,_0x4a76f4,_0x8b40('0x43'),_0x4a81d0[_0x1c3f34][_0x17733e]);break;case 0x3:joinOrLeaveQueues(_0x464f8f,_0x4a76f4,_0x8b40('0x44'),_0x4a81d0[_0x1c3f34][_0x17733e]);break;case 0x4:joinOrLeaveQueues(_0x464f8f,_0x4a76f4,_0x8b40('0x45'),_0x4a81d0[_0x1c3f34][_0x17733e]);break;case 0x5:joinOrLeaveQueues(_0x464f8f,_0x4a76f4,_0x8b40('0x46'),_0x4a81d0[_0x1c3f34][_0x17733e]);break;case 0x6:joinOrLeaveQueues(_0x464f8f,_0x4a76f4,_0x8b40('0x47'),_0x4a81d0[_0x1c3f34][_0x17733e]);break;case 0x7:if(_0x33db2e[_0x8b40('0x19')]!=='agent')_0x464f8f[_0x4a76f4](util['format'](_0x8b40('0x48'),_0x4a81d0[_0x1c3f34][_0x17733e][_0x8b40('0x6')]));break;case 0x8:if(_0x33db2e[_0x8b40('0x19')]!==_0x8b40('0x8'))_0x464f8f[_0x4a76f4](util[_0x8b40('0x1c')](_0x8b40('0x49'),_0x4a81d0[_0x1c3f34][_0x17733e][_0x8b40('0x6')]));break;case 0x9:if(_0x33db2e[_0x8b40('0x19')]!==_0x8b40('0x8'))_0x464f8f[_0x4a76f4](util[_0x8b40('0x1c')](_0x8b40('0x4a'),_0x4a81d0[_0x1c3f34][_0x17733e][_0x8b40('0x9')],_0x4a81d0[_0x1c3f34][_0x17733e][_0x8b40('0x6')]));break;case 0xa:_0x464f8f[_0x4a76f4](util[_0x8b40('0x1c')](_0x8b40('0x1d'),_0x4a81d0[_0x1c3f34][_0x17733e][_0x8b40('0x6')]));break;}}}}})[_0x8b40('0xd')](function(){if(_0x4a76f4===_0x8b40('0x4b')){var _0x4dc8e9=_[_0x8b40('0x17')](_0x33db2e['ChatInteractions'],'id');return _0x33db2e[_0x8b40('0x4c')](_0x4dc8e9)[_0x8b40('0xd')](function(){for(var _0x53ee8f=0x0;_0x53ee8f<_0x4dc8e9['length'];_0x53ee8f+=0x1){_0x5090f5[_0x8b40('0x4d')](_0x8b40('0x4e'),{'ChatInteractionId':Number(_0x4dc8e9[_0x53ee8f]),'UserId':Number(_0x33db2e['id'])});}});}})[_0x8b40('0xd')](function(){if(_0x4a76f4===_0x8b40('0x4b')){var _0x5c1d32=_[_0x8b40('0x17')](_0x33db2e[_0x8b40('0x4f')],'id');return _0x33db2e['removeMailInteractions'](_0x5c1d32)[_0x8b40('0xd')](function(){for(var _0xf9f8b6=0x0;_0xf9f8b6<_0x5c1d32[_0x8b40('0x41')];_0xf9f8b6+=0x1){_0x5090f5[_0x8b40('0x4d')](_0x8b40('0x50'),{'MailInteractionId':Number(_0x5c1d32[_0xf9f8b6]),'UserId':Number(_0x33db2e['id'])});}});}})['then'](function(){if(_0x4a76f4===_0x8b40('0x4b')){var _0x433757=_[_0x8b40('0x17')](_0x33db2e[_0x8b40('0x23')],'id');return _0x33db2e[_0x8b40('0x51')](_0x433757)[_0x8b40('0xd')](function(){for(var _0x4d5884=0x0;_0x4d5884<_0x433757[_0x8b40('0x41')];_0x4d5884+=0x1){_0x5090f5[_0x8b40('0x4d')](_0x8b40('0x52'),{'FaxInteractionId':Number(_0x433757[_0x4d5884]),'UserId':Number(_0x33db2e['id'])});}});}})['then'](function(){if(_0x4a76f4==='leave'){var _0x5983ad=_[_0x8b40('0x17')](_0x33db2e[_0x8b40('0x53')],'id');return _0x33db2e[_0x8b40('0x54')](_0x5983ad)[_0x8b40('0xd')](function(){for(var _0x1782ca=0x0;_0x1782ca<_0x5983ad[_0x8b40('0x41')];_0x1782ca+=0x1){_0x5090f5[_0x8b40('0x4d')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x5983ad[_0x1782ca]),'UserId':Number(_0x33db2e['id'])});}});}})[_0x8b40('0xd')](function(){if(_0x4a76f4===_0x8b40('0x4b')){var _0x30cd37=_['map'](_0x33db2e[_0x8b40('0x25')],'id');return _0x33db2e[_0x8b40('0x55')](_0x30cd37)['then'](function(){for(var _0x5d31b9=0x0;_0x5d31b9<_0x30cd37[_0x8b40('0x41')];_0x5d31b9+=0x1){_0x5090f5['emit'](_0x8b40('0x56'),{'OpenchannelInteractionId':Number(_0x30cd37[_0x5d31b9]),'UserId':Number(_0x33db2e['id'])});}});}})['then'](function(){if(_0x4a76f4===_0x8b40('0x4b')){var _0x3b47e4=_[_0x8b40('0x17')](_0x33db2e[_0x8b40('0x27')],'id');return _0x33db2e[_0x8b40('0x57')](_0x3b47e4)['then'](function(){for(var _0x4d785f=0x0;_0x4d785f<_0x3b47e4[_0x8b40('0x41')];_0x4d785f+=0x1){_0x5090f5[_0x8b40('0x4d')](_0x8b40('0x58'),{'WhatsappInteractionId':Number(_0x3b47e4[_0x4d785f]),'UserId':Number(_0x33db2e['id'])});}});}})['catch'](function(_0x3377a8){_0x464f8f[_0x8b40('0x59')](_0x3377a8);});}}function onDisconnect(_0x2e0ddc,_0x394600){joinOrLeave(_0x2e0ddc,_0x8b40('0x4b'),_0x394600);}function onConnect(_0x4af1d0){joinOrLeave(_0x4af1d0,'join');}exports[_0x8b40('0x5a')]=function(_0x2a0f09){_0x2a0f09['on'](_0x8b40('0x5b'),function(_0x1edaa4){_0x1edaa4[_0x8b40('0x5c')](0x0);_0x1edaa4['address']=_0x1edaa4[_0x8b40('0x5d')][_0x8b40('0x5b')][_0x8b40('0x5e')]+':'+_0x1edaa4[_0x8b40('0x5d')][_0x8b40('0x5b')][_0x8b40('0x5f')];_0x1edaa4['connectedAt']=new Date();_0x1edaa4[_0x8b40('0x59')]=function(_0x5dd5df){console[_0x8b40('0x59')](_0x8b40('0x60')+_0x1edaa4['nsp'][_0x8b40('0x6')]+'['+_0x1edaa4[_0x8b40('0x61')]+']',_0x5dd5df);};_0x1edaa4['on'](_0x8b40('0x62'),function(){onDisconnect(_0x1edaa4,_0x2a0f09);_0x1edaa4[_0x8b40('0x59')](_0x8b40('0x63'));});onConnect(_0x1edaa4);_0x1edaa4['log'](_0x8b40('0x64'));});};