184 lines
6.4 KiB
Plaintext
184 lines
6.4 KiB
Plaintext
@namespace Oqtane.Modules.Admin.Jobs
|
|
@inherits ModuleBase
|
|
@inject NavigationManager NavigationManager
|
|
@inject IJobService JobService
|
|
@inject IStringLocalizer<Edit> Localizer
|
|
|
|
<table class="table table-borderless">
|
|
<tr>
|
|
<td>
|
|
<Label For="name" HelpText="Enter the job name" ResourceKey="Name">Name: </Label>
|
|
</td>
|
|
<td>
|
|
<input id="name" class="form-control" @bind="@_name" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<Label For="type" HelpText="The fully qualified job type name" ResourceKey="Type">Type: </Label>
|
|
</td>
|
|
<td>
|
|
<input id="type" class="form-control" @bind="@_jobType" readonly />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<Label For="enabled" HelpText="Select whether you want the job enabled or not" ResourceKey="Enabled">Enabled? </Label>
|
|
</td>
|
|
<td>
|
|
<select id="enabled" class="form-control" @bind="@_isEnabled">
|
|
<option value="True">@Localizer["Yes"]</option>
|
|
<option value="False">@Localizer["No"]</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<Label For="runs-every" HelpText="Select how often you want the job to run" ResourceKey="RunsEvery">Runs Every: </Label>
|
|
</td>
|
|
<td>
|
|
<input id="runs-every" class="form-control" @bind="@_interval" />
|
|
<select id="runs-every" class="form-control" @bind="@_frequency">
|
|
<option value="m">@Localizer["Minute(s)"]</option>
|
|
<option value="H">@Localizer["Hour(s)"]</option>
|
|
<option value="d">@Localizer["Day(s)"]</option>
|
|
<option value="M">@Localizer["Month(s)"]</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<Label For="starting" HelpText="What time do you want the job to start" ResourceKey="Starting">Starting: </Label>
|
|
</td>
|
|
<td>
|
|
<input id="starting" class="form-control" @bind="@_startDate" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<Label For="ending" HelpText="When do you want the job to end" ResourceKey="Ending">Ending: </Label>
|
|
</td>
|
|
<td>
|
|
<input id="ending" class="form-control" @bind="@_endDate" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<Label For="retention" HelpText="Number of log entries to retain for this job" ResourceKey="RetentionLog">Retention Log (Items): </Label>
|
|
</td>
|
|
<td>
|
|
<input id="retention" class="form-control" @bind="@_retentionHistory" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<Label For="next" HelpText="Next execution for this job." ResourceKey="NextExecution">Next Execution: </Label>
|
|
</td>
|
|
<td>
|
|
<input id="next" class="form-control" @bind="@_nextExecution" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<button type="button" class="btn btn-success" @onclick="SaveJob">@Localizer["Save"]</button>
|
|
<NavLink class="btn btn-secondary" href="@NavigateUrl()">@Localizer["Cancel"]</NavLink>
|
|
|
|
@code {
|
|
private int _jobId;
|
|
private string _name = string.Empty;
|
|
private string _jobType = string.Empty;
|
|
private string _isEnabled = "True";
|
|
private string _interval = string.Empty;
|
|
private string _frequency = string.Empty;
|
|
private string _startDate = string.Empty;
|
|
private string _endDate = string.Empty;
|
|
private string _retentionHistory = string.Empty;
|
|
private string _nextExecution = string.Empty;
|
|
|
|
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Host;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
try
|
|
{
|
|
_jobId = Int32.Parse(PageState.QueryString["id"]);
|
|
Job job = await JobService.GetJobAsync(_jobId);
|
|
if (job != null)
|
|
{
|
|
_name = job.Name;
|
|
_jobType = job.JobType;
|
|
_isEnabled = job.IsEnabled.ToString();
|
|
_interval = job.Interval.ToString();
|
|
_frequency = job.Frequency;
|
|
_startDate = (job.StartDate != null) ? job.StartDate.ToString() : string.Empty;
|
|
_endDate = (job.EndDate != null) ? job.EndDate.ToString() : string.Empty;
|
|
_retentionHistory = job.RetentionHistory.ToString();
|
|
_nextExecution = job.NextExecution.ToString();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
await logger.LogError(ex, "Error Loading Job {JobId} {Error}", _jobId, ex.Message);
|
|
AddModuleMessage(Localizer["Error Loading Job"], MessageType.Error);
|
|
}
|
|
}
|
|
|
|
private async Task SaveJob()
|
|
{
|
|
if (_name != string.Empty && !string.IsNullOrEmpty(_jobType) && _frequency != string.Empty && _interval != string.Empty && _retentionHistory != string.Empty)
|
|
{
|
|
var job = await JobService.GetJobAsync(_jobId);
|
|
job.Name = _name;
|
|
job.JobType = _jobType;
|
|
job.IsEnabled = Boolean.Parse(_isEnabled);
|
|
job.Frequency = _frequency;
|
|
job.Interval = int.Parse(_interval);
|
|
|
|
if (_startDate == string.Empty)
|
|
{
|
|
job.StartDate = null;
|
|
}
|
|
else
|
|
{
|
|
job.StartDate = DateTime.Parse(_startDate);
|
|
}
|
|
|
|
if (_endDate == string.Empty)
|
|
{
|
|
job.EndDate = null;
|
|
}
|
|
else
|
|
{
|
|
job.EndDate = DateTime.Parse(_endDate);
|
|
}
|
|
|
|
if (_nextExecution == string.Empty)
|
|
{
|
|
job.NextExecution = null;
|
|
}
|
|
else
|
|
{
|
|
job.NextExecution = DateTime.Parse(_nextExecution);
|
|
}
|
|
|
|
job.RetentionHistory = int.Parse(_retentionHistory);
|
|
|
|
try
|
|
{
|
|
job = await JobService.UpdateJobAsync(job);
|
|
await logger.LogInformation("Job Updated {Job}", job);
|
|
NavigationManager.NavigateTo(NavigateUrl());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
await logger.LogError(ex, "Error Udate Job {Job} {Error}", job, ex.Message);
|
|
AddModuleMessage(Localizer["Error Updating Job"], MessageType.Error);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AddModuleMessage(Localizer["You Must Provide The Job Name, Type, Frequency, and Retention"], MessageType.Warning);
|
|
}
|
|
}
|
|
|
|
}
|