From 3767bed896a6f8ab31d676dc5579a8ec4f68c1ba Mon Sep 17 00:00:00 2001 From: Piotr Kus Date: Mon, 17 Feb 2025 06:30:39 +0100 Subject: [PATCH] * Added TaskSchedulerDetails --- .../Components/Pages/Admin/Scheduler.razor | 15 ++++---- .../Dtos/TaskSchedulerDetailDto.cs | 12 +++++++ .../Dtos/TaskSchedulerDto.cs | 3 ++ .../Entities/TaskScheduler.cs | 2 ++ .../Entities/TaskSchedulerDetail.cs | 12 +++++++ OrdersManagementDataModel/MappingProfile.cs | 3 ++ .../OrdersManagementDbContext.cs | 34 ++++++++++++++++++- .../Services/TaskSchedulerService.cs | 11 ++++++ 8 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 OrdersManagementDataModel/Dtos/TaskSchedulerDetailDto.cs create mode 100644 OrdersManagementDataModel/Entities/TaskSchedulerDetail.cs diff --git a/OrdersManagement/Components/Pages/Admin/Scheduler.razor b/OrdersManagement/Components/Pages/Admin/Scheduler.razor index 76162ea..eecb049 100644 --- a/OrdersManagement/Components/Pages/Admin/Scheduler.razor +++ b/OrdersManagement/Components/Pages/Admin/Scheduler.razor @@ -8,7 +8,7 @@
- + @@ -55,13 +55,14 @@ private async Task OnActionComplete(ActionEventArgs args) { - if (args.RequestType.Equals(Action.Delete)) + switch (args.RequestType) { - await LoadTasks(); - } - else if (args.RequestType.Equals(Action.Save) && args.Data.Id == 0) - { - await AddTask(args.Data); + case Action.Delete: + await LoadTasks(); + break; + case Action.Save when args.Data.Id == 0: + await AddTask(args.Data); + break; } } } \ No newline at end of file diff --git a/OrdersManagementDataModel/Dtos/TaskSchedulerDetailDto.cs b/OrdersManagementDataModel/Dtos/TaskSchedulerDetailDto.cs new file mode 100644 index 0000000..482e0c0 --- /dev/null +++ b/OrdersManagementDataModel/Dtos/TaskSchedulerDetailDto.cs @@ -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; } +} \ No newline at end of file diff --git a/OrdersManagementDataModel/Dtos/TaskSchedulerDto.cs b/OrdersManagementDataModel/Dtos/TaskSchedulerDto.cs index 872ba00..a20f617 100644 --- a/OrdersManagementDataModel/Dtos/TaskSchedulerDto.cs +++ b/OrdersManagementDataModel/Dtos/TaskSchedulerDto.cs @@ -1,4 +1,5 @@ using Hangfire.Storage; +using OrdersManagementDataModel.Entities; namespace OrdersManagementDataModel.Dtos; @@ -14,4 +15,6 @@ public class TaskSchedulerDto public DateTime? ActiveUntil { get; set; } public DateTime? LastExecution { get; set; } public DateTime? NextExecution { get; set; } + + public ICollection TaskSchedulerDetails { get; set; } = new List(); } \ No newline at end of file diff --git a/OrdersManagementDataModel/Entities/TaskScheduler.cs b/OrdersManagementDataModel/Entities/TaskScheduler.cs index 08f9fe8..75fe475 100644 --- a/OrdersManagementDataModel/Entities/TaskScheduler.cs +++ b/OrdersManagementDataModel/Entities/TaskScheduler.cs @@ -10,4 +10,6 @@ public class TaskScheduler public DateTime CreateDate { get; set; } public DateTime ActiveFrom { get; set; } public DateTime? ActiveUntil { get; set; } + + public ICollection TaskSchedulerDetails { get; set; } = new List(); } \ No newline at end of file diff --git a/OrdersManagementDataModel/Entities/TaskSchedulerDetail.cs b/OrdersManagementDataModel/Entities/TaskSchedulerDetail.cs new file mode 100644 index 0000000..9938371 --- /dev/null +++ b/OrdersManagementDataModel/Entities/TaskSchedulerDetail.cs @@ -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; } +} \ No newline at end of file diff --git a/OrdersManagementDataModel/MappingProfile.cs b/OrdersManagementDataModel/MappingProfile.cs index 2cd2810..b7cc21c 100644 --- a/OrdersManagementDataModel/MappingProfile.cs +++ b/OrdersManagementDataModel/MappingProfile.cs @@ -1,5 +1,7 @@ using AutoMapper; using OrdersManagementDataModel.Dtos; +using OrdersManagementDataModel.Entities; +using TaskScheduler = OrdersManagementDataModel.Entities.TaskScheduler; namespace OrdersManagementDataModel; @@ -8,5 +10,6 @@ public class MappingProfile : Profile public MappingProfile() { CreateMap().ReverseMap(); + CreateMap().ReverseMap(); } } \ No newline at end of file diff --git a/OrdersManagementDataModel/OrdersManagementDbContext.cs b/OrdersManagementDataModel/OrdersManagementDbContext.cs index d3c0197..7dae08b 100644 --- a/OrdersManagementDataModel/OrdersManagementDbContext.cs +++ b/OrdersManagementDataModel/OrdersManagementDbContext.cs @@ -1,5 +1,6 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; +using OrdersManagementDataModel.Entities; using TaskScheduler = OrdersManagementDataModel.Entities.TaskScheduler; namespace OrdersManagementDataModel; @@ -33,6 +34,37 @@ public class OrdersManagementDbContext : DbContext entity.Property(e => e.RowPointer).HasDefaultValueSql("newid()"); entity.Property(e => e.CreateDate).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(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"); + }); } } \ No newline at end of file diff --git a/OrdersManagementDataModel/Services/TaskSchedulerService.cs b/OrdersManagementDataModel/Services/TaskSchedulerService.cs index 39d9389..33e4876 100644 --- a/OrdersManagementDataModel/Services/TaskSchedulerService.cs +++ b/OrdersManagementDataModel/Services/TaskSchedulerService.cs @@ -63,4 +63,15 @@ public class TaskSchedulerService(OrdersManagementDbContext context, IMapper map context.TaskSchedulers.Remove(taskScheduler); return await context.SaveChangesAsync(); } + + public async Task> GetTaskSchedulerDetails(Guid taskSchedulerId) + { + List taskSchedulerDetails = await context.TaskSchedulers + .Where(x => x.RowPointer == taskSchedulerId) + .SelectMany(x => x.TaskSchedulerDetails) + .Select(x => mapper.Map(x)) + .ToListAsync(); + + return taskSchedulerDetails; + } } \ No newline at end of file