Built motion from commit 25580385.|2.6.2
[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 _0xa46e=['Campaign','user','SmsQueues','WhatsappQueues','WhatsappQueue','Trunk','agent','getVoiceQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','fax','sms','openchannel','whatsapp','telephone:%s','trunk:%s','leave','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','SmsInteractions','emit','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','address','request','remotePort','SocketIO\x20','nsp','CONNECTED','lodash','util','../mysqldb','./environment','name','User','role','type','ivr','then','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','format','Agents','handshake','query','find','userProfileId','ChatInteractions','MailInteraction','FaxInteraction','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue'];(function(_0x337748,_0x402b05){var _0x3bb03f=function(_0x2fcdf4){while(--_0x2fcdf4){_0x337748['push'](_0x337748['shift']());}};_0x3bb03f(++_0x402b05);}(_0xa46e,0x8a));var _0xea46=function(_0x544099,_0x372b30){_0x544099=_0x544099-0x0;var _0x20ab09=_0xa46e[_0x544099];return _0x20ab09;};'use strict';var _=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var BPromise=require('bluebird');var db=require(_0xea46('0x2'))['db'];var config=require(_0xea46('0x3'));var queryQueues={'attributes':['id',_0xea46('0x4')],'include':[{'as':'Agents','model':db[_0xea46('0x5')],'attributes':['id','name',_0xea46('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xea46('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xea46('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xea46('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xea46('0x4'),_0xea46('0x7')],'where':{'type':_0xea46('0x8')}};function getAssociatedResources(_0x3db7a2,_0x468322,_0x4cf206){return db['UserProfileSection']['findOne']({'where':{'name':_0x3db7a2,'userProfileId':_0x468322},'raw':!![]})[_0xea46('0x9')](function(_0x45550a){if(_0x45550a){if(_0x45550a['autoAssociation']){switch(_0x3db7a2){case _0xea46('0xa'):case _0xea46('0xb'):case _0xea46('0xc'):case'SmsQueues':case _0xea46('0xd'):case _0xea46('0xe'):case'WhatsappQueues':return db[_0x4cf206][_0xea46('0xf')](queryQueues);case _0xea46('0x10'):return db[_0x4cf206]['findAll'](queryTelephones);case _0xea46('0x11'):return db[_0x4cf206]['findAll'](queryTrunks);case _0xea46('0x12'):return db[_0x4cf206][_0xea46('0xf')](queryCampaigns);}}else{return db[_0xea46('0x13')][_0xea46('0xf')]({'attributes':[_0xea46('0x14')],'where':{'sectionId':_0x45550a['id']},'raw':!![]})[_0xea46('0x9')](function(_0x81ee45){if(_0x81ee45){var _0x20a79c={'where':{'id':_[_0xea46('0x15')](_0x81ee45,'resourceId')},'raw':!![]};switch(_0x4cf206){case _0xea46('0x5'):_0x20a79c[_0xea46('0x16')][_0xea46('0x6')]='telephone';break;case'Campaign':_0x20a79c[_0xea46('0x16')][_0xea46('0x7')]='ivr';break;}return db[_0x4cf206]['findAll'](_0x20a79c);}else{return[];}});}}else{return[];}})[_0xea46('0x9')](function(_0x9b7d04){return _0x9b7d04;});}function joinOrLeaveQueues(_0x4ff93d,_0x40316b,_0x16ae38,_0x1adba1){_0x4ff93d[_0x40316b](util[_0xea46('0x17')]('%s:queue:%s',_0x16ae38,_0x1adba1[_0xea46('0x4')]));if(_0x1adba1['Agents']){for(var _0x515e32=0x0;_0x515e32<_0x1adba1[_0xea46('0x18')]['length'];_0x515e32+=0x1){_0x4ff93d[_0x40316b](util['format']('user:%s',_0x1adba1[_0xea46('0x18')][_0x515e32][_0xea46('0x4')]));}}}function joinOrLeave(_0x3d1850,_0x5beb44,_0x16f8fa){var _0x59b10d;if(_0x3d1850[_0xea46('0x19')][_0xea46('0x1a')]['id']){db['User'][_0xea46('0x1b')]({'attributes':['id','name',_0xea46('0x6'),_0xea46('0x1c')],'where':{'id':_0x3d1850[_0xea46('0x19')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0xea46('0x1d'),'attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x1e')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x1f')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x20')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x21')],'as':_0xea46('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x23')],'as':_0xea46('0x24'),'attributes':['id'],'raw':!![]}]})[_0xea46('0x9')](function(_0x174345){if(_0x174345){_0x59b10d=_0x174345;_0x3d1850[_0x5beb44](util['format'](_0xea46('0x25'),_0x174345[_0xea46('0x4')]));var _0x200e10=[];switch(_0x174345['role']){case _0xea46('0x26'):_0x3d1850[_0x5beb44](_0xea46('0x27'));_0x3d1850[_0x5beb44](_0xea46('0x28'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues['include'];}_0x200e10[_0xea46('0x29')](db[_0xea46('0x2a')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2b')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2c')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2d')]['findAll'](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2e')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2f')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db['WhatsappQueue'][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x5')][_0xea46('0xf')](queryTelephones));_0x200e10[_0xea46('0x29')](db['Trunk']['findAll'](queryTrunks));_0x200e10[_0xea46('0x29')](db[_0xea46('0x30')]['findAll'](queryCampaigns));_0x200e10[_0xea46('0x29')](db[_0xea46('0x5')][_0xea46('0xf')](queryAgents));break;case _0xea46('0x31'):_0x3d1850[_0x5beb44]('voice:inbound');_0x3d1850[_0x5beb44]('voice:outbound');_0x200e10[_0xea46('0x29')](getAssociatedResources('VoiceQueues',_0x174345[_0xea46('0x1c')],_0xea46('0x2a')));_0x200e10['push'](getAssociatedResources(_0xea46('0xb'),_0x174345[_0xea46('0x1c')],'ChatQueue'));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0xc'),_0x174345['userProfileId'],_0xea46('0x2c')));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0x32'),_0x174345[_0xea46('0x1c')],'SmsQueue'));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0xd'),_0x174345[_0xea46('0x1c')],_0xea46('0x2e')));_0x200e10[_0xea46('0x29')](getAssociatedResources('OpenchannelQueues',_0x174345[_0xea46('0x1c')],_0xea46('0x2f')));_0x200e10['push'](getAssociatedResources(_0xea46('0x33'),_0x174345[_0xea46('0x1c')],_0xea46('0x34')));_0x200e10[_0xea46('0x29')](getAssociatedResources('Telephones',_0x174345[_0xea46('0x1c')],_0xea46('0x5')));_0x200e10[_0xea46('0x29')](getAssociatedResources('Trunks',_0x174345[_0xea46('0x1c')],_0xea46('0x35')));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0x12'),_0x174345[_0xea46('0x1c')],_0xea46('0x30')));_0x200e10[_0xea46('0x29')](db[_0xea46('0x5')][_0xea46('0xf')](queryAgents));break;case _0xea46('0x36'):_0x3d1850[_0x5beb44](_0xea46('0x27'));_0x3d1850[_0x5beb44](_0xea46('0x28'));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x37')]({'attributes':['id',_0xea46('0x4')]}));_0x200e10['push'](_0x174345['getChatQueues']({'attributes':['id',_0xea46('0x4')]}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x38')]({'attributes':['id',_0xea46('0x4')]}));_0x200e10['push'](_0x174345['getSmsQueues']({'attributes':['id','name']}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x39')]({'attributes':['id','name']}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x3a')]({'attributes':['id',_0xea46('0x4')]}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x3b')]({'attributes':['id','name']}));break;}return BPromise[_0xea46('0x3c')](_0x200e10);}})['then'](function(_0x22d9a2){if(_0x22d9a2&&_0x22d9a2[_0xea46('0x3d')]){for(var _0x45ee37=0x0;_0x45ee37<_0x22d9a2[_0xea46('0x3d')];_0x45ee37+=0x1){for(var _0x9c26cf=0x0;_0x9c26cf<_0x22d9a2[_0x45ee37][_0xea46('0x3d')];_0x9c26cf+=0x1){switch(_0x45ee37){case 0x0:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x3e'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x1:joinOrLeaveQueues(_0x3d1850,_0x5beb44,'chat',_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x2:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x3f'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x3:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x40'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x4:joinOrLeaveQueues(_0x3d1850,_0x5beb44,'mail',_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x5:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x41'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x6:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x42'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x7:if(_0x59b10d[_0xea46('0x6')]!=='agent')_0x3d1850[_0x5beb44](util['format'](_0xea46('0x43'),_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x4')]));break;case 0x8:if(_0x59b10d[_0xea46('0x6')]!==_0xea46('0x36'))_0x3d1850[_0x5beb44](util[_0xea46('0x17')](_0xea46('0x44'),_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x4')]));break;case 0x9:if(_0x59b10d[_0xea46('0x6')]!==_0xea46('0x36'))_0x3d1850[_0x5beb44](util[_0xea46('0x17')]('campaign:%s:%s',_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x7')],_0x22d9a2[_0x45ee37][_0x9c26cf]['name']));break;case 0xa:_0x3d1850[_0x5beb44](util[_0xea46('0x17')](_0xea46('0x25'),_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x4')]));break;}}}}})['then'](function(){if(_0x5beb44===_0xea46('0x45')){var _0x125abb=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x1d')],'id');return _0x59b10d['removeChatInteractions'](_0x125abb)['then'](function(){for(var _0x6584e9=0x0;_0x6584e9<_0x125abb[_0xea46('0x3d')];_0x6584e9+=0x1){_0x16f8fa['emit'](_0xea46('0x46'),{'ChatInteractionId':Number(_0x125abb[_0x6584e9]),'UserId':Number(_0x59b10d['id'])});}});}})['then'](function(){if(_0x5beb44===_0xea46('0x45')){var _0x3830fe=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x47')],'id');return _0x59b10d[_0xea46('0x48')](_0x3830fe)[_0xea46('0x9')](function(){for(var _0x391eae=0x0;_0x391eae<_0x3830fe['length'];_0x391eae+=0x1){_0x16f8fa['emit'](_0xea46('0x49'),{'MailInteractionId':Number(_0x3830fe[_0x391eae]),'UserId':Number(_0x59b10d['id'])});}});}})['then'](function(){if(_0x5beb44===_0xea46('0x45')){var _0x16022f=_[_0xea46('0x15')](_0x59b10d['FaxInteractions'],'id');return _0x59b10d[_0xea46('0x4a')](_0x16022f)['then'](function(){for(var _0xc12018=0x0;_0xc12018<_0x16022f[_0xea46('0x3d')];_0xc12018+=0x1){_0x16f8fa['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x16022f[_0xc12018]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x9')](function(){if(_0x5beb44===_0xea46('0x45')){var _0x3199f2=_['map'](_0x59b10d[_0xea46('0x4b')],'id');return _0x59b10d['removeSmsInteractions'](_0x3199f2)[_0xea46('0x9')](function(){for(var _0x5944ba=0x0;_0x5944ba<_0x3199f2[_0xea46('0x3d')];_0x5944ba+=0x1){_0x16f8fa[_0xea46('0x4c')](_0xea46('0x4d'),{'SmsInteractionId':Number(_0x3199f2[_0x5944ba]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x9')](function(){if(_0x5beb44===_0xea46('0x45')){var _0x4c5beb=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x22')],'id');return _0x59b10d[_0xea46('0x4e')](_0x4c5beb)['then'](function(){for(var _0x4e75a7=0x0;_0x4e75a7<_0x4c5beb[_0xea46('0x3d')];_0x4e75a7+=0x1){_0x16f8fa[_0xea46('0x4c')](_0xea46('0x4f'),{'OpenchannelInteractionId':Number(_0x4c5beb[_0x4e75a7]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x9')](function(){if(_0x5beb44===_0xea46('0x45')){var _0x175a42=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x24')],'id');return _0x59b10d[_0xea46('0x50')](_0x175a42)[_0xea46('0x9')](function(){for(var _0xa307cf=0x0;_0xa307cf<_0x175a42[_0xea46('0x3d')];_0xa307cf+=0x1){_0x16f8fa[_0xea46('0x4c')](_0xea46('0x51'),{'WhatsappInteractionId':Number(_0x175a42[_0xa307cf]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x52')](function(_0x487b4e){_0x3d1850[_0xea46('0x53')](_0x487b4e);});}}function onDisconnect(_0x2c248c,_0x397e98){joinOrLeave(_0x2c248c,_0xea46('0x45'),_0x397e98);}function onConnect(_0x5b353f){joinOrLeave(_0x5b353f,_0xea46('0x54'));}exports[_0xea46('0x55')]=function(_0x5b5142){_0x5b5142['on'](_0xea46('0x56'),function(_0x419f86){_0x419f86['setMaxListeners'](0x0);_0x419f86[_0xea46('0x57')]=_0x419f86[_0xea46('0x58')][_0xea46('0x56')]['remoteAddress']+':'+_0x419f86[_0xea46('0x58')][_0xea46('0x56')][_0xea46('0x59')];_0x419f86['connectedAt']=new Date();_0x419f86['log']=function(_0x587bd3){console[_0xea46('0x53')](_0xea46('0x5a')+_0x419f86[_0xea46('0x5b')][_0xea46('0x4')]+'['+_0x419f86[_0xea46('0x57')]+']',_0x587bd3);};_0x419f86['on']('disconnect',function(){onDisconnect(_0x419f86,_0x5b5142);_0x419f86[_0xea46('0x53')]('DISCONNECTED');});onConnect(_0x419f86);_0x419f86[_0xea46('0x53')](_0xea46('0x5c'));});};