diff --git a/Oqtane.Client/Modules/Admin/Jobs/Index.razor b/Oqtane.Client/Modules/Admin/Jobs/Index.razor index 033c3787..ed9c9f41 100644 --- a/Oqtane.Client/Modules/Admin/Jobs/Index.razor +++ b/Oqtane.Client/Modules/Admin/Jobs/Index.razor @@ -114,18 +114,26 @@ else private async Task StartJob(int jobId) { - try + Job _job = await JobService.GetJobAsync(jobId); + if (!_job.IsEnabled) { - await JobService.StartJobAsync(jobId); - await logger.LogInformation("Job Started {JobId}", jobId); - AddModuleMessage(Localizer["Message.Job.Start"], MessageType.Success); - _jobs = await JobService.GetJobsAsync(); - StateHasChanged(); + AddModuleMessage(Localizer["Message.Job.Disabled"], MessageType.Warning); } - catch (Exception ex) + else { - await logger.LogError(ex, "Error Starting Job {JobId} {Error}", jobId, ex.Message); - AddModuleMessage(Localizer["Error.Job.Start"], MessageType.Error); + try + { + await JobService.StartJobAsync(jobId); + await logger.LogInformation("Job Started {JobId}", jobId); + AddModuleMessage(Localizer["Message.Job.Start"], MessageType.Success); + _jobs = await JobService.GetJobsAsync(); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error Starting Job {JobId} {Error}", jobId, ex.Message); + AddModuleMessage(Localizer["Error.Job.Start"], MessageType.Error); + } } } diff --git a/Oqtane.Client/Resources/Modules/Admin/Jobs/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Jobs/Index.resx index 53326062..f4812765 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Jobs/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Jobs/Index.resx @@ -183,4 +183,7 @@ Refresh - \ No newline at end of file + + The job cannot be started while in the disabled state. + + diff --git a/Oqtane.Server/Infrastructure/Jobs/HostedServiceBase.cs b/Oqtane.Server/Infrastructure/Jobs/HostedServiceBase.cs index 655c7b20..349ce812 100644 --- a/Oqtane.Server/Infrastructure/Jobs/HostedServiceBase.cs +++ b/Oqtane.Server/Infrastructure/Jobs/HostedServiceBase.cs @@ -252,8 +252,8 @@ namespace Oqtane.Infrastructure Job job = jobs.GetJobs().Where(item => item.JobType == jobTypeName).FirstOrDefault(); if (job != null) { - // reset in case this job was forcefully terminated previously - job.IsStarted = true; + // reset in case this job was enabled and forcefully terminated previously + job.IsStarted = job.IsEnabled; job.IsExecuting = false; jobs.UpdateJob(job); }