Built motion from commit da617fac.|2.6.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 _0xdca4=['catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','bluebird','./environment','name','Agents','User','role','agent','telephone','type','ivr','UserProfileSection','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','UserProfileResource','map','resourceId','where','Campaign','%s:queue:%s','format','user:%s','query','find','userProfileId','ChatInteraction','ChatInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','voice:outbound','VoiceQueues','FaxQueue','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all','length','fax','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','MailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove'];(function(_0x12fbf0,_0x5a5a5c){var _0x4606c9=function(_0x10b5b3){while(--_0x10b5b3){_0x12fbf0['push'](_0x12fbf0['shift']());}};_0x4606c9(++_0x5a5a5c);}(_0xdca4,0x138));var _0x4dca=function(_0x20cef4,_0xe996cd){_0x20cef4=_0x20cef4-0x0;var _0x36fb3b=_0xdca4[_0x20cef4];return _0x36fb3b;};'use strict';var _=require(_0x4dca('0x0'));var util=require('util');var BPromise=require(_0x4dca('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x4dca('0x2'));var queryQueues={'attributes':['id',_0x4dca('0x3')],'include':[{'as':_0x4dca('0x4'),'model':db[_0x4dca('0x5')],'attributes':['id',_0x4dca('0x3'),_0x4dca('0x6')],'raw':!![],'where':{'role':_0x4dca('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x4dca('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x4dca('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x4dca('0x3')],'where':{'role':_0x4dca('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x4dca('0x9')],'where':{'type':_0x4dca('0xa')}};function getAssociatedResources(_0x2b3f9a,_0x356302,_0x1e1e56){return db[_0x4dca('0xb')]['findOne']({'where':{'name':_0x2b3f9a,'userProfileId':_0x356302},'raw':!![]})[_0x4dca('0xc')](function(_0x14e93f){if(_0x14e93f){if(_0x14e93f[_0x4dca('0xd')]){switch(_0x2b3f9a){case'VoiceQueues':case _0x4dca('0xe'):case _0x4dca('0xf'):case _0x4dca('0x10'):case _0x4dca('0x11'):case _0x4dca('0x12'):case _0x4dca('0x13'):return db[_0x1e1e56][_0x4dca('0x14')](queryQueues);case _0x4dca('0x15'):return db[_0x1e1e56][_0x4dca('0x14')](queryTelephones);case _0x4dca('0x16'):return db[_0x1e1e56][_0x4dca('0x14')](queryTrunks);case'IvrCampaigns':return db[_0x1e1e56][_0x4dca('0x14')](queryCampaigns);}}else{return db[_0x4dca('0x17')][_0x4dca('0x14')]({'attributes':['resourceId'],'where':{'sectionId':_0x14e93f['id']},'raw':!![]})[_0x4dca('0xc')](function(_0x27c08c){if(_0x27c08c){var _0x4da393={'where':{'id':_[_0x4dca('0x18')](_0x27c08c,_0x4dca('0x19'))},'raw':!![]};switch(_0x1e1e56){case'User':_0x4da393[_0x4dca('0x1a')][_0x4dca('0x6')]=_0x4dca('0x8');break;case _0x4dca('0x1b'):_0x4da393[_0x4dca('0x1a')][_0x4dca('0x9')]='ivr';break;}return db[_0x1e1e56][_0x4dca('0x14')](_0x4da393);}else{return[];}});}}else{return[];}})[_0x4dca('0xc')](function(_0x23dcd3){return _0x23dcd3;});}function joinOrLeaveQueues(_0x2a0136,_0x4af9eb,_0x1cba0e,_0x5273c8){_0x2a0136[_0x4af9eb](util['format'](_0x4dca('0x1c'),_0x1cba0e,_0x5273c8[_0x4dca('0x3')]));if(_0x5273c8['Agents']){for(var _0x1ecc1a=0x0;_0x1ecc1a<_0x5273c8[_0x4dca('0x4')]['length'];_0x1ecc1a+=0x1){_0x2a0136[_0x4af9eb](util[_0x4dca('0x1d')](_0x4dca('0x1e'),_0x5273c8[_0x4dca('0x4')][_0x1ecc1a][_0x4dca('0x3')]));}}}function joinOrLeave(_0x2c78b1,_0x446bf3,_0x5dcf31){var _0x4ec5c6;if(_0x2c78b1['handshake'][_0x4dca('0x1f')]['id']){db[_0x4dca('0x5')][_0x4dca('0x20')]({'attributes':['id',_0x4dca('0x3'),'role',_0x4dca('0x21')],'where':{'id':_0x2c78b1['handshake'][_0x4dca('0x1f')]['id']},'include':[{'model':db[_0x4dca('0x22')],'as':_0x4dca('0x23'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x4dca('0x24')],'as':_0x4dca('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x4dca('0x26')],'as':_0x4dca('0x27'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x4dca('0x28'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x4dca('0x29'),'attributes':['id'],'raw':!![]}]})[_0x4dca('0xc')](function(_0x60caa1){if(_0x60caa1){_0x4ec5c6=_0x60caa1;_0x2c78b1[_0x446bf3](util[_0x4dca('0x1d')](_0x4dca('0x1e'),_0x60caa1[_0x4dca('0x3')]));var _0x44c280=[];switch(_0x60caa1[_0x4dca('0x6')]){case _0x4dca('0x2a'):_0x2c78b1[_0x446bf3](_0x4dca('0x2b'));_0x2c78b1[_0x446bf3]('voice:outbound');if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0x4dca('0x2c')];}_0x44c280[_0x4dca('0x2d')](db[_0x4dca('0x2e')][_0x4dca('0x14')](queryQueues));_0x44c280['push'](db[_0x4dca('0x2f')][_0x4dca('0x14')](queryQueues));_0x44c280[_0x4dca('0x2d')](db['FaxQueue'][_0x4dca('0x14')](queryQueues));_0x44c280['push'](db[_0x4dca('0x30')][_0x4dca('0x14')](queryQueues));_0x44c280['push'](db[_0x4dca('0x31')][_0x4dca('0x14')](queryQueues));_0x44c280[_0x4dca('0x2d')](db[_0x4dca('0x32')]['findAll'](queryQueues));_0x44c280[_0x4dca('0x2d')](db[_0x4dca('0x33')]['findAll'](queryQueues));_0x44c280[_0x4dca('0x2d')](db[_0x4dca('0x5')][_0x4dca('0x14')](queryTelephones));_0x44c280[_0x4dca('0x2d')](db[_0x4dca('0x34')][_0x4dca('0x14')](queryTrunks));_0x44c280[_0x4dca('0x2d')](db[_0x4dca('0x1b')]['findAll'](queryCampaigns));_0x44c280[_0x4dca('0x2d')](db[_0x4dca('0x5')]['findAll'](queryAgents));break;case'user':_0x2c78b1[_0x446bf3]('voice:inbound');_0x2c78b1[_0x446bf3](_0x4dca('0x35'));_0x44c280[_0x4dca('0x2d')](getAssociatedResources(_0x4dca('0x36'),_0x60caa1[_0x4dca('0x21')],'VoiceQueue'));_0x44c280['push'](getAssociatedResources(_0x4dca('0xe'),_0x60caa1['userProfileId'],_0x4dca('0x2f')));_0x44c280[_0x4dca('0x2d')](getAssociatedResources('FaxQueues',_0x60caa1[_0x4dca('0x21')],_0x4dca('0x37')));_0x44c280[_0x4dca('0x2d')](getAssociatedResources(_0x4dca('0x10'),_0x60caa1[_0x4dca('0x21')],'SmsQueue'));_0x44c280[_0x4dca('0x2d')](getAssociatedResources(_0x4dca('0x11'),_0x60caa1['userProfileId'],_0x4dca('0x31')));_0x44c280[_0x4dca('0x2d')](getAssociatedResources('OpenchannelQueues',_0x60caa1[_0x4dca('0x21')],'OpenchannelQueue'));_0x44c280[_0x4dca('0x2d')](getAssociatedResources(_0x4dca('0x13'),_0x60caa1['userProfileId'],_0x4dca('0x33')));_0x44c280[_0x4dca('0x2d')](getAssociatedResources(_0x4dca('0x15'),_0x60caa1[_0x4dca('0x21')],_0x4dca('0x5')));_0x44c280[_0x4dca('0x2d')](getAssociatedResources(_0x4dca('0x16'),_0x60caa1['userProfileId'],_0x4dca('0x34')));_0x44c280[_0x4dca('0x2d')](getAssociatedResources(_0x4dca('0x38'),_0x60caa1[_0x4dca('0x21')],'Campaign'));_0x44c280[_0x4dca('0x2d')](db[_0x4dca('0x5')][_0x4dca('0x14')](queryAgents));break;case'agent':_0x2c78b1[_0x446bf3](_0x4dca('0x2b'));_0x2c78b1[_0x446bf3](_0x4dca('0x35'));_0x44c280[_0x4dca('0x2d')](_0x60caa1[_0x4dca('0x39')]({'attributes':['id',_0x4dca('0x3')]}));_0x44c280[_0x4dca('0x2d')](_0x60caa1[_0x4dca('0x3a')]({'attributes':['id',_0x4dca('0x3')]}));_0x44c280['push'](_0x60caa1[_0x4dca('0x3b')]({'attributes':['id','name']}));_0x44c280[_0x4dca('0x2d')](_0x60caa1[_0x4dca('0x3c')]({'attributes':['id','name']}));_0x44c280['push'](_0x60caa1[_0x4dca('0x3d')]({'attributes':['id',_0x4dca('0x3')]}));_0x44c280[_0x4dca('0x2d')](_0x60caa1['getOpenchannelQueues']({'attributes':['id',_0x4dca('0x3')]}));_0x44c280[_0x4dca('0x2d')](_0x60caa1[_0x4dca('0x3e')]({'attributes':['id',_0x4dca('0x3')]}));break;}return BPromise[_0x4dca('0x3f')](_0x44c280);}})['then'](function(_0x23305c){if(_0x23305c&&_0x23305c['length']){for(var _0x2b25e0=0x0;_0x2b25e0<_0x23305c[_0x4dca('0x40')];_0x2b25e0+=0x1){for(var _0x72e867=0x0;_0x72e867<_0x23305c[_0x2b25e0][_0x4dca('0x40')];_0x72e867+=0x1){switch(_0x2b25e0){case 0x0:joinOrLeaveQueues(_0x2c78b1,_0x446bf3,'voice',_0x23305c[_0x2b25e0][_0x72e867]);break;case 0x1:joinOrLeaveQueues(_0x2c78b1,_0x446bf3,'chat',_0x23305c[_0x2b25e0][_0x72e867]);break;case 0x2:joinOrLeaveQueues(_0x2c78b1,_0x446bf3,_0x4dca('0x41'),_0x23305c[_0x2b25e0][_0x72e867]);break;case 0x3:joinOrLeaveQueues(_0x2c78b1,_0x446bf3,'sms',_0x23305c[_0x2b25e0][_0x72e867]);break;case 0x4:joinOrLeaveQueues(_0x2c78b1,_0x446bf3,_0x4dca('0x42'),_0x23305c[_0x2b25e0][_0x72e867]);break;case 0x5:joinOrLeaveQueues(_0x2c78b1,_0x446bf3,_0x4dca('0x43'),_0x23305c[_0x2b25e0][_0x72e867]);break;case 0x6:joinOrLeaveQueues(_0x2c78b1,_0x446bf3,_0x4dca('0x44'),_0x23305c[_0x2b25e0][_0x72e867]);break;case 0x7:if(_0x4ec5c6[_0x4dca('0x6')]!==_0x4dca('0x7'))_0x2c78b1[_0x446bf3](util[_0x4dca('0x1d')](_0x4dca('0x45'),_0x23305c[_0x2b25e0][_0x72e867][_0x4dca('0x3')]));break;case 0x8:if(_0x4ec5c6['role']!==_0x4dca('0x7'))_0x2c78b1[_0x446bf3](util[_0x4dca('0x1d')](_0x4dca('0x46'),_0x23305c[_0x2b25e0][_0x72e867]['name']));break;case 0x9:if(_0x4ec5c6[_0x4dca('0x6')]!==_0x4dca('0x7'))_0x2c78b1[_0x446bf3](util[_0x4dca('0x1d')](_0x4dca('0x47'),_0x23305c[_0x2b25e0][_0x72e867][_0x4dca('0x9')],_0x23305c[_0x2b25e0][_0x72e867][_0x4dca('0x3')]));break;case 0xa:_0x2c78b1[_0x446bf3](util['format']('user:%s',_0x23305c[_0x2b25e0][_0x72e867]['name']));break;}}}}})[_0x4dca('0xc')](function(){if(_0x446bf3===_0x4dca('0x48')){var _0x528baf=_[_0x4dca('0x18')](_0x4ec5c6[_0x4dca('0x23')],'id');return _0x4ec5c6[_0x4dca('0x49')](_0x528baf)[_0x4dca('0xc')](function(){for(var _0x34b1b8=0x0;_0x34b1b8<_0x528baf[_0x4dca('0x40')];_0x34b1b8+=0x1){_0x5dcf31[_0x4dca('0x4a')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x528baf[_0x34b1b8]),'UserId':Number(_0x4ec5c6['id'])});}});}})[_0x4dca('0xc')](function(){if(_0x446bf3===_0x4dca('0x48')){var _0xb961ca=_[_0x4dca('0x18')](_0x4ec5c6[_0x4dca('0x4b')],'id');return _0x4ec5c6['removeMailInteractions'](_0xb961ca)[_0x4dca('0xc')](function(){for(var _0x124977=0x0;_0x124977<_0xb961ca[_0x4dca('0x40')];_0x124977+=0x1){_0x5dcf31[_0x4dca('0x4a')](_0x4dca('0x4c'),{'MailInteractionId':Number(_0xb961ca[_0x124977]),'UserId':Number(_0x4ec5c6['id'])});}});}})['then'](function(){if(_0x446bf3===_0x4dca('0x48')){var _0x1335cc=_['map'](_0x4ec5c6['FaxInteractions'],'id');return _0x4ec5c6[_0x4dca('0x4d')](_0x1335cc)[_0x4dca('0xc')](function(){for(var _0x21efd4=0x0;_0x21efd4<_0x1335cc[_0x4dca('0x40')];_0x21efd4+=0x1){_0x5dcf31[_0x4dca('0x4a')](_0x4dca('0x4e'),{'FaxInteractionId':Number(_0x1335cc[_0x21efd4]),'UserId':Number(_0x4ec5c6['id'])});}});}})['then'](function(){if(_0x446bf3===_0x4dca('0x48')){var _0xeade6e=_['map'](_0x4ec5c6['SmsInteractions'],'id');return _0x4ec5c6['removeSmsInteractions'](_0xeade6e)[_0x4dca('0xc')](function(){for(var _0x478c92=0x0;_0x478c92<_0xeade6e[_0x4dca('0x40')];_0x478c92+=0x1){_0x5dcf31[_0x4dca('0x4a')](_0x4dca('0x4f'),{'SmsInteractionId':Number(_0xeade6e[_0x478c92]),'UserId':Number(_0x4ec5c6['id'])});}});}})[_0x4dca('0xc')](function(){if(_0x446bf3===_0x4dca('0x48')){var _0x368954=_['map'](_0x4ec5c6[_0x4dca('0x28')],'id');return _0x4ec5c6[_0x4dca('0x50')](_0x368954)['then'](function(){for(var _0x428758=0x0;_0x428758<_0x368954[_0x4dca('0x40')];_0x428758+=0x1){_0x5dcf31[_0x4dca('0x4a')](_0x4dca('0x51'),{'OpenchannelInteractionId':Number(_0x368954[_0x428758]),'UserId':Number(_0x4ec5c6['id'])});}});}})[_0x4dca('0xc')](function(){if(_0x446bf3==='leave'){var _0x3d86c1=_[_0x4dca('0x18')](_0x4ec5c6['WhatsappInteractions'],'id');return _0x4ec5c6[_0x4dca('0x52')](_0x3d86c1)[_0x4dca('0xc')](function(){for(var _0x5e69f0=0x0;_0x5e69f0<_0x3d86c1[_0x4dca('0x40')];_0x5e69f0+=0x1){_0x5dcf31['emit'](_0x4dca('0x53'),{'WhatsappInteractionId':Number(_0x3d86c1[_0x5e69f0]),'UserId':Number(_0x4ec5c6['id'])});}});}})[_0x4dca('0x54')](function(_0x22c3f3){_0x2c78b1[_0x4dca('0x55')](_0x22c3f3);});}}function onDisconnect(_0x209d9e,_0x2c0713){joinOrLeave(_0x209d9e,_0x4dca('0x48'),_0x2c0713);}function onConnect(_0x4568f6){joinOrLeave(_0x4568f6,_0x4dca('0x56'));}exports[_0x4dca('0x57')]=function(_0x360557){_0x360557['on'](_0x4dca('0x58'),function(_0x154bb5){_0x154bb5[_0x4dca('0x59')](0x0);_0x154bb5[_0x4dca('0x5a')]=_0x154bb5[_0x4dca('0x5b')]['connection'][_0x4dca('0x5c')]+':'+_0x154bb5[_0x4dca('0x5b')][_0x4dca('0x58')][_0x4dca('0x5d')];_0x154bb5[_0x4dca('0x5e')]=new Date();_0x154bb5[_0x4dca('0x55')]=function(_0x34430b){console['log'](_0x4dca('0x5f')+_0x154bb5[_0x4dca('0x60')][_0x4dca('0x3')]+'['+_0x154bb5['address']+']',_0x34430b);};_0x154bb5['on'](_0x4dca('0x61'),function(){onDisconnect(_0x154bb5,_0x360557);_0x154bb5[_0x4dca('0x55')](_0x4dca('0x62'));});onConnect(_0x154bb5);_0x154bb5['log']('CONNECTED');});};