557669628ebdc83238016f361ce2d66435c2f051
[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 _0x4975=['MailQueues','Campaign','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','voice','chat','sms','mail','openchannel','telephone:%s','campaign:%s:%s','leave','emit','user_has_chat_interactions:remove','FaxInteractions','SmsInteractions','removeSmsInteractions','OpenchannelInteractions','removeOpenchannelInteractions','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','connection','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','type','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','ivr','format','%s:queue:%s','length','user:%s','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','WhatsappInteraction','admin','voice:inbound','voice:outbound','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueue','FaxQueues','SmsQueues'];(function(_0x58a4fe,_0x11d439){var _0x697de2=function(_0xe38c14){while(--_0xe38c14){_0x58a4fe['push'](_0x58a4fe['shift']());}};_0x697de2(++_0x11d439);}(_0x4975,0x86));var _0x5497=function(_0x1e5fe3,_0x370e9b){_0x1e5fe3=_0x1e5fe3-0x0;var _0x4ce7eb=_0x4975[_0x1e5fe3];return _0x4ce7eb;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var BPromise=require(_0x5497('0x1'));var db=require(_0x5497('0x2'))['db'];var config=require(_0x5497('0x3'));var queryQueues={'attributes':['id',_0x5497('0x4')],'include':[{'as':_0x5497('0x5'),'model':db[_0x5497('0x6')],'attributes':['id',_0x5497('0x4'),_0x5497('0x7')],'raw':!![],'where':{'role':_0x5497('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x5497('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x5497('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x5497('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x5497('0x4'),_0x5497('0x9')],'where':{'type':'ivr'}};function getAssociatedResources(_0x42af11,_0x49d94b,_0x1f63d8){return db[_0x5497('0xa')][_0x5497('0xb')]({'where':{'name':_0x42af11,'userProfileId':_0x49d94b},'raw':!![]})[_0x5497('0xc')](function(_0x131627){if(_0x131627){if(_0x131627[_0x5497('0xd')]){switch(_0x42af11){case _0x5497('0xe'):case _0x5497('0xf'):case'FaxQueues':case'SmsQueues':case'MailQueues':case _0x5497('0x10'):case _0x5497('0x11'):return db[_0x1f63d8][_0x5497('0x12')](queryQueues);case _0x5497('0x13'):return db[_0x1f63d8][_0x5497('0x12')](queryTelephones);case _0x5497('0x14'):return db[_0x1f63d8][_0x5497('0x12')](queryTrunks);case _0x5497('0x15'):return db[_0x1f63d8][_0x5497('0x12')](queryCampaigns);}}else{return db[_0x5497('0x16')]['findAll']({'attributes':[_0x5497('0x17')],'where':{'sectionId':_0x131627['id']},'raw':!![]})['then'](function(_0x4237a9){if(_0x4237a9){var _0x2bfd8a={'where':{'id':_[_0x5497('0x18')](_0x4237a9,_0x5497('0x17'))},'raw':!![]};switch(_0x1f63d8){case _0x5497('0x6'):_0x2bfd8a[_0x5497('0x19')][_0x5497('0x7')]='telephone';break;case'Campaign':_0x2bfd8a[_0x5497('0x19')][_0x5497('0x9')]=_0x5497('0x1a');break;}return db[_0x1f63d8]['findAll'](_0x2bfd8a);}else{return[];}});}}else{return[];}})[_0x5497('0xc')](function(_0xcbd71d){return _0xcbd71d;});}function joinOrLeaveQueues(_0x18e8a8,_0x43da2c,_0x1b1b43,_0x1f6f18){_0x18e8a8[_0x43da2c](util[_0x5497('0x1b')](_0x5497('0x1c'),_0x1b1b43,_0x1f6f18[_0x5497('0x4')]));if(_0x1f6f18[_0x5497('0x5')]){for(var _0x186065=0x0;_0x186065<_0x1f6f18['Agents'][_0x5497('0x1d')];_0x186065+=0x1){_0x18e8a8[_0x43da2c](util['format'](_0x5497('0x1e'),_0x1f6f18[_0x5497('0x5')][_0x186065][_0x5497('0x4')]));}}}function joinOrLeave(_0x2f587d,_0x35ecd9,_0x3b2fbc){var _0x5018fa;if(_0x2f587d['handshake'][_0x5497('0x1f')]['id']){db[_0x5497('0x6')][_0x5497('0x20')]({'attributes':['id',_0x5497('0x4'),'role',_0x5497('0x21')],'where':{'id':_0x2f587d['handshake'][_0x5497('0x1f')]['id']},'include':[{'model':db[_0x5497('0x22')],'as':_0x5497('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x5497('0x24')],'as':_0x5497('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x5497('0x26')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5497('0x27')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5497('0x28')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})['then'](function(_0xc3465){if(_0xc3465){_0x5018fa=_0xc3465;_0x2f587d[_0x35ecd9](util[_0x5497('0x1b')](_0x5497('0x1e'),_0xc3465['name']));var _0x59380f=[];switch(_0xc3465['role']){case _0x5497('0x29'):_0x2f587d[_0x35ecd9](_0x5497('0x2a'));_0x2f587d[_0x35ecd9](_0x5497('0x2b'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues['include'];}_0x59380f[_0x5497('0x2c')](db['VoiceQueue'][_0x5497('0x12')](queryQueues));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x2d')]['findAll'](queryQueues));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x2e')]['findAll'](queryQueues));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x2f')][_0x5497('0x12')](queryQueues));_0x59380f['push'](db[_0x5497('0x30')][_0x5497('0x12')](queryQueues));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x31')][_0x5497('0x12')](queryQueues));_0x59380f['push'](db[_0x5497('0x32')][_0x5497('0x12')](queryQueues));_0x59380f['push'](db[_0x5497('0x6')][_0x5497('0x12')](queryTelephones));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x33')][_0x5497('0x12')](queryTrunks));_0x59380f[_0x5497('0x2c')](db['Campaign'][_0x5497('0x12')](queryCampaigns));_0x59380f['push'](db[_0x5497('0x6')][_0x5497('0x12')](queryAgents));break;case _0x5497('0x34'):_0x2f587d[_0x35ecd9]('voice:inbound');_0x2f587d[_0x35ecd9]('voice:outbound');_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0xe'),_0xc3465[_0x5497('0x21')],_0x5497('0x35')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0xf'),_0xc3465['userProfileId'],_0x5497('0x2d')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x36'),_0xc3465[_0x5497('0x21')],_0x5497('0x2e')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x37'),_0xc3465[_0x5497('0x21')],_0x5497('0x2f')));_0x59380f['push'](getAssociatedResources(_0x5497('0x38'),_0xc3465[_0x5497('0x21')],_0x5497('0x30')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x10'),_0xc3465[_0x5497('0x21')],_0x5497('0x31')));_0x59380f['push'](getAssociatedResources(_0x5497('0x11'),_0xc3465[_0x5497('0x21')],_0x5497('0x32')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x13'),_0xc3465[_0x5497('0x21')],_0x5497('0x6')));_0x59380f['push'](getAssociatedResources(_0x5497('0x14'),_0xc3465[_0x5497('0x21')],_0x5497('0x33')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x15'),_0xc3465[_0x5497('0x21')],_0x5497('0x39')));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x6')][_0x5497('0x12')](queryAgents));break;case'agent':_0x2f587d[_0x35ecd9](_0x5497('0x2a'));_0x2f587d[_0x35ecd9]('voice:outbound');_0x59380f[_0x5497('0x2c')](_0xc3465[_0x5497('0x3a')]({'attributes':['id',_0x5497('0x4')]}));_0x59380f[_0x5497('0x2c')](_0xc3465[_0x5497('0x3b')]({'attributes':['id','name']}));_0x59380f[_0x5497('0x2c')](_0xc3465[_0x5497('0x3c')]({'attributes':['id','name']}));_0x59380f[_0x5497('0x2c')](_0xc3465['getSmsQueues']({'attributes':['id',_0x5497('0x4')]}));_0x59380f['push'](_0xc3465[_0x5497('0x3d')]({'attributes':['id',_0x5497('0x4')]}));_0x59380f[_0x5497('0x2c')](_0xc3465[_0x5497('0x3e')]({'attributes':['id',_0x5497('0x4')]}));_0x59380f['push'](_0xc3465['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise['all'](_0x59380f);}})[_0x5497('0xc')](function(_0x43c430){if(_0x43c430&&_0x43c430[_0x5497('0x1d')]){for(var _0x185512=0x0;_0x185512<_0x43c430[_0x5497('0x1d')];_0x185512+=0x1){for(var _0x33a733=0x0;_0x33a733<_0x43c430[_0x185512][_0x5497('0x1d')];_0x33a733+=0x1){switch(_0x185512){case 0x0:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x3f'),_0x43c430[_0x185512][_0x33a733]);break;case 0x1:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x40'),_0x43c430[_0x185512][_0x33a733]);break;case 0x2:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,'fax',_0x43c430[_0x185512][_0x33a733]);break;case 0x3:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x41'),_0x43c430[_0x185512][_0x33a733]);break;case 0x4:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x42'),_0x43c430[_0x185512][_0x33a733]);break;case 0x5:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x43'),_0x43c430[_0x185512][_0x33a733]);break;case 0x6:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,'whatsapp',_0x43c430[_0x185512][_0x33a733]);break;case 0x7:if(_0x5018fa[_0x5497('0x7')]!=='agent')_0x2f587d[_0x35ecd9](util[_0x5497('0x1b')](_0x5497('0x44'),_0x43c430[_0x185512][_0x33a733][_0x5497('0x4')]));break;case 0x8:if(_0x5018fa['role']!==_0x5497('0x8'))_0x2f587d[_0x35ecd9](util[_0x5497('0x1b')]('trunk:%s',_0x43c430[_0x185512][_0x33a733][_0x5497('0x4')]));break;case 0x9:if(_0x5018fa['role']!==_0x5497('0x8'))_0x2f587d[_0x35ecd9](util['format'](_0x5497('0x45'),_0x43c430[_0x185512][_0x33a733][_0x5497('0x9')],_0x43c430[_0x185512][_0x33a733][_0x5497('0x4')]));break;case 0xa:_0x2f587d[_0x35ecd9](util[_0x5497('0x1b')](_0x5497('0x1e'),_0x43c430[_0x185512][_0x33a733][_0x5497('0x4')]));break;}}}}})[_0x5497('0xc')](function(){if(_0x35ecd9===_0x5497('0x46')){var _0x52e8ce=_[_0x5497('0x18')](_0x5018fa['ChatInteractions'],'id');return _0x5018fa['removeChatInteractions'](_0x52e8ce)[_0x5497('0xc')](function(){for(var _0xdd2fe5=0x0;_0xdd2fe5<_0x52e8ce['length'];_0xdd2fe5+=0x1){_0x3b2fbc[_0x5497('0x47')](_0x5497('0x48'),{'ChatInteractionId':Number(_0x52e8ce[_0xdd2fe5]),'UserId':Number(_0x5018fa['id'])});}});}})[_0x5497('0xc')](function(){if(_0x35ecd9===_0x5497('0x46')){var _0x4ccf0e=_[_0x5497('0x18')](_0x5018fa['MailInteractions'],'id');return _0x5018fa['removeMailInteractions'](_0x4ccf0e)[_0x5497('0xc')](function(){for(var _0x33dd07=0x0;_0x33dd07<_0x4ccf0e[_0x5497('0x1d')];_0x33dd07+=0x1){_0x3b2fbc['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4ccf0e[_0x33dd07]),'UserId':Number(_0x5018fa['id'])});}});}})[_0x5497('0xc')](function(){if(_0x35ecd9==='leave'){var _0x3e092b=_['map'](_0x5018fa[_0x5497('0x49')],'id');return _0x5018fa['removeFaxInteractions'](_0x3e092b)[_0x5497('0xc')](function(){for(var _0x41138e=0x0;_0x41138e<_0x3e092b['length'];_0x41138e+=0x1){_0x3b2fbc[_0x5497('0x47')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x3e092b[_0x41138e]),'UserId':Number(_0x5018fa['id'])});}});}})['then'](function(){if(_0x35ecd9===_0x5497('0x46')){var _0x5541b4=_['map'](_0x5018fa[_0x5497('0x4a')],'id');return _0x5018fa[_0x5497('0x4b')](_0x5541b4)[_0x5497('0xc')](function(){for(var _0x28b2a3=0x0;_0x28b2a3<_0x5541b4[_0x5497('0x1d')];_0x28b2a3+=0x1){_0x3b2fbc[_0x5497('0x47')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x5541b4[_0x28b2a3]),'UserId':Number(_0x5018fa['id'])});}});}})[_0x5497('0xc')](function(){if(_0x35ecd9==='leave'){var _0x4e0d4c=_['map'](_0x5018fa[_0x5497('0x4c')],'id');return _0x5018fa[_0x5497('0x4d')](_0x4e0d4c)[_0x5497('0xc')](function(){for(var _0x544085=0x0;_0x544085<_0x4e0d4c[_0x5497('0x1d')];_0x544085+=0x1){_0x3b2fbc['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4e0d4c[_0x544085]),'UserId':Number(_0x5018fa['id'])});}});}})[_0x5497('0xc')](function(){if(_0x35ecd9===_0x5497('0x46')){var _0x3c54e3=_[_0x5497('0x18')](_0x5018fa[_0x5497('0x4e')],'id');return _0x5018fa[_0x5497('0x4f')](_0x3c54e3)['then'](function(){for(var _0x18b30c=0x0;_0x18b30c<_0x3c54e3[_0x5497('0x1d')];_0x18b30c+=0x1){_0x3b2fbc[_0x5497('0x47')](_0x5497('0x50'),{'WhatsappInteractionId':Number(_0x3c54e3[_0x18b30c]),'UserId':Number(_0x5018fa['id'])});}});}})['catch'](function(_0x179be4){_0x2f587d[_0x5497('0x51')](_0x179be4);});}}function onDisconnect(_0x451a02,_0x5b5298){joinOrLeave(_0x451a02,'leave',_0x5b5298);}function onConnect(_0x31271c){joinOrLeave(_0x31271c,_0x5497('0x52'));}exports[_0x5497('0x53')]=function(_0x542bcf){_0x542bcf['on'](_0x5497('0x54'),function(_0x50a144){_0x50a144['setMaxListeners'](0x0);_0x50a144['address']=_0x50a144[_0x5497('0x55')][_0x5497('0x54')][_0x5497('0x56')]+':'+_0x50a144['request'][_0x5497('0x54')][_0x5497('0x57')];_0x50a144[_0x5497('0x58')]=new Date();_0x50a144[_0x5497('0x51')]=function(_0x4fec68){console[_0x5497('0x51')](_0x5497('0x59')+_0x50a144[_0x5497('0x5a')]['name']+'['+_0x50a144[_0x5497('0x5b')]+']',_0x4fec68);};_0x50a144['on'](_0x5497('0x5c'),function(){onDisconnect(_0x50a144,_0x542bcf);_0x50a144[_0x5497('0x51')](_0x5497('0x5d'));});onConnect(_0x50a144);_0x50a144[_0x5497('0x51')](_0x5497('0x5e'));});};