e0d333cd3f880b99193f623f5ccd1077448a31f3
[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 _0x095b=['setMaxListeners','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','lodash','bluebird','../mysqldb','./environment','name','Agents','role','agent','telephone','ivr','UserProfileSection','findOne','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','then','map','Campaign','where','type','format','%s:queue:%s','length','handshake','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','admin','voice:outbound','hasOwnProperty','include','push','VoiceQueue','SmsQueue','MailQueue','OpenchannelQueue','User','Trunk','user','voice:inbound','ChatQueues','ChatQueue','FaxQueue','MailQueues','WhatsappQueues','WhatsappQueue','getChatQueues','getOpenchannelQueues','getWhatsappQueues','voice','sms','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','connection'];(function(_0x32c319,_0x27cc05){var _0x50747e=function(_0xb23eef){while(--_0xb23eef){_0x32c319['push'](_0x32c319['shift']());}};_0x50747e(++_0x27cc05);}(_0x095b,0x6e));var _0xb095=function(_0x225e85,_0x2fd3b6){_0x225e85=_0x225e85-0x0;var _0x476964=_0x095b[_0x225e85];return _0x476964;};'use strict';var _=require(_0xb095('0x0'));var util=require('util');var BPromise=require(_0xb095('0x1'));var db=require(_0xb095('0x2'))['db'];var config=require(_0xb095('0x3'));var queryQueues={'attributes':['id',_0xb095('0x4')],'include':[{'as':_0xb095('0x5'),'model':db['User'],'attributes':['id',_0xb095('0x4'),_0xb095('0x6')],'raw':!![],'where':{'role':_0xb095('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xb095('0x4')],'where':{'role':_0xb095('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xb095('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xb095('0x4')],'where':{'role':_0xb095('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xb095('0x4'),'type'],'where':{'type':_0xb095('0x9')}};function getAssociatedResources(_0x26448a,_0x449d03,_0x372139){return db[_0xb095('0xa')][_0xb095('0xb')]({'where':{'name':_0x26448a,'userProfileId':_0x449d03},'raw':!![]})['then'](function(_0x47f74d){if(_0x47f74d){if(_0x47f74d[_0xb095('0xc')]){switch(_0x26448a){case _0xb095('0xd'):case'ChatQueues':case _0xb095('0xe'):case _0xb095('0xf'):case'MailQueues':case _0xb095('0x10'):case'WhatsappQueues':return db[_0x372139][_0xb095('0x11')](queryQueues);case _0xb095('0x12'):return db[_0x372139][_0xb095('0x11')](queryTelephones);case _0xb095('0x13'):return db[_0x372139][_0xb095('0x11')](queryTrunks);case _0xb095('0x14'):return db[_0x372139][_0xb095('0x11')](queryCampaigns);}}else{return db['UserProfileResource'][_0xb095('0x11')]({'attributes':[_0xb095('0x15')],'where':{'sectionId':_0x47f74d['id']},'raw':!![]})[_0xb095('0x16')](function(_0x2e6a89){if(_0x2e6a89){var _0xd92481={'where':{'id':_[_0xb095('0x17')](_0x2e6a89,'resourceId')},'raw':!![]};switch(_0x372139){case'User':_0xd92481['where'][_0xb095('0x6')]=_0xb095('0x8');break;case _0xb095('0x18'):_0xd92481[_0xb095('0x19')][_0xb095('0x1a')]=_0xb095('0x9');break;}return db[_0x372139]['findAll'](_0xd92481);}else{return[];}});}}else{return[];}})[_0xb095('0x16')](function(_0x3bc333){return _0x3bc333;});}function joinOrLeaveQueues(_0x27e1d0,_0x31800c,_0x5c2674,_0x172b3e){_0x27e1d0[_0x31800c](util[_0xb095('0x1b')](_0xb095('0x1c'),_0x5c2674,_0x172b3e[_0xb095('0x4')]));if(_0x172b3e[_0xb095('0x5')]){for(var _0x2af120=0x0;_0x2af120<_0x172b3e['Agents'][_0xb095('0x1d')];_0x2af120+=0x1){_0x27e1d0[_0x31800c](util['format']('user:%s',_0x172b3e['Agents'][_0x2af120][_0xb095('0x4')]));}}}function joinOrLeave(_0x49c2ee,_0x39f9de,_0x4650f1){var _0x2f1a8b;if(_0x49c2ee[_0xb095('0x1e')]['query']['id']){db['User'][_0xb095('0x1f')]({'attributes':['id','name',_0xb095('0x6'),_0xb095('0x20')],'where':{'id':_0x49c2ee[_0xb095('0x1e')]['query']['id']},'include':[{'model':db[_0xb095('0x21')],'as':_0xb095('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xb095('0x23')],'as':_0xb095('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xb095('0x25')],'as':_0xb095('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xb095('0x27')],'as':_0xb095('0x28'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xb095('0x29')],'as':_0xb095('0x2a'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x2f273f){if(_0x2f273f){_0x2f1a8b=_0x2f273f;_0x49c2ee[_0x39f9de](util[_0xb095('0x1b')](_0xb095('0x2b'),_0x2f273f[_0xb095('0x4')]));var _0xe3bc42=[];switch(_0x2f273f[_0xb095('0x6')]){case _0xb095('0x2c'):_0x49c2ee[_0x39f9de]('voice:inbound');_0x49c2ee[_0x39f9de](_0xb095('0x2d'));if(queryQueues[_0xb095('0x2e')](_0xb095('0x2f'))){delete queryQueues[_0xb095('0x2f')];}_0xe3bc42[_0xb095('0x30')](db[_0xb095('0x31')][_0xb095('0x11')](queryQueues));_0xe3bc42['push'](db['ChatQueue']['findAll'](queryQueues));_0xe3bc42['push'](db['FaxQueue'][_0xb095('0x11')](queryQueues));_0xe3bc42[_0xb095('0x30')](db[_0xb095('0x32')][_0xb095('0x11')](queryQueues));_0xe3bc42[_0xb095('0x30')](db[_0xb095('0x33')][_0xb095('0x11')](queryQueues));_0xe3bc42[_0xb095('0x30')](db[_0xb095('0x34')][_0xb095('0x11')](queryQueues));_0xe3bc42[_0xb095('0x30')](db['WhatsappQueue'][_0xb095('0x11')](queryQueues));_0xe3bc42[_0xb095('0x30')](db[_0xb095('0x35')]['findAll'](queryTelephones));_0xe3bc42['push'](db[_0xb095('0x36')][_0xb095('0x11')](queryTrunks));_0xe3bc42[_0xb095('0x30')](db[_0xb095('0x18')]['findAll'](queryCampaigns));_0xe3bc42['push'](db[_0xb095('0x35')]['findAll'](queryAgents));break;case _0xb095('0x37'):_0x49c2ee[_0x39f9de](_0xb095('0x38'));_0x49c2ee[_0x39f9de]('voice:outbound');_0xe3bc42[_0xb095('0x30')](getAssociatedResources(_0xb095('0xd'),_0x2f273f[_0xb095('0x20')],'VoiceQueue'));_0xe3bc42[_0xb095('0x30')](getAssociatedResources(_0xb095('0x39'),_0x2f273f['userProfileId'],_0xb095('0x3a')));_0xe3bc42[_0xb095('0x30')](getAssociatedResources(_0xb095('0xe'),_0x2f273f[_0xb095('0x20')],_0xb095('0x3b')));_0xe3bc42[_0xb095('0x30')](getAssociatedResources(_0xb095('0xf'),_0x2f273f[_0xb095('0x20')],'SmsQueue'));_0xe3bc42[_0xb095('0x30')](getAssociatedResources(_0xb095('0x3c'),_0x2f273f[_0xb095('0x20')],_0xb095('0x33')));_0xe3bc42[_0xb095('0x30')](getAssociatedResources(_0xb095('0x10'),_0x2f273f[_0xb095('0x20')],_0xb095('0x34')));_0xe3bc42[_0xb095('0x30')](getAssociatedResources(_0xb095('0x3d'),_0x2f273f[_0xb095('0x20')],_0xb095('0x3e')));_0xe3bc42[_0xb095('0x30')](getAssociatedResources(_0xb095('0x12'),_0x2f273f[_0xb095('0x20')],'User'));_0xe3bc42['push'](getAssociatedResources(_0xb095('0x13'),_0x2f273f[_0xb095('0x20')],'Trunk'));_0xe3bc42[_0xb095('0x30')](getAssociatedResources(_0xb095('0x14'),_0x2f273f[_0xb095('0x20')],_0xb095('0x18')));_0xe3bc42['push'](db['User'][_0xb095('0x11')](queryAgents));break;case _0xb095('0x7'):_0x49c2ee[_0x39f9de](_0xb095('0x38'));_0x49c2ee[_0x39f9de]('voice:outbound');_0xe3bc42['push'](_0x2f273f['getVoiceQueues']({'attributes':['id',_0xb095('0x4')]}));_0xe3bc42['push'](_0x2f273f[_0xb095('0x3f')]({'attributes':['id',_0xb095('0x4')]}));_0xe3bc42[_0xb095('0x30')](_0x2f273f['getFaxQueues']({'attributes':['id',_0xb095('0x4')]}));_0xe3bc42['push'](_0x2f273f['getSmsQueues']({'attributes':['id','name']}));_0xe3bc42[_0xb095('0x30')](_0x2f273f['getMailQueues']({'attributes':['id',_0xb095('0x4')]}));_0xe3bc42['push'](_0x2f273f[_0xb095('0x40')]({'attributes':['id','name']}));_0xe3bc42[_0xb095('0x30')](_0x2f273f[_0xb095('0x41')]({'attributes':['id',_0xb095('0x4')]}));break;}return BPromise['all'](_0xe3bc42);}})[_0xb095('0x16')](function(_0x44804b){if(_0x44804b&&_0x44804b[_0xb095('0x1d')]){for(var _0x2ad53b=0x0;_0x2ad53b<_0x44804b[_0xb095('0x1d')];_0x2ad53b+=0x1){for(var _0x533369=0x0;_0x533369<_0x44804b[_0x2ad53b][_0xb095('0x1d')];_0x533369+=0x1){switch(_0x2ad53b){case 0x0:joinOrLeaveQueues(_0x49c2ee,_0x39f9de,_0xb095('0x42'),_0x44804b[_0x2ad53b][_0x533369]);break;case 0x1:joinOrLeaveQueues(_0x49c2ee,_0x39f9de,'chat',_0x44804b[_0x2ad53b][_0x533369]);break;case 0x2:joinOrLeaveQueues(_0x49c2ee,_0x39f9de,'fax',_0x44804b[_0x2ad53b][_0x533369]);break;case 0x3:joinOrLeaveQueues(_0x49c2ee,_0x39f9de,_0xb095('0x43'),_0x44804b[_0x2ad53b][_0x533369]);break;case 0x4:joinOrLeaveQueues(_0x49c2ee,_0x39f9de,'mail',_0x44804b[_0x2ad53b][_0x533369]);break;case 0x5:joinOrLeaveQueues(_0x49c2ee,_0x39f9de,_0xb095('0x44'),_0x44804b[_0x2ad53b][_0x533369]);break;case 0x6:joinOrLeaveQueues(_0x49c2ee,_0x39f9de,_0xb095('0x45'),_0x44804b[_0x2ad53b][_0x533369]);break;case 0x7:if(_0x2f1a8b['role']!==_0xb095('0x7'))_0x49c2ee[_0x39f9de](util[_0xb095('0x1b')](_0xb095('0x46'),_0x44804b[_0x2ad53b][_0x533369][_0xb095('0x4')]));break;case 0x8:if(_0x2f1a8b[_0xb095('0x6')]!=='agent')_0x49c2ee[_0x39f9de](util['format'](_0xb095('0x47'),_0x44804b[_0x2ad53b][_0x533369][_0xb095('0x4')]));break;case 0x9:if(_0x2f1a8b[_0xb095('0x6')]!=='agent')_0x49c2ee[_0x39f9de](util[_0xb095('0x1b')](_0xb095('0x48'),_0x44804b[_0x2ad53b][_0x533369][_0xb095('0x1a')],_0x44804b[_0x2ad53b][_0x533369][_0xb095('0x4')]));break;case 0xa:_0x49c2ee[_0x39f9de](util[_0xb095('0x1b')](_0xb095('0x2b'),_0x44804b[_0x2ad53b][_0x533369][_0xb095('0x4')]));break;}}}}})['then'](function(){if(_0x39f9de===_0xb095('0x49')){var _0x33e3bc=_[_0xb095('0x17')](_0x2f1a8b[_0xb095('0x22')],'id');return _0x2f1a8b[_0xb095('0x4a')](_0x33e3bc)['then'](function(){for(var _0x268c50=0x0;_0x268c50<_0x33e3bc[_0xb095('0x1d')];_0x268c50+=0x1){_0x4650f1[_0xb095('0x4b')](_0xb095('0x4c'),{'ChatInteractionId':Number(_0x33e3bc[_0x268c50]),'UserId':Number(_0x2f1a8b['id'])});}});}})[_0xb095('0x16')](function(){if(_0x39f9de===_0xb095('0x49')){var _0x92a6e5=_['map'](_0x2f1a8b[_0xb095('0x24')],'id');return _0x2f1a8b[_0xb095('0x4d')](_0x92a6e5)[_0xb095('0x16')](function(){for(var _0x4b43df=0x0;_0x4b43df<_0x92a6e5[_0xb095('0x1d')];_0x4b43df+=0x1){_0x4650f1[_0xb095('0x4b')](_0xb095('0x4e'),{'MailInteractionId':Number(_0x92a6e5[_0x4b43df]),'UserId':Number(_0x2f1a8b['id'])});}});}})[_0xb095('0x16')](function(){if(_0x39f9de==='leave'){var _0x204f29=_[_0xb095('0x17')](_0x2f1a8b['FaxInteractions'],'id');return _0x2f1a8b[_0xb095('0x4f')](_0x204f29)['then'](function(){for(var _0x1906ff=0x0;_0x1906ff<_0x204f29[_0xb095('0x1d')];_0x1906ff+=0x1){_0x4650f1[_0xb095('0x4b')](_0xb095('0x50'),{'FaxInteractionId':Number(_0x204f29[_0x1906ff]),'UserId':Number(_0x2f1a8b['id'])});}});}})[_0xb095('0x16')](function(){if(_0x39f9de===_0xb095('0x49')){var _0x2321a2=_['map'](_0x2f1a8b['SmsInteractions'],'id');return _0x2f1a8b[_0xb095('0x51')](_0x2321a2)[_0xb095('0x16')](function(){for(var _0x434d4c=0x0;_0x434d4c<_0x2321a2['length'];_0x434d4c+=0x1){_0x4650f1[_0xb095('0x4b')](_0xb095('0x52'),{'SmsInteractionId':Number(_0x2321a2[_0x434d4c]),'UserId':Number(_0x2f1a8b['id'])});}});}})[_0xb095('0x16')](function(){if(_0x39f9de===_0xb095('0x49')){var _0xe2981b=_[_0xb095('0x17')](_0x2f1a8b[_0xb095('0x53')],'id');return _0x2f1a8b[_0xb095('0x54')](_0xe2981b)['then'](function(){for(var _0x49507b=0x0;_0x49507b<_0xe2981b[_0xb095('0x1d')];_0x49507b+=0x1){_0x4650f1['emit'](_0xb095('0x55'),{'OpenchannelInteractionId':Number(_0xe2981b[_0x49507b]),'UserId':Number(_0x2f1a8b['id'])});}});}})[_0xb095('0x16')](function(){if(_0x39f9de===_0xb095('0x49')){var _0xc227d0=_[_0xb095('0x17')](_0x2f1a8b['WhatsappInteractions'],'id');return _0x2f1a8b[_0xb095('0x56')](_0xc227d0)[_0xb095('0x16')](function(){for(var _0xe18dce=0x0;_0xe18dce<_0xc227d0[_0xb095('0x1d')];_0xe18dce+=0x1){_0x4650f1[_0xb095('0x4b')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0xc227d0[_0xe18dce]),'UserId':Number(_0x2f1a8b['id'])});}});}})[_0xb095('0x57')](function(_0x21937d){_0x49c2ee[_0xb095('0x58')](_0x21937d);});}}function onDisconnect(_0x28d033,_0xfd665a){joinOrLeave(_0x28d033,_0xb095('0x49'),_0xfd665a);}function onConnect(_0x4cd334){joinOrLeave(_0x4cd334,_0xb095('0x59'));}exports[_0xb095('0x5a')]=function(_0x39d006){_0x39d006['on'](_0xb095('0x5b'),function(_0x239847){_0x239847[_0xb095('0x5c')](0x0);_0x239847['address']=_0x239847[_0xb095('0x5d')]['connection'][_0xb095('0x5e')]+':'+_0x239847[_0xb095('0x5d')]['connection'][_0xb095('0x5f')];_0x239847[_0xb095('0x60')]=new Date();_0x239847[_0xb095('0x58')]=function(_0x317fc1){console[_0xb095('0x58')](_0xb095('0x61')+_0x239847[_0xb095('0x62')][_0xb095('0x4')]+'['+_0x239847['address']+']',_0x317fc1);};_0x239847['on'](_0xb095('0x63'),function(){onDisconnect(_0x239847,_0x39d006);_0x239847[_0xb095('0x58')](_0xb095('0x64'));});onConnect(_0x239847);_0x239847[_0xb095('0x58')]('CONNECTED');});};