* Maintain FaKrosno api to handle Hangfire
* Added checking of missing EdiCo based on EdiCoTranslate and send email every 30 minutes * Added Admin Scheduler view
This commit is contained in:
51
OrdersManagement/Components/Pages/Admin/Scheduler.razor
Normal file
51
OrdersManagement/Components/Pages/Admin/Scheduler.razor
Normal file
@@ -0,0 +1,51 @@
|
||||
@page "/Admin/Scheduler"
|
||||
@using OrdersManagementDataModel.Dtos
|
||||
@using Syncfusion.Blazor.Grids
|
||||
@using Syncfusion.Blazor.Inputs
|
||||
@using Syncfusion.Blazor.Buttons
|
||||
@inject HangfireService HangfireService
|
||||
|
||||
<h3>Zarządzanie Zadaniami</h3>
|
||||
|
||||
<div>
|
||||
<SfTextBox @bind-Value="NewTask.Name" Placeholder="Nazwa zadania"></SfTextBox>
|
||||
<SfTextBox @bind-Value="NewTask.Path" Placeholder="Ścieżka do aplikacji"></SfTextBox>
|
||||
<SfTextBox @bind-Value="NewTask.CronOptions" Placeholder="CRON"></SfTextBox>
|
||||
<SfButton Content="Dodaj Zadanie" @onclick="AddTask"></SfButton>
|
||||
</div>
|
||||
|
||||
<SfGrid DataSource="@Tasks" AllowPaging="true">
|
||||
<GridColumns>
|
||||
<GridColumn Field=@nameof(TaskSchedulerDto.Name) HeaderText="Nazwa"></GridColumn>
|
||||
<GridColumn Field=@nameof(TaskSchedulerDto.Path) HeaderText="Ścieżka"></GridColumn>
|
||||
<GridColumn Field=@nameof(TaskSchedulerDto.CronOptions) HeaderText="CRON"></GridColumn>
|
||||
@* <GridColumn Field=@nameof(TaskSchedulerDto.LastExecution) HeaderText="Ostatnie Uruchomienie"></GridColumn> *@
|
||||
@* <GridColumn Field=@nameof(TaskSchedulerDto.NextExecution) HeaderText="Następne Uruchomienie"></GridColumn> *@
|
||||
</GridColumns>
|
||||
</SfGrid>
|
||||
|
||||
@code {
|
||||
private List<TaskSchedulerDto> Tasks { get; set; } = new();
|
||||
private TaskSchedulerDto NewTask { get; set; } = new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await LoadTasks();
|
||||
}
|
||||
|
||||
private async Task AddTask()
|
||||
{
|
||||
var response = await HangfireService.AddTaskSchedulerAsync(NewTask);
|
||||
if (response == 1)
|
||||
{
|
||||
NewTask = new TaskSchedulerDto(); // Reset form
|
||||
await LoadTasks(); // Refresh list
|
||||
}
|
||||
}
|
||||
|
||||
private async Task LoadTasks()
|
||||
{
|
||||
Tasks = (await HangfireService.GetTaskSchedulersAsync() ?? Array.Empty<TaskSchedulerDto>()).ToList();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FaKrosnoEfDataModel\FaKrosnoEfDataModel.csproj" />
|
||||
<ProjectReference Include="..\OrdersManagementDataModel\OrdersManagementDataModel.csproj" />
|
||||
<ProjectReference Include="..\SytelineSaAppEfDataModel\SytelineSaAppEfDataModel.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ var builder = WebApplication.CreateBuilder(args);
|
||||
builder.Services.AddSyncfusionBlazor();
|
||||
builder.Services.AddBlazorBootstrap();
|
||||
|
||||
string apiUrl = builder.Configuration["ApiUrl"] ?? "http://localhost:5555"; // Ustawienie na adres twojego API
|
||||
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(apiUrl) });
|
||||
string faKrosnoApiUrl = builder.Configuration["FaKrosnoApiUrl"] ?? "http://localhost:5555"; // Ustawienie na adres twojego API
|
||||
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(faKrosnoApiUrl) });
|
||||
|
||||
// Add services to the container.
|
||||
builder.Services.AddRazorComponents()
|
||||
@@ -19,6 +19,7 @@ builder.Services.AddScoped<ScheduleOrderService>();
|
||||
builder.Services.AddScoped<ScheduleOrderDetailsService>();
|
||||
builder.Services.AddScoped<EdiCustomerOrderService>();
|
||||
builder.Services.AddScoped<CustomerOrderService>();
|
||||
builder.Services.AddScoped<HangfireService>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
22
OrdersManagement/Services/HangfireService.cs
Normal file
22
OrdersManagement/Services/HangfireService.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using OrdersManagementDataModel.Dtos;
|
||||
|
||||
namespace OrdersManagement.Services;
|
||||
|
||||
public class HangfireService(HttpClient httpClient)
|
||||
{
|
||||
public async Task<IEnumerable<TaskSchedulerDto>?> GetTaskSchedulersAsync()
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<IEnumerable<TaskSchedulerDto>>("api/HangfireJobs/GetTasks");
|
||||
}
|
||||
|
||||
public async Task<TaskSchedulerDto?> GetTaskSchedulerAsync(Guid id)
|
||||
{
|
||||
return await httpClient.GetFromJsonAsync<TaskSchedulerDto>($"api/HangfireJobs/{id}");
|
||||
}
|
||||
|
||||
public async Task<int> AddTaskSchedulerAsync(TaskSchedulerDto taskSchedulerDto)
|
||||
{
|
||||
HttpResponseMessage responseMessage = await httpClient.PostAsJsonAsync("api/HangfireJobs/AddTask", taskSchedulerDto);
|
||||
return responseMessage.IsSuccessStatusCode ? 1 : 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user