82d7710752d3328e2052b9f97d7ee32c242f621d
[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 _0xa533=['removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','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','remoteAddress','request','connectedAt','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','User','role','agent','telephone','type','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','%s:queue:%s','Agents','format','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','MailQueue','OpenchannelQueue','Trunk','Campaign','user','SmsQueue','MailQueues','WhatsappQueue','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','chat','fax','sms','openchannel','whatsapp','trunk:%s','leave','removeChatInteractions','emit','MailInteractions'];(function(_0x456392,_0x1b2b72){var _0x4a8c6b=function(_0x2fd267){while(--_0x2fd267){_0x456392['push'](_0x456392['shift']());}};_0x4a8c6b(++_0x1b2b72);}(_0xa533,0x1c6));var _0x3a53=function(_0x54f493,_0x385811){_0x54f493=_0x54f493-0x0;var _0x5f2b47=_0xa533[_0x54f493];return _0x5f2b47;};'use strict';var _=require(_0x3a53('0x0'));var util=require(_0x3a53('0x1'));var BPromise=require(_0x3a53('0x2'));var db=require(_0x3a53('0x3'))['db'];var config=require(_0x3a53('0x4'));var queryQueues={'attributes':['id',_0x3a53('0x5')],'include':[{'as':'Agents','model':db[_0x3a53('0x6')],'attributes':['id',_0x3a53('0x5'),_0x3a53('0x7')],'raw':!![],'where':{'role':_0x3a53('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x3a53('0x5')],'where':{'role':_0x3a53('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x3a53('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x3a53('0x5')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x3a53('0xa')],'where':{'type':_0x3a53('0xb')}};function getAssociatedResources(_0xf547ce,_0x21ea52,_0x284c21){return db[_0x3a53('0xc')]['findOne']({'where':{'name':_0xf547ce,'userProfileId':_0x21ea52},'raw':!![]})[_0x3a53('0xd')](function(_0x42f653){if(_0x42f653){if(_0x42f653[_0x3a53('0xe')]){switch(_0xf547ce){case _0x3a53('0xf'):case _0x3a53('0x10'):case _0x3a53('0x11'):case _0x3a53('0x12'):case'MailQueues':case _0x3a53('0x13'):case _0x3a53('0x14'):return db[_0x284c21][_0x3a53('0x15')](queryQueues);case _0x3a53('0x16'):return db[_0x284c21]['findAll'](queryTelephones);case _0x3a53('0x17'):return db[_0x284c21]['findAll'](queryTrunks);case _0x3a53('0x18'):return db[_0x284c21]['findAll'](queryCampaigns);}}else{return db[_0x3a53('0x19')][_0x3a53('0x15')]({'attributes':[_0x3a53('0x1a')],'where':{'sectionId':_0x42f653['id']},'raw':!![]})['then'](function(_0x1047af){if(_0x1047af){var _0x13a8de={'where':{'id':_[_0x3a53('0x1b')](_0x1047af,'resourceId')},'raw':!![]};switch(_0x284c21){case'User':_0x13a8de[_0x3a53('0x1c')][_0x3a53('0x7')]='telephone';break;case'Campaign':_0x13a8de[_0x3a53('0x1c')][_0x3a53('0xa')]=_0x3a53('0xb');break;}return db[_0x284c21][_0x3a53('0x15')](_0x13a8de);}else{return[];}});}}else{return[];}})[_0x3a53('0xd')](function(_0x2fd945){return _0x2fd945;});}function joinOrLeaveQueues(_0x256e48,_0x1749fd,_0x43a9a8,_0x4b0295){_0x256e48[_0x1749fd](util['format'](_0x3a53('0x1d'),_0x43a9a8,_0x4b0295['name']));if(_0x4b0295['Agents']){for(var _0x27b52b=0x0;_0x27b52b<_0x4b0295[_0x3a53('0x1e')]['length'];_0x27b52b+=0x1){_0x256e48[_0x1749fd](util[_0x3a53('0x1f')](_0x3a53('0x20'),_0x4b0295[_0x3a53('0x1e')][_0x27b52b]['name']));}}}function joinOrLeave(_0x5ec1e2,_0x42604e,_0x28478c){var _0x50dadd;if(_0x5ec1e2[_0x3a53('0x21')][_0x3a53('0x22')]['id']){db[_0x3a53('0x6')][_0x3a53('0x23')]({'attributes':['id',_0x3a53('0x5'),_0x3a53('0x7'),_0x3a53('0x24')],'where':{'id':_0x5ec1e2[_0x3a53('0x21')][_0x3a53('0x22')]['id']},'include':[{'model':db[_0x3a53('0x25')],'as':_0x3a53('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x3a53('0x27')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x3a53('0x28')],'as':_0x3a53('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x3a53('0x2a')],'as':_0x3a53('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x3a53('0x2c')],'as':_0x3a53('0x2d'),'attributes':['id'],'raw':!![]},{'model':db[_0x3a53('0x2e')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x3a53('0xd')](function(_0x905690){if(_0x905690){_0x50dadd=_0x905690;_0x5ec1e2[_0x42604e](util['format'](_0x3a53('0x20'),_0x905690['name']));var _0x5e45c0=[];switch(_0x905690[_0x3a53('0x7')]){case'admin':_0x5ec1e2[_0x42604e](_0x3a53('0x2f'));_0x5ec1e2[_0x42604e](_0x3a53('0x30'));if(queryQueues[_0x3a53('0x31')](_0x3a53('0x32'))){delete queryQueues[_0x3a53('0x32')];}_0x5e45c0[_0x3a53('0x33')](db[_0x3a53('0x34')][_0x3a53('0x15')](queryQueues));_0x5e45c0['push'](db['ChatQueue'][_0x3a53('0x15')](queryQueues));_0x5e45c0[_0x3a53('0x33')](db[_0x3a53('0x35')][_0x3a53('0x15')](queryQueues));_0x5e45c0[_0x3a53('0x33')](db['SmsQueue']['findAll'](queryQueues));_0x5e45c0[_0x3a53('0x33')](db[_0x3a53('0x36')][_0x3a53('0x15')](queryQueues));_0x5e45c0[_0x3a53('0x33')](db[_0x3a53('0x37')][_0x3a53('0x15')](queryQueues));_0x5e45c0[_0x3a53('0x33')](db['WhatsappQueue'][_0x3a53('0x15')](queryQueues));_0x5e45c0['push'](db[_0x3a53('0x6')][_0x3a53('0x15')](queryTelephones));_0x5e45c0[_0x3a53('0x33')](db[_0x3a53('0x38')][_0x3a53('0x15')](queryTrunks));_0x5e45c0[_0x3a53('0x33')](db[_0x3a53('0x39')]['findAll'](queryCampaigns));_0x5e45c0[_0x3a53('0x33')](db[_0x3a53('0x6')][_0x3a53('0x15')](queryAgents));break;case _0x3a53('0x3a'):_0x5ec1e2[_0x42604e](_0x3a53('0x2f'));_0x5ec1e2[_0x42604e]('voice:outbound');_0x5e45c0[_0x3a53('0x33')](getAssociatedResources(_0x3a53('0xf'),_0x905690[_0x3a53('0x24')],'VoiceQueue'));_0x5e45c0[_0x3a53('0x33')](getAssociatedResources('ChatQueues',_0x905690[_0x3a53('0x24')],'ChatQueue'));_0x5e45c0[_0x3a53('0x33')](getAssociatedResources(_0x3a53('0x11'),_0x905690[_0x3a53('0x24')],_0x3a53('0x35')));_0x5e45c0[_0x3a53('0x33')](getAssociatedResources(_0x3a53('0x12'),_0x905690['userProfileId'],_0x3a53('0x3b')));_0x5e45c0[_0x3a53('0x33')](getAssociatedResources(_0x3a53('0x3c'),_0x905690[_0x3a53('0x24')],_0x3a53('0x36')));_0x5e45c0[_0x3a53('0x33')](getAssociatedResources(_0x3a53('0x13'),_0x905690[_0x3a53('0x24')],_0x3a53('0x37')));_0x5e45c0['push'](getAssociatedResources(_0x3a53('0x14'),_0x905690[_0x3a53('0x24')],_0x3a53('0x3d')));_0x5e45c0[_0x3a53('0x33')](getAssociatedResources(_0x3a53('0x16'),_0x905690['userProfileId'],_0x3a53('0x6')));_0x5e45c0[_0x3a53('0x33')](getAssociatedResources(_0x3a53('0x17'),_0x905690[_0x3a53('0x24')],_0x3a53('0x38')));_0x5e45c0[_0x3a53('0x33')](getAssociatedResources(_0x3a53('0x18'),_0x905690[_0x3a53('0x24')],'Campaign'));_0x5e45c0[_0x3a53('0x33')](db[_0x3a53('0x6')][_0x3a53('0x15')](queryAgents));break;case _0x3a53('0x8'):_0x5ec1e2[_0x42604e](_0x3a53('0x2f'));_0x5ec1e2[_0x42604e]('voice:outbound');_0x5e45c0[_0x3a53('0x33')](_0x905690[_0x3a53('0x3e')]({'attributes':['id',_0x3a53('0x5')]}));_0x5e45c0['push'](_0x905690['getChatQueues']({'attributes':['id','name']}));_0x5e45c0['push'](_0x905690[_0x3a53('0x3f')]({'attributes':['id','name']}));_0x5e45c0[_0x3a53('0x33')](_0x905690[_0x3a53('0x40')]({'attributes':['id','name']}));_0x5e45c0[_0x3a53('0x33')](_0x905690[_0x3a53('0x41')]({'attributes':['id',_0x3a53('0x5')]}));_0x5e45c0[_0x3a53('0x33')](_0x905690[_0x3a53('0x42')]({'attributes':['id',_0x3a53('0x5')]}));_0x5e45c0['push'](_0x905690[_0x3a53('0x43')]({'attributes':['id','name']}));break;}return BPromise[_0x3a53('0x44')](_0x5e45c0);}})['then'](function(_0x17a803){if(_0x17a803&&_0x17a803[_0x3a53('0x45')]){for(var _0x2ead88=0x0;_0x2ead88<_0x17a803['length'];_0x2ead88+=0x1){for(var _0xaa4b1c=0x0;_0xaa4b1c<_0x17a803[_0x2ead88][_0x3a53('0x45')];_0xaa4b1c+=0x1){switch(_0x2ead88){case 0x0:joinOrLeaveQueues(_0x5ec1e2,_0x42604e,_0x3a53('0x46'),_0x17a803[_0x2ead88][_0xaa4b1c]);break;case 0x1:joinOrLeaveQueues(_0x5ec1e2,_0x42604e,_0x3a53('0x47'),_0x17a803[_0x2ead88][_0xaa4b1c]);break;case 0x2:joinOrLeaveQueues(_0x5ec1e2,_0x42604e,_0x3a53('0x48'),_0x17a803[_0x2ead88][_0xaa4b1c]);break;case 0x3:joinOrLeaveQueues(_0x5ec1e2,_0x42604e,_0x3a53('0x49'),_0x17a803[_0x2ead88][_0xaa4b1c]);break;case 0x4:joinOrLeaveQueues(_0x5ec1e2,_0x42604e,'mail',_0x17a803[_0x2ead88][_0xaa4b1c]);break;case 0x5:joinOrLeaveQueues(_0x5ec1e2,_0x42604e,_0x3a53('0x4a'),_0x17a803[_0x2ead88][_0xaa4b1c]);break;case 0x6:joinOrLeaveQueues(_0x5ec1e2,_0x42604e,_0x3a53('0x4b'),_0x17a803[_0x2ead88][_0xaa4b1c]);break;case 0x7:if(_0x50dadd[_0x3a53('0x7')]!==_0x3a53('0x8'))_0x5ec1e2[_0x42604e](util['format']('telephone:%s',_0x17a803[_0x2ead88][_0xaa4b1c]['name']));break;case 0x8:if(_0x50dadd[_0x3a53('0x7')]!==_0x3a53('0x8'))_0x5ec1e2[_0x42604e](util[_0x3a53('0x1f')](_0x3a53('0x4c'),_0x17a803[_0x2ead88][_0xaa4b1c]['name']));break;case 0x9:if(_0x50dadd[_0x3a53('0x7')]!==_0x3a53('0x8'))_0x5ec1e2[_0x42604e](util[_0x3a53('0x1f')]('campaign:%s:%s',_0x17a803[_0x2ead88][_0xaa4b1c][_0x3a53('0xa')],_0x17a803[_0x2ead88][_0xaa4b1c]['name']));break;case 0xa:_0x5ec1e2[_0x42604e](util[_0x3a53('0x1f')](_0x3a53('0x20'),_0x17a803[_0x2ead88][_0xaa4b1c][_0x3a53('0x5')]));break;}}}}})[_0x3a53('0xd')](function(){if(_0x42604e===_0x3a53('0x4d')){var _0x8f834d=_[_0x3a53('0x1b')](_0x50dadd[_0x3a53('0x26')],'id');return _0x50dadd[_0x3a53('0x4e')](_0x8f834d)[_0x3a53('0xd')](function(){for(var _0x57a364=0x0;_0x57a364<_0x8f834d[_0x3a53('0x45')];_0x57a364+=0x1){_0x28478c[_0x3a53('0x4f')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x8f834d[_0x57a364]),'UserId':Number(_0x50dadd['id'])});}});}})[_0x3a53('0xd')](function(){if(_0x42604e===_0x3a53('0x4d')){var _0x13eaea=_['map'](_0x50dadd[_0x3a53('0x50')],'id');return _0x50dadd[_0x3a53('0x51')](_0x13eaea)[_0x3a53('0xd')](function(){for(var _0x19fc89=0x0;_0x19fc89<_0x13eaea['length'];_0x19fc89+=0x1){_0x28478c[_0x3a53('0x4f')](_0x3a53('0x52'),{'MailInteractionId':Number(_0x13eaea[_0x19fc89]),'UserId':Number(_0x50dadd['id'])});}});}})['then'](function(){if(_0x42604e===_0x3a53('0x4d')){var _0x1977e5=_[_0x3a53('0x1b')](_0x50dadd[_0x3a53('0x29')],'id');return _0x50dadd[_0x3a53('0x53')](_0x1977e5)['then'](function(){for(var _0x543022=0x0;_0x543022<_0x1977e5[_0x3a53('0x45')];_0x543022+=0x1){_0x28478c['emit'](_0x3a53('0x54'),{'FaxInteractionId':Number(_0x1977e5[_0x543022]),'UserId':Number(_0x50dadd['id'])});}});}})[_0x3a53('0xd')](function(){if(_0x42604e===_0x3a53('0x4d')){var _0x484db5=_['map'](_0x50dadd[_0x3a53('0x2b')],'id');return _0x50dadd[_0x3a53('0x55')](_0x484db5)[_0x3a53('0xd')](function(){for(var _0x871dd7=0x0;_0x871dd7<_0x484db5[_0x3a53('0x45')];_0x871dd7+=0x1){_0x28478c[_0x3a53('0x4f')](_0x3a53('0x56'),{'SmsInteractionId':Number(_0x484db5[_0x871dd7]),'UserId':Number(_0x50dadd['id'])});}});}})[_0x3a53('0xd')](function(){if(_0x42604e==='leave'){var _0x55af36=_[_0x3a53('0x1b')](_0x50dadd[_0x3a53('0x2d')],'id');return _0x50dadd[_0x3a53('0x57')](_0x55af36)[_0x3a53('0xd')](function(){for(var _0x44025b=0x0;_0x44025b<_0x55af36[_0x3a53('0x45')];_0x44025b+=0x1){_0x28478c[_0x3a53('0x4f')](_0x3a53('0x58'),{'OpenchannelInteractionId':Number(_0x55af36[_0x44025b]),'UserId':Number(_0x50dadd['id'])});}});}})[_0x3a53('0xd')](function(){if(_0x42604e==='leave'){var _0x3739e1=_[_0x3a53('0x1b')](_0x50dadd[_0x3a53('0x59')],'id');return _0x50dadd[_0x3a53('0x5a')](_0x3739e1)[_0x3a53('0xd')](function(){for(var _0x5e6989=0x0;_0x5e6989<_0x3739e1[_0x3a53('0x45')];_0x5e6989+=0x1){_0x28478c[_0x3a53('0x4f')](_0x3a53('0x5b'),{'WhatsappInteractionId':Number(_0x3739e1[_0x5e6989]),'UserId':Number(_0x50dadd['id'])});}});}})[_0x3a53('0x5c')](function(_0x5f5c41){_0x5ec1e2[_0x3a53('0x5d')](_0x5f5c41);});}}function onDisconnect(_0xba6e66,_0x478e42){joinOrLeave(_0xba6e66,_0x3a53('0x4d'),_0x478e42);}function onConnect(_0x4eb611){joinOrLeave(_0x4eb611,_0x3a53('0x5e'));}exports[_0x3a53('0x5f')]=function(_0x49a521){_0x49a521['on'](_0x3a53('0x60'),function(_0x1c1d4d){_0x1c1d4d[_0x3a53('0x61')](0x0);_0x1c1d4d['address']=_0x1c1d4d['request'][_0x3a53('0x60')][_0x3a53('0x62')]+':'+_0x1c1d4d[_0x3a53('0x63')][_0x3a53('0x60')]['remotePort'];_0x1c1d4d[_0x3a53('0x64')]=new Date();_0x1c1d4d[_0x3a53('0x5d')]=function(_0x437313){console['log'](_0x3a53('0x65')+_0x1c1d4d[_0x3a53('0x66')][_0x3a53('0x5')]+'['+_0x1c1d4d[_0x3a53('0x67')]+']',_0x437313);};_0x1c1d4d['on'](_0x3a53('0x68'),function(){onDisconnect(_0x1c1d4d,_0x49a521);_0x1c1d4d[_0x3a53('0x5d')](_0x3a53('0x69'));});onConnect(_0x1c1d4d);_0x1c1d4d[_0x3a53('0x5d')](_0x3a53('0x6a'));});};