Built motion from commit (unavailable).|2.5.6
[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 _0xfbac=['getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','chat','fax','sms','mail','openchannel','whatsapp','campaign:%s:%s','leave','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','default','connection','setMaxListeners','address','request','remotePort','connectedAt','log','nsp','disconnect','DISCONNECTED','CONNECTED','util','bluebird','../mysqldb','./environment','name','Agents','role','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','User','telephone','Campaign','where','format','%s:queue:%s','handshake','find','ChatInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','voice:inbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','userProfileId','FaxQueue','SmsQueue','OpenchannelQueues','WhatsappQueues','voice:outbound'];(function(_0x4d0cec,_0x5993f9){var _0x65f1cd=function(_0x2c25e7){while(--_0x2c25e7){_0x4d0cec['push'](_0x4d0cec['shift']());}};_0x65f1cd(++_0x5993f9);}(_0xfbac,0x167));var _0xcfba=function(_0x457684,_0x3a2916){_0x457684=_0x457684-0x0;var _0x101b91=_0xfbac[_0x457684];return _0x101b91;};'use strict';var _=require('lodash');var util=require(_0xcfba('0x0'));var BPromise=require(_0xcfba('0x1'));var db=require(_0xcfba('0x2'))['db'];var config=require(_0xcfba('0x3'));var queryQueues={'attributes':['id',_0xcfba('0x4')],'include':[{'as':_0xcfba('0x5'),'model':db['User'],'attributes':['id','name',_0xcfba('0x6')],'raw':!![],'where':{'role':_0xcfba('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xcfba('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xcfba('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0xcfba('0x8')],'where':{'type':_0xcfba('0x9')}};function getAssociatedResources(_0x5bbb82,_0x25aa73,_0xeae9f2){return db[_0xcfba('0xa')][_0xcfba('0xb')]({'where':{'name':_0x5bbb82,'userProfileId':_0x25aa73},'raw':!![]})[_0xcfba('0xc')](function(_0x44af2e){if(_0x44af2e){if(_0x44af2e[_0xcfba('0xd')]){switch(_0x5bbb82){case _0xcfba('0xe'):case _0xcfba('0xf'):case _0xcfba('0x10'):case _0xcfba('0x11'):case _0xcfba('0x12'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0xeae9f2][_0xcfba('0x13')](queryQueues);case _0xcfba('0x14'):return db[_0xeae9f2]['findAll'](queryTelephones);case _0xcfba('0x15'):return db[_0xeae9f2][_0xcfba('0x13')](queryTrunks);case _0xcfba('0x16'):return db[_0xeae9f2][_0xcfba('0x13')](queryCampaigns);}}else{return db[_0xcfba('0x17')][_0xcfba('0x13')]({'attributes':[_0xcfba('0x18')],'where':{'sectionId':_0x44af2e['id']},'raw':!![]})[_0xcfba('0xc')](function(_0x2f497b){if(_0x2f497b){var _0x18d1d6={'where':{'id':_[_0xcfba('0x19')](_0x2f497b,_0xcfba('0x18'))},'raw':!![]};switch(_0xeae9f2){case _0xcfba('0x1a'):_0x18d1d6['where'][_0xcfba('0x6')]=_0xcfba('0x1b');break;case _0xcfba('0x1c'):_0x18d1d6[_0xcfba('0x1d')][_0xcfba('0x8')]=_0xcfba('0x9');break;}return db[_0xeae9f2][_0xcfba('0x13')](_0x18d1d6);}else{return[];}});}}else{return[];}})['then'](function(_0x116bf5){return _0x116bf5;});}function joinOrLeaveQueues(_0x35c1e4,_0x35cec9,_0x47aa59,_0x5832d4){_0x35c1e4[_0x35cec9](util[_0xcfba('0x1e')](_0xcfba('0x1f'),_0x47aa59,_0x5832d4[_0xcfba('0x4')]));if(_0x5832d4[_0xcfba('0x5')]){for(var _0x358610=0x0;_0x358610<_0x5832d4[_0xcfba('0x5')]['length'];_0x358610+=0x1){_0x35c1e4[_0x35cec9](util[_0xcfba('0x1e')]('user:%s',_0x5832d4[_0xcfba('0x5')][_0x358610][_0xcfba('0x4')]));}}}function joinOrLeave(_0x49bb54,_0x25e9ea,_0x42cf58){var _0x14850f;if(_0x49bb54[_0xcfba('0x20')]['query']['id']){db['User'][_0xcfba('0x21')]({'attributes':['id',_0xcfba('0x4'),_0xcfba('0x6'),'userProfileId'],'where':{'id':_0x49bb54[_0xcfba('0x20')]['query']['id']},'include':[{'model':db[_0xcfba('0x22')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xcfba('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xcfba('0x24')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xcfba('0x25')],'as':_0xcfba('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xcfba('0x27')],'as':_0xcfba('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xcfba('0x29')],'as':_0xcfba('0x2a'),'attributes':['id'],'raw':!![]}]})[_0xcfba('0xc')](function(_0x4585ec){if(_0x4585ec){_0x14850f=_0x4585ec;_0x49bb54[_0x25e9ea](util['format'](_0xcfba('0x2b'),_0x4585ec['name']));var _0x4be92b=[];switch(_0x4585ec[_0xcfba('0x6')]){case'admin':_0x49bb54[_0x25e9ea](_0xcfba('0x2c'));_0x49bb54[_0x25e9ea]('voice:outbound');if(queryQueues[_0xcfba('0x2d')](_0xcfba('0x2e'))){delete queryQueues[_0xcfba('0x2e')];}_0x4be92b[_0xcfba('0x2f')](db[_0xcfba('0x30')][_0xcfba('0x13')](queryQueues));_0x4be92b[_0xcfba('0x2f')](db[_0xcfba('0x31')]['findAll'](queryQueues));_0x4be92b['push'](db['FaxQueue'][_0xcfba('0x13')](queryQueues));_0x4be92b[_0xcfba('0x2f')](db['SmsQueue'][_0xcfba('0x13')](queryQueues));_0x4be92b['push'](db[_0xcfba('0x32')][_0xcfba('0x13')](queryQueues));_0x4be92b[_0xcfba('0x2f')](db[_0xcfba('0x33')][_0xcfba('0x13')](queryQueues));_0x4be92b[_0xcfba('0x2f')](db[_0xcfba('0x34')][_0xcfba('0x13')](queryQueues));_0x4be92b['push'](db[_0xcfba('0x1a')][_0xcfba('0x13')](queryTelephones));_0x4be92b[_0xcfba('0x2f')](db[_0xcfba('0x35')][_0xcfba('0x13')](queryTrunks));_0x4be92b[_0xcfba('0x2f')](db[_0xcfba('0x1c')]['findAll'](queryCampaigns));_0x4be92b[_0xcfba('0x2f')](db[_0xcfba('0x1a')][_0xcfba('0x13')](queryAgents));break;case _0xcfba('0x36'):_0x49bb54[_0x25e9ea](_0xcfba('0x2c'));_0x49bb54[_0x25e9ea]('voice:outbound');_0x4be92b['push'](getAssociatedResources(_0xcfba('0xe'),_0x4585ec[_0xcfba('0x37')],_0xcfba('0x30')));_0x4be92b[_0xcfba('0x2f')](getAssociatedResources('ChatQueues',_0x4585ec[_0xcfba('0x37')],_0xcfba('0x31')));_0x4be92b['push'](getAssociatedResources('FaxQueues',_0x4585ec[_0xcfba('0x37')],_0xcfba('0x38')));_0x4be92b[_0xcfba('0x2f')](getAssociatedResources(_0xcfba('0x11'),_0x4585ec[_0xcfba('0x37')],_0xcfba('0x39')));_0x4be92b[_0xcfba('0x2f')](getAssociatedResources('MailQueues',_0x4585ec[_0xcfba('0x37')],_0xcfba('0x32')));_0x4be92b['push'](getAssociatedResources(_0xcfba('0x3a'),_0x4585ec['userProfileId'],_0xcfba('0x33')));_0x4be92b['push'](getAssociatedResources(_0xcfba('0x3b'),_0x4585ec[_0xcfba('0x37')],_0xcfba('0x34')));_0x4be92b[_0xcfba('0x2f')](getAssociatedResources(_0xcfba('0x14'),_0x4585ec[_0xcfba('0x37')],'User'));_0x4be92b[_0xcfba('0x2f')](getAssociatedResources('Trunks',_0x4585ec['userProfileId'],_0xcfba('0x35')));_0x4be92b[_0xcfba('0x2f')](getAssociatedResources(_0xcfba('0x16'),_0x4585ec[_0xcfba('0x37')],_0xcfba('0x1c')));_0x4be92b[_0xcfba('0x2f')](db['User']['findAll'](queryAgents));break;case'agent':_0x49bb54[_0x25e9ea](_0xcfba('0x2c'));_0x49bb54[_0x25e9ea](_0xcfba('0x3c'));_0x4be92b[_0xcfba('0x2f')](_0x4585ec[_0xcfba('0x3d')]({'attributes':['id',_0xcfba('0x4')]}));_0x4be92b[_0xcfba('0x2f')](_0x4585ec[_0xcfba('0x3e')]({'attributes':['id',_0xcfba('0x4')]}));_0x4be92b[_0xcfba('0x2f')](_0x4585ec['getFaxQueues']({'attributes':['id',_0xcfba('0x4')]}));_0x4be92b[_0xcfba('0x2f')](_0x4585ec[_0xcfba('0x3f')]({'attributes':['id',_0xcfba('0x4')]}));_0x4be92b[_0xcfba('0x2f')](_0x4585ec[_0xcfba('0x40')]({'attributes':['id',_0xcfba('0x4')]}));_0x4be92b['push'](_0x4585ec[_0xcfba('0x41')]({'attributes':['id',_0xcfba('0x4')]}));_0x4be92b[_0xcfba('0x2f')](_0x4585ec[_0xcfba('0x42')]({'attributes':['id','name']}));break;}return BPromise[_0xcfba('0x43')](_0x4be92b);}})[_0xcfba('0xc')](function(_0x3090d2){if(_0x3090d2&&_0x3090d2[_0xcfba('0x44')]){for(var _0x2b614b=0x0;_0x2b614b<_0x3090d2[_0xcfba('0x44')];_0x2b614b+=0x1){for(var _0x47882c=0x0;_0x47882c<_0x3090d2[_0x2b614b]['length'];_0x47882c+=0x1){switch(_0x2b614b){case 0x0:joinOrLeaveQueues(_0x49bb54,_0x25e9ea,'voice',_0x3090d2[_0x2b614b][_0x47882c]);break;case 0x1:joinOrLeaveQueues(_0x49bb54,_0x25e9ea,_0xcfba('0x45'),_0x3090d2[_0x2b614b][_0x47882c]);break;case 0x2:joinOrLeaveQueues(_0x49bb54,_0x25e9ea,_0xcfba('0x46'),_0x3090d2[_0x2b614b][_0x47882c]);break;case 0x3:joinOrLeaveQueues(_0x49bb54,_0x25e9ea,_0xcfba('0x47'),_0x3090d2[_0x2b614b][_0x47882c]);break;case 0x4:joinOrLeaveQueues(_0x49bb54,_0x25e9ea,_0xcfba('0x48'),_0x3090d2[_0x2b614b][_0x47882c]);break;case 0x5:joinOrLeaveQueues(_0x49bb54,_0x25e9ea,_0xcfba('0x49'),_0x3090d2[_0x2b614b][_0x47882c]);break;case 0x6:joinOrLeaveQueues(_0x49bb54,_0x25e9ea,_0xcfba('0x4a'),_0x3090d2[_0x2b614b][_0x47882c]);break;case 0x7:_0x49bb54[_0x25e9ea](util['format']('telephone:%s',_0x3090d2[_0x2b614b][_0x47882c]['name']));break;case 0x8:_0x49bb54[_0x25e9ea](util[_0xcfba('0x1e')]('trunk:%s',_0x3090d2[_0x2b614b][_0x47882c][_0xcfba('0x4')]));break;case 0x9:_0x49bb54[_0x25e9ea](util[_0xcfba('0x1e')](_0xcfba('0x4b'),_0x3090d2[_0x2b614b][_0x47882c][_0xcfba('0x8')],_0x3090d2[_0x2b614b][_0x47882c]['name']));break;case 0xa:_0x49bb54[_0x25e9ea](util['format'](_0xcfba('0x2b'),_0x3090d2[_0x2b614b][_0x47882c][_0xcfba('0x4')]));break;}}}}})[_0xcfba('0xc')](function(){if(_0x25e9ea===_0xcfba('0x4c')){var _0x2a204f=_[_0xcfba('0x19')](_0x14850f[_0xcfba('0x4d')],'id');return _0x14850f[_0xcfba('0x4e')](_0x2a204f)['then'](function(){for(var _0x4f908a=0x0;_0x4f908a<_0x2a204f[_0xcfba('0x44')];_0x4f908a+=0x1){_0x42cf58[_0xcfba('0x4f')](_0xcfba('0x50'),{'ChatInteractionId':Number(_0x2a204f[_0x4f908a]),'UserId':Number(_0x14850f['id'])});}});}})[_0xcfba('0xc')](function(){if(_0x25e9ea===_0xcfba('0x4c')){var _0x187711=_[_0xcfba('0x19')](_0x14850f[_0xcfba('0x23')],'id');return _0x14850f[_0xcfba('0x51')](_0x187711)[_0xcfba('0xc')](function(){for(var _0x68130a=0x0;_0x68130a<_0x187711[_0xcfba('0x44')];_0x68130a+=0x1){_0x42cf58[_0xcfba('0x4f')](_0xcfba('0x52'),{'MailInteractionId':Number(_0x187711[_0x68130a]),'UserId':Number(_0x14850f['id'])});}});}})['then'](function(){if(_0x25e9ea==='leave'){var _0x3083e7=_[_0xcfba('0x19')](_0x14850f[_0xcfba('0x53')],'id');return _0x14850f[_0xcfba('0x54')](_0x3083e7)['then'](function(){for(var _0x31cb0c=0x0;_0x31cb0c<_0x3083e7[_0xcfba('0x44')];_0x31cb0c+=0x1){_0x42cf58[_0xcfba('0x4f')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x3083e7[_0x31cb0c]),'UserId':Number(_0x14850f['id'])});}});}})[_0xcfba('0xc')](function(){if(_0x25e9ea===_0xcfba('0x4c')){var _0x21ee2b=_['map'](_0x14850f[_0xcfba('0x26')],'id');return _0x14850f[_0xcfba('0x55')](_0x21ee2b)[_0xcfba('0xc')](function(){for(var _0x35c6dc=0x0;_0x35c6dc<_0x21ee2b['length'];_0x35c6dc+=0x1){_0x42cf58['emit'](_0xcfba('0x56'),{'SmsInteractionId':Number(_0x21ee2b[_0x35c6dc]),'UserId':Number(_0x14850f['id'])});}});}})[_0xcfba('0xc')](function(){if(_0x25e9ea==='leave'){var _0x4bc008=_[_0xcfba('0x19')](_0x14850f['OpenchannelInteractions'],'id');return _0x14850f[_0xcfba('0x57')](_0x4bc008)[_0xcfba('0xc')](function(){for(var _0x159eb6=0x0;_0x159eb6<_0x4bc008['length'];_0x159eb6+=0x1){_0x42cf58[_0xcfba('0x4f')](_0xcfba('0x58'),{'OpenchannelInteractionId':Number(_0x4bc008[_0x159eb6]),'UserId':Number(_0x14850f['id'])});}});}})[_0xcfba('0xc')](function(){if(_0x25e9ea===_0xcfba('0x4c')){var _0x5106ac=_[_0xcfba('0x19')](_0x14850f[_0xcfba('0x2a')],'id');return _0x14850f[_0xcfba('0x59')](_0x5106ac)[_0xcfba('0xc')](function(){for(var _0x11524f=0x0;_0x11524f<_0x5106ac[_0xcfba('0x44')];_0x11524f+=0x1){_0x42cf58['emit'](_0xcfba('0x5a'),{'WhatsappInteractionId':Number(_0x5106ac[_0x11524f]),'UserId':Number(_0x14850f['id'])});}});}})[_0xcfba('0x5b')](function(_0x28e007){_0x49bb54['log'](_0x28e007);});}}function onDisconnect(_0x3a32a6,_0x4c0288){joinOrLeave(_0x3a32a6,_0xcfba('0x4c'),_0x4c0288);}function onConnect(_0x1dc342){joinOrLeave(_0x1dc342,_0xcfba('0x5c'));}exports[_0xcfba('0x5d')]=function(_0x4b0697){_0x4b0697['on'](_0xcfba('0x5e'),function(_0x36b6ed){_0x36b6ed[_0xcfba('0x5f')](0x0);_0x36b6ed[_0xcfba('0x60')]=_0x36b6ed['request'][_0xcfba('0x5e')]['remoteAddress']+':'+_0x36b6ed[_0xcfba('0x61')][_0xcfba('0x5e')][_0xcfba('0x62')];_0x36b6ed[_0xcfba('0x63')]=new Date();_0x36b6ed[_0xcfba('0x64')]=function(_0x4f352b){console[_0xcfba('0x64')]('SocketIO\x20'+_0x36b6ed[_0xcfba('0x65')][_0xcfba('0x4')]+'['+_0x36b6ed[_0xcfba('0x60')]+']',_0x4f352b);};_0x36b6ed['on'](_0xcfba('0x66'),function(){onDisconnect(_0x36b6ed,_0x4b0697);_0x36b6ed['log'](_0xcfba('0x67'));});onConnect(_0x36b6ed);_0x36b6ed['log'](_0xcfba('0x68'));});};