Built motion from commit 19a84241.|2.5.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 _0xb6ff=['where','telephone','type','format','%s:queue:%s','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','then','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','ChatQueues','FaxQueue','WhatsappQueue','Trunk','Campaign','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','user_has_chat_interactions:remove','leave','MailInteractions','emit','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','WhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','name','Agents','User','role','agent','ivr','UserProfileSection','findOne','VoiceQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','resourceId','map'];(function(_0x4d3c77,_0x598a21){var _0x5aa85e=function(_0x15d0a9){while(--_0x15d0a9){_0x4d3c77['push'](_0x4d3c77['shift']());}};_0x5aa85e(++_0x598a21);}(_0xb6ff,0x185));var _0xfb6f=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0xb6ff[_0x28d18d];return _0x470640;};'use strict';var _=require(_0xfb6f('0x0'));var util=require(_0xfb6f('0x1'));var BPromise=require(_0xfb6f('0x2'));var db=require(_0xfb6f('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xfb6f('0x4')],'include':[{'as':_0xfb6f('0x5'),'model':db[_0xfb6f('0x6')],'attributes':['id','name',_0xfb6f('0x7')],'raw':!![],'where':{'role':_0xfb6f('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xfb6f('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xfb6f('0x4')],'where':{'role':_0xfb6f('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xfb6f('0x4'),'type'],'where':{'type':_0xfb6f('0x9')}};function getAssociatedResources(_0xfb17ba,_0x49a982,_0x7bb352){return db[_0xfb6f('0xa')][_0xfb6f('0xb')]({'where':{'name':_0xfb17ba,'userProfileId':_0x49a982},'raw':!![]})['then'](function(_0x338d33){if(_0x338d33){if(_0x338d33['autoAssociation']){switch(_0xfb17ba){case _0xfb6f('0xc'):case'ChatQueues':case _0xfb6f('0xd'):case _0xfb6f('0xe'):case _0xfb6f('0xf'):case _0xfb6f('0x10'):case _0xfb6f('0x11'):return db[_0x7bb352][_0xfb6f('0x12')](queryQueues);case _0xfb6f('0x13'):return db[_0x7bb352][_0xfb6f('0x12')](queryTelephones);case _0xfb6f('0x14'):return db[_0x7bb352][_0xfb6f('0x12')](queryTrunks);case'IvrCampaigns':return db[_0x7bb352][_0xfb6f('0x12')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0xfb6f('0x15')],'where':{'sectionId':_0x338d33['id']},'raw':!![]})['then'](function(_0x18ef98){if(_0x18ef98){var _0x560cdd={'where':{'id':_[_0xfb6f('0x16')](_0x18ef98,'resourceId')},'raw':!![]};switch(_0x7bb352){case _0xfb6f('0x6'):_0x560cdd[_0xfb6f('0x17')][_0xfb6f('0x7')]=_0xfb6f('0x18');break;case'Campaign':_0x560cdd[_0xfb6f('0x17')][_0xfb6f('0x19')]=_0xfb6f('0x9');break;}return db[_0x7bb352][_0xfb6f('0x12')](_0x560cdd);}else{return[];}});}}else{return[];}})['then'](function(_0x346493){return _0x346493;});}function joinOrLeaveQueues(_0x5776de,_0x4ede55,_0x3e0e06,_0x203697){_0x5776de[_0x4ede55](util[_0xfb6f('0x1a')](_0xfb6f('0x1b'),_0x3e0e06,_0x203697[_0xfb6f('0x4')]));if(_0x203697[_0xfb6f('0x5')]){for(var _0x598082=0x0;_0x598082<_0x203697['Agents'][_0xfb6f('0x1c')];_0x598082+=0x1){_0x5776de[_0x4ede55](util[_0xfb6f('0x1a')](_0xfb6f('0x1d'),_0x203697[_0xfb6f('0x5')][_0x598082][_0xfb6f('0x4')]));}}}function joinOrLeave(_0x3b12d5,_0x569725,_0x2b08ec){var _0x1ddc8c;if(_0x3b12d5[_0xfb6f('0x1e')][_0xfb6f('0x1f')]['id']){db[_0xfb6f('0x6')][_0xfb6f('0x20')]({'attributes':['id',_0xfb6f('0x4'),_0xfb6f('0x7'),_0xfb6f('0x21')],'where':{'id':_0x3b12d5[_0xfb6f('0x1e')][_0xfb6f('0x1f')]['id']},'include':[{'model':db[_0xfb6f('0x22')],'as':_0xfb6f('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xfb6f('0x24')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xfb6f('0x25')],'as':_0xfb6f('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xfb6f('0x27')],'as':_0xfb6f('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xfb6f('0x29')],'as':_0xfb6f('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0xfb6f('0x2b')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xfb6f('0x2c')](function(_0x29797e){if(_0x29797e){_0x1ddc8c=_0x29797e;_0x3b12d5[_0x569725](util['format']('user:%s',_0x29797e[_0xfb6f('0x4')]));var _0x58d889=[];switch(_0x29797e[_0xfb6f('0x7')]){case _0xfb6f('0x2d'):_0x3b12d5[_0x569725](_0xfb6f('0x2e'));_0x3b12d5[_0x569725](_0xfb6f('0x2f'));if(queryQueues[_0xfb6f('0x30')]('include')){delete queryQueues[_0xfb6f('0x31')];}_0x58d889[_0xfb6f('0x32')](db[_0xfb6f('0x33')][_0xfb6f('0x12')](queryQueues));_0x58d889[_0xfb6f('0x32')](db[_0xfb6f('0x34')][_0xfb6f('0x12')](queryQueues));_0x58d889[_0xfb6f('0x32')](db['FaxQueue'][_0xfb6f('0x12')](queryQueues));_0x58d889['push'](db[_0xfb6f('0x35')][_0xfb6f('0x12')](queryQueues));_0x58d889[_0xfb6f('0x32')](db[_0xfb6f('0x36')]['findAll'](queryQueues));_0x58d889[_0xfb6f('0x32')](db[_0xfb6f('0x37')][_0xfb6f('0x12')](queryQueues));_0x58d889[_0xfb6f('0x32')](db['WhatsappQueue']['findAll'](queryQueues));_0x58d889[_0xfb6f('0x32')](db[_0xfb6f('0x6')][_0xfb6f('0x12')](queryTelephones));_0x58d889[_0xfb6f('0x32')](db['Trunk'][_0xfb6f('0x12')](queryTrunks));_0x58d889[_0xfb6f('0x32')](db['Campaign'][_0xfb6f('0x12')](queryCampaigns));_0x58d889[_0xfb6f('0x32')](db[_0xfb6f('0x6')][_0xfb6f('0x12')](queryAgents));break;case'user':_0x3b12d5[_0x569725](_0xfb6f('0x2e'));_0x3b12d5[_0x569725](_0xfb6f('0x2f'));_0x58d889[_0xfb6f('0x32')](getAssociatedResources(_0xfb6f('0xc'),_0x29797e['userProfileId'],'VoiceQueue'));_0x58d889[_0xfb6f('0x32')](getAssociatedResources(_0xfb6f('0x38'),_0x29797e[_0xfb6f('0x21')],_0xfb6f('0x34')));_0x58d889[_0xfb6f('0x32')](getAssociatedResources(_0xfb6f('0xd'),_0x29797e[_0xfb6f('0x21')],_0xfb6f('0x39')));_0x58d889[_0xfb6f('0x32')](getAssociatedResources(_0xfb6f('0xe'),_0x29797e[_0xfb6f('0x21')],_0xfb6f('0x35')));_0x58d889[_0xfb6f('0x32')](getAssociatedResources(_0xfb6f('0xf'),_0x29797e['userProfileId'],_0xfb6f('0x36')));_0x58d889['push'](getAssociatedResources(_0xfb6f('0x10'),_0x29797e[_0xfb6f('0x21')],_0xfb6f('0x37')));_0x58d889[_0xfb6f('0x32')](getAssociatedResources(_0xfb6f('0x11'),_0x29797e[_0xfb6f('0x21')],_0xfb6f('0x3a')));_0x58d889['push'](getAssociatedResources(_0xfb6f('0x13'),_0x29797e[_0xfb6f('0x21')],_0xfb6f('0x6')));_0x58d889[_0xfb6f('0x32')](getAssociatedResources('Trunks',_0x29797e[_0xfb6f('0x21')],_0xfb6f('0x3b')));_0x58d889['push'](getAssociatedResources('IvrCampaigns',_0x29797e[_0xfb6f('0x21')],_0xfb6f('0x3c')));_0x58d889['push'](db[_0xfb6f('0x6')][_0xfb6f('0x12')](queryAgents));break;case _0xfb6f('0x8'):_0x3b12d5[_0x569725](_0xfb6f('0x2e'));_0x3b12d5[_0x569725](_0xfb6f('0x2f'));_0x58d889['push'](_0x29797e[_0xfb6f('0x3d')]({'attributes':['id',_0xfb6f('0x4')]}));_0x58d889['push'](_0x29797e[_0xfb6f('0x3e')]({'attributes':['id',_0xfb6f('0x4')]}));_0x58d889['push'](_0x29797e[_0xfb6f('0x3f')]({'attributes':['id','name']}));_0x58d889[_0xfb6f('0x32')](_0x29797e[_0xfb6f('0x40')]({'attributes':['id',_0xfb6f('0x4')]}));_0x58d889['push'](_0x29797e[_0xfb6f('0x41')]({'attributes':['id',_0xfb6f('0x4')]}));_0x58d889[_0xfb6f('0x32')](_0x29797e[_0xfb6f('0x42')]({'attributes':['id',_0xfb6f('0x4')]}));_0x58d889[_0xfb6f('0x32')](_0x29797e[_0xfb6f('0x43')]({'attributes':['id',_0xfb6f('0x4')]}));break;}return BPromise[_0xfb6f('0x44')](_0x58d889);}})[_0xfb6f('0x2c')](function(_0x22bcd0){if(_0x22bcd0&&_0x22bcd0['length']){for(var _0x3da987=0x0;_0x3da987<_0x22bcd0[_0xfb6f('0x1c')];_0x3da987+=0x1){for(var _0x429859=0x0;_0x429859<_0x22bcd0[_0x3da987][_0xfb6f('0x1c')];_0x429859+=0x1){switch(_0x3da987){case 0x0:joinOrLeaveQueues(_0x3b12d5,_0x569725,_0xfb6f('0x45'),_0x22bcd0[_0x3da987][_0x429859]);break;case 0x1:joinOrLeaveQueues(_0x3b12d5,_0x569725,_0xfb6f('0x46'),_0x22bcd0[_0x3da987][_0x429859]);break;case 0x2:joinOrLeaveQueues(_0x3b12d5,_0x569725,_0xfb6f('0x47'),_0x22bcd0[_0x3da987][_0x429859]);break;case 0x3:joinOrLeaveQueues(_0x3b12d5,_0x569725,'sms',_0x22bcd0[_0x3da987][_0x429859]);break;case 0x4:joinOrLeaveQueues(_0x3b12d5,_0x569725,_0xfb6f('0x48'),_0x22bcd0[_0x3da987][_0x429859]);break;case 0x5:joinOrLeaveQueues(_0x3b12d5,_0x569725,_0xfb6f('0x49'),_0x22bcd0[_0x3da987][_0x429859]);break;case 0x6:joinOrLeaveQueues(_0x3b12d5,_0x569725,_0xfb6f('0x4a'),_0x22bcd0[_0x3da987][_0x429859]);break;case 0x7:if(_0x1ddc8c[_0xfb6f('0x7')]!==_0xfb6f('0x8'))_0x3b12d5[_0x569725](util[_0xfb6f('0x1a')](_0xfb6f('0x4b'),_0x22bcd0[_0x3da987][_0x429859][_0xfb6f('0x4')]));break;case 0x8:if(_0x1ddc8c[_0xfb6f('0x7')]!==_0xfb6f('0x8'))_0x3b12d5[_0x569725](util[_0xfb6f('0x1a')](_0xfb6f('0x4c'),_0x22bcd0[_0x3da987][_0x429859][_0xfb6f('0x4')]));break;case 0x9:if(_0x1ddc8c[_0xfb6f('0x7')]!==_0xfb6f('0x8'))_0x3b12d5[_0x569725](util[_0xfb6f('0x1a')](_0xfb6f('0x4d'),_0x22bcd0[_0x3da987][_0x429859][_0xfb6f('0x19')],_0x22bcd0[_0x3da987][_0x429859][_0xfb6f('0x4')]));break;case 0xa:_0x3b12d5[_0x569725](util[_0xfb6f('0x1a')](_0xfb6f('0x1d'),_0x22bcd0[_0x3da987][_0x429859][_0xfb6f('0x4')]));break;}}}}})[_0xfb6f('0x2c')](function(){if(_0x569725==='leave'){var _0x1bd934=_[_0xfb6f('0x16')](_0x1ddc8c[_0xfb6f('0x23')],'id');return _0x1ddc8c[_0xfb6f('0x4e')](_0x1bd934)[_0xfb6f('0x2c')](function(){for(var _0x110928=0x0;_0x110928<_0x1bd934[_0xfb6f('0x1c')];_0x110928+=0x1){_0x2b08ec['emit'](_0xfb6f('0x4f'),{'ChatInteractionId':Number(_0x1bd934[_0x110928]),'UserId':Number(_0x1ddc8c['id'])});}});}})[_0xfb6f('0x2c')](function(){if(_0x569725===_0xfb6f('0x50')){var _0x5ea939=_[_0xfb6f('0x16')](_0x1ddc8c[_0xfb6f('0x51')],'id');return _0x1ddc8c['removeMailInteractions'](_0x5ea939)['then'](function(){for(var _0x25831c=0x0;_0x25831c<_0x5ea939[_0xfb6f('0x1c')];_0x25831c+=0x1){_0x2b08ec[_0xfb6f('0x52')](_0xfb6f('0x53'),{'MailInteractionId':Number(_0x5ea939[_0x25831c]),'UserId':Number(_0x1ddc8c['id'])});}});}})['then'](function(){if(_0x569725===_0xfb6f('0x50')){var _0x4fd38c=_[_0xfb6f('0x16')](_0x1ddc8c[_0xfb6f('0x26')],'id');return _0x1ddc8c[_0xfb6f('0x54')](_0x4fd38c)[_0xfb6f('0x2c')](function(){for(var _0x893e21=0x0;_0x893e21<_0x4fd38c[_0xfb6f('0x1c')];_0x893e21+=0x1){_0x2b08ec[_0xfb6f('0x52')](_0xfb6f('0x55'),{'FaxInteractionId':Number(_0x4fd38c[_0x893e21]),'UserId':Number(_0x1ddc8c['id'])});}});}})[_0xfb6f('0x2c')](function(){if(_0x569725===_0xfb6f('0x50')){var _0x519f2e=_['map'](_0x1ddc8c[_0xfb6f('0x28')],'id');return _0x1ddc8c['removeSmsInteractions'](_0x519f2e)[_0xfb6f('0x2c')](function(){for(var _0x32141a=0x0;_0x32141a<_0x519f2e[_0xfb6f('0x1c')];_0x32141a+=0x1){_0x2b08ec[_0xfb6f('0x52')](_0xfb6f('0x56'),{'SmsInteractionId':Number(_0x519f2e[_0x32141a]),'UserId':Number(_0x1ddc8c['id'])});}});}})['then'](function(){if(_0x569725===_0xfb6f('0x50')){var _0x3a83a9=_['map'](_0x1ddc8c[_0xfb6f('0x2a')],'id');return _0x1ddc8c['removeOpenchannelInteractions'](_0x3a83a9)['then'](function(){for(var _0x13403d=0x0;_0x13403d<_0x3a83a9[_0xfb6f('0x1c')];_0x13403d+=0x1){_0x2b08ec[_0xfb6f('0x52')](_0xfb6f('0x57'),{'OpenchannelInteractionId':Number(_0x3a83a9[_0x13403d]),'UserId':Number(_0x1ddc8c['id'])});}});}})[_0xfb6f('0x2c')](function(){if(_0x569725===_0xfb6f('0x50')){var _0x21aabd=_[_0xfb6f('0x16')](_0x1ddc8c[_0xfb6f('0x58')],'id');return _0x1ddc8c['removeWhatsappInteractions'](_0x21aabd)[_0xfb6f('0x2c')](function(){for(var _0x55e6db=0x0;_0x55e6db<_0x21aabd['length'];_0x55e6db+=0x1){_0x2b08ec['emit'](_0xfb6f('0x59'),{'WhatsappInteractionId':Number(_0x21aabd[_0x55e6db]),'UserId':Number(_0x1ddc8c['id'])});}});}})['catch'](function(_0xb936f1){_0x3b12d5[_0xfb6f('0x5a')](_0xb936f1);});}}function onDisconnect(_0x14bbae,_0x5c200d){joinOrLeave(_0x14bbae,_0xfb6f('0x50'),_0x5c200d);}function onConnect(_0x5e70f7){joinOrLeave(_0x5e70f7,_0xfb6f('0x5b'));}exports[_0xfb6f('0x5c')]=function(_0x314409){_0x314409['on'](_0xfb6f('0x5d'),function(_0x4f01d8){_0x4f01d8[_0xfb6f('0x5e')](0x0);_0x4f01d8[_0xfb6f('0x5f')]=_0x4f01d8[_0xfb6f('0x60')][_0xfb6f('0x5d')][_0xfb6f('0x61')]+':'+_0x4f01d8[_0xfb6f('0x60')][_0xfb6f('0x5d')][_0xfb6f('0x62')];_0x4f01d8[_0xfb6f('0x63')]=new Date();_0x4f01d8[_0xfb6f('0x5a')]=function(_0x149326){console['log'](_0xfb6f('0x64')+_0x4f01d8['nsp'][_0xfb6f('0x4')]+'['+_0x4f01d8[_0xfb6f('0x5f')]+']',_0x149326);};_0x4f01d8['on']('disconnect',function(){onDisconnect(_0x4f01d8,_0x314409);_0x4f01d8['log'](_0xfb6f('0x65'));});onConnect(_0x4f01d8);_0x4f01d8[_0xfb6f('0x5a')](_0xfb6f('0x66'));});};