Built motion from commit ffdca78c.|2.6.24
[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 _0xb875=['push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueues','SmsQueues','SmsQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','DISCONNECTED','CONNECTED','lodash','./environment','Agents','User','role','agent','name','telephone','type','ivr','UserProfileSection','findOne','then','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','format','length','user:%s','handshake','query','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','include'];(function(_0x31d663,_0xf9e9b7){var _0x1a2d73=function(_0x5d3544){while(--_0x5d3544){_0x31d663['push'](_0x31d663['shift']());}};_0x1a2d73(++_0xf9e9b7);}(_0xb875,0x167));var _0x5b87=function(_0x193054,_0x117bec){_0x193054=_0x193054-0x0;var _0x333b76=_0xb875[_0x193054];return _0x333b76;};'use strict';var _=require(_0x5b87('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var config=require(_0x5b87('0x1'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x5b87('0x2'),'model':db[_0x5b87('0x3')],'attributes':['id','name',_0x5b87('0x4')],'raw':!![],'where':{'role':_0x5b87('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x5b87('0x6')],'where':{'role':_0x5b87('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x5b87('0x6')]};var queryAgents={'raw':!![],'attributes':['id',_0x5b87('0x6')],'where':{'role':_0x5b87('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x5b87('0x6'),_0x5b87('0x8')],'where':{'type':_0x5b87('0x9')}};function getAssociatedResources(_0x493bb2,_0x20fc30,_0x537f81){return db[_0x5b87('0xa')][_0x5b87('0xb')]({'where':{'name':_0x493bb2,'userProfileId':_0x20fc30},'raw':!![]})[_0x5b87('0xc')](function(_0x22af59){if(_0x22af59){if(_0x22af59['autoAssociation']){switch(_0x493bb2){case'VoiceQueues':case _0x5b87('0xd'):case _0x5b87('0xe'):case'SmsQueues':case _0x5b87('0xf'):case _0x5b87('0x10'):case _0x5b87('0x11'):return db[_0x537f81][_0x5b87('0x12')](queryQueues);case _0x5b87('0x13'):return db[_0x537f81][_0x5b87('0x12')](queryTelephones);case _0x5b87('0x14'):return db[_0x537f81][_0x5b87('0x12')](queryTrunks);case _0x5b87('0x15'):return db[_0x537f81]['findAll'](queryCampaigns);}}else{return db[_0x5b87('0x16')]['findAll']({'attributes':[_0x5b87('0x17')],'where':{'sectionId':_0x22af59['id']},'raw':!![]})[_0x5b87('0xc')](function(_0x51ff4c){if(_0x51ff4c){var _0x59bf2b={'where':{'id':_[_0x5b87('0x18')](_0x51ff4c,'resourceId')},'raw':!![]};switch(_0x537f81){case _0x5b87('0x3'):_0x59bf2b[_0x5b87('0x19')][_0x5b87('0x4')]=_0x5b87('0x7');break;case _0x5b87('0x1a'):_0x59bf2b[_0x5b87('0x19')][_0x5b87('0x8')]='ivr';break;}return db[_0x537f81]['findAll'](_0x59bf2b);}else{return[];}});}}else{return[];}})['then'](function(_0x5ebe9f){return _0x5ebe9f;});}function joinOrLeaveQueues(_0x1b0f5a,_0x3b466c,_0x382157,_0x1b46cc){_0x1b0f5a[_0x3b466c](util[_0x5b87('0x1b')]('%s:queue:%s',_0x382157,_0x1b46cc[_0x5b87('0x6')]));if(_0x1b46cc['Agents']){for(var _0x5ac69f=0x0;_0x5ac69f<_0x1b46cc[_0x5b87('0x2')][_0x5b87('0x1c')];_0x5ac69f+=0x1){_0x1b0f5a[_0x3b466c](util['format'](_0x5b87('0x1d'),_0x1b46cc[_0x5b87('0x2')][_0x5ac69f][_0x5b87('0x6')]));}}}function joinOrLeave(_0x28a2a3,_0x360010,_0x2cb48e){var _0x1afe46;if(_0x28a2a3[_0x5b87('0x1e')][_0x5b87('0x1f')]['id']){db[_0x5b87('0x3')]['find']({'attributes':['id',_0x5b87('0x6'),_0x5b87('0x4'),_0x5b87('0x20')],'where':{'id':_0x28a2a3[_0x5b87('0x1e')][_0x5b87('0x1f')]['id']},'include':[{'model':db[_0x5b87('0x21')],'as':_0x5b87('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x5b87('0x23')],'as':_0x5b87('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x5b87('0x25')],'as':_0x5b87('0x26'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5b87('0x27')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5b87('0x28')],'as':_0x5b87('0x29'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x49f639){if(_0x49f639){_0x1afe46=_0x49f639;_0x28a2a3[_0x360010](util[_0x5b87('0x1b')](_0x5b87('0x1d'),_0x49f639[_0x5b87('0x6')]));var _0x2a2143=[];switch(_0x49f639[_0x5b87('0x4')]){case'admin':_0x28a2a3[_0x360010](_0x5b87('0x2a'));_0x28a2a3[_0x360010](_0x5b87('0x2b'));if(queryQueues['hasOwnProperty'](_0x5b87('0x2c'))){delete queryQueues['include'];}_0x2a2143[_0x5b87('0x2d')](db[_0x5b87('0x2e')][_0x5b87('0x12')](queryQueues));_0x2a2143['push'](db[_0x5b87('0x2f')][_0x5b87('0x12')](queryQueues));_0x2a2143[_0x5b87('0x2d')](db[_0x5b87('0x30')]['findAll'](queryQueues));_0x2a2143['push'](db['SmsQueue'][_0x5b87('0x12')](queryQueues));_0x2a2143['push'](db[_0x5b87('0x31')]['findAll'](queryQueues));_0x2a2143[_0x5b87('0x2d')](db[_0x5b87('0x32')]['findAll'](queryQueues));_0x2a2143[_0x5b87('0x2d')](db[_0x5b87('0x33')][_0x5b87('0x12')](queryQueues));_0x2a2143[_0x5b87('0x2d')](db['User'][_0x5b87('0x12')](queryTelephones));_0x2a2143[_0x5b87('0x2d')](db[_0x5b87('0x34')][_0x5b87('0x12')](queryTrunks));_0x2a2143[_0x5b87('0x2d')](db[_0x5b87('0x1a')][_0x5b87('0x12')](queryCampaigns));_0x2a2143[_0x5b87('0x2d')](db[_0x5b87('0x3')][_0x5b87('0x12')](queryAgents));break;case _0x5b87('0x35'):_0x28a2a3[_0x360010]('voice:inbound');_0x28a2a3[_0x360010](_0x5b87('0x2b'));_0x2a2143['push'](getAssociatedResources(_0x5b87('0x36'),_0x49f639[_0x5b87('0x20')],_0x5b87('0x2e')));_0x2a2143[_0x5b87('0x2d')](getAssociatedResources(_0x5b87('0xd'),_0x49f639[_0x5b87('0x20')],_0x5b87('0x2f')));_0x2a2143[_0x5b87('0x2d')](getAssociatedResources(_0x5b87('0xe'),_0x49f639[_0x5b87('0x20')],'FaxQueue'));_0x2a2143[_0x5b87('0x2d')](getAssociatedResources(_0x5b87('0x37'),_0x49f639['userProfileId'],_0x5b87('0x38')));_0x2a2143[_0x5b87('0x2d')](getAssociatedResources(_0x5b87('0xf'),_0x49f639[_0x5b87('0x20')],_0x5b87('0x31')));_0x2a2143['push'](getAssociatedResources(_0x5b87('0x10'),_0x49f639[_0x5b87('0x20')],_0x5b87('0x32')));_0x2a2143['push'](getAssociatedResources(_0x5b87('0x11'),_0x49f639[_0x5b87('0x20')],'WhatsappQueue'));_0x2a2143[_0x5b87('0x2d')](getAssociatedResources(_0x5b87('0x13'),_0x49f639[_0x5b87('0x20')],_0x5b87('0x3')));_0x2a2143['push'](getAssociatedResources(_0x5b87('0x14'),_0x49f639[_0x5b87('0x20')],_0x5b87('0x34')));_0x2a2143[_0x5b87('0x2d')](getAssociatedResources(_0x5b87('0x15'),_0x49f639['userProfileId'],_0x5b87('0x1a')));_0x2a2143[_0x5b87('0x2d')](db[_0x5b87('0x3')][_0x5b87('0x12')](queryAgents));break;case _0x5b87('0x5'):_0x28a2a3[_0x360010](_0x5b87('0x2a'));_0x28a2a3[_0x360010]('voice:outbound');_0x2a2143[_0x5b87('0x2d')](_0x49f639[_0x5b87('0x39')]({'attributes':['id','name']}));_0x2a2143[_0x5b87('0x2d')](_0x49f639[_0x5b87('0x3a')]({'attributes':['id',_0x5b87('0x6')]}));_0x2a2143['push'](_0x49f639[_0x5b87('0x3b')]({'attributes':['id',_0x5b87('0x6')]}));_0x2a2143[_0x5b87('0x2d')](_0x49f639[_0x5b87('0x3c')]({'attributes':['id',_0x5b87('0x6')]}));_0x2a2143['push'](_0x49f639[_0x5b87('0x3d')]({'attributes':['id',_0x5b87('0x6')]}));_0x2a2143[_0x5b87('0x2d')](_0x49f639[_0x5b87('0x3e')]({'attributes':['id',_0x5b87('0x6')]}));_0x2a2143['push'](_0x49f639[_0x5b87('0x3f')]({'attributes':['id',_0x5b87('0x6')]}));break;}return BPromise[_0x5b87('0x40')](_0x2a2143);}})[_0x5b87('0xc')](function(_0x4bda90){if(_0x4bda90&&_0x4bda90[_0x5b87('0x1c')]){for(var _0x394085=0x0;_0x394085<_0x4bda90[_0x5b87('0x1c')];_0x394085+=0x1){for(var _0x4bf627=0x0;_0x4bf627<_0x4bda90[_0x394085]['length'];_0x4bf627+=0x1){switch(_0x394085){case 0x0:joinOrLeaveQueues(_0x28a2a3,_0x360010,_0x5b87('0x41'),_0x4bda90[_0x394085][_0x4bf627]);break;case 0x1:joinOrLeaveQueues(_0x28a2a3,_0x360010,_0x5b87('0x42'),_0x4bda90[_0x394085][_0x4bf627]);break;case 0x2:joinOrLeaveQueues(_0x28a2a3,_0x360010,_0x5b87('0x43'),_0x4bda90[_0x394085][_0x4bf627]);break;case 0x3:joinOrLeaveQueues(_0x28a2a3,_0x360010,'sms',_0x4bda90[_0x394085][_0x4bf627]);break;case 0x4:joinOrLeaveQueues(_0x28a2a3,_0x360010,_0x5b87('0x44'),_0x4bda90[_0x394085][_0x4bf627]);break;case 0x5:joinOrLeaveQueues(_0x28a2a3,_0x360010,_0x5b87('0x45'),_0x4bda90[_0x394085][_0x4bf627]);break;case 0x6:joinOrLeaveQueues(_0x28a2a3,_0x360010,_0x5b87('0x46'),_0x4bda90[_0x394085][_0x4bf627]);break;case 0x7:if(_0x1afe46[_0x5b87('0x4')]!==_0x5b87('0x5'))_0x28a2a3[_0x360010](util[_0x5b87('0x1b')](_0x5b87('0x47'),_0x4bda90[_0x394085][_0x4bf627][_0x5b87('0x6')]));break;case 0x8:if(_0x1afe46[_0x5b87('0x4')]!==_0x5b87('0x5'))_0x28a2a3[_0x360010](util[_0x5b87('0x1b')](_0x5b87('0x48'),_0x4bda90[_0x394085][_0x4bf627]['name']));break;case 0x9:if(_0x1afe46['role']!=='agent')_0x28a2a3[_0x360010](util[_0x5b87('0x1b')](_0x5b87('0x49'),_0x4bda90[_0x394085][_0x4bf627]['type'],_0x4bda90[_0x394085][_0x4bf627]['name']));break;case 0xa:_0x28a2a3[_0x360010](util[_0x5b87('0x1b')](_0x5b87('0x1d'),_0x4bda90[_0x394085][_0x4bf627]['name']));break;}}}}})[_0x5b87('0xc')](function(){if(_0x360010===_0x5b87('0x4a')){var _0xf35b47=_[_0x5b87('0x18')](_0x1afe46[_0x5b87('0x22')],'id');return _0x1afe46[_0x5b87('0x4b')](_0xf35b47)['then'](function(){for(var _0x5cf88b=0x0;_0x5cf88b<_0xf35b47[_0x5b87('0x1c')];_0x5cf88b+=0x1){_0x2cb48e['emit'](_0x5b87('0x4c'),{'ChatInteractionId':Number(_0xf35b47[_0x5cf88b]),'UserId':Number(_0x1afe46['id'])});}});}})[_0x5b87('0xc')](function(){if(_0x360010===_0x5b87('0x4a')){var _0x3420d8=_[_0x5b87('0x18')](_0x1afe46[_0x5b87('0x24')],'id');return _0x1afe46[_0x5b87('0x4d')](_0x3420d8)['then'](function(){for(var _0x446201=0x0;_0x446201<_0x3420d8[_0x5b87('0x1c')];_0x446201+=0x1){_0x2cb48e['emit'](_0x5b87('0x4e'),{'MailInteractionId':Number(_0x3420d8[_0x446201]),'UserId':Number(_0x1afe46['id'])});}});}})[_0x5b87('0xc')](function(){if(_0x360010===_0x5b87('0x4a')){var _0x50fb19=_[_0x5b87('0x18')](_0x1afe46[_0x5b87('0x26')],'id');return _0x1afe46[_0x5b87('0x4f')](_0x50fb19)[_0x5b87('0xc')](function(){for(var _0x360362=0x0;_0x360362<_0x50fb19[_0x5b87('0x1c')];_0x360362+=0x1){_0x2cb48e['emit'](_0x5b87('0x50'),{'FaxInteractionId':Number(_0x50fb19[_0x360362]),'UserId':Number(_0x1afe46['id'])});}});}})['then'](function(){if(_0x360010===_0x5b87('0x4a')){var _0x17b178=_['map'](_0x1afe46[_0x5b87('0x51')],'id');return _0x1afe46[_0x5b87('0x52')](_0x17b178)[_0x5b87('0xc')](function(){for(var _0x5b8ddd=0x0;_0x5b8ddd<_0x17b178[_0x5b87('0x1c')];_0x5b8ddd+=0x1){_0x2cb48e['emit'](_0x5b87('0x53'),{'SmsInteractionId':Number(_0x17b178[_0x5b8ddd]),'UserId':Number(_0x1afe46['id'])});}});}})[_0x5b87('0xc')](function(){if(_0x360010===_0x5b87('0x4a')){var _0x3e117e=_[_0x5b87('0x18')](_0x1afe46['OpenchannelInteractions'],'id');return _0x1afe46[_0x5b87('0x54')](_0x3e117e)[_0x5b87('0xc')](function(){for(var _0x3c9f19=0x0;_0x3c9f19<_0x3e117e[_0x5b87('0x1c')];_0x3c9f19+=0x1){_0x2cb48e['emit'](_0x5b87('0x55'),{'OpenchannelInteractionId':Number(_0x3e117e[_0x3c9f19]),'UserId':Number(_0x1afe46['id'])});}});}})[_0x5b87('0xc')](function(){if(_0x360010===_0x5b87('0x4a')){var _0x3f9f10=_[_0x5b87('0x18')](_0x1afe46[_0x5b87('0x29')],'id');return _0x1afe46[_0x5b87('0x56')](_0x3f9f10)[_0x5b87('0xc')](function(){for(var _0x34c661=0x0;_0x34c661<_0x3f9f10[_0x5b87('0x1c')];_0x34c661+=0x1){_0x2cb48e['emit'](_0x5b87('0x57'),{'WhatsappInteractionId':Number(_0x3f9f10[_0x34c661]),'UserId':Number(_0x1afe46['id'])});}});}})['catch'](function(_0x4c2228){_0x28a2a3[_0x5b87('0x58')](_0x4c2228);});}}function onDisconnect(_0x3603e9,_0x58c4b5){joinOrLeave(_0x3603e9,_0x5b87('0x4a'),_0x58c4b5);}function onConnect(_0x46a56f){joinOrLeave(_0x46a56f,_0x5b87('0x59'));}exports[_0x5b87('0x5a')]=function(_0x4e5626){_0x4e5626['on'](_0x5b87('0x5b'),function(_0x39ff09){_0x39ff09[_0x5b87('0x5c')](0x0);_0x39ff09[_0x5b87('0x5d')]=_0x39ff09[_0x5b87('0x5e')][_0x5b87('0x5b')][_0x5b87('0x5f')]+':'+_0x39ff09['request'][_0x5b87('0x5b')][_0x5b87('0x60')];_0x39ff09[_0x5b87('0x61')]=new Date();_0x39ff09[_0x5b87('0x58')]=function(_0x2bc102){console[_0x5b87('0x58')](_0x5b87('0x62')+_0x39ff09['nsp']['name']+'['+_0x39ff09[_0x5b87('0x5d')]+']',_0x2bc102);};_0x39ff09['on']('disconnect',function(){onDisconnect(_0x39ff09,_0x4e5626);_0x39ff09[_0x5b87('0x58')](_0x5b87('0x63'));});onConnect(_0x39ff09);_0x39ff09['log'](_0x5b87('0x64'));});};