03639a9c008f0abf3136db26e7977472168d5a8b
[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 _0xf65d=['emit','user_has_chat_interactions:remove','leave','MailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','DISCONNECTED','CONNECTED','../mysqldb','./environment','name','User','role','agent','telephone','type','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','where','Campaign','%s:queue:%s','Agents','length','format','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','include','push','ChatQueue','FaxQueue','SmsQueue','WhatsappQueue','Trunk','user','VoiceQueues','MailQueues','MailQueue','Telephones','getVoiceQueues','getChatQueues','getSmsQueues','getWhatsappQueues','all','voice','chat','fax','sms','openchannel','telephone:%s','campaign:%s:%s'];(function(_0x5f065d,_0x571391){var _0x198cba=function(_0x53a5d3){while(--_0x53a5d3){_0x5f065d['push'](_0x5f065d['shift']());}};_0x198cba(++_0x571391);}(_0xf65d,0x13a));var _0xdf65=function(_0x2642cb,_0x4b917f){_0x2642cb=_0x2642cb-0x0;var _0xe6e41=_0xf65d[_0x2642cb];return _0xe6e41;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require('bluebird');var db=require(_0xdf65('0x0'))['db'];var config=require(_0xdf65('0x1'));var queryQueues={'attributes':['id',_0xdf65('0x2')],'include':[{'as':'Agents','model':db[_0xdf65('0x3')],'attributes':['id','name',_0xdf65('0x4')],'raw':!![],'where':{'role':_0xdf65('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xdf65('0x2')],'where':{'role':_0xdf65('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0xdf65('0x2')]};var queryAgents={'raw':!![],'attributes':['id',_0xdf65('0x2')],'where':{'role':_0xdf65('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xdf65('0x2'),_0xdf65('0x7')],'where':{'type':'ivr'}};function getAssociatedResources(_0x4abc55,_0x42e290,_0x2a83b4){return db[_0xdf65('0x8')][_0xdf65('0x9')]({'where':{'name':_0x4abc55,'userProfileId':_0x42e290},'raw':!![]})[_0xdf65('0xa')](function(_0x8591b){if(_0x8591b){if(_0x8591b[_0xdf65('0xb')]){switch(_0x4abc55){case'VoiceQueues':case _0xdf65('0xc'):case _0xdf65('0xd'):case _0xdf65('0xe'):case'MailQueues':case _0xdf65('0xf'):case _0xdf65('0x10'):return db[_0x2a83b4][_0xdf65('0x11')](queryQueues);case'Telephones':return db[_0x2a83b4][_0xdf65('0x11')](queryTelephones);case _0xdf65('0x12'):return db[_0x2a83b4]['findAll'](queryTrunks);case _0xdf65('0x13'):return db[_0x2a83b4][_0xdf65('0x11')](queryCampaigns);}}else{return db[_0xdf65('0x14')][_0xdf65('0x11')]({'attributes':['resourceId'],'where':{'sectionId':_0x8591b['id']},'raw':!![]})[_0xdf65('0xa')](function(_0x5e2dcc){if(_0x5e2dcc){var _0xff8925={'where':{'id':_[_0xdf65('0x15')](_0x5e2dcc,_0xdf65('0x16'))},'raw':!![]};switch(_0x2a83b4){case _0xdf65('0x3'):_0xff8925[_0xdf65('0x17')][_0xdf65('0x4')]=_0xdf65('0x6');break;case _0xdf65('0x18'):_0xff8925[_0xdf65('0x17')]['type']='ivr';break;}return db[_0x2a83b4][_0xdf65('0x11')](_0xff8925);}else{return[];}});}}else{return[];}})[_0xdf65('0xa')](function(_0x4d6907){return _0x4d6907;});}function joinOrLeaveQueues(_0x184a26,_0x41c5f5,_0x6ecb4f,_0x12e704){_0x184a26[_0x41c5f5](util['format'](_0xdf65('0x19'),_0x6ecb4f,_0x12e704[_0xdf65('0x2')]));if(_0x12e704['Agents']){for(var _0x1ebdf3=0x0;_0x1ebdf3<_0x12e704[_0xdf65('0x1a')][_0xdf65('0x1b')];_0x1ebdf3+=0x1){_0x184a26[_0x41c5f5](util[_0xdf65('0x1c')]('user:%s',_0x12e704[_0xdf65('0x1a')][_0x1ebdf3]['name']));}}}function joinOrLeave(_0x332c50,_0x64d901,_0x436b25){var _0x5ddd5a;if(_0x332c50[_0xdf65('0x1d')][_0xdf65('0x1e')]['id']){db[_0xdf65('0x3')][_0xdf65('0x1f')]({'attributes':['id',_0xdf65('0x2'),_0xdf65('0x4'),_0xdf65('0x20')],'where':{'id':_0x332c50[_0xdf65('0x1d')][_0xdf65('0x1e')]['id']},'include':[{'model':db[_0xdf65('0x21')],'as':_0xdf65('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xdf65('0x23')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xdf65('0x24')],'as':_0xdf65('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xdf65('0x26')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xdf65('0x27')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xdf65('0x28')],'as':_0xdf65('0x29'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x5ecb0d){if(_0x5ecb0d){_0x5ddd5a=_0x5ecb0d;_0x332c50[_0x64d901](util['format'](_0xdf65('0x2a'),_0x5ecb0d[_0xdf65('0x2')]));var _0x4a9701=[];switch(_0x5ecb0d[_0xdf65('0x4')]){case _0xdf65('0x2b'):_0x332c50[_0x64d901](_0xdf65('0x2c'));_0x332c50[_0x64d901](_0xdf65('0x2d'));if(queryQueues['hasOwnProperty'](_0xdf65('0x2e'))){delete queryQueues[_0xdf65('0x2e')];}_0x4a9701[_0xdf65('0x2f')](db['VoiceQueue']['findAll'](queryQueues));_0x4a9701['push'](db[_0xdf65('0x30')][_0xdf65('0x11')](queryQueues));_0x4a9701['push'](db[_0xdf65('0x31')][_0xdf65('0x11')](queryQueues));_0x4a9701[_0xdf65('0x2f')](db[_0xdf65('0x32')][_0xdf65('0x11')](queryQueues));_0x4a9701[_0xdf65('0x2f')](db['MailQueue'][_0xdf65('0x11')](queryQueues));_0x4a9701[_0xdf65('0x2f')](db['OpenchannelQueue'][_0xdf65('0x11')](queryQueues));_0x4a9701['push'](db[_0xdf65('0x33')][_0xdf65('0x11')](queryQueues));_0x4a9701[_0xdf65('0x2f')](db['User'][_0xdf65('0x11')](queryTelephones));_0x4a9701[_0xdf65('0x2f')](db[_0xdf65('0x34')][_0xdf65('0x11')](queryTrunks));_0x4a9701[_0xdf65('0x2f')](db[_0xdf65('0x18')][_0xdf65('0x11')](queryCampaigns));_0x4a9701[_0xdf65('0x2f')](db['User']['findAll'](queryAgents));break;case _0xdf65('0x35'):_0x332c50[_0x64d901]('voice:inbound');_0x332c50[_0x64d901](_0xdf65('0x2d'));_0x4a9701[_0xdf65('0x2f')](getAssociatedResources(_0xdf65('0x36'),_0x5ecb0d[_0xdf65('0x20')],'VoiceQueue'));_0x4a9701['push'](getAssociatedResources(_0xdf65('0xc'),_0x5ecb0d[_0xdf65('0x20')],_0xdf65('0x30')));_0x4a9701['push'](getAssociatedResources('FaxQueues',_0x5ecb0d[_0xdf65('0x20')],_0xdf65('0x31')));_0x4a9701[_0xdf65('0x2f')](getAssociatedResources(_0xdf65('0xe'),_0x5ecb0d['userProfileId'],_0xdf65('0x32')));_0x4a9701[_0xdf65('0x2f')](getAssociatedResources(_0xdf65('0x37'),_0x5ecb0d[_0xdf65('0x20')],_0xdf65('0x38')));_0x4a9701[_0xdf65('0x2f')](getAssociatedResources('OpenchannelQueues',_0x5ecb0d[_0xdf65('0x20')],'OpenchannelQueue'));_0x4a9701[_0xdf65('0x2f')](getAssociatedResources(_0xdf65('0x10'),_0x5ecb0d[_0xdf65('0x20')],_0xdf65('0x33')));_0x4a9701['push'](getAssociatedResources(_0xdf65('0x39'),_0x5ecb0d[_0xdf65('0x20')],'User'));_0x4a9701[_0xdf65('0x2f')](getAssociatedResources(_0xdf65('0x12'),_0x5ecb0d['userProfileId'],_0xdf65('0x34')));_0x4a9701['push'](getAssociatedResources(_0xdf65('0x13'),_0x5ecb0d[_0xdf65('0x20')],_0xdf65('0x18')));_0x4a9701['push'](db[_0xdf65('0x3')][_0xdf65('0x11')](queryAgents));break;case _0xdf65('0x5'):_0x332c50[_0x64d901](_0xdf65('0x2c'));_0x332c50[_0x64d901](_0xdf65('0x2d'));_0x4a9701[_0xdf65('0x2f')](_0x5ecb0d[_0xdf65('0x3a')]({'attributes':['id','name']}));_0x4a9701[_0xdf65('0x2f')](_0x5ecb0d[_0xdf65('0x3b')]({'attributes':['id',_0xdf65('0x2')]}));_0x4a9701[_0xdf65('0x2f')](_0x5ecb0d['getFaxQueues']({'attributes':['id',_0xdf65('0x2')]}));_0x4a9701[_0xdf65('0x2f')](_0x5ecb0d[_0xdf65('0x3c')]({'attributes':['id','name']}));_0x4a9701['push'](_0x5ecb0d['getMailQueues']({'attributes':['id',_0xdf65('0x2')]}));_0x4a9701[_0xdf65('0x2f')](_0x5ecb0d['getOpenchannelQueues']({'attributes':['id','name']}));_0x4a9701[_0xdf65('0x2f')](_0x5ecb0d[_0xdf65('0x3d')]({'attributes':['id','name']}));break;}return BPromise[_0xdf65('0x3e')](_0x4a9701);}})['then'](function(_0x5623f1){if(_0x5623f1&&_0x5623f1[_0xdf65('0x1b')]){for(var _0x3a1429=0x0;_0x3a1429<_0x5623f1[_0xdf65('0x1b')];_0x3a1429+=0x1){for(var _0x251c0c=0x0;_0x251c0c<_0x5623f1[_0x3a1429][_0xdf65('0x1b')];_0x251c0c+=0x1){switch(_0x3a1429){case 0x0:joinOrLeaveQueues(_0x332c50,_0x64d901,_0xdf65('0x3f'),_0x5623f1[_0x3a1429][_0x251c0c]);break;case 0x1:joinOrLeaveQueues(_0x332c50,_0x64d901,_0xdf65('0x40'),_0x5623f1[_0x3a1429][_0x251c0c]);break;case 0x2:joinOrLeaveQueues(_0x332c50,_0x64d901,_0xdf65('0x41'),_0x5623f1[_0x3a1429][_0x251c0c]);break;case 0x3:joinOrLeaveQueues(_0x332c50,_0x64d901,_0xdf65('0x42'),_0x5623f1[_0x3a1429][_0x251c0c]);break;case 0x4:joinOrLeaveQueues(_0x332c50,_0x64d901,'mail',_0x5623f1[_0x3a1429][_0x251c0c]);break;case 0x5:joinOrLeaveQueues(_0x332c50,_0x64d901,_0xdf65('0x43'),_0x5623f1[_0x3a1429][_0x251c0c]);break;case 0x6:joinOrLeaveQueues(_0x332c50,_0x64d901,'whatsapp',_0x5623f1[_0x3a1429][_0x251c0c]);break;case 0x7:if(_0x5ddd5a['role']!==_0xdf65('0x5'))_0x332c50[_0x64d901](util[_0xdf65('0x1c')](_0xdf65('0x44'),_0x5623f1[_0x3a1429][_0x251c0c]['name']));break;case 0x8:if(_0x5ddd5a[_0xdf65('0x4')]!=='agent')_0x332c50[_0x64d901](util[_0xdf65('0x1c')]('trunk:%s',_0x5623f1[_0x3a1429][_0x251c0c][_0xdf65('0x2')]));break;case 0x9:if(_0x5ddd5a['role']!=='agent')_0x332c50[_0x64d901](util[_0xdf65('0x1c')](_0xdf65('0x45'),_0x5623f1[_0x3a1429][_0x251c0c][_0xdf65('0x7')],_0x5623f1[_0x3a1429][_0x251c0c]['name']));break;case 0xa:_0x332c50[_0x64d901](util[_0xdf65('0x1c')](_0xdf65('0x2a'),_0x5623f1[_0x3a1429][_0x251c0c]['name']));break;}}}}})[_0xdf65('0xa')](function(){if(_0x64d901==='leave'){var _0x5ca1f7=_[_0xdf65('0x15')](_0x5ddd5a[_0xdf65('0x22')],'id');return _0x5ddd5a['removeChatInteractions'](_0x5ca1f7)['then'](function(){for(var _0x20e01a=0x0;_0x20e01a<_0x5ca1f7[_0xdf65('0x1b')];_0x20e01a+=0x1){_0x436b25[_0xdf65('0x46')](_0xdf65('0x47'),{'ChatInteractionId':Number(_0x5ca1f7[_0x20e01a]),'UserId':Number(_0x5ddd5a['id'])});}});}})['then'](function(){if(_0x64d901===_0xdf65('0x48')){var _0x34bc67=_['map'](_0x5ddd5a[_0xdf65('0x49')],'id');return _0x5ddd5a['removeMailInteractions'](_0x34bc67)[_0xdf65('0xa')](function(){for(var _0x5ce79f=0x0;_0x5ce79f<_0x34bc67[_0xdf65('0x1b')];_0x5ce79f+=0x1){_0x436b25[_0xdf65('0x46')](_0xdf65('0x4a'),{'MailInteractionId':Number(_0x34bc67[_0x5ce79f]),'UserId':Number(_0x5ddd5a['id'])});}});}})[_0xdf65('0xa')](function(){if(_0x64d901===_0xdf65('0x48')){var _0x22b9d9=_['map'](_0x5ddd5a[_0xdf65('0x25')],'id');return _0x5ddd5a[_0xdf65('0x4b')](_0x22b9d9)[_0xdf65('0xa')](function(){for(var _0x28e052=0x0;_0x28e052<_0x22b9d9[_0xdf65('0x1b')];_0x28e052+=0x1){_0x436b25[_0xdf65('0x46')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x22b9d9[_0x28e052]),'UserId':Number(_0x5ddd5a['id'])});}});}})[_0xdf65('0xa')](function(){if(_0x64d901===_0xdf65('0x48')){var _0x506746=_[_0xdf65('0x15')](_0x5ddd5a[_0xdf65('0x4c')],'id');return _0x5ddd5a[_0xdf65('0x4d')](_0x506746)[_0xdf65('0xa')](function(){for(var _0xaa480c=0x0;_0xaa480c<_0x506746['length'];_0xaa480c+=0x1){_0x436b25[_0xdf65('0x46')](_0xdf65('0x4e'),{'SmsInteractionId':Number(_0x506746[_0xaa480c]),'UserId':Number(_0x5ddd5a['id'])});}});}})['then'](function(){if(_0x64d901===_0xdf65('0x48')){var _0x4ab149=_[_0xdf65('0x15')](_0x5ddd5a['OpenchannelInteractions'],'id');return _0x5ddd5a[_0xdf65('0x4f')](_0x4ab149)[_0xdf65('0xa')](function(){for(var _0x5b2e21=0x0;_0x5b2e21<_0x4ab149['length'];_0x5b2e21+=0x1){_0x436b25[_0xdf65('0x46')](_0xdf65('0x50'),{'OpenchannelInteractionId':Number(_0x4ab149[_0x5b2e21]),'UserId':Number(_0x5ddd5a['id'])});}});}})['then'](function(){if(_0x64d901===_0xdf65('0x48')){var _0x21bd18=_[_0xdf65('0x15')](_0x5ddd5a[_0xdf65('0x29')],'id');return _0x5ddd5a[_0xdf65('0x51')](_0x21bd18)[_0xdf65('0xa')](function(){for(var _0x2571ce=0x0;_0x2571ce<_0x21bd18[_0xdf65('0x1b')];_0x2571ce+=0x1){_0x436b25['emit'](_0xdf65('0x52'),{'WhatsappInteractionId':Number(_0x21bd18[_0x2571ce]),'UserId':Number(_0x5ddd5a['id'])});}});}})[_0xdf65('0x53')](function(_0x50bdd9){_0x332c50[_0xdf65('0x54')](_0x50bdd9);});}}function onDisconnect(_0x3c96dc,_0x9b3c4){joinOrLeave(_0x3c96dc,_0xdf65('0x48'),_0x9b3c4);}function onConnect(_0xbd3cf0){joinOrLeave(_0xbd3cf0,_0xdf65('0x55'));}exports[_0xdf65('0x56')]=function(_0x3ab53f){_0x3ab53f['on'](_0xdf65('0x57'),function(_0x2a4c7d){_0x2a4c7d['setMaxListeners'](0x0);_0x2a4c7d[_0xdf65('0x58')]=_0x2a4c7d[_0xdf65('0x59')][_0xdf65('0x57')][_0xdf65('0x5a')]+':'+_0x2a4c7d[_0xdf65('0x59')][_0xdf65('0x57')][_0xdf65('0x5b')];_0x2a4c7d[_0xdf65('0x5c')]=new Date();_0x2a4c7d['log']=function(_0x58b9f5){console[_0xdf65('0x54')](_0xdf65('0x5d')+_0x2a4c7d['nsp']['name']+'['+_0x2a4c7d[_0xdf65('0x58')]+']',_0x58b9f5);};_0x2a4c7d['on']('disconnect',function(){onDisconnect(_0x2a4c7d,_0x3ab53f);_0x2a4c7d[_0xdf65('0x54')](_0xdf65('0x5e'));});onConnect(_0x2a4c7d);_0x2a4c7d['log'](_0xdf65('0x5f'));});};