Added showing all WebJobs in the settings page, sorting jobs by last run date. Fixed showing default WebJobs status

This commit is contained in:
max-baranikov 2022-09-19 14:07:09 +03:00 committed by GitHub
parent b3e8525c8e
commit dde8701d74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 49 additions and 6 deletions

View File

@ -412,7 +412,6 @@ class RetailcrmJobManager
*/ */
private static function setLastRunDetails($lastRuns = []) private static function setLastRunDetails($lastRuns = [])
{ {
RetailcrmLogger::writeDebug(__METHOD__ . ':before', json_encode($lastRuns));
if (!is_array($lastRuns)) { if (!is_array($lastRuns)) {
$lastRuns = []; $lastRuns = [];
} }
@ -425,7 +424,7 @@ class RetailcrmJobManager
} }
} }
RetailcrmLogger::writeDebug(__METHOD__ . ':after', json_encode($lastRuns)); RetailcrmLogger::writeDebug(__METHOD__, json_encode($lastRuns));
Configuration::updateGlobalValue(self::LAST_RUN_DETAIL_NAME, (string) json_encode($lastRuns)); Configuration::updateGlobalValue(self::LAST_RUN_DETAIL_NAME, (string) json_encode($lastRuns));
} }
@ -858,4 +857,22 @@ class RetailcrmJobManager
throw $exception; throw $exception;
} }
/**
* Returns list of jobs which are allowed to be executed via admin panel
*
* @return string[]
*/
public static function getAllowedJobs()
{
return [
'RetailcrmAbandonedCartsEvent',
'RetailcrmIcmlEvent',
'RetailcrmIcmlUpdateUrlEvent',
'RetailcrmSyncEvent',
'RetailcrmInventoriesEvent',
'RetailcrmUpdateSinceIdEvent',
'RetailcrmClearLogsEvent',
];
}
} }

View File

@ -53,10 +53,23 @@ class RetailcrmSettingsHelper
{ {
$jobsInfo = []; $jobsInfo = [];
$allJobsList = RetailcrmJobManager::getAllowedJobs();
$lastRunDetails = RetailcrmJobManager::getLastRunDetails(); $lastRunDetails = RetailcrmJobManager::getLastRunDetails();
$currentJob = Configuration::get(RetailcrmJobManager::CURRENT_TASK); $currentJob = Configuration::get(RetailcrmJobManager::CURRENT_TASK);
$currentJobCli = Configuration::get(RetailcrmCli::CURRENT_TASK_CLI); $currentJobCli = Configuration::get(RetailcrmCli::CURRENT_TASK_CLI);
foreach ($allJobsList as $job) {
if (!isset($lastRunDetails[$job])) {
$jobsInfo[] = [
'name' => $job,
'running' => $job === $currentJob || $job === $currentJobCli,
'lastRun' => null,
'success' => null,
'error' => null,
];
}
}
foreach ($lastRunDetails as $job => $detail) { foreach ($lastRunDetails as $job => $detail) {
$lastRunDetails[$job]['name'] = $job; $lastRunDetails[$job]['name'] = $job;
$lastRunDetails[$job]['running'] = $job === $currentJob || $job === $currentJobCli; $lastRunDetails[$job]['running'] = $job === $currentJob || $job === $currentJobCli;
@ -64,6 +77,17 @@ class RetailcrmSettingsHelper
$jobsInfo[] = $lastRunDetails[$job]; // todo refactor $jobsInfo[] = $lastRunDetails[$job]; // todo refactor
} }
$orderBy = 'lastRun';
$orderDirection = SORT_DESC;
array_multisort(
array_map(function ($item) use ($orderBy) {
return $item[$orderBy];
}, $jobsInfo),
$orderDirection,
$jobsInfo
);
return $jobsInfo; return $jobsInfo;
} }

View File

@ -40,11 +40,13 @@ class RetailcrmSettingsItem
{ {
private $paramKey; private $paramKey;
protected $configKey; protected $configKey;
private $default;
public function __construct($paramKey, $configKey) public function __construct($paramKey, $configKey, $default = '')
{ {
$this->paramKey = $paramKey; $this->paramKey = $paramKey;
$this->configKey = $configKey; $this->configKey = $configKey;
$this->default = $default;
} }
public function updateValue() public function updateValue()
@ -80,7 +82,7 @@ class RetailcrmSettingsItem
public function getValueStored() public function getValueStored()
{ {
return Configuration::get($this->configKey, null, null, null, ''); return Configuration::get($this->configKey, null, null, null, $this->default);
} }
public function getValueWithStored() public function getValueWithStored()

View File

@ -61,7 +61,7 @@ class RetailcrmSettingsItems
'enableCorporate' => new RetailcrmSettingsItemBool('enableCorporate', RetailCRM::ENABLE_CORPORATE_CLIENTS), 'enableCorporate' => new RetailcrmSettingsItemBool('enableCorporate', RetailCRM::ENABLE_CORPORATE_CLIENTS),
'enableOrderNumberSending' => new RetailcrmSettingsItemBool('enableOrderNumberSending', RetailCRM::ENABLE_ORDER_NUMBER_SENDING), 'enableOrderNumberSending' => new RetailcrmSettingsItemBool('enableOrderNumberSending', RetailCRM::ENABLE_ORDER_NUMBER_SENDING),
'enableOrderNumberReceiving' => new RetailcrmSettingsItemBool('enableOrderNumberReceiving', RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING), 'enableOrderNumberReceiving' => new RetailcrmSettingsItemBool('enableOrderNumberReceiving', RetailCRM::ENABLE_ORDER_NUMBER_RECEIVING),
'webJobs' => new RetailcrmSettingsItemBool('webJobs', RetailCRM::ENABLE_WEB_JOBS), 'webJobs' => new RetailcrmSettingsItemBool('webJobs', RetailCRM::ENABLE_WEB_JOBS, '1'),
'debugMode' => new RetailcrmSettingsItemBool('debugMode', RetailCRM::ENABLE_DEBUG_MODE), 'debugMode' => new RetailcrmSettingsItemBool('debugMode', RetailCRM::ENABLE_DEBUG_MODE),
'deliveryDefault' => new RetailcrmSettingsItem('deliveryDefault', RetailCRM::DELIVERY_DEFAULT), 'deliveryDefault' => new RetailcrmSettingsItem('deliveryDefault', RetailCRM::DELIVERY_DEFAULT),

File diff suppressed because one or more lines are too long