Built motion from commit 9e1399f3.|2.5.37
[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 _0x794b=['push','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','user','OpenchannelQueue','Trunk','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','fax','sms','mail','telephone:%s','campaign:%s:%s','ChatInteractions','removeChatInteractions','emit','leave','removeMailInteractions','FaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','join','setMaxListeners','address','request','connection','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','../mysqldb','./environment','User','name','telephone','agent','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','UserProfileResource','resourceId','map','where','role','Campaign','type','format','Agents','length','user:%s','handshake','query','userProfileId','ChatInteraction','MailInteraction','MailInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','VoiceQueue','ChatQueue'];(function(_0x18bd2a,_0x3f93f0){var _0x546f18=function(_0xfab88f){while(--_0xfab88f){_0x18bd2a['push'](_0x18bd2a['shift']());}};_0x546f18(++_0x3f93f0);}(_0x794b,0x1c2));var _0xb794=function(_0x43190d,_0x375400){_0x43190d=_0x43190d-0x0;var _0x109c98=_0x794b[_0x43190d];return _0x109c98;};'use strict';var _=require(_0xb794('0x0'));var util=require(_0xb794('0x1'));var BPromise=require('bluebird');var db=require(_0xb794('0x2'))['db'];var config=require(_0xb794('0x3'));var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0xb794('0x4')],'attributes':['id',_0xb794('0x5'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xb794('0x5')],'where':{'role':_0xb794('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0xb794('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0xb794('0x5')],'where':{'role':_0xb794('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb794('0x5'),'type'],'where':{'type':_0xb794('0x8')}};function getAssociatedResources(_0xa67b25,_0x6c1ec7,_0xc3dde7){return db[_0xb794('0x9')][_0xb794('0xa')]({'where':{'name':_0xa67b25,'userProfileId':_0x6c1ec7},'raw':!![]})[_0xb794('0xb')](function(_0x1f224a){if(_0x1f224a){if(_0x1f224a[_0xb794('0xc')]){switch(_0xa67b25){case _0xb794('0xd'):case _0xb794('0xe'):case _0xb794('0xf'):case _0xb794('0x10'):case _0xb794('0x11'):case _0xb794('0x12'):case _0xb794('0x13'):return db[_0xc3dde7][_0xb794('0x14')](queryQueues);case _0xb794('0x15'):return db[_0xc3dde7][_0xb794('0x14')](queryTelephones);case _0xb794('0x16'):return db[_0xc3dde7][_0xb794('0x14')](queryTrunks);case'IvrCampaigns':return db[_0xc3dde7][_0xb794('0x14')](queryCampaigns);}}else{return db[_0xb794('0x17')][_0xb794('0x14')]({'attributes':[_0xb794('0x18')],'where':{'sectionId':_0x1f224a['id']},'raw':!![]})[_0xb794('0xb')](function(_0x469618){if(_0x469618){var _0x558bc1={'where':{'id':_[_0xb794('0x19')](_0x469618,_0xb794('0x18'))},'raw':!![]};switch(_0xc3dde7){case'User':_0x558bc1[_0xb794('0x1a')][_0xb794('0x1b')]='telephone';break;case _0xb794('0x1c'):_0x558bc1[_0xb794('0x1a')][_0xb794('0x1d')]='ivr';break;}return db[_0xc3dde7][_0xb794('0x14')](_0x558bc1);}else{return[];}});}}else{return[];}})[_0xb794('0xb')](function(_0x5494e7){return _0x5494e7;});}function joinOrLeaveQueues(_0x10d905,_0x22d126,_0x3d9fc4,_0x324903){_0x10d905[_0x22d126](util[_0xb794('0x1e')]('%s:queue:%s',_0x3d9fc4,_0x324903[_0xb794('0x5')]));if(_0x324903[_0xb794('0x1f')]){for(var _0x4c2156=0x0;_0x4c2156<_0x324903[_0xb794('0x1f')][_0xb794('0x20')];_0x4c2156+=0x1){_0x10d905[_0x22d126](util[_0xb794('0x1e')](_0xb794('0x21'),_0x324903[_0xb794('0x1f')][_0x4c2156][_0xb794('0x5')]));}}}function joinOrLeave(_0x375b41,_0x45ddac,_0x425a47){var _0x43e077;if(_0x375b41[_0xb794('0x22')][_0xb794('0x23')]['id']){db[_0xb794('0x4')]['find']({'attributes':['id',_0xb794('0x5'),_0xb794('0x1b'),_0xb794('0x24')],'where':{'id':_0x375b41['handshake']['query']['id']},'include':[{'model':db[_0xb794('0x25')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb794('0x26')],'as':_0xb794('0x27'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb794('0x28')],'as':_0xb794('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0xb794('0x2a')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xb794('0x2b'),'attributes':['id'],'raw':!![]}]})[_0xb794('0xb')](function(_0x45d4d0){if(_0x45d4d0){_0x43e077=_0x45d4d0;_0x375b41[_0x45ddac](util[_0xb794('0x1e')](_0xb794('0x21'),_0x45d4d0[_0xb794('0x5')]));var _0x479476=[];switch(_0x45d4d0['role']){case'admin':_0x375b41[_0x45ddac](_0xb794('0x2c'));_0x375b41[_0x45ddac](_0xb794('0x2d'));if(queryQueues[_0xb794('0x2e')]('include')){delete queryQueues[_0xb794('0x2f')];}_0x479476['push'](db[_0xb794('0x30')][_0xb794('0x14')](queryQueues));_0x479476['push'](db[_0xb794('0x31')]['findAll'](queryQueues));_0x479476[_0xb794('0x32')](db[_0xb794('0x33')]['findAll'](queryQueues));_0x479476[_0xb794('0x32')](db[_0xb794('0x34')][_0xb794('0x14')](queryQueues));_0x479476[_0xb794('0x32')](db[_0xb794('0x35')][_0xb794('0x14')](queryQueues));_0x479476[_0xb794('0x32')](db['OpenchannelQueue'][_0xb794('0x14')](queryQueues));_0x479476['push'](db[_0xb794('0x36')]['findAll'](queryQueues));_0x479476[_0xb794('0x32')](db[_0xb794('0x4')][_0xb794('0x14')](queryTelephones));_0x479476['push'](db['Trunk'][_0xb794('0x14')](queryTrunks));_0x479476[_0xb794('0x32')](db[_0xb794('0x1c')]['findAll'](queryCampaigns));_0x479476[_0xb794('0x32')](db[_0xb794('0x4')][_0xb794('0x14')](queryAgents));break;case _0xb794('0x37'):_0x375b41[_0x45ddac](_0xb794('0x2c'));_0x375b41[_0x45ddac]('voice:outbound');_0x479476[_0xb794('0x32')](getAssociatedResources(_0xb794('0xd'),_0x45d4d0[_0xb794('0x24')],_0xb794('0x30')));_0x479476['push'](getAssociatedResources(_0xb794('0xe'),_0x45d4d0[_0xb794('0x24')],_0xb794('0x31')));_0x479476['push'](getAssociatedResources('FaxQueues',_0x45d4d0[_0xb794('0x24')],_0xb794('0x33')));_0x479476['push'](getAssociatedResources(_0xb794('0x10'),_0x45d4d0[_0xb794('0x24')],_0xb794('0x34')));_0x479476['push'](getAssociatedResources(_0xb794('0x11'),_0x45d4d0[_0xb794('0x24')],_0xb794('0x35')));_0x479476[_0xb794('0x32')](getAssociatedResources(_0xb794('0x12'),_0x45d4d0[_0xb794('0x24')],_0xb794('0x38')));_0x479476[_0xb794('0x32')](getAssociatedResources(_0xb794('0x13'),_0x45d4d0['userProfileId'],'WhatsappQueue'));_0x479476[_0xb794('0x32')](getAssociatedResources('Telephones',_0x45d4d0[_0xb794('0x24')],_0xb794('0x4')));_0x479476[_0xb794('0x32')](getAssociatedResources(_0xb794('0x16'),_0x45d4d0['userProfileId'],_0xb794('0x39')));_0x479476['push'](getAssociatedResources(_0xb794('0x3a'),_0x45d4d0[_0xb794('0x24')],_0xb794('0x1c')));_0x479476[_0xb794('0x32')](db[_0xb794('0x4')]['findAll'](queryAgents));break;case _0xb794('0x7'):_0x375b41[_0x45ddac](_0xb794('0x2c'));_0x375b41[_0x45ddac](_0xb794('0x2d'));_0x479476[_0xb794('0x32')](_0x45d4d0[_0xb794('0x3b')]({'attributes':['id',_0xb794('0x5')]}));_0x479476[_0xb794('0x32')](_0x45d4d0[_0xb794('0x3c')]({'attributes':['id',_0xb794('0x5')]}));_0x479476[_0xb794('0x32')](_0x45d4d0[_0xb794('0x3d')]({'attributes':['id',_0xb794('0x5')]}));_0x479476['push'](_0x45d4d0['getSmsQueues']({'attributes':['id','name']}));_0x479476['push'](_0x45d4d0[_0xb794('0x3e')]({'attributes':['id','name']}));_0x479476[_0xb794('0x32')](_0x45d4d0[_0xb794('0x3f')]({'attributes':['id',_0xb794('0x5')]}));_0x479476[_0xb794('0x32')](_0x45d4d0['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0xb794('0x40')](_0x479476);}})['then'](function(_0x5e1a47){if(_0x5e1a47&&_0x5e1a47['length']){for(var _0x4c99a9=0x0;_0x4c99a9<_0x5e1a47[_0xb794('0x20')];_0x4c99a9+=0x1){for(var _0x4253c0=0x0;_0x4253c0<_0x5e1a47[_0x4c99a9][_0xb794('0x20')];_0x4253c0+=0x1){switch(_0x4c99a9){case 0x0:joinOrLeaveQueues(_0x375b41,_0x45ddac,_0xb794('0x41'),_0x5e1a47[_0x4c99a9][_0x4253c0]);break;case 0x1:joinOrLeaveQueues(_0x375b41,_0x45ddac,_0xb794('0x42'),_0x5e1a47[_0x4c99a9][_0x4253c0]);break;case 0x2:joinOrLeaveQueues(_0x375b41,_0x45ddac,_0xb794('0x43'),_0x5e1a47[_0x4c99a9][_0x4253c0]);break;case 0x3:joinOrLeaveQueues(_0x375b41,_0x45ddac,_0xb794('0x44'),_0x5e1a47[_0x4c99a9][_0x4253c0]);break;case 0x4:joinOrLeaveQueues(_0x375b41,_0x45ddac,_0xb794('0x45'),_0x5e1a47[_0x4c99a9][_0x4253c0]);break;case 0x5:joinOrLeaveQueues(_0x375b41,_0x45ddac,'openchannel',_0x5e1a47[_0x4c99a9][_0x4253c0]);break;case 0x6:joinOrLeaveQueues(_0x375b41,_0x45ddac,'whatsapp',_0x5e1a47[_0x4c99a9][_0x4253c0]);break;case 0x7:if(_0x43e077[_0xb794('0x1b')]!=='agent')_0x375b41[_0x45ddac](util[_0xb794('0x1e')](_0xb794('0x46'),_0x5e1a47[_0x4c99a9][_0x4253c0][_0xb794('0x5')]));break;case 0x8:if(_0x43e077[_0xb794('0x1b')]!=='agent')_0x375b41[_0x45ddac](util[_0xb794('0x1e')]('trunk:%s',_0x5e1a47[_0x4c99a9][_0x4253c0]['name']));break;case 0x9:if(_0x43e077[_0xb794('0x1b')]!=='agent')_0x375b41[_0x45ddac](util['format'](_0xb794('0x47'),_0x5e1a47[_0x4c99a9][_0x4253c0][_0xb794('0x1d')],_0x5e1a47[_0x4c99a9][_0x4253c0][_0xb794('0x5')]));break;case 0xa:_0x375b41[_0x45ddac](util['format']('user:%s',_0x5e1a47[_0x4c99a9][_0x4253c0]['name']));break;}}}}})[_0xb794('0xb')](function(){if(_0x45ddac==='leave'){var _0x32015b=_[_0xb794('0x19')](_0x43e077[_0xb794('0x48')],'id');return _0x43e077[_0xb794('0x49')](_0x32015b)[_0xb794('0xb')](function(){for(var _0x2c835c=0x0;_0x2c835c<_0x32015b[_0xb794('0x20')];_0x2c835c+=0x1){_0x425a47[_0xb794('0x4a')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x32015b[_0x2c835c]),'UserId':Number(_0x43e077['id'])});}});}})[_0xb794('0xb')](function(){if(_0x45ddac===_0xb794('0x4b')){var _0x4a5d23=_[_0xb794('0x19')](_0x43e077['MailInteractions'],'id');return _0x43e077[_0xb794('0x4c')](_0x4a5d23)['then'](function(){for(var _0x267691=0x0;_0x267691<_0x4a5d23[_0xb794('0x20')];_0x267691+=0x1){_0x425a47[_0xb794('0x4a')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4a5d23[_0x267691]),'UserId':Number(_0x43e077['id'])});}});}})['then'](function(){if(_0x45ddac==='leave'){var _0x201f6b=_[_0xb794('0x19')](_0x43e077[_0xb794('0x4d')],'id');return _0x43e077['removeFaxInteractions'](_0x201f6b)[_0xb794('0xb')](function(){for(var _0x1e6ceb=0x0;_0x1e6ceb<_0x201f6b['length'];_0x1e6ceb+=0x1){_0x425a47[_0xb794('0x4a')](_0xb794('0x4e'),{'FaxInteractionId':Number(_0x201f6b[_0x1e6ceb]),'UserId':Number(_0x43e077['id'])});}});}})[_0xb794('0xb')](function(){if(_0x45ddac===_0xb794('0x4b')){var _0xb8b60a=_[_0xb794('0x19')](_0x43e077[_0xb794('0x29')],'id');return _0x43e077[_0xb794('0x4f')](_0xb8b60a)['then'](function(){for(var _0x24e9ef=0x0;_0x24e9ef<_0xb8b60a[_0xb794('0x20')];_0x24e9ef+=0x1){_0x425a47['emit'](_0xb794('0x50'),{'SmsInteractionId':Number(_0xb8b60a[_0x24e9ef]),'UserId':Number(_0x43e077['id'])});}});}})[_0xb794('0xb')](function(){if(_0x45ddac===_0xb794('0x4b')){var _0x57dd13=_[_0xb794('0x19')](_0x43e077[_0xb794('0x51')],'id');return _0x43e077[_0xb794('0x52')](_0x57dd13)[_0xb794('0xb')](function(){for(var _0x20a47a=0x0;_0x20a47a<_0x57dd13[_0xb794('0x20')];_0x20a47a+=0x1){_0x425a47[_0xb794('0x4a')](_0xb794('0x53'),{'OpenchannelInteractionId':Number(_0x57dd13[_0x20a47a]),'UserId':Number(_0x43e077['id'])});}});}})[_0xb794('0xb')](function(){if(_0x45ddac===_0xb794('0x4b')){var _0xf80aad=_['map'](_0x43e077[_0xb794('0x2b')],'id');return _0x43e077[_0xb794('0x54')](_0xf80aad)[_0xb794('0xb')](function(){for(var _0x389c0=0x0;_0x389c0<_0xf80aad[_0xb794('0x20')];_0x389c0+=0x1){_0x425a47[_0xb794('0x4a')](_0xb794('0x55'),{'WhatsappInteractionId':Number(_0xf80aad[_0x389c0]),'UserId':Number(_0x43e077['id'])});}});}})[_0xb794('0x56')](function(_0x171fa7){_0x375b41['log'](_0x171fa7);});}}function onDisconnect(_0xdf067d,_0xf2353){joinOrLeave(_0xdf067d,_0xb794('0x4b'),_0xf2353);}function onConnect(_0x439e86){joinOrLeave(_0x439e86,_0xb794('0x57'));}exports['default']=function(_0x2b4839){_0x2b4839['on']('connection',function(_0x1953ab){_0x1953ab[_0xb794('0x58')](0x0);_0x1953ab[_0xb794('0x59')]=_0x1953ab[_0xb794('0x5a')][_0xb794('0x5b')][_0xb794('0x5c')]+':'+_0x1953ab[_0xb794('0x5a')][_0xb794('0x5b')][_0xb794('0x5d')];_0x1953ab[_0xb794('0x5e')]=new Date();_0x1953ab[_0xb794('0x5f')]=function(_0x49e08d){console['log'](_0xb794('0x60')+_0x1953ab[_0xb794('0x61')][_0xb794('0x5')]+'['+_0x1953ab[_0xb794('0x59')]+']',_0x49e08d);};_0x1953ab['on'](_0xb794('0x62'),function(){onDisconnect(_0x1953ab,_0x2b4839);_0x1953ab['log']('DISCONNECTED');});onConnect(_0x1953ab);_0x1953ab['log'](_0xb794('0x63'));});};