95ddeebc4593a77abcc51f7ccd0a9f252252bf1f
[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 _0xd61a=['phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','value','filterAgentAttributes','lodash','jayson/promise','../../mysqldb','client','chatPause','faxPause','smsPause','voicePause','every','filter','length','idle','unavailable','ringing','isNil','voiceStatus','pause','chatStatus','openchannelStatus','smsStatus','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','getRealtimeAgents','isArray','Queue','map','findOne','getAgents','all','flatten','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','User','findAll','name','fullname','mailPause','openchannelPause','whatsappPause','pauseType','find','globalStatus','catch','order','startsWith','ASC','getUpdatedSortOptions','substring','indexOf','validateSortParameter','DESC','toLowerCase','sortAgentsByStatus','online','lastLoginAt','lastPauseAt','internal','address','chatCapacity','mailCapacity','smsCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','faxCurrentCapacity','whatsappStatus','faxStatus','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','queue','destconnectedlinenum','screenrecording'];(function(_0x3ac69a,_0x3263ad){var _0x2f403b=function(_0x1cd460){while(--_0x1cd460){_0x3ac69a['push'](_0x3ac69a['shift']());}};_0x2f403b(++_0x3263ad);}(_0xd61a,0x1c8));var _0xad61=function(_0x4d04d6,_0x38ae19){_0x4d04d6=_0x4d04d6-0x0;var _0x2e937a=_0xd61a[_0x4d04d6];return _0x2e937a;};'use strict';var _=require(_0xad61('0x0'));var jayson=require(_0xad61('0x1'));var db=require(_0xad61('0x2'))['db'];var amiClient=jayson[_0xad61('0x3')]['http']({'port':0x232a});var routingClient=jayson[_0xad61('0x3')]['http']({'port':0x232c});function isAgentPaused(_0x17b6a2,_0x38c2f4){var _0x452603=[_0x17b6a2[_0xad61('0x4')],_0x17b6a2[_0xad61('0x5')],_0x17b6a2['mailPause'],_0x17b6a2['openchannelPause'],_0x17b6a2[_0xad61('0x6')],_0x17b6a2[_0xad61('0x7')],_0x17b6a2['whatsappPause']];if(!_0x38c2f4)return _[_0xad61('0x8')](_0x452603);var _0x319f70=_[_0xad61('0x9')](_0x452603);return _0x319f70[_0xad61('0xa')]>0x0&&_0x319f70[_0xad61('0xa')]<_0x452603[_0xad61('0xa')]?!![]:![];}function isIdle(_0x3b6d84){return _0x3b6d84===_0xad61('0xb')||_0x3b6d84==='unknown'||_0x3b6d84===_0xad61('0xc')||_0x3b6d84===_0xad61('0xd')||_[_0xad61('0xe')](_0x3b6d84);}function isAgentIdle(_0x471c33){if(_0x471c33[_0xad61('0xf')]!==_0xad61('0xb')&&_0x471c33['voicePause']){_0x471c33[_0xad61('0xf')]=_0xad61('0x10');return![];}return _['every']([_0x471c33[_0xad61('0x11')],_0x471c33['faxStatus'],_0x471c33['mailStatus'],_0x471c33[_0xad61('0x12')],_0x471c33[_0xad61('0x13')],_0x471c33[_0xad61('0xf')],_0x471c33['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient['request'](_0xad61('0x14'),{})[_0xad61('0x15')](function(_0x44a960){if(_0x44a960[_0xad61('0x16')]){throw new Error(_0xad61('0x17'));}var _0x1e482b=_0x44a960['result'];return routingClient[_0xad61('0x18')](_0xad61('0x14'),{})[_0xad61('0x15')](function(_0xc9b86a){if(_0xc9b86a[_0xad61('0x16')]){throw new Error(_0xad61('0x19'));}var _0x348b4a=_0xc9b86a['result'];return _[_0xad61('0x1a')]({},_0x1e482b,_0x348b4a);});})['catch'](function(_0x7229ba){throw _0x7229ba;});}exports[_0xad61('0x1b')]=getRealtimeAgents;function getAgentStatus(_0x2003e2){var _0x1c9518='unknown';if(isAgentPaused(_0x2003e2))_0x1c9518=_0xad61('0x10');else if(isAgentPaused(_0x2003e2,!![]))_0x1c9518='*pause';else if(isAgentIdle(_0x2003e2))_0x1c9518=_0xad61('0xb');else _0x1c9518='busy';return _0x1c9518;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x1834a9,_0x125b4a){var _0x2b0d70=_[_0xad61('0x1c')](_0x1834a9)?_0x1834a9:[_0x1834a9];var _0x4f06af=_['startCase'](_0x125b4a)+_0xad61('0x1d');var _0x1842e5=_[_0xad61('0x1e')](_0x2b0d70,function(_0x5c769c){return db[_0x4f06af][_0xad61('0x1f')]({'where':{'id':_0x5c769c}})[_0xad61('0x15')](function(_0x4fd163){if(!_0x4fd163)return[];return _0x4fd163[_0xad61('0x20')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xad61('0x21')](_0x1842e5)[_0xad61('0x15')](function(_0x2bf8cd){var _0x22fddd=_(_0x2bf8cd)[_0xad61('0x22')]()[_0xad61('0x1e')]('id')['uniq']()['value']();return _0x22fddd;});}exports[_0xad61('0x23')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x44669d,_0x5a4e2f,_0x166fa7){try{if(_0x5a4e2f[_0xad61('0xa')]>0x0){_0x44669d=_0x44669d[_0xad61('0x9')](function(_0x4d36ff){return _0x5a4e2f[_0xad61('0x24')](_0x4d36ff['id']);});}var _0x14c42a=_0x44669d[_0xad61('0x9')](function(_0x522241){var _0x3b1ebd='busy';if(isAgentIdle(_0x522241)){_0x3b1ebd=_0xad61('0xb');}return _0x3b1ebd===_0x166fa7;});return _[_0xad61('0x1e')](_0x14c42a,'id');}catch(_0x448d02){throw _0x448d02;}}exports[_0xad61('0x25')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x22333d,_0x257144,_0x1c1c52){return Promise[_0xad61('0x26')]()[_0xad61('0x15')](function(){if(_0x257144[_0xad61('0xa')]>0x0){_0x22333d=_0x22333d['filter'](function(_0x4d1212){return _0x257144['includes'](_0x4d1212['id']);});}return _0x22333d;})[_0xad61('0x15')](function(){return db[_0xad61('0x27')][_0xad61('0x28')]({'attributes':['id',_0xad61('0x29'),_0xad61('0x2a'),_0xad61('0x4'),_0xad61('0x5'),_0xad61('0x2b'),_0xad61('0x2c'),_0xad61('0x6'),_0xad61('0x7'),_0xad61('0x2d'),_0xad61('0x2e')],'where':{'id':{'$in':_[_0xad61('0x1e')](_0x22333d,'id')}},'raw':!![]});})[_0xad61('0x15')](function(_0x113a06){return _0x113a06[_0xad61('0x1e')](function(_0x96e50d){var _0x1023be=_[_0xad61('0x2f')](_0x22333d,['id',_0x96e50d['id']]);var _0x115e69=filterAgentAttributes(_0x1023be);_['merge'](_0x96e50d,_0x115e69);_0x96e50d[_0xad61('0x30')]=getAgentStatus(_0x96e50d);return _0x96e50d;});})['then'](function(_0x23342d){var _0x16e980=sortAgentsByStatus(_0x23342d,_0x1c1c52);return _['map'](_0x16e980,'id');})[_0xad61('0x31')](function(_0x45c212){throw _0x45c212;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x54c95c){var _0x41e846={'fields':[],'order':null};var _0x33849c=_0x54c95c['split'](',');_0x41e846['fields']=_[_0xad61('0x9')](_0x33849c,function(_0x41e509){if(!_0x41e509[_0xad61('0x24')](_0xad61('0x30'))){return!![];}_0x41e846[_0xad61('0x32')]=_[_0xad61('0x33')](_0x41e509,'-')?'DESC':_0xad61('0x34');return![];});return _0x41e846;}exports[_0xad61('0x35')]=getUpdatedSortOptions;function validateSortParameter(_0xb50ffe){if(!_0xb50ffe){_0xb50ffe='fullname,internal';}if(_0xb50ffe[_0xad61('0x24')](_0xad61('0x2a'))&&!_0xb50ffe[_0xad61('0x24')]('internal')){var _0x2fd1e5=_0xb50ffe[_0xad61('0x36')](0x0,_0xb50ffe[_0xad61('0x37')](_0xad61('0x2a')));_0xb50ffe+=','+_0x2fd1e5+'internal';}return _0xb50ffe;}exports[_0xad61('0x38')]=validateSortParameter;function sortAgentsByStatus(_0x4e0370,_0x6dfa72){var _0x2da8b5=_0x4e0370['sort'](function(_0x62af16,_0x455f92){if(_0x62af16[_0xad61('0x30')]===_0x455f92[_0xad61('0x30')]){if(_0x62af16[_0xad61('0x30')]==='pause'){if(_0x6dfa72===_0xad61('0x39')){return(_0x62af16['pauseType']||'')<(_0x455f92[_0xad61('0x2e')]||'')||_0x62af16[_0xad61('0x2a')][_0xad61('0x3a')]()>_0x455f92[_0xad61('0x2a')][_0xad61('0x3a')]()?0x1:-0x1;}else{return(_0x62af16[_0xad61('0x2e')]||'')<(_0x455f92[_0xad61('0x2e')]||'')||_0x62af16[_0xad61('0x2a')]['toLowerCase']()>_0x455f92[_0xad61('0x2a')][_0xad61('0x3a')]()?-0x1:0x1;}}else{if(_0x6dfa72===_0xad61('0x39')){return _0x62af16[_0xad61('0x2a')][_0xad61('0x3a')]()<_0x455f92[_0xad61('0x2a')][_0xad61('0x3a')]()?0x1:-0x1;}else{return _0x62af16['fullname'][_0xad61('0x3a')]()<_0x455f92[_0xad61('0x2a')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x6dfa72===_0xad61('0x39')){return _0x62af16[_0xad61('0x30')]<_0x455f92[_0xad61('0x30')]?0x1:-0x1;}else{return _0x62af16['globalStatus']<_0x455f92['globalStatus']?-0x1:0x1;}}});return _0x2da8b5;}exports[_0xad61('0x3b')]=sortAgentsByStatus;function filterAgentAttributes(_0x565d86){var _0x4014a0=['userpic',_0xad61('0x3c'),_0xad61('0x3d'),_0xad61('0x3e'),_0xad61('0x2e'),_0xad61('0x3e'),_0xad61('0x3f'),_0xad61('0x40'),_0xad61('0x4'),_0xad61('0x2c'),_0xad61('0x2b'),'smsPause','whatsappPause',_0xad61('0x5'),_0xad61('0x7'),_0xad61('0x41'),'openchannelCapacity',_0xad61('0x42'),_0xad61('0x43'),'whatsappCapacity',_0xad61('0x44'),_0xad61('0x45'),_0xad61('0x46'),_0xad61('0x47'),_0xad61('0x48'),'whatsappCurrentCapacity',_0xad61('0x49'),_0xad61('0x11'),_0xad61('0x12'),'mailStatus','smsStatus',_0xad61('0x4a'),_0xad61('0x4b'),_0xad61('0xf'),'chatStatusTime',_0xad61('0x4c'),_0xad61('0x4d'),_0xad61('0x4e'),_0xad61('0x4f'),_0xad61('0x50'),'voiceStatusTime',_0xad61('0x51'),_0xad61('0x52'),_0xad61('0x53'),'phoneBarEnableScreenRecordingByAgent',_0xad61('0x54'),_0xad61('0x55')];var _0x52e358=[_0xad61('0x4'),_0xad61('0x2c'),_0xad61('0x2b'),_0xad61('0x6'),_0xad61('0x2d'),'faxPause',_0xad61('0x7'),_0xad61('0x3c')];var _0xd0d3cc=_(_0x565d86)[_0xad61('0x56')](_0x52e358)[_0xad61('0x57')](_0x4014a0)[_0xad61('0x58')]();return _0xd0d3cc;}exports[_0xad61('0x59')]=filterAgentAttributes;