Built motion from commit ddca4d0d.|2.5.47
[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 _0xd0e4=['user','voice:inbound','userProfileId','FaxQueues','FaxQueue','SmsQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','length','voice','chat','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','removeChatInteractions','emit','MailInteractions','removeMailInteractions','removeFaxInteractions','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','default','connection','address','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','Agents','User','name','role','agent','type','ivr','findOne','then','VoiceQueues','ChatQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','telephone','Campaign','format','%s:queue:%s','user:%s','handshake','query','find','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteractions','WhatsappInteraction','WhatsappInteractions','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk'];(function(_0x5b1fcb,_0x598ba3){var _0x58cf3f=function(_0x591ce2){while(--_0x591ce2){_0x5b1fcb['push'](_0x5b1fcb['shift']());}};_0x58cf3f(++_0x598ba3);}(_0xd0e4,0x1d3));var _0x4d0e=function(_0x3c330d,_0x4488d7){_0x3c330d=_0x3c330d-0x0;var _0x4be4eb=_0xd0e4[_0x3c330d];return _0x4be4eb;};'use strict';var _=require(_0x4d0e('0x0'));var util=require(_0x4d0e('0x1'));var BPromise=require(_0x4d0e('0x2'));var db=require(_0x4d0e('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0x4d0e('0x4'),'model':db[_0x4d0e('0x5')],'attributes':['id',_0x4d0e('0x6'),_0x4d0e('0x7')],'raw':!![],'where':{'role':_0x4d0e('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x4d0e('0x6')],'where':{'role':_0x4d0e('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x4d0e('0x9')],'where':{'type':_0x4d0e('0xa')}};function getAssociatedResources(_0x4e7630,_0x4d1029,_0x9358f5){return db['UserProfileSection'][_0x4d0e('0xb')]({'where':{'name':_0x4e7630,'userProfileId':_0x4d1029},'raw':!![]})[_0x4d0e('0xc')](function(_0x3f7674){if(_0x3f7674){if(_0x3f7674['autoAssociation']){switch(_0x4e7630){case _0x4d0e('0xd'):case _0x4d0e('0xe'):case'FaxQueues':case'SmsQueues':case _0x4d0e('0xf'):case _0x4d0e('0x10'):case _0x4d0e('0x11'):return db[_0x9358f5][_0x4d0e('0x12')](queryQueues);case _0x4d0e('0x13'):return db[_0x9358f5][_0x4d0e('0x12')](queryTelephones);case _0x4d0e('0x14'):return db[_0x9358f5][_0x4d0e('0x12')](queryTrunks);case _0x4d0e('0x15'):return db[_0x9358f5]['findAll'](queryCampaigns);}}else{return db[_0x4d0e('0x16')][_0x4d0e('0x12')]({'attributes':[_0x4d0e('0x17')],'where':{'sectionId':_0x3f7674['id']},'raw':!![]})['then'](function(_0x3d0a15){if(_0x3d0a15){var _0x4f077f={'where':{'id':_[_0x4d0e('0x18')](_0x3d0a15,_0x4d0e('0x17'))},'raw':!![]};switch(_0x9358f5){case _0x4d0e('0x5'):_0x4f077f[_0x4d0e('0x19')][_0x4d0e('0x7')]=_0x4d0e('0x1a');break;case _0x4d0e('0x1b'):_0x4f077f['where'][_0x4d0e('0x9')]=_0x4d0e('0xa');break;}return db[_0x9358f5][_0x4d0e('0x12')](_0x4f077f);}else{return[];}});}}else{return[];}})['then'](function(_0x41fc7a){return _0x41fc7a;});}function joinOrLeaveQueues(_0x2846d1,_0x298072,_0xa20ef0,_0x22e2bc){_0x2846d1[_0x298072](util[_0x4d0e('0x1c')](_0x4d0e('0x1d'),_0xa20ef0,_0x22e2bc[_0x4d0e('0x6')]));if(_0x22e2bc[_0x4d0e('0x4')]){for(var _0x240a4c=0x0;_0x240a4c<_0x22e2bc[_0x4d0e('0x4')]['length'];_0x240a4c+=0x1){_0x2846d1[_0x298072](util['format'](_0x4d0e('0x1e'),_0x22e2bc[_0x4d0e('0x4')][_0x240a4c]['name']));}}}function joinOrLeave(_0x5ac296,_0x3ee308,_0x1e1ad2){var _0x3092e1;if(_0x5ac296[_0x4d0e('0x1f')][_0x4d0e('0x20')]['id']){db[_0x4d0e('0x5')][_0x4d0e('0x21')]({'attributes':['id',_0x4d0e('0x6'),_0x4d0e('0x7'),'userProfileId'],'where':{'id':_0x5ac296[_0x4d0e('0x1f')][_0x4d0e('0x20')]['id']},'include':[{'model':db[_0x4d0e('0x22')],'as':_0x4d0e('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x4d0e('0x24')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x4d0e('0x25')],'as':_0x4d0e('0x26'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x4d0e('0x27'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x4d0e('0x28')],'as':_0x4d0e('0x29'),'attributes':['id'],'raw':!![]}]})[_0x4d0e('0xc')](function(_0x372a87){if(_0x372a87){_0x3092e1=_0x372a87;_0x5ac296[_0x3ee308](util[_0x4d0e('0x1c')](_0x4d0e('0x1e'),_0x372a87[_0x4d0e('0x6')]));var _0x4f876a=[];switch(_0x372a87[_0x4d0e('0x7')]){case'admin':_0x5ac296[_0x3ee308]('voice:inbound');_0x5ac296[_0x3ee308](_0x4d0e('0x2a'));if(queryQueues[_0x4d0e('0x2b')](_0x4d0e('0x2c'))){delete queryQueues[_0x4d0e('0x2c')];}_0x4f876a[_0x4d0e('0x2d')](db[_0x4d0e('0x2e')]['findAll'](queryQueues));_0x4f876a[_0x4d0e('0x2d')](db[_0x4d0e('0x2f')][_0x4d0e('0x12')](queryQueues));_0x4f876a[_0x4d0e('0x2d')](db['FaxQueue'][_0x4d0e('0x12')](queryQueues));_0x4f876a[_0x4d0e('0x2d')](db[_0x4d0e('0x30')][_0x4d0e('0x12')](queryQueues));_0x4f876a[_0x4d0e('0x2d')](db[_0x4d0e('0x31')][_0x4d0e('0x12')](queryQueues));_0x4f876a['push'](db[_0x4d0e('0x32')][_0x4d0e('0x12')](queryQueues));_0x4f876a['push'](db[_0x4d0e('0x33')][_0x4d0e('0x12')](queryQueues));_0x4f876a[_0x4d0e('0x2d')](db[_0x4d0e('0x5')][_0x4d0e('0x12')](queryTelephones));_0x4f876a[_0x4d0e('0x2d')](db[_0x4d0e('0x34')][_0x4d0e('0x12')](queryTrunks));_0x4f876a[_0x4d0e('0x2d')](db[_0x4d0e('0x1b')][_0x4d0e('0x12')](queryCampaigns));_0x4f876a[_0x4d0e('0x2d')](db[_0x4d0e('0x5')][_0x4d0e('0x12')](queryAgents));break;case _0x4d0e('0x35'):_0x5ac296[_0x3ee308](_0x4d0e('0x36'));_0x5ac296[_0x3ee308]('voice:outbound');_0x4f876a['push'](getAssociatedResources(_0x4d0e('0xd'),_0x372a87[_0x4d0e('0x37')],_0x4d0e('0x2e')));_0x4f876a[_0x4d0e('0x2d')](getAssociatedResources(_0x4d0e('0xe'),_0x372a87[_0x4d0e('0x37')],_0x4d0e('0x2f')));_0x4f876a['push'](getAssociatedResources(_0x4d0e('0x38'),_0x372a87[_0x4d0e('0x37')],_0x4d0e('0x39')));_0x4f876a['push'](getAssociatedResources(_0x4d0e('0x3a'),_0x372a87[_0x4d0e('0x37')],'SmsQueue'));_0x4f876a[_0x4d0e('0x2d')](getAssociatedResources('MailQueues',_0x372a87[_0x4d0e('0x37')],'MailQueue'));_0x4f876a[_0x4d0e('0x2d')](getAssociatedResources(_0x4d0e('0x10'),_0x372a87['userProfileId'],_0x4d0e('0x32')));_0x4f876a[_0x4d0e('0x2d')](getAssociatedResources(_0x4d0e('0x11'),_0x372a87['userProfileId'],_0x4d0e('0x33')));_0x4f876a['push'](getAssociatedResources(_0x4d0e('0x13'),_0x372a87[_0x4d0e('0x37')],_0x4d0e('0x5')));_0x4f876a['push'](getAssociatedResources('Trunks',_0x372a87[_0x4d0e('0x37')],_0x4d0e('0x34')));_0x4f876a[_0x4d0e('0x2d')](getAssociatedResources('IvrCampaigns',_0x372a87[_0x4d0e('0x37')],_0x4d0e('0x1b')));_0x4f876a['push'](db[_0x4d0e('0x5')][_0x4d0e('0x12')](queryAgents));break;case _0x4d0e('0x8'):_0x5ac296[_0x3ee308]('voice:inbound');_0x5ac296[_0x3ee308](_0x4d0e('0x2a'));_0x4f876a['push'](_0x372a87[_0x4d0e('0x3b')]({'attributes':['id','name']}));_0x4f876a[_0x4d0e('0x2d')](_0x372a87[_0x4d0e('0x3c')]({'attributes':['id',_0x4d0e('0x6')]}));_0x4f876a[_0x4d0e('0x2d')](_0x372a87[_0x4d0e('0x3d')]({'attributes':['id',_0x4d0e('0x6')]}));_0x4f876a[_0x4d0e('0x2d')](_0x372a87[_0x4d0e('0x3e')]({'attributes':['id',_0x4d0e('0x6')]}));_0x4f876a[_0x4d0e('0x2d')](_0x372a87[_0x4d0e('0x3f')]({'attributes':['id',_0x4d0e('0x6')]}));_0x4f876a[_0x4d0e('0x2d')](_0x372a87[_0x4d0e('0x40')]({'attributes':['id',_0x4d0e('0x6')]}));_0x4f876a['push'](_0x372a87['getWhatsappQueues']({'attributes':['id',_0x4d0e('0x6')]}));break;}return BPromise[_0x4d0e('0x41')](_0x4f876a);}})[_0x4d0e('0xc')](function(_0x45404e){if(_0x45404e&&_0x45404e[_0x4d0e('0x42')]){for(var _0x2cf342=0x0;_0x2cf342<_0x45404e[_0x4d0e('0x42')];_0x2cf342+=0x1){for(var _0x18a27f=0x0;_0x18a27f<_0x45404e[_0x2cf342][_0x4d0e('0x42')];_0x18a27f+=0x1){switch(_0x2cf342){case 0x0:joinOrLeaveQueues(_0x5ac296,_0x3ee308,_0x4d0e('0x43'),_0x45404e[_0x2cf342][_0x18a27f]);break;case 0x1:joinOrLeaveQueues(_0x5ac296,_0x3ee308,_0x4d0e('0x44'),_0x45404e[_0x2cf342][_0x18a27f]);break;case 0x2:joinOrLeaveQueues(_0x5ac296,_0x3ee308,'fax',_0x45404e[_0x2cf342][_0x18a27f]);break;case 0x3:joinOrLeaveQueues(_0x5ac296,_0x3ee308,_0x4d0e('0x45'),_0x45404e[_0x2cf342][_0x18a27f]);break;case 0x4:joinOrLeaveQueues(_0x5ac296,_0x3ee308,_0x4d0e('0x46'),_0x45404e[_0x2cf342][_0x18a27f]);break;case 0x5:joinOrLeaveQueues(_0x5ac296,_0x3ee308,_0x4d0e('0x47'),_0x45404e[_0x2cf342][_0x18a27f]);break;case 0x6:joinOrLeaveQueues(_0x5ac296,_0x3ee308,_0x4d0e('0x48'),_0x45404e[_0x2cf342][_0x18a27f]);break;case 0x7:if(_0x3092e1[_0x4d0e('0x7')]!=='agent')_0x5ac296[_0x3ee308](util[_0x4d0e('0x1c')](_0x4d0e('0x49'),_0x45404e[_0x2cf342][_0x18a27f][_0x4d0e('0x6')]));break;case 0x8:if(_0x3092e1[_0x4d0e('0x7')]!==_0x4d0e('0x8'))_0x5ac296[_0x3ee308](util[_0x4d0e('0x1c')]('trunk:%s',_0x45404e[_0x2cf342][_0x18a27f][_0x4d0e('0x6')]));break;case 0x9:if(_0x3092e1['role']!==_0x4d0e('0x8'))_0x5ac296[_0x3ee308](util[_0x4d0e('0x1c')](_0x4d0e('0x4a'),_0x45404e[_0x2cf342][_0x18a27f][_0x4d0e('0x9')],_0x45404e[_0x2cf342][_0x18a27f]['name']));break;case 0xa:_0x5ac296[_0x3ee308](util[_0x4d0e('0x1c')](_0x4d0e('0x1e'),_0x45404e[_0x2cf342][_0x18a27f][_0x4d0e('0x6')]));break;}}}}})[_0x4d0e('0xc')](function(){if(_0x3ee308===_0x4d0e('0x4b')){var _0x236f56=_['map'](_0x3092e1[_0x4d0e('0x23')],'id');return _0x3092e1[_0x4d0e('0x4c')](_0x236f56)[_0x4d0e('0xc')](function(){for(var _0x4dba6f=0x0;_0x4dba6f<_0x236f56[_0x4d0e('0x42')];_0x4dba6f+=0x1){_0x1e1ad2[_0x4d0e('0x4d')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x236f56[_0x4dba6f]),'UserId':Number(_0x3092e1['id'])});}});}})[_0x4d0e('0xc')](function(){if(_0x3ee308===_0x4d0e('0x4b')){var _0x575d1c=_[_0x4d0e('0x18')](_0x3092e1[_0x4d0e('0x4e')],'id');return _0x3092e1[_0x4d0e('0x4f')](_0x575d1c)[_0x4d0e('0xc')](function(){for(var _0x591065=0x0;_0x591065<_0x575d1c[_0x4d0e('0x42')];_0x591065+=0x1){_0x1e1ad2[_0x4d0e('0x4d')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x575d1c[_0x591065]),'UserId':Number(_0x3092e1['id'])});}});}})['then'](function(){if(_0x3ee308===_0x4d0e('0x4b')){var _0x4d9360=_['map'](_0x3092e1['FaxInteractions'],'id');return _0x3092e1[_0x4d0e('0x50')](_0x4d9360)[_0x4d0e('0xc')](function(){for(var _0x59ad36=0x0;_0x59ad36<_0x4d9360[_0x4d0e('0x42')];_0x59ad36+=0x1){_0x1e1ad2[_0x4d0e('0x4d')](_0x4d0e('0x51'),{'FaxInteractionId':Number(_0x4d9360[_0x59ad36]),'UserId':Number(_0x3092e1['id'])});}});}})[_0x4d0e('0xc')](function(){if(_0x3ee308==='leave'){var _0x503789=_[_0x4d0e('0x18')](_0x3092e1[_0x4d0e('0x27')],'id');return _0x3092e1[_0x4d0e('0x52')](_0x503789)[_0x4d0e('0xc')](function(){for(var _0x3f795a=0x0;_0x3f795a<_0x503789[_0x4d0e('0x42')];_0x3f795a+=0x1){_0x1e1ad2[_0x4d0e('0x4d')](_0x4d0e('0x53'),{'SmsInteractionId':Number(_0x503789[_0x3f795a]),'UserId':Number(_0x3092e1['id'])});}});}})[_0x4d0e('0xc')](function(){if(_0x3ee308===_0x4d0e('0x4b')){var _0x2eb119=_[_0x4d0e('0x18')](_0x3092e1[_0x4d0e('0x54')],'id');return _0x3092e1[_0x4d0e('0x55')](_0x2eb119)[_0x4d0e('0xc')](function(){for(var _0x2bcf4e=0x0;_0x2bcf4e<_0x2eb119[_0x4d0e('0x42')];_0x2bcf4e+=0x1){_0x1e1ad2[_0x4d0e('0x4d')](_0x4d0e('0x56'),{'OpenchannelInteractionId':Number(_0x2eb119[_0x2bcf4e]),'UserId':Number(_0x3092e1['id'])});}});}})['then'](function(){if(_0x3ee308===_0x4d0e('0x4b')){var _0x442bad=_[_0x4d0e('0x18')](_0x3092e1[_0x4d0e('0x29')],'id');return _0x3092e1[_0x4d0e('0x57')](_0x442bad)[_0x4d0e('0xc')](function(){for(var _0x50a99c=0x0;_0x50a99c<_0x442bad['length'];_0x50a99c+=0x1){_0x1e1ad2[_0x4d0e('0x4d')](_0x4d0e('0x58'),{'WhatsappInteractionId':Number(_0x442bad[_0x50a99c]),'UserId':Number(_0x3092e1['id'])});}});}})[_0x4d0e('0x59')](function(_0x2a2856){_0x5ac296['log'](_0x2a2856);});}}function onDisconnect(_0x2b9edb,_0xec8c81){joinOrLeave(_0x2b9edb,_0x4d0e('0x4b'),_0xec8c81);}function onConnect(_0x14f8b1){joinOrLeave(_0x14f8b1,_0x4d0e('0x5a'));}exports[_0x4d0e('0x5b')]=function(_0x188509){_0x188509['on'](_0x4d0e('0x5c'),function(_0x4b835e){_0x4b835e['setMaxListeners'](0x0);_0x4b835e[_0x4d0e('0x5d')]=_0x4b835e[_0x4d0e('0x5e')][_0x4d0e('0x5c')][_0x4d0e('0x5f')]+':'+_0x4b835e[_0x4d0e('0x5e')]['connection'][_0x4d0e('0x60')];_0x4b835e[_0x4d0e('0x61')]=new Date();_0x4b835e[_0x4d0e('0x62')]=function(_0x3a06bd){console[_0x4d0e('0x62')](_0x4d0e('0x63')+_0x4b835e[_0x4d0e('0x64')][_0x4d0e('0x6')]+'['+_0x4b835e[_0x4d0e('0x5d')]+']',_0x3a06bd);};_0x4b835e['on'](_0x4d0e('0x65'),function(){onDisconnect(_0x4b835e,_0x188509);_0x4b835e[_0x4d0e('0x62')](_0x4d0e('0x66'));});onConnect(_0x4b835e);_0x4b835e[_0x4d0e('0x62')](_0x4d0e('0x67'));});};