* Added TaskSchedulerDetails

This commit is contained in:
2025-02-17 06:30:39 +01:00
parent db06837ce9
commit 3767bed896
8 changed files with 84 additions and 8 deletions

View File

@@ -8,7 +8,7 @@
<br /> <br />
<SfGrid DataSource="@Tasks" AllowPaging="true" ShowColumnMenu="true" Toolbar="@(new List<string> { "Add", "Edit", "Delete", "Cancel", "Update" })"> <SfGrid DataSource="@Tasks" AllowPaging="true" ShowColumnMenu="true" Toolbar="@(new List<string> { "Add", "Edit", "Delete", "Cancel", "Update" })">
<GridColumns> <GridColumns>
<GridColumn Field=@nameof(TaskSchedulerDto.RowPointer) IsPrimaryKey="true" HeaderText="Id"></GridColumn> <GridColumn Field=@nameof(TaskSchedulerDto.RowPointer.ToString) IsPrimaryKey="true" HeaderText="Id"></GridColumn>
<GridColumn Field=@nameof(TaskSchedulerDto.Name) HeaderText="Nazwa"></GridColumn> <GridColumn Field=@nameof(TaskSchedulerDto.Name) HeaderText="Nazwa"></GridColumn>
<GridColumn Field=@nameof(TaskSchedulerDto.Path) HeaderText="Ścieżka"></GridColumn> <GridColumn Field=@nameof(TaskSchedulerDto.Path) HeaderText="Ścieżka"></GridColumn>
<GridColumn Field=@nameof(TaskSchedulerDto.CronOptions) HeaderText="CRON"></GridColumn> <GridColumn Field=@nameof(TaskSchedulerDto.CronOptions) HeaderText="CRON"></GridColumn>
@@ -55,13 +55,14 @@
private async Task OnActionComplete(ActionEventArgs<TaskSchedulerDto> args) private async Task OnActionComplete(ActionEventArgs<TaskSchedulerDto> args)
{ {
if (args.RequestType.Equals(Action.Delete)) switch (args.RequestType)
{ {
await LoadTasks(); case Action.Delete:
} await LoadTasks();
else if (args.RequestType.Equals(Action.Save) && args.Data.Id == 0) break;
{ case Action.Save when args.Data.Id == 0:
await AddTask(args.Data); await AddTask(args.Data);
break;
} }
} }
} }

View File

@@ -0,0 +1,12 @@
namespace OrdersManagementDataModel.Dtos;
public class TaskSchedulerDetailDto
{
public int Id { get; set; }
public Guid RowPointer { get; set; }
public int FkTaskScheduler { get; set; }
public DateTime JobRunDate { get; set; }
public string Log { get; set; }
public TaskSchedulerDto TaskSchedulerDto { get; set; }
}

View File

@@ -1,4 +1,5 @@
using Hangfire.Storage; using Hangfire.Storage;
using OrdersManagementDataModel.Entities;
namespace OrdersManagementDataModel.Dtos; namespace OrdersManagementDataModel.Dtos;
@@ -14,4 +15,6 @@ public class TaskSchedulerDto
public DateTime? ActiveUntil { get; set; } public DateTime? ActiveUntil { get; set; }
public DateTime? LastExecution { get; set; } public DateTime? LastExecution { get; set; }
public DateTime? NextExecution { get; set; } public DateTime? NextExecution { get; set; }
public ICollection<TaskSchedulerDetailDto> TaskSchedulerDetails { get; set; } = new List<TaskSchedulerDetailDto>();
} }

View File

@@ -10,4 +10,6 @@ public class TaskScheduler
public DateTime CreateDate { get; set; } public DateTime CreateDate { get; set; }
public DateTime ActiveFrom { get; set; } public DateTime ActiveFrom { get; set; }
public DateTime? ActiveUntil { get; set; } public DateTime? ActiveUntil { get; set; }
public ICollection<TaskSchedulerDetail> TaskSchedulerDetails { get; set; } = new List<TaskSchedulerDetail>();
} }

View File

@@ -0,0 +1,12 @@
namespace OrdersManagementDataModel.Entities;
public class TaskSchedulerDetail
{
public int Id { get; set; }
public Guid RowPointer { get; set; }
public int FkTaskScheduler { get; set; }
public DateTime JobRunDate { get; set; }
public string? Log { get; set; }
public virtual TaskScheduler? TaskScheduler { get; set; }
}

View File

@@ -1,5 +1,7 @@
using AutoMapper; using AutoMapper;
using OrdersManagementDataModel.Dtos; using OrdersManagementDataModel.Dtos;
using OrdersManagementDataModel.Entities;
using TaskScheduler = OrdersManagementDataModel.Entities.TaskScheduler;
namespace OrdersManagementDataModel; namespace OrdersManagementDataModel;
@@ -8,5 +10,6 @@ public class MappingProfile : Profile
public MappingProfile() public MappingProfile()
{ {
CreateMap<TaskScheduler, TaskSchedulerDto>().ReverseMap(); CreateMap<TaskScheduler, TaskSchedulerDto>().ReverseMap();
CreateMap<TaskSchedulerDetail, TaskSchedulerDetailDto>().ReverseMap();
} }
} }

View File

@@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using OrdersManagementDataModel.Entities;
using TaskScheduler = OrdersManagementDataModel.Entities.TaskScheduler; using TaskScheduler = OrdersManagementDataModel.Entities.TaskScheduler;
namespace OrdersManagementDataModel; namespace OrdersManagementDataModel;
@@ -33,6 +34,37 @@ public class OrdersManagementDbContext : DbContext
entity.Property(e => e.RowPointer).HasDefaultValueSql("newid()"); entity.Property(e => e.RowPointer).HasDefaultValueSql("newid()");
entity.Property(e => e.CreateDate).HasDefaultValueSql("getdate()"); entity.Property(e => e.CreateDate).HasDefaultValueSql("getdate()");
entity.Property(e => e.ActiveFrom).HasDefaultValueSql("getdate()"); entity.Property(e => e.ActiveFrom).HasDefaultValueSql("getdate()");
entity.Property(e => e.ActiveUntil).IsRequired(false); }); entity.Property(e => e.ActiveUntil).IsRequired(false);
});
modelBuilder.Entity<TaskSchedulerDetail>(entity =>
{
entity.ToTable("TaskSchedulerDetails");
entity.HasKey(e => e.Id);
entity.Property(e => e.Id).ValueGeneratedOnAdd();
entity.Property(e => e.RowPointer)
.HasColumnName("RowPointer")
.HasColumnType("uniqueidentifier")
.HasDefaultValueSql("newid()");
entity.Property(e => e.FkTaskScheduler)
.HasColumnName("FkTaskScheduler");
entity.Property(e => e.JobRunDate)
.HasColumnName("JobRunDate")
.HasDefaultValueSql("getdate()");
entity.Property(e => e.Log)
.HasColumnName("Log")
.HasColumnType("text");
entity.HasOne(d => d.TaskScheduler)
.WithMany(p => p.TaskSchedulerDetails)
.HasForeignKey(d => d.FkTaskScheduler)
.HasConstraintName("FK_TaskSchedulerDetails_TaskScheduler");
});
} }
} }

View File

@@ -63,4 +63,15 @@ public class TaskSchedulerService(OrdersManagementDbContext context, IMapper map
context.TaskSchedulers.Remove(taskScheduler); context.TaskSchedulers.Remove(taskScheduler);
return await context.SaveChangesAsync(); return await context.SaveChangesAsync();
} }
public async Task<IList<TaskSchedulerDetailDto>> GetTaskSchedulerDetails(Guid taskSchedulerId)
{
List<TaskSchedulerDetailDto> taskSchedulerDetails = await context.TaskSchedulers
.Where(x => x.RowPointer == taskSchedulerId)
.SelectMany(x => x.TaskSchedulerDetails)
.Select(x => mapper.Map<TaskSchedulerDetailDto>(x))
.ToListAsync();
return taskSchedulerDetails;
}
} }