aef07bdeaa7c54059f19c31a2bc3e4e2533bdc88
[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 _0x4888=['util','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','telephone','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','resourceId','map','where','Campaign','type','ivr','%s:queue:%s','length','format','user:%s','handshake','query','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','user','userProfileId','WhatsappQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','leave','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','catch','log','join','default','setMaxListeners','address','remoteAddress','request','connection','remotePort','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED'];(function(_0x29260a,_0x59398a){var _0xcdb779=function(_0x463b01){while(--_0x463b01){_0x29260a['push'](_0x29260a['shift']());}};_0xcdb779(++_0x59398a);}(_0x4888,0x198));var _0x8488=function(_0x3070d5,_0x1d3284){_0x3070d5=_0x3070d5-0x0;var _0x2067e6=_0x4888[_0x3070d5];return _0x2067e6;};'use strict';var _=require('lodash');var util=require(_0x8488('0x0'));var BPromise=require(_0x8488('0x1'));var db=require(_0x8488('0x2'))['db'];var config=require(_0x8488('0x3'));var queryQueues={'attributes':['id',_0x8488('0x4')],'include':[{'as':_0x8488('0x5'),'model':db[_0x8488('0x6')],'attributes':['id','name',_0x8488('0x7')],'raw':!![],'where':{'role':_0x8488('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x8488('0x4')],'where':{'role':_0x8488('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x8488('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x8488('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name','type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x151528,_0x1bae81,_0x542bd8){return db[_0x8488('0xa')][_0x8488('0xb')]({'where':{'name':_0x151528,'userProfileId':_0x1bae81},'raw':!![]})[_0x8488('0xc')](function(_0x19a2ee){if(_0x19a2ee){if(_0x19a2ee['autoAssociation']){switch(_0x151528){case _0x8488('0xd'):case _0x8488('0xe'):case _0x8488('0xf'):case _0x8488('0x10'):case _0x8488('0x11'):case'OpenchannelQueues':case _0x8488('0x12'):return db[_0x542bd8][_0x8488('0x13')](queryQueues);case'Telephones':return db[_0x542bd8]['findAll'](queryTelephones);case _0x8488('0x14'):return db[_0x542bd8]['findAll'](queryTrunks);case _0x8488('0x15'):return db[_0x542bd8]['findAll'](queryCampaigns);}}else{return db['UserProfileResource'][_0x8488('0x13')]({'attributes':[_0x8488('0x16')],'where':{'sectionId':_0x19a2ee['id']},'raw':!![]})[_0x8488('0xc')](function(_0x2bcb7c){if(_0x2bcb7c){var _0x3b3cfa={'where':{'id':_[_0x8488('0x17')](_0x2bcb7c,_0x8488('0x16'))},'raw':!![]};switch(_0x542bd8){case'User':_0x3b3cfa[_0x8488('0x18')][_0x8488('0x7')]=_0x8488('0x9');break;case _0x8488('0x19'):_0x3b3cfa[_0x8488('0x18')][_0x8488('0x1a')]=_0x8488('0x1b');break;}return db[_0x542bd8][_0x8488('0x13')](_0x3b3cfa);}else{return[];}});}}else{return[];}})[_0x8488('0xc')](function(_0x1de64a){return _0x1de64a;});}function joinOrLeaveQueues(_0x10bfd6,_0x17e7fb,_0x3dd93e,_0x554ec6){_0x10bfd6[_0x17e7fb](util['format'](_0x8488('0x1c'),_0x3dd93e,_0x554ec6[_0x8488('0x4')]));if(_0x554ec6[_0x8488('0x5')]){for(var _0x3c9fc2=0x0;_0x3c9fc2<_0x554ec6[_0x8488('0x5')][_0x8488('0x1d')];_0x3c9fc2+=0x1){_0x10bfd6[_0x17e7fb](util[_0x8488('0x1e')](_0x8488('0x1f'),_0x554ec6[_0x8488('0x5')][_0x3c9fc2]['name']));}}}function joinOrLeave(_0x476a14,_0x4e07e1,_0x140b0b){var _0x1361a6;if(_0x476a14[_0x8488('0x20')]['query']['id']){db['User']['find']({'attributes':['id','name',_0x8488('0x7'),'userProfileId'],'where':{'id':_0x476a14['handshake'][_0x8488('0x21')]['id']},'include':[{'model':db[_0x8488('0x22')],'as':_0x8488('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x8488('0x24')],'as':_0x8488('0x25'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x8488('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x8488('0x27')],'as':_0x8488('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x8488('0x29')],'as':_0x8488('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x8488('0x2b')],'as':_0x8488('0x2c'),'attributes':['id'],'raw':!![]}]})[_0x8488('0xc')](function(_0x368f9c){if(_0x368f9c){_0x1361a6=_0x368f9c;_0x476a14[_0x4e07e1](util[_0x8488('0x1e')](_0x8488('0x1f'),_0x368f9c['name']));var _0x57ce3c=[];switch(_0x368f9c['role']){case _0x8488('0x2d'):_0x476a14[_0x4e07e1](_0x8488('0x2e'));_0x476a14[_0x4e07e1](_0x8488('0x2f'));if(queryQueues[_0x8488('0x30')](_0x8488('0x31'))){delete queryQueues[_0x8488('0x31')];}_0x57ce3c['push'](db[_0x8488('0x32')][_0x8488('0x13')](queryQueues));_0x57ce3c[_0x8488('0x33')](db[_0x8488('0x34')][_0x8488('0x13')](queryQueues));_0x57ce3c['push'](db[_0x8488('0x35')][_0x8488('0x13')](queryQueues));_0x57ce3c['push'](db[_0x8488('0x36')][_0x8488('0x13')](queryQueues));_0x57ce3c[_0x8488('0x33')](db[_0x8488('0x37')][_0x8488('0x13')](queryQueues));_0x57ce3c['push'](db[_0x8488('0x38')][_0x8488('0x13')](queryQueues));_0x57ce3c[_0x8488('0x33')](db['WhatsappQueue'][_0x8488('0x13')](queryQueues));_0x57ce3c['push'](db[_0x8488('0x6')][_0x8488('0x13')](queryTelephones));_0x57ce3c[_0x8488('0x33')](db[_0x8488('0x39')]['findAll'](queryTrunks));_0x57ce3c[_0x8488('0x33')](db[_0x8488('0x19')][_0x8488('0x13')](queryCampaigns));_0x57ce3c['push'](db[_0x8488('0x6')][_0x8488('0x13')](queryAgents));break;case _0x8488('0x3a'):_0x476a14[_0x4e07e1](_0x8488('0x2e'));_0x476a14[_0x4e07e1](_0x8488('0x2f'));_0x57ce3c[_0x8488('0x33')](getAssociatedResources(_0x8488('0xd'),_0x368f9c[_0x8488('0x3b')],_0x8488('0x32')));_0x57ce3c[_0x8488('0x33')](getAssociatedResources(_0x8488('0xe'),_0x368f9c['userProfileId'],'ChatQueue'));_0x57ce3c[_0x8488('0x33')](getAssociatedResources(_0x8488('0xf'),_0x368f9c[_0x8488('0x3b')],_0x8488('0x35')));_0x57ce3c[_0x8488('0x33')](getAssociatedResources(_0x8488('0x10'),_0x368f9c[_0x8488('0x3b')],_0x8488('0x36')));_0x57ce3c[_0x8488('0x33')](getAssociatedResources('MailQueues',_0x368f9c[_0x8488('0x3b')],_0x8488('0x37')));_0x57ce3c[_0x8488('0x33')](getAssociatedResources('OpenchannelQueues',_0x368f9c[_0x8488('0x3b')],_0x8488('0x38')));_0x57ce3c[_0x8488('0x33')](getAssociatedResources(_0x8488('0x12'),_0x368f9c[_0x8488('0x3b')],_0x8488('0x3c')));_0x57ce3c[_0x8488('0x33')](getAssociatedResources('Telephones',_0x368f9c[_0x8488('0x3b')],_0x8488('0x6')));_0x57ce3c[_0x8488('0x33')](getAssociatedResources('Trunks',_0x368f9c[_0x8488('0x3b')],'Trunk'));_0x57ce3c[_0x8488('0x33')](getAssociatedResources(_0x8488('0x15'),_0x368f9c['userProfileId'],_0x8488('0x19')));_0x57ce3c[_0x8488('0x33')](db[_0x8488('0x6')][_0x8488('0x13')](queryAgents));break;case _0x8488('0x8'):_0x476a14[_0x4e07e1]('voice:inbound');_0x476a14[_0x4e07e1](_0x8488('0x2f'));_0x57ce3c['push'](_0x368f9c[_0x8488('0x3d')]({'attributes':['id',_0x8488('0x4')]}));_0x57ce3c[_0x8488('0x33')](_0x368f9c[_0x8488('0x3e')]({'attributes':['id',_0x8488('0x4')]}));_0x57ce3c[_0x8488('0x33')](_0x368f9c[_0x8488('0x3f')]({'attributes':['id',_0x8488('0x4')]}));_0x57ce3c[_0x8488('0x33')](_0x368f9c[_0x8488('0x40')]({'attributes':['id',_0x8488('0x4')]}));_0x57ce3c[_0x8488('0x33')](_0x368f9c[_0x8488('0x41')]({'attributes':['id',_0x8488('0x4')]}));_0x57ce3c[_0x8488('0x33')](_0x368f9c[_0x8488('0x42')]({'attributes':['id',_0x8488('0x4')]}));_0x57ce3c['push'](_0x368f9c[_0x8488('0x43')]({'attributes':['id',_0x8488('0x4')]}));break;}return BPromise[_0x8488('0x44')](_0x57ce3c);}})[_0x8488('0xc')](function(_0x5067fa){if(_0x5067fa&&_0x5067fa[_0x8488('0x1d')]){for(var _0x1cd80d=0x0;_0x1cd80d<_0x5067fa[_0x8488('0x1d')];_0x1cd80d+=0x1){for(var _0x425c75=0x0;_0x425c75<_0x5067fa[_0x1cd80d]['length'];_0x425c75+=0x1){switch(_0x1cd80d){case 0x0:joinOrLeaveQueues(_0x476a14,_0x4e07e1,_0x8488('0x45'),_0x5067fa[_0x1cd80d][_0x425c75]);break;case 0x1:joinOrLeaveQueues(_0x476a14,_0x4e07e1,_0x8488('0x46'),_0x5067fa[_0x1cd80d][_0x425c75]);break;case 0x2:joinOrLeaveQueues(_0x476a14,_0x4e07e1,_0x8488('0x47'),_0x5067fa[_0x1cd80d][_0x425c75]);break;case 0x3:joinOrLeaveQueues(_0x476a14,_0x4e07e1,_0x8488('0x48'),_0x5067fa[_0x1cd80d][_0x425c75]);break;case 0x4:joinOrLeaveQueues(_0x476a14,_0x4e07e1,_0x8488('0x49'),_0x5067fa[_0x1cd80d][_0x425c75]);break;case 0x5:joinOrLeaveQueues(_0x476a14,_0x4e07e1,_0x8488('0x4a'),_0x5067fa[_0x1cd80d][_0x425c75]);break;case 0x6:joinOrLeaveQueues(_0x476a14,_0x4e07e1,_0x8488('0x4b'),_0x5067fa[_0x1cd80d][_0x425c75]);break;case 0x7:if(_0x1361a6[_0x8488('0x7')]!==_0x8488('0x8'))_0x476a14[_0x4e07e1](util[_0x8488('0x1e')](_0x8488('0x4c'),_0x5067fa[_0x1cd80d][_0x425c75][_0x8488('0x4')]));break;case 0x8:if(_0x1361a6[_0x8488('0x7')]!=='agent')_0x476a14[_0x4e07e1](util['format'](_0x8488('0x4d'),_0x5067fa[_0x1cd80d][_0x425c75][_0x8488('0x4')]));break;case 0x9:if(_0x1361a6[_0x8488('0x7')]!==_0x8488('0x8'))_0x476a14[_0x4e07e1](util[_0x8488('0x1e')](_0x8488('0x4e'),_0x5067fa[_0x1cd80d][_0x425c75][_0x8488('0x1a')],_0x5067fa[_0x1cd80d][_0x425c75][_0x8488('0x4')]));break;case 0xa:_0x476a14[_0x4e07e1](util[_0x8488('0x1e')]('user:%s',_0x5067fa[_0x1cd80d][_0x425c75][_0x8488('0x4')]));break;}}}}})[_0x8488('0xc')](function(){if(_0x4e07e1==='leave'){var _0x35e08a=_[_0x8488('0x17')](_0x1361a6[_0x8488('0x23')],'id');return _0x1361a6[_0x8488('0x4f')](_0x35e08a)['then'](function(){for(var _0x198328=0x0;_0x198328<_0x35e08a[_0x8488('0x1d')];_0x198328+=0x1){_0x140b0b[_0x8488('0x50')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x35e08a[_0x198328]),'UserId':Number(_0x1361a6['id'])});}});}})[_0x8488('0xc')](function(){if(_0x4e07e1===_0x8488('0x51')){var _0x1bed0e=_[_0x8488('0x17')](_0x1361a6['MailInteractions'],'id');return _0x1361a6[_0x8488('0x52')](_0x1bed0e)['then'](function(){for(var _0x4d4911=0x0;_0x4d4911<_0x1bed0e[_0x8488('0x1d')];_0x4d4911+=0x1){_0x140b0b['emit'](_0x8488('0x53'),{'MailInteractionId':Number(_0x1bed0e[_0x4d4911]),'UserId':Number(_0x1361a6['id'])});}});}})[_0x8488('0xc')](function(){if(_0x4e07e1===_0x8488('0x51')){var _0x85eb4d=_[_0x8488('0x17')](_0x1361a6[_0x8488('0x26')],'id');return _0x1361a6['removeFaxInteractions'](_0x85eb4d)[_0x8488('0xc')](function(){for(var _0x693741=0x0;_0x693741<_0x85eb4d[_0x8488('0x1d')];_0x693741+=0x1){_0x140b0b[_0x8488('0x50')](_0x8488('0x54'),{'FaxInteractionId':Number(_0x85eb4d[_0x693741]),'UserId':Number(_0x1361a6['id'])});}});}})['then'](function(){if(_0x4e07e1===_0x8488('0x51')){var _0x5a04d7=_[_0x8488('0x17')](_0x1361a6[_0x8488('0x28')],'id');return _0x1361a6['removeSmsInteractions'](_0x5a04d7)[_0x8488('0xc')](function(){for(var _0x4382ad=0x0;_0x4382ad<_0x5a04d7[_0x8488('0x1d')];_0x4382ad+=0x1){_0x140b0b[_0x8488('0x50')](_0x8488('0x55'),{'SmsInteractionId':Number(_0x5a04d7[_0x4382ad]),'UserId':Number(_0x1361a6['id'])});}});}})[_0x8488('0xc')](function(){if(_0x4e07e1==='leave'){var _0xb3574c=_['map'](_0x1361a6[_0x8488('0x2a')],'id');return _0x1361a6[_0x8488('0x56')](_0xb3574c)[_0x8488('0xc')](function(){for(var _0x3fa288=0x0;_0x3fa288<_0xb3574c[_0x8488('0x1d')];_0x3fa288+=0x1){_0x140b0b[_0x8488('0x50')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0xb3574c[_0x3fa288]),'UserId':Number(_0x1361a6['id'])});}});}})[_0x8488('0xc')](function(){if(_0x4e07e1==='leave'){var _0x1598db=_[_0x8488('0x17')](_0x1361a6[_0x8488('0x2c')],'id');return _0x1361a6[_0x8488('0x57')](_0x1598db)[_0x8488('0xc')](function(){for(var _0x24ba2d=0x0;_0x24ba2d<_0x1598db['length'];_0x24ba2d+=0x1){_0x140b0b['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x1598db[_0x24ba2d]),'UserId':Number(_0x1361a6['id'])});}});}})[_0x8488('0x58')](function(_0x1988cf){_0x476a14[_0x8488('0x59')](_0x1988cf);});}}function onDisconnect(_0x9e417d,_0x33814b){joinOrLeave(_0x9e417d,_0x8488('0x51'),_0x33814b);}function onConnect(_0x2377db){joinOrLeave(_0x2377db,_0x8488('0x5a'));}exports[_0x8488('0x5b')]=function(_0xa90a65){_0xa90a65['on']('connection',function(_0x1f7e98){_0x1f7e98[_0x8488('0x5c')](0x0);_0x1f7e98[_0x8488('0x5d')]=_0x1f7e98['request']['connection'][_0x8488('0x5e')]+':'+_0x1f7e98[_0x8488('0x5f')][_0x8488('0x60')][_0x8488('0x61')];_0x1f7e98['connectedAt']=new Date();_0x1f7e98['log']=function(_0x1577ce){console[_0x8488('0x59')](_0x8488('0x62')+_0x1f7e98['nsp'][_0x8488('0x4')]+'['+_0x1f7e98[_0x8488('0x5d')]+']',_0x1577ce);};_0x1f7e98['on'](_0x8488('0x63'),function(){onDisconnect(_0x1f7e98,_0xa90a65);_0x1f7e98[_0x8488('0x59')](_0x8488('0x64'));});onConnect(_0x1f7e98);_0x1f7e98['log'](_0x8488('0x65'));});};