f104cd4a3dc081ecc7127d0b7b0598629efb9c0f
[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 _0x6d11=['autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','UserProfileResource','resourceId','then','where','ivr','format','user:%s','handshake','query','find','role','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','user','voice:inbound','voice:outbound','WhatsappQueues','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','length','chat','fax','sms','mail','telephone:%s','type','map','removeChatInteractions','user_has_chat_interactions:remove','leave','MailInteractions','removeMailInteractions','emit','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','default','connection','address','request','remotePort','connectedAt','SocketIO\x20','disconnect','CONNECTED','lodash','util','bluebird','./environment','Agents','User','agent','name','telephone','UserProfileSection','findOne'];(function(_0x47da80,_0x1597d9){var _0x20824e=function(_0x417d07){while(--_0x417d07){_0x47da80['push'](_0x47da80['shift']());}};_0x20824e(++_0x1597d9);}(_0x6d11,0xbf));var _0x16d1=function(_0x7c02f7,_0x8ff23b){_0x7c02f7=_0x7c02f7-0x0;var _0x515003=_0x6d11[_0x7c02f7];return _0x515003;};'use strict';var _=require(_0x16d1('0x0'));var util=require(_0x16d1('0x1'));var BPromise=require(_0x16d1('0x2'));var db=require('../mysqldb')['db'];var config=require(_0x16d1('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x16d1('0x4'),'model':db[_0x16d1('0x5')],'attributes':['id','name','role'],'raw':!![],'where':{'role':_0x16d1('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x16d1('0x7')],'where':{'role':_0x16d1('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x16d1('0x7')]};var queryAgents={'raw':!![],'attributes':['id',_0x16d1('0x7')],'where':{'role':_0x16d1('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x16d1('0x7'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x4fca47,_0x3275c8,_0xcfbb15){return db[_0x16d1('0x9')][_0x16d1('0xa')]({'where':{'name':_0x4fca47,'userProfileId':_0x3275c8},'raw':!![]})['then'](function(_0x265a84){if(_0x265a84){if(_0x265a84[_0x16d1('0xb')]){switch(_0x4fca47){case _0x16d1('0xc'):case _0x16d1('0xd'):case _0x16d1('0xe'):case _0x16d1('0xf'):case _0x16d1('0x10'):case _0x16d1('0x11'):case'WhatsappQueues':return db[_0xcfbb15][_0x16d1('0x12')](queryQueues);case _0x16d1('0x13'):return db[_0xcfbb15][_0x16d1('0x12')](queryTelephones);case _0x16d1('0x14'):return db[_0xcfbb15][_0x16d1('0x12')](queryTrunks);case'IvrCampaigns':return db[_0xcfbb15][_0x16d1('0x12')](queryCampaigns);}}else{return db[_0x16d1('0x15')][_0x16d1('0x12')]({'attributes':[_0x16d1('0x16')],'where':{'sectionId':_0x265a84['id']},'raw':!![]})[_0x16d1('0x17')](function(_0x173e16){if(_0x173e16){var _0x2d7e8a={'where':{'id':_['map'](_0x173e16,_0x16d1('0x16'))},'raw':!![]};switch(_0xcfbb15){case _0x16d1('0x5'):_0x2d7e8a['where']['role']=_0x16d1('0x8');break;case'Campaign':_0x2d7e8a[_0x16d1('0x18')]['type']=_0x16d1('0x19');break;}return db[_0xcfbb15]['findAll'](_0x2d7e8a);}else{return[];}});}}else{return[];}})[_0x16d1('0x17')](function(_0x24c075){return _0x24c075;});}function joinOrLeaveQueues(_0x48cd70,_0x58dfcb,_0x52a0f2,_0x5b9599){_0x48cd70[_0x58dfcb](util[_0x16d1('0x1a')]('%s:queue:%s',_0x52a0f2,_0x5b9599[_0x16d1('0x7')]));if(_0x5b9599[_0x16d1('0x4')]){for(var _0x1f6add=0x0;_0x1f6add<_0x5b9599[_0x16d1('0x4')]['length'];_0x1f6add+=0x1){_0x48cd70[_0x58dfcb](util[_0x16d1('0x1a')](_0x16d1('0x1b'),_0x5b9599[_0x16d1('0x4')][_0x1f6add]['name']));}}}function joinOrLeave(_0x3fc99e,_0x8c7266,_0x17e038){var _0x47cad4;if(_0x3fc99e[_0x16d1('0x1c')][_0x16d1('0x1d')]['id']){db[_0x16d1('0x5')][_0x16d1('0x1e')]({'attributes':['id',_0x16d1('0x7'),_0x16d1('0x1f'),_0x16d1('0x20')],'where':{'id':_0x3fc99e[_0x16d1('0x1c')][_0x16d1('0x1d')]['id']},'include':[{'model':db[_0x16d1('0x21')],'as':_0x16d1('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x16d1('0x23')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x16d1('0x24')],'as':_0x16d1('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x16d1('0x26')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x16d1('0x27')],'as':_0x16d1('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x16d1('0x29')],'as':_0x16d1('0x2a'),'attributes':['id'],'raw':!![]}]})[_0x16d1('0x17')](function(_0x462e5b){if(_0x462e5b){_0x47cad4=_0x462e5b;_0x3fc99e[_0x8c7266](util[_0x16d1('0x1a')]('user:%s',_0x462e5b[_0x16d1('0x7')]));var _0x3201fe=[];switch(_0x462e5b[_0x16d1('0x1f')]){case _0x16d1('0x2b'):_0x3fc99e[_0x8c7266]('voice:inbound');_0x3fc99e[_0x8c7266]('voice:outbound');if(queryQueues[_0x16d1('0x2c')](_0x16d1('0x2d'))){delete queryQueues[_0x16d1('0x2d')];}_0x3201fe[_0x16d1('0x2e')](db[_0x16d1('0x2f')][_0x16d1('0x12')](queryQueues));_0x3201fe[_0x16d1('0x2e')](db[_0x16d1('0x30')][_0x16d1('0x12')](queryQueues));_0x3201fe[_0x16d1('0x2e')](db[_0x16d1('0x31')][_0x16d1('0x12')](queryQueues));_0x3201fe[_0x16d1('0x2e')](db[_0x16d1('0x32')]['findAll'](queryQueues));_0x3201fe[_0x16d1('0x2e')](db['MailQueue'][_0x16d1('0x12')](queryQueues));_0x3201fe[_0x16d1('0x2e')](db[_0x16d1('0x33')][_0x16d1('0x12')](queryQueues));_0x3201fe[_0x16d1('0x2e')](db[_0x16d1('0x34')]['findAll'](queryQueues));_0x3201fe['push'](db['User'][_0x16d1('0x12')](queryTelephones));_0x3201fe[_0x16d1('0x2e')](db[_0x16d1('0x35')][_0x16d1('0x12')](queryTrunks));_0x3201fe['push'](db[_0x16d1('0x36')][_0x16d1('0x12')](queryCampaigns));_0x3201fe['push'](db['User']['findAll'](queryAgents));break;case _0x16d1('0x37'):_0x3fc99e[_0x8c7266](_0x16d1('0x38'));_0x3fc99e[_0x8c7266](_0x16d1('0x39'));_0x3201fe['push'](getAssociatedResources(_0x16d1('0xc'),_0x462e5b[_0x16d1('0x20')],_0x16d1('0x2f')));_0x3201fe[_0x16d1('0x2e')](getAssociatedResources(_0x16d1('0xd'),_0x462e5b[_0x16d1('0x20')],_0x16d1('0x30')));_0x3201fe['push'](getAssociatedResources('FaxQueues',_0x462e5b['userProfileId'],_0x16d1('0x31')));_0x3201fe[_0x16d1('0x2e')](getAssociatedResources(_0x16d1('0xf'),_0x462e5b[_0x16d1('0x20')],_0x16d1('0x32')));_0x3201fe[_0x16d1('0x2e')](getAssociatedResources(_0x16d1('0x10'),_0x462e5b[_0x16d1('0x20')],'MailQueue'));_0x3201fe[_0x16d1('0x2e')](getAssociatedResources('OpenchannelQueues',_0x462e5b['userProfileId'],_0x16d1('0x33')));_0x3201fe[_0x16d1('0x2e')](getAssociatedResources(_0x16d1('0x3a'),_0x462e5b[_0x16d1('0x20')],_0x16d1('0x34')));_0x3201fe[_0x16d1('0x2e')](getAssociatedResources('Telephones',_0x462e5b[_0x16d1('0x20')],'User'));_0x3201fe['push'](getAssociatedResources('Trunks',_0x462e5b['userProfileId'],_0x16d1('0x35')));_0x3201fe[_0x16d1('0x2e')](getAssociatedResources(_0x16d1('0x3b'),_0x462e5b[_0x16d1('0x20')],'Campaign'));_0x3201fe[_0x16d1('0x2e')](db['User'][_0x16d1('0x12')](queryAgents));break;case _0x16d1('0x6'):_0x3fc99e[_0x8c7266](_0x16d1('0x38'));_0x3fc99e[_0x8c7266](_0x16d1('0x39'));_0x3201fe[_0x16d1('0x2e')](_0x462e5b[_0x16d1('0x3c')]({'attributes':['id',_0x16d1('0x7')]}));_0x3201fe[_0x16d1('0x2e')](_0x462e5b[_0x16d1('0x3d')]({'attributes':['id',_0x16d1('0x7')]}));_0x3201fe[_0x16d1('0x2e')](_0x462e5b[_0x16d1('0x3e')]({'attributes':['id',_0x16d1('0x7')]}));_0x3201fe[_0x16d1('0x2e')](_0x462e5b[_0x16d1('0x3f')]({'attributes':['id','name']}));_0x3201fe['push'](_0x462e5b[_0x16d1('0x40')]({'attributes':['id',_0x16d1('0x7')]}));_0x3201fe[_0x16d1('0x2e')](_0x462e5b[_0x16d1('0x41')]({'attributes':['id',_0x16d1('0x7')]}));_0x3201fe[_0x16d1('0x2e')](_0x462e5b['getWhatsappQueues']({'attributes':['id',_0x16d1('0x7')]}));break;}return BPromise[_0x16d1('0x42')](_0x3201fe);}})[_0x16d1('0x17')](function(_0x4ba7ee){if(_0x4ba7ee&&_0x4ba7ee['length']){for(var _0x35b128=0x0;_0x35b128<_0x4ba7ee[_0x16d1('0x43')];_0x35b128+=0x1){for(var _0x543bc2=0x0;_0x543bc2<_0x4ba7ee[_0x35b128][_0x16d1('0x43')];_0x543bc2+=0x1){switch(_0x35b128){case 0x0:joinOrLeaveQueues(_0x3fc99e,_0x8c7266,'voice',_0x4ba7ee[_0x35b128][_0x543bc2]);break;case 0x1:joinOrLeaveQueues(_0x3fc99e,_0x8c7266,_0x16d1('0x44'),_0x4ba7ee[_0x35b128][_0x543bc2]);break;case 0x2:joinOrLeaveQueues(_0x3fc99e,_0x8c7266,_0x16d1('0x45'),_0x4ba7ee[_0x35b128][_0x543bc2]);break;case 0x3:joinOrLeaveQueues(_0x3fc99e,_0x8c7266,_0x16d1('0x46'),_0x4ba7ee[_0x35b128][_0x543bc2]);break;case 0x4:joinOrLeaveQueues(_0x3fc99e,_0x8c7266,_0x16d1('0x47'),_0x4ba7ee[_0x35b128][_0x543bc2]);break;case 0x5:joinOrLeaveQueues(_0x3fc99e,_0x8c7266,'openchannel',_0x4ba7ee[_0x35b128][_0x543bc2]);break;case 0x6:joinOrLeaveQueues(_0x3fc99e,_0x8c7266,'whatsapp',_0x4ba7ee[_0x35b128][_0x543bc2]);break;case 0x7:if(_0x47cad4[_0x16d1('0x1f')]!==_0x16d1('0x6'))_0x3fc99e[_0x8c7266](util['format'](_0x16d1('0x48'),_0x4ba7ee[_0x35b128][_0x543bc2][_0x16d1('0x7')]));break;case 0x8:if(_0x47cad4[_0x16d1('0x1f')]!==_0x16d1('0x6'))_0x3fc99e[_0x8c7266](util[_0x16d1('0x1a')]('trunk:%s',_0x4ba7ee[_0x35b128][_0x543bc2][_0x16d1('0x7')]));break;case 0x9:if(_0x47cad4['role']!==_0x16d1('0x6'))_0x3fc99e[_0x8c7266](util[_0x16d1('0x1a')]('campaign:%s:%s',_0x4ba7ee[_0x35b128][_0x543bc2][_0x16d1('0x49')],_0x4ba7ee[_0x35b128][_0x543bc2][_0x16d1('0x7')]));break;case 0xa:_0x3fc99e[_0x8c7266](util[_0x16d1('0x1a')](_0x16d1('0x1b'),_0x4ba7ee[_0x35b128][_0x543bc2]['name']));break;}}}}})['then'](function(){if(_0x8c7266==='leave'){var _0x34e266=_[_0x16d1('0x4a')](_0x47cad4[_0x16d1('0x22')],'id');return _0x47cad4[_0x16d1('0x4b')](_0x34e266)['then'](function(){for(var _0x4135b2=0x0;_0x4135b2<_0x34e266[_0x16d1('0x43')];_0x4135b2+=0x1){_0x17e038['emit'](_0x16d1('0x4c'),{'ChatInteractionId':Number(_0x34e266[_0x4135b2]),'UserId':Number(_0x47cad4['id'])});}});}})[_0x16d1('0x17')](function(){if(_0x8c7266===_0x16d1('0x4d')){var _0x1e01f8=_['map'](_0x47cad4[_0x16d1('0x4e')],'id');return _0x47cad4[_0x16d1('0x4f')](_0x1e01f8)[_0x16d1('0x17')](function(){for(var _0x5a8e76=0x0;_0x5a8e76<_0x1e01f8['length'];_0x5a8e76+=0x1){_0x17e038[_0x16d1('0x50')](_0x16d1('0x51'),{'MailInteractionId':Number(_0x1e01f8[_0x5a8e76]),'UserId':Number(_0x47cad4['id'])});}});}})['then'](function(){if(_0x8c7266===_0x16d1('0x4d')){var _0x7a4f27=_[_0x16d1('0x4a')](_0x47cad4['FaxInteractions'],'id');return _0x47cad4[_0x16d1('0x52')](_0x7a4f27)[_0x16d1('0x17')](function(){for(var _0x11209f=0x0;_0x11209f<_0x7a4f27[_0x16d1('0x43')];_0x11209f+=0x1){_0x17e038[_0x16d1('0x50')](_0x16d1('0x53'),{'FaxInteractionId':Number(_0x7a4f27[_0x11209f]),'UserId':Number(_0x47cad4['id'])});}});}})['then'](function(){if(_0x8c7266===_0x16d1('0x4d')){var _0x38c9c8=_['map'](_0x47cad4[_0x16d1('0x54')],'id');return _0x47cad4[_0x16d1('0x55')](_0x38c9c8)[_0x16d1('0x17')](function(){for(var _0xdd3633=0x0;_0xdd3633<_0x38c9c8[_0x16d1('0x43')];_0xdd3633+=0x1){_0x17e038[_0x16d1('0x50')](_0x16d1('0x56'),{'SmsInteractionId':Number(_0x38c9c8[_0xdd3633]),'UserId':Number(_0x47cad4['id'])});}});}})[_0x16d1('0x17')](function(){if(_0x8c7266==='leave'){var _0x45bcc3=_['map'](_0x47cad4[_0x16d1('0x28')],'id');return _0x47cad4['removeOpenchannelInteractions'](_0x45bcc3)['then'](function(){for(var _0x75a5ce=0x0;_0x75a5ce<_0x45bcc3['length'];_0x75a5ce+=0x1){_0x17e038['emit'](_0x16d1('0x57'),{'OpenchannelInteractionId':Number(_0x45bcc3[_0x75a5ce]),'UserId':Number(_0x47cad4['id'])});}});}})['then'](function(){if(_0x8c7266===_0x16d1('0x4d')){var _0x339a07=_[_0x16d1('0x4a')](_0x47cad4[_0x16d1('0x2a')],'id');return _0x47cad4[_0x16d1('0x58')](_0x339a07)['then'](function(){for(var _0x1687f3=0x0;_0x1687f3<_0x339a07['length'];_0x1687f3+=0x1){_0x17e038[_0x16d1('0x50')](_0x16d1('0x59'),{'WhatsappInteractionId':Number(_0x339a07[_0x1687f3]),'UserId':Number(_0x47cad4['id'])});}});}})[_0x16d1('0x5a')](function(_0x9450f6){_0x3fc99e[_0x16d1('0x5b')](_0x9450f6);});}}function onDisconnect(_0x232b55,_0x34b6ee){joinOrLeave(_0x232b55,'leave',_0x34b6ee);}function onConnect(_0x28666a){joinOrLeave(_0x28666a,'join');}exports[_0x16d1('0x5c')]=function(_0xdd1f09){_0xdd1f09['on'](_0x16d1('0x5d'),function(_0x188667){_0x188667['setMaxListeners'](0x0);_0x188667[_0x16d1('0x5e')]=_0x188667[_0x16d1('0x5f')]['connection']['remoteAddress']+':'+_0x188667[_0x16d1('0x5f')][_0x16d1('0x5d')][_0x16d1('0x60')];_0x188667[_0x16d1('0x61')]=new Date();_0x188667[_0x16d1('0x5b')]=function(_0x4a3cdb){console[_0x16d1('0x5b')](_0x16d1('0x62')+_0x188667['nsp'][_0x16d1('0x7')]+'['+_0x188667['address']+']',_0x4a3cdb);};_0x188667['on'](_0x16d1('0x63'),function(){onDisconnect(_0x188667,_0xdd1f09);_0x188667[_0x16d1('0x5b')]('DISCONNECTED');});onConnect(_0x188667);_0x188667[_0x16d1('0x5b')](_0x16d1('0x64'));});};