Built motion from commit e02f907f.|2.6.14
[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 _0x9660=['request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','getRealtimeAgents','busy','getAgentStatus','isArray','startCase','Queue','map','findOne','all','flatten','uniq','value','includes','findAll','name','fullname','faxPause','mailPause','smsPause','whatsappPause','find','globalStatus','catch','getSortedAgentsIdsByStatus','split','fields','startsWith','DESC','ASC','substring','indexOf','validateSortParameter','sort','pause','pauseType','toLowerCase','sortAgentsByStatus','online','lastLoginAt','lastPauseAt','internal','address','chatCapacity','openchannelCapacity','mailCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','openchannelStatus','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','omit','filterAgentAttributes','lodash','jayson/promise','client','http','chatPause','openchannelPause','voicePause','every','filter','length','unknown','ringing','idle','voiceStatus','faxStatus','mailStatus','smsStatus','whatsappStatus'];(function(_0x20aae1,_0x51efd4){var _0x510601=function(_0x20895f){while(--_0x20895f){_0x20aae1['push'](_0x20aae1['shift']());}};_0x510601(++_0x51efd4);}(_0x9660,0xf9));var _0x0966=function(_0x145af7,_0x6b0258){_0x145af7=_0x145af7-0x0;var _0x45e218=_0x9660[_0x145af7];return _0x45e218;};'use strict';var _=require(_0x0966('0x0'));var jayson=require(_0x0966('0x1'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0x0966('0x2')][_0x0966('0x3')]({'port':0x232a});var routingClient=jayson[_0x0966('0x2')][_0x0966('0x3')]({'port':0x232c});function isAgentPaused(_0x22be1a,_0x3d2fea){var _0x2dfbcc=[_0x22be1a[_0x0966('0x4')],_0x22be1a['faxPause'],_0x22be1a['mailPause'],_0x22be1a[_0x0966('0x5')],_0x22be1a['smsPause'],_0x22be1a[_0x0966('0x6')],_0x22be1a['whatsappPause']];if(!_0x3d2fea)return _[_0x0966('0x7')](_0x2dfbcc);var _0x1b6451=_[_0x0966('0x8')](_0x2dfbcc);return _0x1b6451[_0x0966('0x9')]>0x0&&_0x1b6451[_0x0966('0x9')]<_0x2dfbcc[_0x0966('0x9')]?!![]:![];}function isIdle(_0x5b0ee2){return _0x5b0ee2==='idle'||_0x5b0ee2===_0x0966('0xa')||_0x5b0ee2==='unavailable'||_0x5b0ee2===_0x0966('0xb')||_['isNil'](_0x5b0ee2);}function isAgentIdle(_0x5b8bbb){if(_0x5b8bbb['voiceStatus']!==_0x0966('0xc')&&_0x5b8bbb['voicePause']){_0x5b8bbb[_0x0966('0xd')]='pause';return![];}return _[_0x0966('0x7')]([_0x5b8bbb['chatStatus'],_0x5b8bbb[_0x0966('0xe')],_0x5b8bbb[_0x0966('0xf')],_0x5b8bbb['openchannelStatus'],_0x5b8bbb[_0x0966('0x10')],_0x5b8bbb['voiceStatus'],_0x5b8bbb[_0x0966('0x11')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x0966('0x12')](_0x0966('0x13'),{})[_0x0966('0x14')](function(_0x7355c3){if(_0x7355c3['error']){throw new Error(_0x0966('0x15'));}var _0x127903=_0x7355c3[_0x0966('0x16')];return routingClient['request'](_0x0966('0x13'),{})[_0x0966('0x14')](function(_0x7ec182){if(_0x7ec182['error']){throw new Error(_0x0966('0x17'));}var _0x26fe8e=_0x7ec182[_0x0966('0x16')];return _[_0x0966('0x18')]({},_0x127903,_0x26fe8e);});})['catch'](function(_0x2af03a){throw _0x2af03a;});}exports[_0x0966('0x19')]=getRealtimeAgents;function getAgentStatus(_0x562491){var _0x60b2cd=_0x0966('0xa');if(isAgentPaused(_0x562491))_0x60b2cd='pause';else if(isAgentPaused(_0x562491,!![]))_0x60b2cd='*pause';else if(isAgentIdle(_0x562491))_0x60b2cd=_0x0966('0xc');else _0x60b2cd=_0x0966('0x1a');return _0x60b2cd;}exports[_0x0966('0x1b')]=getAgentStatus;function getAgentIdsByQueues(_0x298be6,_0x3d40f7){var _0x4d2156=_[_0x0966('0x1c')](_0x298be6)?_0x298be6:[_0x298be6];var _0x344295=_[_0x0966('0x1d')](_0x3d40f7)+_0x0966('0x1e');var _0x4754cd=_[_0x0966('0x1f')](_0x4d2156,function(_0x4b4554){return db[_0x344295][_0x0966('0x20')]({'where':{'id':_0x4b4554}})['then'](function(_0x119823){if(!_0x119823)return[];return _0x119823['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0x0966('0x21')](_0x4754cd)[_0x0966('0x14')](function(_0x377558){var _0x44f510=_(_0x377558)[_0x0966('0x22')]()[_0x0966('0x1f')]('id')[_0x0966('0x23')]()[_0x0966('0x24')]();return _0x44f510;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x4edd09,_0x4e3d7a,_0x95003a){try{if(_0x4e3d7a['length']>0x0){_0x4edd09=_0x4edd09['filter'](function(_0xe4ba2a){return _0x4e3d7a[_0x0966('0x25')](_0xe4ba2a['id']);});}var _0x546021=_0x4edd09[_0x0966('0x8')](function(_0x38671c){var _0x24db8d=_0x0966('0x1a');if(isAgentIdle(_0x38671c)){_0x24db8d=_0x0966('0xc');}return _0x24db8d===_0x95003a;});return _[_0x0966('0x1f')](_0x546021,'id');}catch(_0x52ded7){throw _0x52ded7;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x3c393e,_0x401adf,_0x2fcf4e){return Promise['resolve']()[_0x0966('0x14')](function(){if(_0x401adf[_0x0966('0x9')]>0x0){_0x3c393e=_0x3c393e['filter'](function(_0x5b5976){return _0x401adf[_0x0966('0x25')](_0x5b5976['id']);});}return _0x3c393e;})[_0x0966('0x14')](function(){return db['User'][_0x0966('0x26')]({'attributes':['id',_0x0966('0x27'),_0x0966('0x28'),_0x0966('0x4'),_0x0966('0x29'),_0x0966('0x2a'),_0x0966('0x5'),_0x0966('0x2b'),_0x0966('0x6'),_0x0966('0x2c'),'pauseType'],'where':{'id':{'$in':_[_0x0966('0x1f')](_0x3c393e,'id')}},'raw':!![]});})[_0x0966('0x14')](function(_0x4a8acd){return _0x4a8acd[_0x0966('0x1f')](function(_0x32cbcc){var _0x2d6b57=_[_0x0966('0x2d')](_0x3c393e,['id',_0x32cbcc['id']]);var _0x4eb53d=filterAgentAttributes(_0x2d6b57);_[_0x0966('0x18')](_0x32cbcc,_0x4eb53d);_0x32cbcc[_0x0966('0x2e')]=getAgentStatus(_0x32cbcc);return _0x32cbcc;});})['then'](function(_0x5879ab){var _0x2eed78=sortAgentsByStatus(_0x5879ab,_0x2fcf4e);return _[_0x0966('0x1f')](_0x2eed78,'id');})[_0x0966('0x2f')](function(_0x47cd57){throw _0x47cd57;});}exports[_0x0966('0x30')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x445542){var _0x33e45f={'fields':[],'order':null};var _0x11cb1c=_0x445542[_0x0966('0x31')](',');_0x33e45f[_0x0966('0x32')]=_['filter'](_0x11cb1c,function(_0x89a8e3){if(!_0x89a8e3[_0x0966('0x25')]('globalStatus')){return!![];}_0x33e45f['order']=_[_0x0966('0x33')](_0x89a8e3,'-')?_0x0966('0x34'):_0x0966('0x35');return![];});return _0x33e45f;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x4f0e6a){if(_0x4f0e6a[_0x0966('0x25')](_0x0966('0x28'))&&!_0x4f0e6a[_0x0966('0x25')]('internal')){var _0x352c14=_0x4f0e6a[_0x0966('0x36')](0x0,_0x4f0e6a[_0x0966('0x37')](_0x0966('0x28')));_0x4f0e6a+=','+_0x352c14+'internal';}return _0x4f0e6a;}exports[_0x0966('0x38')]=validateSortParameter;function sortAgentsByStatus(_0x39a0a3,_0x122bef){var _0x32790f=_0x39a0a3[_0x0966('0x39')](function(_0x339b68,_0x56d137){if(_0x339b68[_0x0966('0x2e')]===_0x56d137[_0x0966('0x2e')]){if(_0x339b68['globalStatus']===_0x0966('0x3a')){if(_0x122bef===_0x0966('0x34')){return(_0x339b68[_0x0966('0x3b')]||'')<(_0x56d137[_0x0966('0x3b')]||'')||_0x339b68[_0x0966('0x28')]['toLowerCase']()>_0x56d137[_0x0966('0x28')][_0x0966('0x3c')]()?0x1:-0x1;}else{return(_0x339b68['pauseType']||'')<(_0x56d137[_0x0966('0x3b')]||'')||_0x339b68['fullname'][_0x0966('0x3c')]()>_0x56d137[_0x0966('0x28')][_0x0966('0x3c')]()?-0x1:0x1;}}else{if(_0x122bef==='DESC'){return _0x339b68['fullname']['toLowerCase']()<_0x56d137[_0x0966('0x28')]['toLowerCase']()?0x1:-0x1;}else{return _0x339b68['fullname'][_0x0966('0x3c')]()<_0x56d137[_0x0966('0x28')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x122bef==='DESC'){return _0x339b68[_0x0966('0x2e')]<_0x56d137[_0x0966('0x2e')]?0x1:-0x1;}else{return _0x339b68['globalStatus']<_0x56d137[_0x0966('0x2e')]?-0x1:0x1;}}});return _0x32790f;}exports[_0x0966('0x3d')]=sortAgentsByStatus;function filterAgentAttributes(_0x289496){var _0x473e73=['userpic',_0x0966('0x3e'),_0x0966('0x3f'),_0x0966('0x40'),'pauseType',_0x0966('0x40'),_0x0966('0x41'),_0x0966('0x42'),'chatPause',_0x0966('0x5'),_0x0966('0x2a'),_0x0966('0x2b'),'whatsappPause','faxPause',_0x0966('0x6'),_0x0966('0x43'),_0x0966('0x44'),_0x0966('0x45'),'smsCapacity',_0x0966('0x46'),_0x0966('0x47'),_0x0966('0x48'),'openchannelCurrentCapacity','mailCurrentCapacity',_0x0966('0x49'),_0x0966('0x4a'),_0x0966('0x4b'),'chatStatus',_0x0966('0x4c'),_0x0966('0xf'),'smsStatus',_0x0966('0x11'),_0x0966('0xe'),_0x0966('0xd'),'chatStatusTime',_0x0966('0x4d'),_0x0966('0x4e'),_0x0966('0x4f'),_0x0966('0x50'),_0x0966('0x51'),_0x0966('0x52'),'queue',_0x0966('0x53'),_0x0966('0x54'),_0x0966('0x55'),_0x0966('0x56'),'routealias'];var _0xa3cb39=[_0x0966('0x4'),'openchannelPause','mailPause',_0x0966('0x2b'),_0x0966('0x2c'),_0x0966('0x29'),_0x0966('0x6'),_0x0966('0x3e')];var _0x98831e=_(_0x289496)[_0x0966('0x57')](_0xa3cb39)['pick'](_0x473e73)[_0x0966('0x24')]();return _0x98831e;}exports[_0x0966('0x58')]=filterAgentAttributes;