b574963215a3f00ea9a6ac0026e1a15aff6c0ada
[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 _0x1c45=['openchannel','whatsapp','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','connection','address','request','remotePort','log','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','map','where','role','Campaign','format','length','user:%s','handshake','query','find','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','Trunk','user','VoiceQueues','userProfileId','SmsQueue','WhatsappQueue','getVoiceQueues','getFaxQueues','getMailQueues','all','voice','fax','sms','mail'];(function(_0x2947d1,_0x5e70b0){var _0x2b36a5=function(_0x37637c){while(--_0x37637c){_0x2947d1['push'](_0x2947d1['shift']());}};_0x2b36a5(++_0x5e70b0);}(_0x1c45,0x1b0));var _0x51c4=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x1c45[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x51c4('0x0'));var util=require(_0x51c4('0x1'));var BPromise=require(_0x51c4('0x2'));var db=require(_0x51c4('0x3'))['db'];var config=require(_0x51c4('0x4'));var queryQueues={'attributes':['id',_0x51c4('0x5')],'include':[{'as':_0x51c4('0x6'),'model':db[_0x51c4('0x7')],'attributes':['id','name','role'],'raw':!![],'where':{'role':_0x51c4('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x51c4('0x5')],'where':{'role':_0x51c4('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x51c4('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x51c4('0x5')],'where':{'role':_0x51c4('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x51c4('0x5'),_0x51c4('0xa')],'where':{'type':_0x51c4('0xb')}};function getAssociatedResources(_0x524a08,_0x52fc47,_0x39ceec){return db[_0x51c4('0xc')][_0x51c4('0xd')]({'where':{'name':_0x524a08,'userProfileId':_0x52fc47},'raw':!![]})[_0x51c4('0xe')](function(_0x109781){if(_0x109781){if(_0x109781[_0x51c4('0xf')]){switch(_0x524a08){case'VoiceQueues':case _0x51c4('0x10'):case _0x51c4('0x11'):case _0x51c4('0x12'):case _0x51c4('0x13'):case _0x51c4('0x14'):case _0x51c4('0x15'):return db[_0x39ceec][_0x51c4('0x16')](queryQueues);case _0x51c4('0x17'):return db[_0x39ceec][_0x51c4('0x16')](queryTelephones);case _0x51c4('0x18'):return db[_0x39ceec][_0x51c4('0x16')](queryTrunks);case _0x51c4('0x19'):return db[_0x39ceec][_0x51c4('0x16')](queryCampaigns);}}else{return db['UserProfileResource'][_0x51c4('0x16')]({'attributes':[_0x51c4('0x1a')],'where':{'sectionId':_0x109781['id']},'raw':!![]})['then'](function(_0x312169){if(_0x312169){var _0x42d96f={'where':{'id':_[_0x51c4('0x1b')](_0x312169,_0x51c4('0x1a'))},'raw':!![]};switch(_0x39ceec){case _0x51c4('0x7'):_0x42d96f[_0x51c4('0x1c')][_0x51c4('0x1d')]='telephone';break;case _0x51c4('0x1e'):_0x42d96f[_0x51c4('0x1c')]['type']=_0x51c4('0xb');break;}return db[_0x39ceec]['findAll'](_0x42d96f);}else{return[];}});}}else{return[];}})[_0x51c4('0xe')](function(_0x1f227d){return _0x1f227d;});}function joinOrLeaveQueues(_0x2e7341,_0x44c384,_0x535690,_0x3a67ed){_0x2e7341[_0x44c384](util[_0x51c4('0x1f')]('%s:queue:%s',_0x535690,_0x3a67ed['name']));if(_0x3a67ed[_0x51c4('0x6')]){for(var _0x1fb226=0x0;_0x1fb226<_0x3a67ed[_0x51c4('0x6')][_0x51c4('0x20')];_0x1fb226+=0x1){_0x2e7341[_0x44c384](util[_0x51c4('0x1f')](_0x51c4('0x21'),_0x3a67ed['Agents'][_0x1fb226][_0x51c4('0x5')]));}}}function joinOrLeave(_0x45cc46,_0x3cc1c0,_0x3b56d1){var _0x2281a0;if(_0x45cc46[_0x51c4('0x22')][_0x51c4('0x23')]['id']){db[_0x51c4('0x7')][_0x51c4('0x24')]({'attributes':['id',_0x51c4('0x5'),_0x51c4('0x1d'),'userProfileId'],'where':{'id':_0x45cc46[_0x51c4('0x22')][_0x51c4('0x23')]['id']},'include':[{'model':db[_0x51c4('0x25')],'as':_0x51c4('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x51c4('0x27')],'as':_0x51c4('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x51c4('0x29')],'as':_0x51c4('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x51c4('0x2b')],'as':_0x51c4('0x2c'),'attributes':['id'],'raw':!![]},{'model':db[_0x51c4('0x2d')],'as':_0x51c4('0x2e'),'attributes':['id'],'raw':!![]},{'model':db[_0x51c4('0x2f')],'as':_0x51c4('0x30'),'attributes':['id'],'raw':!![]}]})[_0x51c4('0xe')](function(_0x573f86){if(_0x573f86){_0x2281a0=_0x573f86;_0x45cc46[_0x3cc1c0](util[_0x51c4('0x1f')](_0x51c4('0x21'),_0x573f86['name']));var _0x2275ba=[];switch(_0x573f86[_0x51c4('0x1d')]){case _0x51c4('0x31'):_0x45cc46[_0x3cc1c0](_0x51c4('0x32'));_0x45cc46[_0x3cc1c0](_0x51c4('0x33'));if(queryQueues['hasOwnProperty'](_0x51c4('0x34'))){delete queryQueues[_0x51c4('0x34')];}_0x2275ba[_0x51c4('0x35')](db[_0x51c4('0x36')]['findAll'](queryQueues));_0x2275ba['push'](db[_0x51c4('0x37')][_0x51c4('0x16')](queryQueues));_0x2275ba['push'](db[_0x51c4('0x38')][_0x51c4('0x16')](queryQueues));_0x2275ba['push'](db['SmsQueue'][_0x51c4('0x16')](queryQueues));_0x2275ba[_0x51c4('0x35')](db[_0x51c4('0x39')]['findAll'](queryQueues));_0x2275ba[_0x51c4('0x35')](db[_0x51c4('0x3a')][_0x51c4('0x16')](queryQueues));_0x2275ba[_0x51c4('0x35')](db['WhatsappQueue'][_0x51c4('0x16')](queryQueues));_0x2275ba[_0x51c4('0x35')](db['User'][_0x51c4('0x16')](queryTelephones));_0x2275ba['push'](db[_0x51c4('0x3b')][_0x51c4('0x16')](queryTrunks));_0x2275ba[_0x51c4('0x35')](db[_0x51c4('0x1e')][_0x51c4('0x16')](queryCampaigns));_0x2275ba['push'](db[_0x51c4('0x7')]['findAll'](queryAgents));break;case _0x51c4('0x3c'):_0x45cc46[_0x3cc1c0](_0x51c4('0x32'));_0x45cc46[_0x3cc1c0](_0x51c4('0x33'));_0x2275ba[_0x51c4('0x35')](getAssociatedResources(_0x51c4('0x3d'),_0x573f86[_0x51c4('0x3e')],_0x51c4('0x36')));_0x2275ba[_0x51c4('0x35')](getAssociatedResources(_0x51c4('0x10'),_0x573f86[_0x51c4('0x3e')],_0x51c4('0x37')));_0x2275ba[_0x51c4('0x35')](getAssociatedResources(_0x51c4('0x11'),_0x573f86[_0x51c4('0x3e')],'FaxQueue'));_0x2275ba[_0x51c4('0x35')](getAssociatedResources(_0x51c4('0x12'),_0x573f86[_0x51c4('0x3e')],_0x51c4('0x3f')));_0x2275ba[_0x51c4('0x35')](getAssociatedResources(_0x51c4('0x13'),_0x573f86[_0x51c4('0x3e')],_0x51c4('0x39')));_0x2275ba[_0x51c4('0x35')](getAssociatedResources(_0x51c4('0x14'),_0x573f86['userProfileId'],_0x51c4('0x3a')));_0x2275ba[_0x51c4('0x35')](getAssociatedResources(_0x51c4('0x15'),_0x573f86[_0x51c4('0x3e')],_0x51c4('0x40')));_0x2275ba[_0x51c4('0x35')](getAssociatedResources('Telephones',_0x573f86[_0x51c4('0x3e')],_0x51c4('0x7')));_0x2275ba[_0x51c4('0x35')](getAssociatedResources(_0x51c4('0x18'),_0x573f86[_0x51c4('0x3e')],_0x51c4('0x3b')));_0x2275ba[_0x51c4('0x35')](getAssociatedResources(_0x51c4('0x19'),_0x573f86[_0x51c4('0x3e')],_0x51c4('0x1e')));_0x2275ba['push'](db[_0x51c4('0x7')]['findAll'](queryAgents));break;case _0x51c4('0x8'):_0x45cc46[_0x3cc1c0](_0x51c4('0x32'));_0x45cc46[_0x3cc1c0](_0x51c4('0x33'));_0x2275ba['push'](_0x573f86[_0x51c4('0x41')]({'attributes':['id','name']}));_0x2275ba[_0x51c4('0x35')](_0x573f86['getChatQueues']({'attributes':['id',_0x51c4('0x5')]}));_0x2275ba[_0x51c4('0x35')](_0x573f86[_0x51c4('0x42')]({'attributes':['id','name']}));_0x2275ba[_0x51c4('0x35')](_0x573f86['getSmsQueues']({'attributes':['id',_0x51c4('0x5')]}));_0x2275ba[_0x51c4('0x35')](_0x573f86[_0x51c4('0x43')]({'attributes':['id','name']}));_0x2275ba[_0x51c4('0x35')](_0x573f86['getOpenchannelQueues']({'attributes':['id','name']}));_0x2275ba['push'](_0x573f86['getWhatsappQueues']({'attributes':['id',_0x51c4('0x5')]}));break;}return BPromise[_0x51c4('0x44')](_0x2275ba);}})[_0x51c4('0xe')](function(_0x3046c9){if(_0x3046c9&&_0x3046c9[_0x51c4('0x20')]){for(var _0x21616a=0x0;_0x21616a<_0x3046c9[_0x51c4('0x20')];_0x21616a+=0x1){for(var _0xa642c=0x0;_0xa642c<_0x3046c9[_0x21616a][_0x51c4('0x20')];_0xa642c+=0x1){switch(_0x21616a){case 0x0:joinOrLeaveQueues(_0x45cc46,_0x3cc1c0,_0x51c4('0x45'),_0x3046c9[_0x21616a][_0xa642c]);break;case 0x1:joinOrLeaveQueues(_0x45cc46,_0x3cc1c0,'chat',_0x3046c9[_0x21616a][_0xa642c]);break;case 0x2:joinOrLeaveQueues(_0x45cc46,_0x3cc1c0,_0x51c4('0x46'),_0x3046c9[_0x21616a][_0xa642c]);break;case 0x3:joinOrLeaveQueues(_0x45cc46,_0x3cc1c0,_0x51c4('0x47'),_0x3046c9[_0x21616a][_0xa642c]);break;case 0x4:joinOrLeaveQueues(_0x45cc46,_0x3cc1c0,_0x51c4('0x48'),_0x3046c9[_0x21616a][_0xa642c]);break;case 0x5:joinOrLeaveQueues(_0x45cc46,_0x3cc1c0,_0x51c4('0x49'),_0x3046c9[_0x21616a][_0xa642c]);break;case 0x6:joinOrLeaveQueues(_0x45cc46,_0x3cc1c0,_0x51c4('0x4a'),_0x3046c9[_0x21616a][_0xa642c]);break;case 0x7:if(_0x2281a0[_0x51c4('0x1d')]!==_0x51c4('0x8'))_0x45cc46[_0x3cc1c0](util[_0x51c4('0x1f')]('telephone:%s',_0x3046c9[_0x21616a][_0xa642c][_0x51c4('0x5')]));break;case 0x8:if(_0x2281a0[_0x51c4('0x1d')]!==_0x51c4('0x8'))_0x45cc46[_0x3cc1c0](util[_0x51c4('0x1f')](_0x51c4('0x4b'),_0x3046c9[_0x21616a][_0xa642c][_0x51c4('0x5')]));break;case 0x9:if(_0x2281a0[_0x51c4('0x1d')]!=='agent')_0x45cc46[_0x3cc1c0](util[_0x51c4('0x1f')](_0x51c4('0x4c'),_0x3046c9[_0x21616a][_0xa642c][_0x51c4('0xa')],_0x3046c9[_0x21616a][_0xa642c][_0x51c4('0x5')]));break;case 0xa:_0x45cc46[_0x3cc1c0](util['format'](_0x51c4('0x21'),_0x3046c9[_0x21616a][_0xa642c][_0x51c4('0x5')]));break;}}}}})[_0x51c4('0xe')](function(){if(_0x3cc1c0===_0x51c4('0x4d')){var _0x1f7b02=_[_0x51c4('0x1b')](_0x2281a0['ChatInteractions'],'id');return _0x2281a0[_0x51c4('0x4e')](_0x1f7b02)[_0x51c4('0xe')](function(){for(var _0x53b226=0x0;_0x53b226<_0x1f7b02[_0x51c4('0x20')];_0x53b226+=0x1){_0x3b56d1[_0x51c4('0x4f')](_0x51c4('0x50'),{'ChatInteractionId':Number(_0x1f7b02[_0x53b226]),'UserId':Number(_0x2281a0['id'])});}});}})[_0x51c4('0xe')](function(){if(_0x3cc1c0===_0x51c4('0x4d')){var _0x201020=_[_0x51c4('0x1b')](_0x2281a0['MailInteractions'],'id');return _0x2281a0[_0x51c4('0x51')](_0x201020)[_0x51c4('0xe')](function(){for(var _0x4a1a8c=0x0;_0x4a1a8c<_0x201020[_0x51c4('0x20')];_0x4a1a8c+=0x1){_0x3b56d1[_0x51c4('0x4f')](_0x51c4('0x52'),{'MailInteractionId':Number(_0x201020[_0x4a1a8c]),'UserId':Number(_0x2281a0['id'])});}});}})[_0x51c4('0xe')](function(){if(_0x3cc1c0===_0x51c4('0x4d')){var _0x17c2c7=_['map'](_0x2281a0[_0x51c4('0x2a')],'id');return _0x2281a0[_0x51c4('0x53')](_0x17c2c7)[_0x51c4('0xe')](function(){for(var _0x515ea5=0x0;_0x515ea5<_0x17c2c7[_0x51c4('0x20')];_0x515ea5+=0x1){_0x3b56d1['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x17c2c7[_0x515ea5]),'UserId':Number(_0x2281a0['id'])});}});}})[_0x51c4('0xe')](function(){if(_0x3cc1c0==='leave'){var _0x3add72=_['map'](_0x2281a0[_0x51c4('0x2c')],'id');return _0x2281a0['removeSmsInteractions'](_0x3add72)['then'](function(){for(var _0x1619c3=0x0;_0x1619c3<_0x3add72[_0x51c4('0x20')];_0x1619c3+=0x1){_0x3b56d1[_0x51c4('0x4f')](_0x51c4('0x54'),{'SmsInteractionId':Number(_0x3add72[_0x1619c3]),'UserId':Number(_0x2281a0['id'])});}});}})[_0x51c4('0xe')](function(){if(_0x3cc1c0===_0x51c4('0x4d')){var _0x5a47be=_['map'](_0x2281a0[_0x51c4('0x2e')],'id');return _0x2281a0['removeOpenchannelInteractions'](_0x5a47be)[_0x51c4('0xe')](function(){for(var _0xc24a04=0x0;_0xc24a04<_0x5a47be[_0x51c4('0x20')];_0xc24a04+=0x1){_0x3b56d1[_0x51c4('0x4f')](_0x51c4('0x55'),{'OpenchannelInteractionId':Number(_0x5a47be[_0xc24a04]),'UserId':Number(_0x2281a0['id'])});}});}})[_0x51c4('0xe')](function(){if(_0x3cc1c0===_0x51c4('0x4d')){var _0x4aa45a=_[_0x51c4('0x1b')](_0x2281a0[_0x51c4('0x30')],'id');return _0x2281a0[_0x51c4('0x56')](_0x4aa45a)[_0x51c4('0xe')](function(){for(var _0x4d1d7d=0x0;_0x4d1d7d<_0x4aa45a[_0x51c4('0x20')];_0x4d1d7d+=0x1){_0x3b56d1[_0x51c4('0x4f')](_0x51c4('0x57'),{'WhatsappInteractionId':Number(_0x4aa45a[_0x4d1d7d]),'UserId':Number(_0x2281a0['id'])});}});}})[_0x51c4('0x58')](function(_0x508613){_0x45cc46['log'](_0x508613);});}}function onDisconnect(_0x4cc05b,_0x17868d){joinOrLeave(_0x4cc05b,_0x51c4('0x4d'),_0x17868d);}function onConnect(_0xcc4cd8){joinOrLeave(_0xcc4cd8,_0x51c4('0x59'));}exports[_0x51c4('0x5a')]=function(_0x75a708){_0x75a708['on'](_0x51c4('0x5b'),function(_0x572553){_0x572553['setMaxListeners'](0x0);_0x572553[_0x51c4('0x5c')]=_0x572553[_0x51c4('0x5d')]['connection']['remoteAddress']+':'+_0x572553[_0x51c4('0x5d')][_0x51c4('0x5b')][_0x51c4('0x5e')];_0x572553['connectedAt']=new Date();_0x572553['log']=function(_0x53e111){console[_0x51c4('0x5f')](_0x51c4('0x60')+_0x572553[_0x51c4('0x61')]['name']+'['+_0x572553[_0x51c4('0x5c')]+']',_0x53e111);};_0x572553['on'](_0x51c4('0x62'),function(){onDisconnect(_0x572553,_0x75a708);_0x572553[_0x51c4('0x5f')](_0x51c4('0x63'));});onConnect(_0x572553);_0x572553[_0x51c4('0x5f')](_0x51c4('0x64'));});};