ec817afbc12a2fbafb4ef0960529ec6df0b2a53f
[motion2.git] / server / components / realtime / agents.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 _0x687b=['openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','mailStatus','chatStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','role','faxStatusTime','openchannelStatusTime','chatCapacity','chatCurrentCapacity','faxCurrentCapacity','whatsappCurrentCapacity','destconnectedlinenum','onhold','lodash','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','every','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','chatStatus','faxStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','pause','getAgentStatus','isArray','startCase','Queue','map','findOne','getAgents','all','flatten','uniq','value','filter','busy','getAgentIdsByStatus','resolve','includes','User','findAll','whatsappPause','pauseType','find','globalStatus','catch','getSortedAgentsIdsByStatus','split','fields','order','startsWith','DESC','ASC','fullname,internal','fullname','substring','internal','validateSortParameter','sort','toLowerCase','userpic','online','lastLoginAt','lastPauseAt','address'];(function(_0x47a44a,_0x5ce11d){var _0x3c8653=function(_0x35886e){while(--_0x35886e){_0x47a44a['push'](_0x47a44a['shift']());}};_0x3c8653(++_0x5ce11d);}(_0x687b,0x14a));var _0xb687=function(_0x135904,_0x1e252b){_0x135904=_0x135904-0x0;var _0x1ce7d5=_0x687b[_0x135904];return _0x1ce7d5;};'use strict';var _=require(_0xb687('0x0'));var jayson=require(_0xb687('0x1'));var db=require(_0xb687('0x2'))['db'];var amiClient=jayson[_0xb687('0x3')]['http']({'port':0x232a});var routingClient=jayson['client'][_0xb687('0x4')]({'port':0x232c});function isAgentPaused(_0x2a4a7c,_0x36c468){var _0x31bd0d=[_0x2a4a7c[_0xb687('0x5')],_0x2a4a7c[_0xb687('0x6')],_0x2a4a7c[_0xb687('0x7')],_0x2a4a7c[_0xb687('0x8')],_0x2a4a7c[_0xb687('0x9')],_0x2a4a7c[_0xb687('0xa')],_0x2a4a7c['whatsappPause']];if(!_0x36c468)return _[_0xb687('0xb')](_0x31bd0d);var _0xd40346=_['filter'](_0x31bd0d);return _0xd40346[_0xb687('0xc')]>0x0&&_0xd40346[_0xb687('0xc')]<_0x31bd0d[_0xb687('0xc')]?!![]:![];}function isIdle(_0x15dc9a){return _0x15dc9a===_0xb687('0xd')||_0x15dc9a===_0xb687('0xe')||_0x15dc9a===_0xb687('0xf')||_0x15dc9a===_0xb687('0x10')||_[_0xb687('0x11')](_0x15dc9a);}function isAgentIdle(_0x5103b9){if(_0x5103b9[_0xb687('0x12')]!==_0xb687('0xd')&&_0x5103b9[_0xb687('0xa')]){_0x5103b9[_0xb687('0x12')]='pause';return![];}return _['every']([_0x5103b9[_0xb687('0x13')],_0x5103b9[_0xb687('0x14')],_0x5103b9['mailStatus'],_0x5103b9[_0xb687('0x15')],_0x5103b9[_0xb687('0x16')],_0x5103b9[_0xb687('0x12')],_0x5103b9[_0xb687('0x17')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xb687('0x18')](_0xb687('0x19'),{})[_0xb687('0x1a')](function(_0x141375){if(_0x141375[_0xb687('0x1b')]){throw new Error(_0xb687('0x1c'));}var _0x25124a=_0x141375[_0xb687('0x1d')];return routingClient['request'](_0xb687('0x19'),{})[_0xb687('0x1a')](function(_0x30d370){if(_0x30d370['error']){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x12eff1=_0x30d370[_0xb687('0x1d')];return _[_0xb687('0x1e')]({},_0x25124a,_0x12eff1);});})['catch'](function(_0x42cdd2){throw _0x42cdd2;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x1bd2bf){var _0x243236=_0xb687('0xe');if(isAgentPaused(_0x1bd2bf))_0x243236=_0xb687('0x1f');else if(isAgentPaused(_0x1bd2bf,!![]))_0x243236='*pause';else if(isAgentIdle(_0x1bd2bf))_0x243236=_0xb687('0xd');else _0x243236='busy';return _0x243236;}exports[_0xb687('0x20')]=getAgentStatus;function getAgentIdsByQueues(_0x90e892,_0x274241){var _0x546fde=_[_0xb687('0x21')](_0x90e892)?_0x90e892:[_0x90e892];var _0x491623=_[_0xb687('0x22')](_0x274241)+_0xb687('0x23');var _0xbf6c58=_[_0xb687('0x24')](_0x546fde,function(_0xf48ba4){return db[_0x491623][_0xb687('0x25')]({'where':{'id':_0xf48ba4}})['then'](function(_0xf45db0){if(!_0xf45db0)return[];return _0xf45db0[_0xb687('0x26')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xb687('0x27')](_0xbf6c58)[_0xb687('0x1a')](function(_0x290cf7){var _0x4136c9=_(_0x290cf7)[_0xb687('0x28')]()[_0xb687('0x24')]('id')[_0xb687('0x29')]()[_0xb687('0x2a')]();return _0x4136c9;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x3712cf,_0x192966,_0x392721){try{if(_0x192966[_0xb687('0xc')]>0x0){_0x3712cf=_0x3712cf[_0xb687('0x2b')](function(_0x173c58){return _0x192966['includes'](_0x173c58['id']);});}var _0x28b69a=_0x3712cf['filter'](function(_0x360429){var _0x40f35c=_0xb687('0x2c');if(isAgentIdle(_0x360429)){_0x40f35c=_0xb687('0xd');}return _0x40f35c===_0x392721;});return _[_0xb687('0x24')](_0x28b69a,'id');}catch(_0x43d20d){throw _0x43d20d;}}exports[_0xb687('0x2d')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x556815,_0x3da2be,_0xe3428f){return Promise[_0xb687('0x2e')]()[_0xb687('0x1a')](function(){if(_0x3da2be[_0xb687('0xc')]>0x0){_0x556815=_0x556815[_0xb687('0x2b')](function(_0x44be88){return _0x3da2be[_0xb687('0x2f')](_0x44be88['id']);});}return _0x556815;})[_0xb687('0x1a')](function(){return db[_0xb687('0x30')][_0xb687('0x31')]({'attributes':['id','name','fullname',_0xb687('0x5'),_0xb687('0x6'),_0xb687('0x7'),_0xb687('0x8'),'smsPause','voicePause',_0xb687('0x32'),_0xb687('0x33')],'where':{'id':{'$in':_['map'](_0x556815,'id')}},'raw':!![]});})[_0xb687('0x1a')](function(_0x449074){return _0x449074['map'](function(_0x387448){var _0x5c4964=_[_0xb687('0x34')](_0x556815,['id',_0x387448['id']]);var _0x24f34e=filterAgentAttributes(_0x5c4964);_[_0xb687('0x1e')](_0x387448,_0x24f34e);_0x387448[_0xb687('0x35')]=getAgentStatus(_0x387448);return _0x387448;});})[_0xb687('0x1a')](function(_0x28087e){var _0x5f59d0=sortAgentsByStatus(_0x28087e,_0xe3428f);return _[_0xb687('0x24')](_0x5f59d0,'id');})[_0xb687('0x36')](function(_0x2a73df){throw _0x2a73df;});}exports[_0xb687('0x37')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x58b246){var _0x43cd9f={'fields':[],'order':null};var _0x100f4a=_0x58b246[_0xb687('0x38')](',');_0x43cd9f[_0xb687('0x39')]=_[_0xb687('0x2b')](_0x100f4a,function(_0x58c214){if(!_0x58c214[_0xb687('0x2f')](_0xb687('0x35'))){return!![];}_0x43cd9f[_0xb687('0x3a')]=_[_0xb687('0x3b')](_0x58c214,'-')?_0xb687('0x3c'):_0xb687('0x3d');return![];});return _0x43cd9f;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x5ad577){if(!_0x5ad577){_0x5ad577=_0xb687('0x3e');}if(_0x5ad577['includes'](_0xb687('0x3f'))&&!_0x5ad577[_0xb687('0x2f')]('internal')){var _0x3e5fc6=_0x5ad577[_0xb687('0x40')](0x0,_0x5ad577['indexOf'](_0xb687('0x3f')));_0x5ad577+=','+_0x3e5fc6+_0xb687('0x41');}return _0x5ad577;}exports[_0xb687('0x42')]=validateSortParameter;function sortAgentsByStatus(_0x5253df,_0x66fabe){var _0x9cffb2=_0x5253df[_0xb687('0x43')](function(_0x75102a,_0x140388){if(_0x75102a[_0xb687('0x35')]===_0x140388[_0xb687('0x35')]){if(_0x75102a['globalStatus']===_0xb687('0x1f')){if(_0x66fabe==='DESC'){return(_0x75102a['pauseType']||'')<(_0x140388[_0xb687('0x33')]||'')||_0x75102a[_0xb687('0x3f')]['toLowerCase']()>_0x140388[_0xb687('0x3f')]['toLowerCase']()?0x1:-0x1;}else{return(_0x75102a[_0xb687('0x33')]||'')<(_0x140388[_0xb687('0x33')]||'')||_0x75102a['fullname'][_0xb687('0x44')]()>_0x140388[_0xb687('0x3f')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x66fabe===_0xb687('0x3c')){return _0x75102a[_0xb687('0x3f')][_0xb687('0x44')]()<_0x140388[_0xb687('0x3f')][_0xb687('0x44')]()?0x1:-0x1;}else{return _0x75102a[_0xb687('0x3f')][_0xb687('0x44')]()<_0x140388[_0xb687('0x3f')][_0xb687('0x44')]()?-0x1:0x1;}}}else{if(_0x66fabe===_0xb687('0x3c')){return _0x75102a[_0xb687('0x35')]<_0x140388[_0xb687('0x35')]?0x1:-0x1;}else{return _0x75102a['globalStatus']<_0x140388[_0xb687('0x35')]?-0x1:0x1;}}});return _0x9cffb2;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x3da453){var _0x1edb1a=[_0xb687('0x45'),_0xb687('0x46'),_0xb687('0x47'),_0xb687('0x48'),'pauseType','lastPauseAt',_0xb687('0x41'),_0xb687('0x49'),_0xb687('0x5'),_0xb687('0x8'),'mailPause',_0xb687('0x9'),_0xb687('0x32'),_0xb687('0x6'),_0xb687('0xa'),'chatCapacity',_0xb687('0x4a'),_0xb687('0x4b'),_0xb687('0x4c'),_0xb687('0x4d'),'faxCapacity','chatCurrentCapacity',_0xb687('0x4e'),_0xb687('0x4f'),_0xb687('0x50'),'whatsappCurrentCapacity','faxCurrentCapacity',_0xb687('0x13'),_0xb687('0x15'),_0xb687('0x51'),_0xb687('0x16'),_0xb687('0x17'),_0xb687('0x14'),_0xb687('0x12'),_0xb687('0x52'),'openchannelStatusTime',_0xb687('0x53'),_0xb687('0x54'),_0xb687('0x55'),'faxStatusTime','voiceStatusTime','queue','destconnectedlinenum',_0xb687('0x56'),_0xb687('0x57'),_0xb687('0x58'),_0xb687('0x59')];var _0x1ddfd4=[_0xb687('0x5'),_0xb687('0x8'),_0xb687('0x7'),_0xb687('0x9'),_0xb687('0x32'),_0xb687('0x6'),_0xb687('0xa'),_0xb687('0x46')];var _0xbffa37=_(_0x3da453)[_0xb687('0x5a')](_0x1ddfd4)[_0xb687('0x5b')](_0x1edb1a)[_0xb687('0x2a')]();return _0xbffa37;}exports['filterAgentAttributes']=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id','name',_0xb687('0x3f'),_0xb687('0x5c'),_0xb687('0x41'),_0xb687('0x46'),'globalStatus',_0xb687('0x45'),_0xb687('0x47'),'pauseType',_0xb687('0x48'),'faxPause',_0xb687('0x5'),_0xb687('0x7'),'openchannelPause','smsPause',_0xb687('0xa'),_0xb687('0x32'),'chatStatus',_0xb687('0x14'),_0xb687('0x51'),_0xb687('0x15'),'smsStatus',_0xb687('0x12'),'whatsappStatus',_0xb687('0x52'),_0xb687('0x5d'),_0xb687('0x53'),_0xb687('0x5e'),_0xb687('0x54'),'voiceStatusTime','whatsappStatusTime',_0xb687('0x5f'),'faxCapacity','mailCapacity','openchannelCapacity','smsCapacity',_0xb687('0x4d'),_0xb687('0x60'),_0xb687('0x61'),_0xb687('0x4f'),_0xb687('0x4e'),_0xb687('0x50'),_0xb687('0x62'),_0xb687('0x57'),_0xb687('0x58'),_0xb687('0x63'),_0xb687('0x64'),'queue','routealias',_0xb687('0x56')];}exports['getRealtimeAgentsQueryFields']=getRealtimeAgentsQueryFields;