Built motion from commit 3d3e98f2.|2.6.29
[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 _0xd185=['include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','WhatsappQueue','Trunk','user','SmsQueue','OpenchannelQueues','OpenchannelQueue','WhatsappQueues','getChatQueues','getFaxQueues','getWhatsappQueues','all','voice','fax','mail','openchannel','whatsapp','campaign:%s:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','address','remoteAddress','remotePort','SocketIO\x20','disconnect','CONNECTED','lodash','../mysqldb','./environment','Agents','User','name','role','agent','type','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','Telephones','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','telephone','Campaign','format','%s:queue:%s','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty'];(function(_0x29b8e3,_0x508f07){var _0x4039f0=function(_0xbf770b){while(--_0xbf770b){_0x29b8e3['push'](_0x29b8e3['shift']());}};_0x4039f0(++_0x508f07);}(_0xd185,0x92));var _0x5d18=function(_0x3a83c5,_0x20a5f8){_0x3a83c5=_0x3a83c5-0x0;var _0x4787d9=_0xd185[_0x3a83c5];return _0x4787d9;};'use strict';var _=require(_0x5d18('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0x5d18('0x1'))['db'];var config=require(_0x5d18('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x5d18('0x3'),'model':db[_0x5d18('0x4')],'attributes':['id',_0x5d18('0x5'),_0x5d18('0x6')],'raw':!![],'where':{'role':_0x5d18('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x5d18('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x5d18('0x5')],'where':{'role':_0x5d18('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x5d18('0x5'),_0x5d18('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x4a6c8d,_0x44ef76,_0x57e272){return db[_0x5d18('0x9')][_0x5d18('0xa')]({'where':{'name':_0x4a6c8d,'userProfileId':_0x44ef76},'raw':!![]})[_0x5d18('0xb')](function(_0x1408d1){if(_0x1408d1){if(_0x1408d1[_0x5d18('0xc')]){switch(_0x4a6c8d){case _0x5d18('0xd'):case _0x5d18('0xe'):case _0x5d18('0xf'):case _0x5d18('0x10'):case _0x5d18('0x11'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x57e272]['findAll'](queryQueues);case _0x5d18('0x12'):return db[_0x57e272][_0x5d18('0x13')](queryTelephones);case _0x5d18('0x14'):return db[_0x57e272][_0x5d18('0x13')](queryTrunks);case _0x5d18('0x15'):return db[_0x57e272][_0x5d18('0x13')](queryCampaigns);}}else{return db[_0x5d18('0x16')]['findAll']({'attributes':[_0x5d18('0x17')],'where':{'sectionId':_0x1408d1['id']},'raw':!![]})[_0x5d18('0xb')](function(_0x535b9f){if(_0x535b9f){var _0x1fcc3b={'where':{'id':_[_0x5d18('0x18')](_0x535b9f,_0x5d18('0x17'))},'raw':!![]};switch(_0x57e272){case'User':_0x1fcc3b[_0x5d18('0x19')][_0x5d18('0x6')]=_0x5d18('0x1a');break;case _0x5d18('0x1b'):_0x1fcc3b['where'][_0x5d18('0x8')]='ivr';break;}return db[_0x57e272][_0x5d18('0x13')](_0x1fcc3b);}else{return[];}});}}else{return[];}})[_0x5d18('0xb')](function(_0x17f0ce){return _0x17f0ce;});}function joinOrLeaveQueues(_0x51fbd2,_0x5db197,_0x1283ba,_0x1c7423){_0x51fbd2[_0x5db197](util[_0x5d18('0x1c')](_0x5d18('0x1d'),_0x1283ba,_0x1c7423[_0x5d18('0x5')]));if(_0x1c7423[_0x5d18('0x3')]){for(var _0x2a6354=0x0;_0x2a6354<_0x1c7423[_0x5d18('0x3')][_0x5d18('0x1e')];_0x2a6354+=0x1){_0x51fbd2[_0x5db197](util['format'](_0x5d18('0x1f'),_0x1c7423[_0x5d18('0x3')][_0x2a6354][_0x5d18('0x5')]));}}}function joinOrLeave(_0x1c2dc7,_0x152a33,_0x2cc9a8){var _0x2e612b;if(_0x1c2dc7[_0x5d18('0x20')][_0x5d18('0x21')]['id']){db['User'][_0x5d18('0x22')]({'attributes':['id',_0x5d18('0x5'),'role',_0x5d18('0x23')],'where':{'id':_0x1c2dc7[_0x5d18('0x20')][_0x5d18('0x21')]['id']},'include':[{'model':db[_0x5d18('0x24')],'as':_0x5d18('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x5d18('0x26')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5d18('0x27')],'as':_0x5d18('0x28'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x5d18('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x5d18('0x2a')],'as':_0x5d18('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x5d18('0x2c')],'as':_0x5d18('0x2d'),'attributes':['id'],'raw':!![]}]})[_0x5d18('0xb')](function(_0x3a9301){if(_0x3a9301){_0x2e612b=_0x3a9301;_0x1c2dc7[_0x152a33](util[_0x5d18('0x1c')](_0x5d18('0x1f'),_0x3a9301[_0x5d18('0x5')]));var _0x51212d=[];switch(_0x3a9301['role']){case _0x5d18('0x2e'):_0x1c2dc7[_0x152a33](_0x5d18('0x2f'));_0x1c2dc7[_0x152a33](_0x5d18('0x30'));if(queryQueues[_0x5d18('0x31')]('include')){delete queryQueues[_0x5d18('0x32')];}_0x51212d[_0x5d18('0x33')](db[_0x5d18('0x34')][_0x5d18('0x13')](queryQueues));_0x51212d[_0x5d18('0x33')](db[_0x5d18('0x35')]['findAll'](queryQueues));_0x51212d[_0x5d18('0x33')](db[_0x5d18('0x36')]['findAll'](queryQueues));_0x51212d[_0x5d18('0x33')](db['SmsQueue'][_0x5d18('0x13')](queryQueues));_0x51212d[_0x5d18('0x33')](db[_0x5d18('0x37')]['findAll'](queryQueues));_0x51212d[_0x5d18('0x33')](db['OpenchannelQueue']['findAll'](queryQueues));_0x51212d[_0x5d18('0x33')](db[_0x5d18('0x38')][_0x5d18('0x13')](queryQueues));_0x51212d['push'](db[_0x5d18('0x4')][_0x5d18('0x13')](queryTelephones));_0x51212d[_0x5d18('0x33')](db[_0x5d18('0x39')][_0x5d18('0x13')](queryTrunks));_0x51212d['push'](db[_0x5d18('0x1b')]['findAll'](queryCampaigns));_0x51212d[_0x5d18('0x33')](db[_0x5d18('0x4')][_0x5d18('0x13')](queryAgents));break;case _0x5d18('0x3a'):_0x1c2dc7[_0x152a33](_0x5d18('0x2f'));_0x1c2dc7[_0x152a33](_0x5d18('0x30'));_0x51212d[_0x5d18('0x33')](getAssociatedResources(_0x5d18('0xd'),_0x3a9301[_0x5d18('0x23')],_0x5d18('0x34')));_0x51212d[_0x5d18('0x33')](getAssociatedResources(_0x5d18('0xe'),_0x3a9301[_0x5d18('0x23')],_0x5d18('0x35')));_0x51212d[_0x5d18('0x33')](getAssociatedResources(_0x5d18('0xf'),_0x3a9301[_0x5d18('0x23')],'FaxQueue'));_0x51212d['push'](getAssociatedResources('SmsQueues',_0x3a9301[_0x5d18('0x23')],_0x5d18('0x3b')));_0x51212d[_0x5d18('0x33')](getAssociatedResources('MailQueues',_0x3a9301['userProfileId'],_0x5d18('0x37')));_0x51212d[_0x5d18('0x33')](getAssociatedResources(_0x5d18('0x3c'),_0x3a9301[_0x5d18('0x23')],_0x5d18('0x3d')));_0x51212d[_0x5d18('0x33')](getAssociatedResources(_0x5d18('0x3e'),_0x3a9301[_0x5d18('0x23')],_0x5d18('0x38')));_0x51212d[_0x5d18('0x33')](getAssociatedResources('Telephones',_0x3a9301[_0x5d18('0x23')],_0x5d18('0x4')));_0x51212d[_0x5d18('0x33')](getAssociatedResources(_0x5d18('0x14'),_0x3a9301[_0x5d18('0x23')],'Trunk'));_0x51212d[_0x5d18('0x33')](getAssociatedResources(_0x5d18('0x15'),_0x3a9301['userProfileId'],_0x5d18('0x1b')));_0x51212d[_0x5d18('0x33')](db[_0x5d18('0x4')][_0x5d18('0x13')](queryAgents));break;case'agent':_0x1c2dc7[_0x152a33](_0x5d18('0x2f'));_0x1c2dc7[_0x152a33]('voice:outbound');_0x51212d[_0x5d18('0x33')](_0x3a9301['getVoiceQueues']({'attributes':['id',_0x5d18('0x5')]}));_0x51212d[_0x5d18('0x33')](_0x3a9301[_0x5d18('0x3f')]({'attributes':['id','name']}));_0x51212d[_0x5d18('0x33')](_0x3a9301[_0x5d18('0x40')]({'attributes':['id',_0x5d18('0x5')]}));_0x51212d[_0x5d18('0x33')](_0x3a9301['getSmsQueues']({'attributes':['id',_0x5d18('0x5')]}));_0x51212d[_0x5d18('0x33')](_0x3a9301['getMailQueues']({'attributes':['id',_0x5d18('0x5')]}));_0x51212d['push'](_0x3a9301['getOpenchannelQueues']({'attributes':['id',_0x5d18('0x5')]}));_0x51212d[_0x5d18('0x33')](_0x3a9301[_0x5d18('0x41')]({'attributes':['id',_0x5d18('0x5')]}));break;}return BPromise[_0x5d18('0x42')](_0x51212d);}})[_0x5d18('0xb')](function(_0x3cabca){if(_0x3cabca&&_0x3cabca[_0x5d18('0x1e')]){for(var _0x5dfebe=0x0;_0x5dfebe<_0x3cabca[_0x5d18('0x1e')];_0x5dfebe+=0x1){for(var _0x4f56ce=0x0;_0x4f56ce<_0x3cabca[_0x5dfebe][_0x5d18('0x1e')];_0x4f56ce+=0x1){switch(_0x5dfebe){case 0x0:joinOrLeaveQueues(_0x1c2dc7,_0x152a33,_0x5d18('0x43'),_0x3cabca[_0x5dfebe][_0x4f56ce]);break;case 0x1:joinOrLeaveQueues(_0x1c2dc7,_0x152a33,'chat',_0x3cabca[_0x5dfebe][_0x4f56ce]);break;case 0x2:joinOrLeaveQueues(_0x1c2dc7,_0x152a33,_0x5d18('0x44'),_0x3cabca[_0x5dfebe][_0x4f56ce]);break;case 0x3:joinOrLeaveQueues(_0x1c2dc7,_0x152a33,'sms',_0x3cabca[_0x5dfebe][_0x4f56ce]);break;case 0x4:joinOrLeaveQueues(_0x1c2dc7,_0x152a33,_0x5d18('0x45'),_0x3cabca[_0x5dfebe][_0x4f56ce]);break;case 0x5:joinOrLeaveQueues(_0x1c2dc7,_0x152a33,_0x5d18('0x46'),_0x3cabca[_0x5dfebe][_0x4f56ce]);break;case 0x6:joinOrLeaveQueues(_0x1c2dc7,_0x152a33,_0x5d18('0x47'),_0x3cabca[_0x5dfebe][_0x4f56ce]);break;case 0x7:if(_0x2e612b[_0x5d18('0x6')]!=='agent')_0x1c2dc7[_0x152a33](util[_0x5d18('0x1c')]('telephone:%s',_0x3cabca[_0x5dfebe][_0x4f56ce]['name']));break;case 0x8:if(_0x2e612b[_0x5d18('0x6')]!==_0x5d18('0x7'))_0x1c2dc7[_0x152a33](util['format']('trunk:%s',_0x3cabca[_0x5dfebe][_0x4f56ce][_0x5d18('0x5')]));break;case 0x9:if(_0x2e612b['role']!==_0x5d18('0x7'))_0x1c2dc7[_0x152a33](util['format'](_0x5d18('0x48'),_0x3cabca[_0x5dfebe][_0x4f56ce]['type'],_0x3cabca[_0x5dfebe][_0x4f56ce][_0x5d18('0x5')]));break;case 0xa:_0x1c2dc7[_0x152a33](util[_0x5d18('0x1c')](_0x5d18('0x1f'),_0x3cabca[_0x5dfebe][_0x4f56ce][_0x5d18('0x5')]));break;}}}}})[_0x5d18('0xb')](function(){if(_0x152a33==='leave'){var _0x52800b=_[_0x5d18('0x18')](_0x2e612b['ChatInteractions'],'id');return _0x2e612b[_0x5d18('0x49')](_0x52800b)[_0x5d18('0xb')](function(){for(var _0x3bed07=0x0;_0x3bed07<_0x52800b['length'];_0x3bed07+=0x1){_0x2cc9a8[_0x5d18('0x4a')](_0x5d18('0x4b'),{'ChatInteractionId':Number(_0x52800b[_0x3bed07]),'UserId':Number(_0x2e612b['id'])});}});}})[_0x5d18('0xb')](function(){if(_0x152a33===_0x5d18('0x4c')){var _0x2aed32=_[_0x5d18('0x18')](_0x2e612b[_0x5d18('0x4d')],'id');return _0x2e612b[_0x5d18('0x4e')](_0x2aed32)['then'](function(){for(var _0x5b2fdd=0x0;_0x5b2fdd<_0x2aed32[_0x5d18('0x1e')];_0x5b2fdd+=0x1){_0x2cc9a8[_0x5d18('0x4a')](_0x5d18('0x4f'),{'MailInteractionId':Number(_0x2aed32[_0x5b2fdd]),'UserId':Number(_0x2e612b['id'])});}});}})[_0x5d18('0xb')](function(){if(_0x152a33===_0x5d18('0x4c')){var _0x3e9762=_[_0x5d18('0x18')](_0x2e612b['FaxInteractions'],'id');return _0x2e612b[_0x5d18('0x50')](_0x3e9762)['then'](function(){for(var _0x26401e=0x0;_0x26401e<_0x3e9762[_0x5d18('0x1e')];_0x26401e+=0x1){_0x2cc9a8[_0x5d18('0x4a')](_0x5d18('0x51'),{'FaxInteractionId':Number(_0x3e9762[_0x26401e]),'UserId':Number(_0x2e612b['id'])});}});}})[_0x5d18('0xb')](function(){if(_0x152a33==='leave'){var _0x45ad2e=_[_0x5d18('0x18')](_0x2e612b[_0x5d18('0x29')],'id');return _0x2e612b[_0x5d18('0x52')](_0x45ad2e)[_0x5d18('0xb')](function(){for(var _0x2a0f9=0x0;_0x2a0f9<_0x45ad2e[_0x5d18('0x1e')];_0x2a0f9+=0x1){_0x2cc9a8['emit'](_0x5d18('0x53'),{'SmsInteractionId':Number(_0x45ad2e[_0x2a0f9]),'UserId':Number(_0x2e612b['id'])});}});}})[_0x5d18('0xb')](function(){if(_0x152a33===_0x5d18('0x4c')){var _0x124729=_['map'](_0x2e612b[_0x5d18('0x2b')],'id');return _0x2e612b[_0x5d18('0x54')](_0x124729)['then'](function(){for(var _0x380edf=0x0;_0x380edf<_0x124729[_0x5d18('0x1e')];_0x380edf+=0x1){_0x2cc9a8[_0x5d18('0x4a')](_0x5d18('0x55'),{'OpenchannelInteractionId':Number(_0x124729[_0x380edf]),'UserId':Number(_0x2e612b['id'])});}});}})['then'](function(){if(_0x152a33===_0x5d18('0x4c')){var _0x191b71=_['map'](_0x2e612b[_0x5d18('0x2d')],'id');return _0x2e612b['removeWhatsappInteractions'](_0x191b71)[_0x5d18('0xb')](function(){for(var _0x355bf3=0x0;_0x355bf3<_0x191b71[_0x5d18('0x1e')];_0x355bf3+=0x1){_0x2cc9a8[_0x5d18('0x4a')](_0x5d18('0x56'),{'WhatsappInteractionId':Number(_0x191b71[_0x355bf3]),'UserId':Number(_0x2e612b['id'])});}});}})[_0x5d18('0x57')](function(_0x1f8324){_0x1c2dc7[_0x5d18('0x58')](_0x1f8324);});}}function onDisconnect(_0x56d508,_0x4cf2d0){joinOrLeave(_0x56d508,_0x5d18('0x4c'),_0x4cf2d0);}function onConnect(_0x8c025){joinOrLeave(_0x8c025,_0x5d18('0x59'));}exports[_0x5d18('0x5a')]=function(_0x2ce32d){_0x2ce32d['on'](_0x5d18('0x5b'),function(_0x39ae75){_0x39ae75['setMaxListeners'](0x0);_0x39ae75[_0x5d18('0x5c')]=_0x39ae75['request'][_0x5d18('0x5b')][_0x5d18('0x5d')]+':'+_0x39ae75['request'][_0x5d18('0x5b')][_0x5d18('0x5e')];_0x39ae75['connectedAt']=new Date();_0x39ae75['log']=function(_0x38c448){console[_0x5d18('0x58')](_0x5d18('0x5f')+_0x39ae75['nsp']['name']+'['+_0x39ae75['address']+']',_0x38c448);};_0x39ae75['on'](_0x5d18('0x60'),function(){onDisconnect(_0x39ae75,_0x2ce32d);_0x39ae75[_0x5d18('0x58')]('DISCONNECTED');});onConnect(_0x39ae75);_0x39ae75[_0x5d18('0x58')](_0x5d18('0x61'));});};