Built motion from commit bab6f49e.|2.6.17
[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 _0x2515=['format','admin','voice:outbound','hasOwnProperty','include','VoiceQueue','push','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','VoiceQueues','ChatQueue','Trunk','voice:inbound','getVoiceQueues','getChatQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','whatsapp','campaign:%s:%s','map','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','connectedAt','SocketIO\x20','disconnect','CONNECTED','lodash','util','../mysqldb','./environment','name','Agents','role','telephone','agent','type','ivr','UserProfileSection','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','User','where','Campaign','%s:queue:%s','length','user:%s','handshake','find','userProfileId','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x2515,0x1c2));var _0x5251=function(_0x1f6775,_0x46110c){_0x1f6775=_0x1f6775-0x0;var _0x908991=_0x2515[_0x1f6775];return _0x908991;};'use strict';var _=require(_0x5251('0x0'));var util=require(_0x5251('0x1'));var BPromise=require('bluebird');var db=require(_0x5251('0x2'))['db'];var config=require(_0x5251('0x3'));var queryQueues={'attributes':['id',_0x5251('0x4')],'include':[{'as':_0x5251('0x5'),'model':db['User'],'attributes':['id',_0x5251('0x4'),_0x5251('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x5251('0x4')],'where':{'role':_0x5251('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x5251('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x5251('0x4')],'where':{'role':_0x5251('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x5251('0x4'),_0x5251('0x9')],'where':{'type':_0x5251('0xa')}};function getAssociatedResources(_0x2a6c75,_0x279486,_0x2bec99){return db[_0x5251('0xb')]['findOne']({'where':{'name':_0x2a6c75,'userProfileId':_0x279486},'raw':!![]})[_0x5251('0xc')](function(_0x3d7ed9){if(_0x3d7ed9){if(_0x3d7ed9[_0x5251('0xd')]){switch(_0x2a6c75){case'VoiceQueues':case _0x5251('0xe'):case _0x5251('0xf'):case _0x5251('0x10'):case _0x5251('0x11'):case _0x5251('0x12'):case _0x5251('0x13'):return db[_0x2bec99][_0x5251('0x14')](queryQueues);case _0x5251('0x15'):return db[_0x2bec99][_0x5251('0x14')](queryTelephones);case _0x5251('0x16'):return db[_0x2bec99][_0x5251('0x14')](queryTrunks);case _0x5251('0x17'):return db[_0x2bec99][_0x5251('0x14')](queryCampaigns);}}else{return db[_0x5251('0x18')][_0x5251('0x14')]({'attributes':[_0x5251('0x19')],'where':{'sectionId':_0x3d7ed9['id']},'raw':!![]})[_0x5251('0xc')](function(_0x283ca1){if(_0x283ca1){var _0x1010f7={'where':{'id':_['map'](_0x283ca1,_0x5251('0x19'))},'raw':!![]};switch(_0x2bec99){case _0x5251('0x1a'):_0x1010f7[_0x5251('0x1b')][_0x5251('0x6')]=_0x5251('0x7');break;case _0x5251('0x1c'):_0x1010f7[_0x5251('0x1b')][_0x5251('0x9')]=_0x5251('0xa');break;}return db[_0x2bec99][_0x5251('0x14')](_0x1010f7);}else{return[];}});}}else{return[];}})[_0x5251('0xc')](function(_0x4b517b){return _0x4b517b;});}function joinOrLeaveQueues(_0x7c58b0,_0xffd38,_0x2ffa33,_0x28fd96){_0x7c58b0[_0xffd38](util['format'](_0x5251('0x1d'),_0x2ffa33,_0x28fd96[_0x5251('0x4')]));if(_0x28fd96[_0x5251('0x5')]){for(var _0x24b19c=0x0;_0x24b19c<_0x28fd96[_0x5251('0x5')][_0x5251('0x1e')];_0x24b19c+=0x1){_0x7c58b0[_0xffd38](util['format'](_0x5251('0x1f'),_0x28fd96['Agents'][_0x24b19c][_0x5251('0x4')]));}}}function joinOrLeave(_0x307b12,_0x323b34,_0x5596ac){var _0x2c5f46;if(_0x307b12[_0x5251('0x20')]['query']['id']){db[_0x5251('0x1a')][_0x5251('0x21')]({'attributes':['id',_0x5251('0x4'),_0x5251('0x6'),_0x5251('0x22')],'where':{'id':_0x307b12['handshake']['query']['id']},'include':[{'model':db[_0x5251('0x23')],'as':_0x5251('0x24'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x5251('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x5251('0x26')],'as':_0x5251('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x5251('0x28')],'as':_0x5251('0x29'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x5251('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x5251('0x2b')],'as':_0x5251('0x2c'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x19b3ad){if(_0x19b3ad){_0x2c5f46=_0x19b3ad;_0x307b12[_0x323b34](util[_0x5251('0x2d')](_0x5251('0x1f'),_0x19b3ad['name']));var _0xfaab3d=[];switch(_0x19b3ad[_0x5251('0x6')]){case _0x5251('0x2e'):_0x307b12[_0x323b34]('voice:inbound');_0x307b12[_0x323b34](_0x5251('0x2f'));if(queryQueues[_0x5251('0x30')](_0x5251('0x31'))){delete queryQueues[_0x5251('0x31')];}_0xfaab3d['push'](db[_0x5251('0x32')][_0x5251('0x14')](queryQueues));_0xfaab3d[_0x5251('0x33')](db['ChatQueue'][_0x5251('0x14')](queryQueues));_0xfaab3d[_0x5251('0x33')](db[_0x5251('0x34')][_0x5251('0x14')](queryQueues));_0xfaab3d['push'](db[_0x5251('0x35')][_0x5251('0x14')](queryQueues));_0xfaab3d[_0x5251('0x33')](db[_0x5251('0x36')][_0x5251('0x14')](queryQueues));_0xfaab3d[_0x5251('0x33')](db[_0x5251('0x37')][_0x5251('0x14')](queryQueues));_0xfaab3d['push'](db[_0x5251('0x38')][_0x5251('0x14')](queryQueues));_0xfaab3d[_0x5251('0x33')](db['User'][_0x5251('0x14')](queryTelephones));_0xfaab3d['push'](db['Trunk'][_0x5251('0x14')](queryTrunks));_0xfaab3d[_0x5251('0x33')](db[_0x5251('0x1c')][_0x5251('0x14')](queryCampaigns));_0xfaab3d[_0x5251('0x33')](db[_0x5251('0x1a')]['findAll'](queryAgents));break;case _0x5251('0x39'):_0x307b12[_0x323b34]('voice:inbound');_0x307b12[_0x323b34](_0x5251('0x2f'));_0xfaab3d['push'](getAssociatedResources(_0x5251('0x3a'),_0x19b3ad['userProfileId'],_0x5251('0x32')));_0xfaab3d['push'](getAssociatedResources(_0x5251('0xe'),_0x19b3ad[_0x5251('0x22')],_0x5251('0x3b')));_0xfaab3d[_0x5251('0x33')](getAssociatedResources(_0x5251('0xf'),_0x19b3ad['userProfileId'],'FaxQueue'));_0xfaab3d[_0x5251('0x33')](getAssociatedResources(_0x5251('0x10'),_0x19b3ad[_0x5251('0x22')],_0x5251('0x35')));_0xfaab3d[_0x5251('0x33')](getAssociatedResources(_0x5251('0x11'),_0x19b3ad[_0x5251('0x22')],'MailQueue'));_0xfaab3d[_0x5251('0x33')](getAssociatedResources(_0x5251('0x12'),_0x19b3ad[_0x5251('0x22')],'OpenchannelQueue'));_0xfaab3d['push'](getAssociatedResources(_0x5251('0x13'),_0x19b3ad['userProfileId'],_0x5251('0x38')));_0xfaab3d['push'](getAssociatedResources('Telephones',_0x19b3ad['userProfileId'],_0x5251('0x1a')));_0xfaab3d[_0x5251('0x33')](getAssociatedResources('Trunks',_0x19b3ad[_0x5251('0x22')],_0x5251('0x3c')));_0xfaab3d[_0x5251('0x33')](getAssociatedResources(_0x5251('0x17'),_0x19b3ad['userProfileId'],_0x5251('0x1c')));_0xfaab3d['push'](db[_0x5251('0x1a')]['findAll'](queryAgents));break;case _0x5251('0x8'):_0x307b12[_0x323b34](_0x5251('0x3d'));_0x307b12[_0x323b34](_0x5251('0x2f'));_0xfaab3d['push'](_0x19b3ad[_0x5251('0x3e')]({'attributes':['id',_0x5251('0x4')]}));_0xfaab3d[_0x5251('0x33')](_0x19b3ad[_0x5251('0x3f')]({'attributes':['id',_0x5251('0x4')]}));_0xfaab3d[_0x5251('0x33')](_0x19b3ad['getFaxQueues']({'attributes':['id','name']}));_0xfaab3d[_0x5251('0x33')](_0x19b3ad['getSmsQueues']({'attributes':['id',_0x5251('0x4')]}));_0xfaab3d[_0x5251('0x33')](_0x19b3ad[_0x5251('0x40')]({'attributes':['id',_0x5251('0x4')]}));_0xfaab3d[_0x5251('0x33')](_0x19b3ad[_0x5251('0x41')]({'attributes':['id',_0x5251('0x4')]}));_0xfaab3d['push'](_0x19b3ad[_0x5251('0x42')]({'attributes':['id',_0x5251('0x4')]}));break;}return BPromise[_0x5251('0x43')](_0xfaab3d);}})[_0x5251('0xc')](function(_0x1dd6f3){if(_0x1dd6f3&&_0x1dd6f3[_0x5251('0x1e')]){for(var _0x4b3613=0x0;_0x4b3613<_0x1dd6f3['length'];_0x4b3613+=0x1){for(var _0x442259=0x0;_0x442259<_0x1dd6f3[_0x4b3613][_0x5251('0x1e')];_0x442259+=0x1){switch(_0x4b3613){case 0x0:joinOrLeaveQueues(_0x307b12,_0x323b34,_0x5251('0x44'),_0x1dd6f3[_0x4b3613][_0x442259]);break;case 0x1:joinOrLeaveQueues(_0x307b12,_0x323b34,_0x5251('0x45'),_0x1dd6f3[_0x4b3613][_0x442259]);break;case 0x2:joinOrLeaveQueues(_0x307b12,_0x323b34,_0x5251('0x46'),_0x1dd6f3[_0x4b3613][_0x442259]);break;case 0x3:joinOrLeaveQueues(_0x307b12,_0x323b34,'sms',_0x1dd6f3[_0x4b3613][_0x442259]);break;case 0x4:joinOrLeaveQueues(_0x307b12,_0x323b34,'mail',_0x1dd6f3[_0x4b3613][_0x442259]);break;case 0x5:joinOrLeaveQueues(_0x307b12,_0x323b34,'openchannel',_0x1dd6f3[_0x4b3613][_0x442259]);break;case 0x6:joinOrLeaveQueues(_0x307b12,_0x323b34,_0x5251('0x47'),_0x1dd6f3[_0x4b3613][_0x442259]);break;case 0x7:if(_0x2c5f46[_0x5251('0x6')]!==_0x5251('0x8'))_0x307b12[_0x323b34](util[_0x5251('0x2d')]('telephone:%s',_0x1dd6f3[_0x4b3613][_0x442259]['name']));break;case 0x8:if(_0x2c5f46[_0x5251('0x6')]!=='agent')_0x307b12[_0x323b34](util[_0x5251('0x2d')]('trunk:%s',_0x1dd6f3[_0x4b3613][_0x442259][_0x5251('0x4')]));break;case 0x9:if(_0x2c5f46['role']!==_0x5251('0x8'))_0x307b12[_0x323b34](util[_0x5251('0x2d')](_0x5251('0x48'),_0x1dd6f3[_0x4b3613][_0x442259][_0x5251('0x9')],_0x1dd6f3[_0x4b3613][_0x442259][_0x5251('0x4')]));break;case 0xa:_0x307b12[_0x323b34](util['format'](_0x5251('0x1f'),_0x1dd6f3[_0x4b3613][_0x442259][_0x5251('0x4')]));break;}}}}})['then'](function(){if(_0x323b34==='leave'){var _0x454b04=_[_0x5251('0x49')](_0x2c5f46[_0x5251('0x24')],'id');return _0x2c5f46['removeChatInteractions'](_0x454b04)[_0x5251('0xc')](function(){for(var _0x346db9=0x0;_0x346db9<_0x454b04[_0x5251('0x1e')];_0x346db9+=0x1){_0x5596ac[_0x5251('0x4a')](_0x5251('0x4b'),{'ChatInteractionId':Number(_0x454b04[_0x346db9]),'UserId':Number(_0x2c5f46['id'])});}});}})[_0x5251('0xc')](function(){if(_0x323b34===_0x5251('0x4c')){var _0x4df0bd=_[_0x5251('0x49')](_0x2c5f46[_0x5251('0x25')],'id');return _0x2c5f46[_0x5251('0x4d')](_0x4df0bd)[_0x5251('0xc')](function(){for(var _0x3658cf=0x0;_0x3658cf<_0x4df0bd['length'];_0x3658cf+=0x1){_0x5596ac[_0x5251('0x4a')](_0x5251('0x4e'),{'MailInteractionId':Number(_0x4df0bd[_0x3658cf]),'UserId':Number(_0x2c5f46['id'])});}});}})[_0x5251('0xc')](function(){if(_0x323b34===_0x5251('0x4c')){var _0x13a558=_[_0x5251('0x49')](_0x2c5f46[_0x5251('0x27')],'id');return _0x2c5f46[_0x5251('0x4f')](_0x13a558)[_0x5251('0xc')](function(){for(var _0x674f18=0x0;_0x674f18<_0x13a558[_0x5251('0x1e')];_0x674f18+=0x1){_0x5596ac['emit'](_0x5251('0x50'),{'FaxInteractionId':Number(_0x13a558[_0x674f18]),'UserId':Number(_0x2c5f46['id'])});}});}})['then'](function(){if(_0x323b34===_0x5251('0x4c')){var _0x125e2d=_['map'](_0x2c5f46[_0x5251('0x29')],'id');return _0x2c5f46[_0x5251('0x51')](_0x125e2d)[_0x5251('0xc')](function(){for(var _0x2766b5=0x0;_0x2766b5<_0x125e2d[_0x5251('0x1e')];_0x2766b5+=0x1){_0x5596ac[_0x5251('0x4a')](_0x5251('0x52'),{'SmsInteractionId':Number(_0x125e2d[_0x2766b5]),'UserId':Number(_0x2c5f46['id'])});}});}})[_0x5251('0xc')](function(){if(_0x323b34===_0x5251('0x4c')){var _0x2205c1=_[_0x5251('0x49')](_0x2c5f46[_0x5251('0x2a')],'id');return _0x2c5f46[_0x5251('0x53')](_0x2205c1)[_0x5251('0xc')](function(){for(var _0x36313f=0x0;_0x36313f<_0x2205c1[_0x5251('0x1e')];_0x36313f+=0x1){_0x5596ac[_0x5251('0x4a')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x2205c1[_0x36313f]),'UserId':Number(_0x2c5f46['id'])});}});}})['then'](function(){if(_0x323b34===_0x5251('0x4c')){var _0x516a1d=_[_0x5251('0x49')](_0x2c5f46[_0x5251('0x2c')],'id');return _0x2c5f46[_0x5251('0x54')](_0x516a1d)[_0x5251('0xc')](function(){for(var _0x2cef99=0x0;_0x2cef99<_0x516a1d[_0x5251('0x1e')];_0x2cef99+=0x1){_0x5596ac[_0x5251('0x4a')](_0x5251('0x55'),{'WhatsappInteractionId':Number(_0x516a1d[_0x2cef99]),'UserId':Number(_0x2c5f46['id'])});}});}})[_0x5251('0x56')](function(_0x4125bd){_0x307b12[_0x5251('0x57')](_0x4125bd);});}}function onDisconnect(_0x3a0e13,_0x21c91d){joinOrLeave(_0x3a0e13,_0x5251('0x4c'),_0x21c91d);}function onConnect(_0x16278b){joinOrLeave(_0x16278b,_0x5251('0x58'));}exports[_0x5251('0x59')]=function(_0x299ff1){_0x299ff1['on'](_0x5251('0x5a'),function(_0x1c273a){_0x1c273a[_0x5251('0x5b')](0x0);_0x1c273a[_0x5251('0x5c')]=_0x1c273a[_0x5251('0x5d')][_0x5251('0x5a')][_0x5251('0x5e')]+':'+_0x1c273a['request'][_0x5251('0x5a')]['remotePort'];_0x1c273a[_0x5251('0x5f')]=new Date();_0x1c273a['log']=function(_0x2b0f7c){console['log'](_0x5251('0x60')+_0x1c273a['nsp'][_0x5251('0x4')]+'['+_0x1c273a[_0x5251('0x5c')]+']',_0x2b0f7c);};_0x1c273a['on'](_0x5251('0x61'),function(){onDisconnect(_0x1c273a,_0x299ff1);_0x1c273a[_0x5251('0x57')]('DISCONNECTED');});onConnect(_0x1c273a);_0x1c273a[_0x5251('0x57')](_0x5251('0x62'));});};