ecc3bc9962c2ac7888a2554a721340ffda0d8e74
[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 _0x252b=['telephone','Campaign','where','format','%s:queue:%s','Agents','length','user:%s','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','admin','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','voice:outbound','MailQueues','WhatsappQueues','Telephones','voice:inbound','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','chat','mail','openchannel','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','remoteAddress','request','remotePort','connectedAt','nsp','disconnect','CONNECTED','lodash','util','bluebird','./environment','name','User','role','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','OpenchannelQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map'];(function(_0x11fcdf,_0x5d6088){var _0x144bfe=function(_0x4678ab){while(--_0x4678ab){_0x11fcdf['push'](_0x11fcdf['shift']());}};_0x144bfe(++_0x5d6088);}(_0x252b,0x117));var _0xb252=function(_0x178f9c,_0x9dc87a){_0x178f9c=_0x178f9c-0x0;var _0x413f4a=_0x252b[_0x178f9c];return _0x413f4a;};'use strict';var _=require(_0xb252('0x0'));var util=require(_0xb252('0x1'));var BPromise=require(_0xb252('0x2'));var db=require('../mysqldb')['db'];var config=require(_0xb252('0x3'));var queryQueues={'attributes':['id',_0xb252('0x4')],'include':[{'as':'Agents','model':db[_0xb252('0x5')],'attributes':['id',_0xb252('0x4'),_0xb252('0x6')],'raw':!![],'where':{'role':_0xb252('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xb252('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xb252('0x4')],'where':{'role':_0xb252('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb252('0x4'),_0xb252('0x8')],'where':{'type':_0xb252('0x9')}};function getAssociatedResources(_0x3be9c0,_0x17a963,_0x444cf4){return db[_0xb252('0xa')][_0xb252('0xb')]({'where':{'name':_0x3be9c0,'userProfileId':_0x17a963},'raw':!![]})[_0xb252('0xc')](function(_0x395414){if(_0x395414){if(_0x395414[_0xb252('0xd')]){switch(_0x3be9c0){case _0xb252('0xe'):case'ChatQueues':case _0xb252('0xf'):case _0xb252('0x10'):case'MailQueues':case _0xb252('0x11'):case'WhatsappQueues':return db[_0x444cf4][_0xb252('0x12')](queryQueues);case'Telephones':return db[_0x444cf4][_0xb252('0x12')](queryTelephones);case _0xb252('0x13'):return db[_0x444cf4][_0xb252('0x12')](queryTrunks);case _0xb252('0x14'):return db[_0x444cf4][_0xb252('0x12')](queryCampaigns);}}else{return db[_0xb252('0x15')][_0xb252('0x12')]({'attributes':[_0xb252('0x16')],'where':{'sectionId':_0x395414['id']},'raw':!![]})[_0xb252('0xc')](function(_0x3c09f7){if(_0x3c09f7){var _0x424c66={'where':{'id':_[_0xb252('0x17')](_0x3c09f7,_0xb252('0x16'))},'raw':!![]};switch(_0x444cf4){case _0xb252('0x5'):_0x424c66['where'][_0xb252('0x6')]=_0xb252('0x18');break;case _0xb252('0x19'):_0x424c66[_0xb252('0x1a')][_0xb252('0x8')]='ivr';break;}return db[_0x444cf4][_0xb252('0x12')](_0x424c66);}else{return[];}});}}else{return[];}})['then'](function(_0x5defed){return _0x5defed;});}function joinOrLeaveQueues(_0x4c493b,_0x566558,_0x40cfc2,_0x2c1421){_0x4c493b[_0x566558](util[_0xb252('0x1b')](_0xb252('0x1c'),_0x40cfc2,_0x2c1421[_0xb252('0x4')]));if(_0x2c1421['Agents']){for(var _0x436df6=0x0;_0x436df6<_0x2c1421[_0xb252('0x1d')][_0xb252('0x1e')];_0x436df6+=0x1){_0x4c493b[_0x566558](util['format'](_0xb252('0x1f'),_0x2c1421[_0xb252('0x1d')][_0x436df6][_0xb252('0x4')]));}}}function joinOrLeave(_0x3d6bd7,_0x1badc6,_0xf87fd2){var _0x2eb0d6;if(_0x3d6bd7['handshake']['query']['id']){db[_0xb252('0x5')]['find']({'attributes':['id','name',_0xb252('0x6'),_0xb252('0x20')],'where':{'id':_0x3d6bd7[_0xb252('0x21')]['query']['id']},'include':[{'model':db[_0xb252('0x22')],'as':_0xb252('0x23'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xb252('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xb252('0x25')],'as':_0xb252('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xb252('0x27')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb252('0x28')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb252('0x29')],'as':_0xb252('0x2a'),'attributes':['id'],'raw':!![]}]})[_0xb252('0xc')](function(_0xfc44af){if(_0xfc44af){_0x2eb0d6=_0xfc44af;_0x3d6bd7[_0x1badc6](util[_0xb252('0x1b')]('user:%s',_0xfc44af[_0xb252('0x4')]));var _0x50bd3e=[];switch(_0xfc44af[_0xb252('0x6')]){case _0xb252('0x2b'):_0x3d6bd7[_0x1badc6]('voice:inbound');_0x3d6bd7[_0x1badc6]('voice:outbound');if(queryQueues[_0xb252('0x2c')](_0xb252('0x2d'))){delete queryQueues['include'];}_0x50bd3e[_0xb252('0x2e')](db[_0xb252('0x2f')][_0xb252('0x12')](queryQueues));_0x50bd3e['push'](db[_0xb252('0x30')][_0xb252('0x12')](queryQueues));_0x50bd3e[_0xb252('0x2e')](db[_0xb252('0x31')][_0xb252('0x12')](queryQueues));_0x50bd3e[_0xb252('0x2e')](db[_0xb252('0x32')][_0xb252('0x12')](queryQueues));_0x50bd3e['push'](db[_0xb252('0x33')][_0xb252('0x12')](queryQueues));_0x50bd3e[_0xb252('0x2e')](db[_0xb252('0x34')]['findAll'](queryQueues));_0x50bd3e['push'](db[_0xb252('0x35')][_0xb252('0x12')](queryQueues));_0x50bd3e['push'](db[_0xb252('0x5')][_0xb252('0x12')](queryTelephones));_0x50bd3e[_0xb252('0x2e')](db[_0xb252('0x36')]['findAll'](queryTrunks));_0x50bd3e[_0xb252('0x2e')](db['Campaign'][_0xb252('0x12')](queryCampaigns));_0x50bd3e[_0xb252('0x2e')](db[_0xb252('0x5')][_0xb252('0x12')](queryAgents));break;case'user':_0x3d6bd7[_0x1badc6]('voice:inbound');_0x3d6bd7[_0x1badc6](_0xb252('0x37'));_0x50bd3e[_0xb252('0x2e')](getAssociatedResources(_0xb252('0xe'),_0xfc44af[_0xb252('0x20')],_0xb252('0x2f')));_0x50bd3e[_0xb252('0x2e')](getAssociatedResources('ChatQueues',_0xfc44af['userProfileId'],'ChatQueue'));_0x50bd3e[_0xb252('0x2e')](getAssociatedResources('FaxQueues',_0xfc44af[_0xb252('0x20')],_0xb252('0x31')));_0x50bd3e[_0xb252('0x2e')](getAssociatedResources(_0xb252('0x10'),_0xfc44af[_0xb252('0x20')],'SmsQueue'));_0x50bd3e[_0xb252('0x2e')](getAssociatedResources(_0xb252('0x38'),_0xfc44af[_0xb252('0x20')],_0xb252('0x33')));_0x50bd3e[_0xb252('0x2e')](getAssociatedResources(_0xb252('0x11'),_0xfc44af['userProfileId'],'OpenchannelQueue'));_0x50bd3e[_0xb252('0x2e')](getAssociatedResources(_0xb252('0x39'),_0xfc44af['userProfileId'],_0xb252('0x35')));_0x50bd3e[_0xb252('0x2e')](getAssociatedResources(_0xb252('0x3a'),_0xfc44af[_0xb252('0x20')],_0xb252('0x5')));_0x50bd3e[_0xb252('0x2e')](getAssociatedResources(_0xb252('0x13'),_0xfc44af[_0xb252('0x20')],_0xb252('0x36')));_0x50bd3e['push'](getAssociatedResources('IvrCampaigns',_0xfc44af[_0xb252('0x20')],'Campaign'));_0x50bd3e[_0xb252('0x2e')](db[_0xb252('0x5')][_0xb252('0x12')](queryAgents));break;case _0xb252('0x7'):_0x3d6bd7[_0x1badc6](_0xb252('0x3b'));_0x3d6bd7[_0x1badc6](_0xb252('0x37'));_0x50bd3e['push'](_0xfc44af[_0xb252('0x3c')]({'attributes':['id',_0xb252('0x4')]}));_0x50bd3e['push'](_0xfc44af[_0xb252('0x3d')]({'attributes':['id',_0xb252('0x4')]}));_0x50bd3e[_0xb252('0x2e')](_0xfc44af[_0xb252('0x3e')]({'attributes':['id','name']}));_0x50bd3e[_0xb252('0x2e')](_0xfc44af[_0xb252('0x3f')]({'attributes':['id',_0xb252('0x4')]}));_0x50bd3e['push'](_0xfc44af[_0xb252('0x40')]({'attributes':['id','name']}));_0x50bd3e[_0xb252('0x2e')](_0xfc44af[_0xb252('0x41')]({'attributes':['id',_0xb252('0x4')]}));_0x50bd3e[_0xb252('0x2e')](_0xfc44af[_0xb252('0x42')]({'attributes':['id',_0xb252('0x4')]}));break;}return BPromise[_0xb252('0x43')](_0x50bd3e);}})[_0xb252('0xc')](function(_0x18cd40){if(_0x18cd40&&_0x18cd40[_0xb252('0x1e')]){for(var _0x267af9=0x0;_0x267af9<_0x18cd40[_0xb252('0x1e')];_0x267af9+=0x1){for(var _0x5f4a77=0x0;_0x5f4a77<_0x18cd40[_0x267af9][_0xb252('0x1e')];_0x5f4a77+=0x1){switch(_0x267af9){case 0x0:joinOrLeaveQueues(_0x3d6bd7,_0x1badc6,'voice',_0x18cd40[_0x267af9][_0x5f4a77]);break;case 0x1:joinOrLeaveQueues(_0x3d6bd7,_0x1badc6,_0xb252('0x44'),_0x18cd40[_0x267af9][_0x5f4a77]);break;case 0x2:joinOrLeaveQueues(_0x3d6bd7,_0x1badc6,'fax',_0x18cd40[_0x267af9][_0x5f4a77]);break;case 0x3:joinOrLeaveQueues(_0x3d6bd7,_0x1badc6,'sms',_0x18cd40[_0x267af9][_0x5f4a77]);break;case 0x4:joinOrLeaveQueues(_0x3d6bd7,_0x1badc6,_0xb252('0x45'),_0x18cd40[_0x267af9][_0x5f4a77]);break;case 0x5:joinOrLeaveQueues(_0x3d6bd7,_0x1badc6,_0xb252('0x46'),_0x18cd40[_0x267af9][_0x5f4a77]);break;case 0x6:joinOrLeaveQueues(_0x3d6bd7,_0x1badc6,'whatsapp',_0x18cd40[_0x267af9][_0x5f4a77]);break;case 0x7:_0x3d6bd7[_0x1badc6](util[_0xb252('0x1b')]('telephone:%s',_0x18cd40[_0x267af9][_0x5f4a77][_0xb252('0x4')]));break;case 0x8:_0x3d6bd7[_0x1badc6](util[_0xb252('0x1b')](_0xb252('0x47'),_0x18cd40[_0x267af9][_0x5f4a77]['name']));break;case 0x9:_0x3d6bd7[_0x1badc6](util[_0xb252('0x1b')](_0xb252('0x48'),_0x18cd40[_0x267af9][_0x5f4a77][_0xb252('0x8')],_0x18cd40[_0x267af9][_0x5f4a77]['name']));break;case 0xa:_0x3d6bd7[_0x1badc6](util[_0xb252('0x1b')](_0xb252('0x1f'),_0x18cd40[_0x267af9][_0x5f4a77]['name']));break;}}}}})['then'](function(){if(_0x1badc6===_0xb252('0x49')){var _0x3d5c35=_[_0xb252('0x17')](_0x2eb0d6[_0xb252('0x23')],'id');return _0x2eb0d6[_0xb252('0x4a')](_0x3d5c35)['then'](function(){for(var _0x2ce313=0x0;_0x2ce313<_0x3d5c35[_0xb252('0x1e')];_0x2ce313+=0x1){_0xf87fd2[_0xb252('0x4b')](_0xb252('0x4c'),{'ChatInteractionId':Number(_0x3d5c35[_0x2ce313]),'UserId':Number(_0x2eb0d6['id'])});}});}})[_0xb252('0xc')](function(){if(_0x1badc6===_0xb252('0x49')){var _0x1b79f4=_[_0xb252('0x17')](_0x2eb0d6[_0xb252('0x24')],'id');return _0x2eb0d6[_0xb252('0x4d')](_0x1b79f4)[_0xb252('0xc')](function(){for(var _0x5d92c8=0x0;_0x5d92c8<_0x1b79f4[_0xb252('0x1e')];_0x5d92c8+=0x1){_0xf87fd2[_0xb252('0x4b')](_0xb252('0x4e'),{'MailInteractionId':Number(_0x1b79f4[_0x5d92c8]),'UserId':Number(_0x2eb0d6['id'])});}});}})[_0xb252('0xc')](function(){if(_0x1badc6===_0xb252('0x49')){var _0x5767b=_['map'](_0x2eb0d6['FaxInteractions'],'id');return _0x2eb0d6['removeFaxInteractions'](_0x5767b)[_0xb252('0xc')](function(){for(var _0x257895=0x0;_0x257895<_0x5767b[_0xb252('0x1e')];_0x257895+=0x1){_0xf87fd2['emit'](_0xb252('0x4f'),{'FaxInteractionId':Number(_0x5767b[_0x257895]),'UserId':Number(_0x2eb0d6['id'])});}});}})[_0xb252('0xc')](function(){if(_0x1badc6===_0xb252('0x49')){var _0x1a89ee=_[_0xb252('0x17')](_0x2eb0d6[_0xb252('0x50')],'id');return _0x2eb0d6[_0xb252('0x51')](_0x1a89ee)[_0xb252('0xc')](function(){for(var _0x1896af=0x0;_0x1896af<_0x1a89ee['length'];_0x1896af+=0x1){_0xf87fd2[_0xb252('0x4b')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x1a89ee[_0x1896af]),'UserId':Number(_0x2eb0d6['id'])});}});}})[_0xb252('0xc')](function(){if(_0x1badc6===_0xb252('0x49')){var _0x30c6fd=_[_0xb252('0x17')](_0x2eb0d6[_0xb252('0x52')],'id');return _0x2eb0d6[_0xb252('0x53')](_0x30c6fd)[_0xb252('0xc')](function(){for(var _0x41e28e=0x0;_0x41e28e<_0x30c6fd['length'];_0x41e28e+=0x1){_0xf87fd2[_0xb252('0x4b')](_0xb252('0x54'),{'OpenchannelInteractionId':Number(_0x30c6fd[_0x41e28e]),'UserId':Number(_0x2eb0d6['id'])});}});}})[_0xb252('0xc')](function(){if(_0x1badc6===_0xb252('0x49')){var _0x2c8382=_[_0xb252('0x17')](_0x2eb0d6['WhatsappInteractions'],'id');return _0x2eb0d6[_0xb252('0x55')](_0x2c8382)[_0xb252('0xc')](function(){for(var _0x40d656=0x0;_0x40d656<_0x2c8382[_0xb252('0x1e')];_0x40d656+=0x1){_0xf87fd2[_0xb252('0x4b')](_0xb252('0x56'),{'WhatsappInteractionId':Number(_0x2c8382[_0x40d656]),'UserId':Number(_0x2eb0d6['id'])});}});}})[_0xb252('0x57')](function(_0x19ade7){_0x3d6bd7[_0xb252('0x58')](_0x19ade7);});}}function onDisconnect(_0xd688a7,_0x1f9313){joinOrLeave(_0xd688a7,_0xb252('0x49'),_0x1f9313);}function onConnect(_0x39fae1){joinOrLeave(_0x39fae1,_0xb252('0x59'));}exports[_0xb252('0x5a')]=function(_0x51e5cb){_0x51e5cb['on'](_0xb252('0x5b'),function(_0x4e1828){_0x4e1828[_0xb252('0x5c')](0x0);_0x4e1828[_0xb252('0x5d')]=_0x4e1828['request'][_0xb252('0x5b')][_0xb252('0x5e')]+':'+_0x4e1828[_0xb252('0x5f')][_0xb252('0x5b')][_0xb252('0x60')];_0x4e1828[_0xb252('0x61')]=new Date();_0x4e1828[_0xb252('0x58')]=function(_0x35cf4f){console['log']('SocketIO\x20'+_0x4e1828[_0xb252('0x62')][_0xb252('0x4')]+'['+_0x4e1828[_0xb252('0x5d')]+']',_0x35cf4f);};_0x4e1828['on'](_0xb252('0x63'),function(){onDisconnect(_0x4e1828,_0x51e5cb);_0x4e1828[_0xb252('0x58')]('DISCONNECTED');});onConnect(_0x4e1828);_0x4e1828[_0xb252('0x58')](_0xb252('0x64'));});};