Built motion from commit 10af8726.|2.6.34
[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 _0x7156=['remotePort','connectedAt','nsp','DISCONNECTED','CONNECTED','util','bluebird','./environment','name','Agents','User','agent','telephone','type','findOne','then','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','map','where','role','Campaign','ivr','format','user:%s','handshake','userProfileId','query','ChatInteraction','ChatInteractions','MailInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueues','VoiceQueue','ChatQueue','FaxQueues','FaxQueue','WhatsappQueues','getChatQueues','getFaxQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','emit','user_has_chat_interactions:remove','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','default','connection','setMaxListeners','address','request','remoteAddress'];(function(_0x568a61,_0x2124f8){var _0x334c3b=function(_0x1afc39){while(--_0x1afc39){_0x568a61['push'](_0x568a61['shift']());}};_0x334c3b(++_0x2124f8);}(_0x7156,0x122));var _0x6715=function(_0x133057,_0x31f8d8){_0x133057=_0x133057-0x0;var _0x34a35d=_0x7156[_0x133057];return _0x34a35d;};'use strict';var _=require('lodash');var util=require(_0x6715('0x0'));var BPromise=require(_0x6715('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x6715('0x2'));var queryQueues={'attributes':['id',_0x6715('0x3')],'include':[{'as':_0x6715('0x4'),'model':db[_0x6715('0x5')],'attributes':['id','name','role'],'raw':!![],'where':{'role':_0x6715('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x6715('0x3')],'where':{'role':_0x6715('0x7')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x6715('0x3')],'where':{'role':_0x6715('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x6715('0x3'),_0x6715('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x469816,_0x470a02,_0x1c418a){return db['UserProfileSection'][_0x6715('0x9')]({'where':{'name':_0x469816,'userProfileId':_0x470a02},'raw':!![]})[_0x6715('0xa')](function(_0x530261){if(_0x530261){if(_0x530261['autoAssociation']){switch(_0x469816){case'VoiceQueues':case _0x6715('0xb'):case'FaxQueues':case _0x6715('0xc'):case _0x6715('0xd'):case _0x6715('0xe'):case'WhatsappQueues':return db[_0x1c418a][_0x6715('0xf')](queryQueues);case _0x6715('0x10'):return db[_0x1c418a][_0x6715('0xf')](queryTelephones);case _0x6715('0x11'):return db[_0x1c418a][_0x6715('0xf')](queryTrunks);case _0x6715('0x12'):return db[_0x1c418a][_0x6715('0xf')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x530261['id']},'raw':!![]})[_0x6715('0xa')](function(_0x535cc5){if(_0x535cc5){var _0x57fc60={'where':{'id':_[_0x6715('0x13')](_0x535cc5,'resourceId')},'raw':!![]};switch(_0x1c418a){case _0x6715('0x5'):_0x57fc60[_0x6715('0x14')][_0x6715('0x15')]='telephone';break;case _0x6715('0x16'):_0x57fc60[_0x6715('0x14')]['type']=_0x6715('0x17');break;}return db[_0x1c418a][_0x6715('0xf')](_0x57fc60);}else{return[];}});}}else{return[];}})['then'](function(_0x142deb){return _0x142deb;});}function joinOrLeaveQueues(_0x30dbb7,_0x154de8,_0x41a717,_0x3b5241){_0x30dbb7[_0x154de8](util[_0x6715('0x18')]('%s:queue:%s',_0x41a717,_0x3b5241[_0x6715('0x3')]));if(_0x3b5241[_0x6715('0x4')]){for(var _0x3dd4cc=0x0;_0x3dd4cc<_0x3b5241[_0x6715('0x4')]['length'];_0x3dd4cc+=0x1){_0x30dbb7[_0x154de8](util[_0x6715('0x18')](_0x6715('0x19'),_0x3b5241[_0x6715('0x4')][_0x3dd4cc][_0x6715('0x3')]));}}}function joinOrLeave(_0x54f5d0,_0x3aced5,_0x7e6beb){var _0x50acc3;if(_0x54f5d0[_0x6715('0x1a')]['query']['id']){db[_0x6715('0x5')]['find']({'attributes':['id',_0x6715('0x3'),'role',_0x6715('0x1b')],'where':{'id':_0x54f5d0[_0x6715('0x1a')][_0x6715('0x1c')]['id']},'include':[{'model':db[_0x6715('0x1d')],'as':_0x6715('0x1e'),'attributes':['id'],'raw':!![]},{'model':db[_0x6715('0x1f')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x6715('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x6715('0x21')],'as':_0x6715('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x6715('0x23')],'as':_0x6715('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x6715('0x25')],'as':_0x6715('0x26'),'attributes':['id'],'raw':!![]}]})[_0x6715('0xa')](function(_0x35c21b){if(_0x35c21b){_0x50acc3=_0x35c21b;_0x54f5d0[_0x3aced5](util[_0x6715('0x18')](_0x6715('0x19'),_0x35c21b[_0x6715('0x3')]));var _0x2edc88=[];switch(_0x35c21b['role']){case _0x6715('0x27'):_0x54f5d0[_0x3aced5](_0x6715('0x28'));_0x54f5d0[_0x3aced5](_0x6715('0x29'));if(queryQueues[_0x6715('0x2a')](_0x6715('0x2b'))){delete queryQueues[_0x6715('0x2b')];}_0x2edc88[_0x6715('0x2c')](db['VoiceQueue'][_0x6715('0xf')](queryQueues));_0x2edc88[_0x6715('0x2c')](db['ChatQueue'][_0x6715('0xf')](queryQueues));_0x2edc88[_0x6715('0x2c')](db['FaxQueue'][_0x6715('0xf')](queryQueues));_0x2edc88[_0x6715('0x2c')](db['SmsQueue']['findAll'](queryQueues));_0x2edc88[_0x6715('0x2c')](db[_0x6715('0x2d')]['findAll'](queryQueues));_0x2edc88[_0x6715('0x2c')](db[_0x6715('0x2e')][_0x6715('0xf')](queryQueues));_0x2edc88[_0x6715('0x2c')](db[_0x6715('0x2f')][_0x6715('0xf')](queryQueues));_0x2edc88[_0x6715('0x2c')](db['User'][_0x6715('0xf')](queryTelephones));_0x2edc88[_0x6715('0x2c')](db[_0x6715('0x30')][_0x6715('0xf')](queryTrunks));_0x2edc88['push'](db[_0x6715('0x16')]['findAll'](queryCampaigns));_0x2edc88[_0x6715('0x2c')](db['User'][_0x6715('0xf')](queryAgents));break;case _0x6715('0x31'):_0x54f5d0[_0x3aced5](_0x6715('0x28'));_0x54f5d0[_0x3aced5](_0x6715('0x29'));_0x2edc88['push'](getAssociatedResources(_0x6715('0x32'),_0x35c21b[_0x6715('0x1b')],_0x6715('0x33')));_0x2edc88[_0x6715('0x2c')](getAssociatedResources('ChatQueues',_0x35c21b['userProfileId'],_0x6715('0x34')));_0x2edc88['push'](getAssociatedResources(_0x6715('0x35'),_0x35c21b['userProfileId'],_0x6715('0x36')));_0x2edc88[_0x6715('0x2c')](getAssociatedResources('SmsQueues',_0x35c21b[_0x6715('0x1b')],'SmsQueue'));_0x2edc88[_0x6715('0x2c')](getAssociatedResources(_0x6715('0xd'),_0x35c21b['userProfileId'],'MailQueue'));_0x2edc88[_0x6715('0x2c')](getAssociatedResources('OpenchannelQueues',_0x35c21b[_0x6715('0x1b')],_0x6715('0x2e')));_0x2edc88['push'](getAssociatedResources(_0x6715('0x37'),_0x35c21b[_0x6715('0x1b')],_0x6715('0x2f')));_0x2edc88[_0x6715('0x2c')](getAssociatedResources('Telephones',_0x35c21b[_0x6715('0x1b')],_0x6715('0x5')));_0x2edc88[_0x6715('0x2c')](getAssociatedResources(_0x6715('0x11'),_0x35c21b[_0x6715('0x1b')],_0x6715('0x30')));_0x2edc88[_0x6715('0x2c')](getAssociatedResources(_0x6715('0x12'),_0x35c21b[_0x6715('0x1b')],_0x6715('0x16')));_0x2edc88['push'](db['User'][_0x6715('0xf')](queryAgents));break;case _0x6715('0x6'):_0x54f5d0[_0x3aced5](_0x6715('0x28'));_0x54f5d0[_0x3aced5](_0x6715('0x29'));_0x2edc88[_0x6715('0x2c')](_0x35c21b['getVoiceQueues']({'attributes':['id',_0x6715('0x3')]}));_0x2edc88[_0x6715('0x2c')](_0x35c21b[_0x6715('0x38')]({'attributes':['id',_0x6715('0x3')]}));_0x2edc88[_0x6715('0x2c')](_0x35c21b[_0x6715('0x39')]({'attributes':['id',_0x6715('0x3')]}));_0x2edc88['push'](_0x35c21b['getSmsQueues']({'attributes':['id',_0x6715('0x3')]}));_0x2edc88[_0x6715('0x2c')](_0x35c21b['getMailQueues']({'attributes':['id',_0x6715('0x3')]}));_0x2edc88[_0x6715('0x2c')](_0x35c21b[_0x6715('0x3a')]({'attributes':['id',_0x6715('0x3')]}));_0x2edc88['push'](_0x35c21b[_0x6715('0x3b')]({'attributes':['id','name']}));break;}return BPromise[_0x6715('0x3c')](_0x2edc88);}})[_0x6715('0xa')](function(_0x371e43){if(_0x371e43&&_0x371e43[_0x6715('0x3d')]){for(var _0x9f8e19=0x0;_0x9f8e19<_0x371e43['length'];_0x9f8e19+=0x1){for(var _0x28a3a1=0x0;_0x28a3a1<_0x371e43[_0x9f8e19]['length'];_0x28a3a1+=0x1){switch(_0x9f8e19){case 0x0:joinOrLeaveQueues(_0x54f5d0,_0x3aced5,_0x6715('0x3e'),_0x371e43[_0x9f8e19][_0x28a3a1]);break;case 0x1:joinOrLeaveQueues(_0x54f5d0,_0x3aced5,_0x6715('0x3f'),_0x371e43[_0x9f8e19][_0x28a3a1]);break;case 0x2:joinOrLeaveQueues(_0x54f5d0,_0x3aced5,_0x6715('0x40'),_0x371e43[_0x9f8e19][_0x28a3a1]);break;case 0x3:joinOrLeaveQueues(_0x54f5d0,_0x3aced5,_0x6715('0x41'),_0x371e43[_0x9f8e19][_0x28a3a1]);break;case 0x4:joinOrLeaveQueues(_0x54f5d0,_0x3aced5,_0x6715('0x42'),_0x371e43[_0x9f8e19][_0x28a3a1]);break;case 0x5:joinOrLeaveQueues(_0x54f5d0,_0x3aced5,_0x6715('0x43'),_0x371e43[_0x9f8e19][_0x28a3a1]);break;case 0x6:joinOrLeaveQueues(_0x54f5d0,_0x3aced5,_0x6715('0x44'),_0x371e43[_0x9f8e19][_0x28a3a1]);break;case 0x7:if(_0x50acc3[_0x6715('0x15')]!==_0x6715('0x6'))_0x54f5d0[_0x3aced5](util['format'](_0x6715('0x45'),_0x371e43[_0x9f8e19][_0x28a3a1][_0x6715('0x3')]));break;case 0x8:if(_0x50acc3[_0x6715('0x15')]!==_0x6715('0x6'))_0x54f5d0[_0x3aced5](util[_0x6715('0x18')]('trunk:%s',_0x371e43[_0x9f8e19][_0x28a3a1]['name']));break;case 0x9:if(_0x50acc3[_0x6715('0x15')]!=='agent')_0x54f5d0[_0x3aced5](util['format'](_0x6715('0x46'),_0x371e43[_0x9f8e19][_0x28a3a1][_0x6715('0x8')],_0x371e43[_0x9f8e19][_0x28a3a1][_0x6715('0x3')]));break;case 0xa:_0x54f5d0[_0x3aced5](util[_0x6715('0x18')](_0x6715('0x19'),_0x371e43[_0x9f8e19][_0x28a3a1]['name']));break;}}}}})[_0x6715('0xa')](function(){if(_0x3aced5===_0x6715('0x47')){var _0x140da8=_['map'](_0x50acc3[_0x6715('0x1e')],'id');return _0x50acc3['removeChatInteractions'](_0x140da8)[_0x6715('0xa')](function(){for(var _0x2313de=0x0;_0x2313de<_0x140da8[_0x6715('0x3d')];_0x2313de+=0x1){_0x7e6beb[_0x6715('0x48')](_0x6715('0x49'),{'ChatInteractionId':Number(_0x140da8[_0x2313de]),'UserId':Number(_0x50acc3['id'])});}});}})['then'](function(){if(_0x3aced5==='leave'){var _0x114b41=_[_0x6715('0x13')](_0x50acc3['MailInteractions'],'id');return _0x50acc3[_0x6715('0x4a')](_0x114b41)[_0x6715('0xa')](function(){for(var _0x4868bd=0x0;_0x4868bd<_0x114b41[_0x6715('0x3d')];_0x4868bd+=0x1){_0x7e6beb['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x114b41[_0x4868bd]),'UserId':Number(_0x50acc3['id'])});}});}})[_0x6715('0xa')](function(){if(_0x3aced5===_0x6715('0x47')){var _0x4ca678=_[_0x6715('0x13')](_0x50acc3[_0x6715('0x20')],'id');return _0x50acc3[_0x6715('0x4b')](_0x4ca678)['then'](function(){for(var _0x2374d4=0x0;_0x2374d4<_0x4ca678['length'];_0x2374d4+=0x1){_0x7e6beb[_0x6715('0x48')](_0x6715('0x4c'),{'FaxInteractionId':Number(_0x4ca678[_0x2374d4]),'UserId':Number(_0x50acc3['id'])});}});}})['then'](function(){if(_0x3aced5===_0x6715('0x47')){var _0x27d9c9=_['map'](_0x50acc3['SmsInteractions'],'id');return _0x50acc3[_0x6715('0x4d')](_0x27d9c9)['then'](function(){for(var _0xe9baad=0x0;_0xe9baad<_0x27d9c9[_0x6715('0x3d')];_0xe9baad+=0x1){_0x7e6beb['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x27d9c9[_0xe9baad]),'UserId':Number(_0x50acc3['id'])});}});}})[_0x6715('0xa')](function(){if(_0x3aced5===_0x6715('0x47')){var _0x53dea0=_[_0x6715('0x13')](_0x50acc3[_0x6715('0x24')],'id');return _0x50acc3[_0x6715('0x4e')](_0x53dea0)[_0x6715('0xa')](function(){for(var _0x204500=0x0;_0x204500<_0x53dea0[_0x6715('0x3d')];_0x204500+=0x1){_0x7e6beb[_0x6715('0x48')](_0x6715('0x4f'),{'OpenchannelInteractionId':Number(_0x53dea0[_0x204500]),'UserId':Number(_0x50acc3['id'])});}});}})[_0x6715('0xa')](function(){if(_0x3aced5===_0x6715('0x47')){var _0x56a628=_['map'](_0x50acc3[_0x6715('0x26')],'id');return _0x50acc3[_0x6715('0x50')](_0x56a628)[_0x6715('0xa')](function(){for(var _0x63e186=0x0;_0x63e186<_0x56a628['length'];_0x63e186+=0x1){_0x7e6beb[_0x6715('0x48')](_0x6715('0x51'),{'WhatsappInteractionId':Number(_0x56a628[_0x63e186]),'UserId':Number(_0x50acc3['id'])});}});}})[_0x6715('0x52')](function(_0x24be16){_0x54f5d0[_0x6715('0x53')](_0x24be16);});}}function onDisconnect(_0x371672,_0x5c5f78){joinOrLeave(_0x371672,_0x6715('0x47'),_0x5c5f78);}function onConnect(_0x535d94){joinOrLeave(_0x535d94,'join');}exports[_0x6715('0x54')]=function(_0x227ec){_0x227ec['on'](_0x6715('0x55'),function(_0x5acd8b){_0x5acd8b[_0x6715('0x56')](0x0);_0x5acd8b[_0x6715('0x57')]=_0x5acd8b[_0x6715('0x58')][_0x6715('0x55')][_0x6715('0x59')]+':'+_0x5acd8b['request'][_0x6715('0x55')][_0x6715('0x5a')];_0x5acd8b[_0x6715('0x5b')]=new Date();_0x5acd8b[_0x6715('0x53')]=function(_0x2a6659){console[_0x6715('0x53')]('SocketIO\x20'+_0x5acd8b[_0x6715('0x5c')][_0x6715('0x3')]+'['+_0x5acd8b[_0x6715('0x57')]+']',_0x2a6659);};_0x5acd8b['on']('disconnect',function(){onDisconnect(_0x5acd8b,_0x227ec);_0x5acd8b[_0x6715('0x53')](_0x6715('0x5d'));});onConnect(_0x5acd8b);_0x5acd8b[_0x6715('0x53')](_0x6715('0x5e'));});};