BugSetTimeSlice

This commit is contained in:
gozareshgir
2026-01-29 11:33:41 +03:30
parent 4c513191b6
commit bc3bc17a61
8 changed files with 1451 additions and 4 deletions

View File

@@ -40,8 +40,20 @@ public class GetBugRequestTimeModalDetailsQueryHandler : IBaseQueryHandler<GetBu
.ToListAsync(cancellationToken: cancellationToken);
var lastTimeRequest = "";
if (bugSection.BugSectionAdditionalTimes.Any())
lastTimeRequest = bugSection.BugSectionAdditionalTimes.MaxBy(x => x.CreationDate)!.RequestedTime.ToString(@"hh\:mm");
var response = new GetBugRequestTimeModalDetailsResponse(bugSection.Id, projectTask.Name, projectTask.Phase.Name, projectTask.Phase.Project.Name, bugSection.InitialDescription, date, time, files, lastTimeRequest);
{
var requestTime = bugSection.BugSectionAdditionalTimes.MaxBy(x => x.CreationDate)!.RequestedTime;
int totalHours = (int)requestTime.TotalHours;
lastTimeRequest = requestTime.ToString(@"hh\:mm");
if (totalHours > 23)
{
lastTimeRequest = $"{totalHours}:{requestTime.Minutes:00}";
}
}
var timeSlices =await _context.BugSetTimeSlices.Select(x=>x.TimeSlice).ToListAsync(cancellationToken);
var response = new GetBugRequestTimeModalDetailsResponse(bugSection.Id, projectTask.Name, projectTask.Phase.Name, projectTask.Phase.Project.Name, bugSection.InitialDescription, date, time, files, lastTimeRequest, timeSlices);
return OperationResult<GetBugRequestTimeModalDetailsResponse>.Success(response);
}
@@ -49,5 +61,5 @@ public class GetBugRequestTimeModalDetailsQueryHandler : IBaseQueryHandler<GetBu
public record GetBugRequestTimeModalDetailsQuery(Guid BugSectionId) : IBaseQuery<GetBugRequestTimeModalDetailsResponse>;
public record GetBugRequestTimeModalDetailsResponse(Guid BugSectionId, string TaskName, string PhaseName, string ProjectName, string Description, string Date, string Time, List<UploadedFileDto> Files, string LastTimeRequest);
public record GetBugRequestTimeModalDetailsResponse(Guid BugSectionId, string TaskName, string PhaseName, string ProjectName, string Description, string Date, string Time, List<UploadedFileDto> Files, string LastTimeRequest,List<TimeSpan> TimeSlices);

View File

@@ -31,7 +31,9 @@ public interface IProgramManagerDbContext
DbSet<PhaseSection> PhaseSections { get; set; }
DbSet<BugSection> BugSections { get; set; }
DbSet<ProjectTask> ProjectTasks { get; set; }
DbSet<BugSectionAdditionalTime> BugSectionAdditionalTimes { get; set; }
DbSet<BugSetTimeSlice> BugSetTimeSlices { get; set; }
DbSet<TaskChatMessage> TaskChatMessages { get; set; }
DbSet<UploadedFile> UploadedFiles { get; set; }

View File

@@ -0,0 +1,20 @@
using GozareshgirProgramManager.Domain._Common;
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Bug;
public class BugSetTimeSlice : EntityBase<Guid>
{
public BugSetTimeSlice(TimeSpan timeSlice)
{
TimeSlice = timeSlice;
}
public TimeSpan TimeSlice { get; set; }
public void Edit(TimeSpan timeSlice)
{
TimeSlice = timeSlice;
}
}

View File

@@ -0,0 +1,35 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace GozareshgirProgramManager.Infrastructure.Migrations
{
/// <inheritdoc />
public partial class BugSetTimeSliceInit : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "BugSetTimeSlices",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TimeSlice = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: false),
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_BugSetTimeSlices", x => x.Id);
});
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "BugSetTimeSlices");
}
}
}

View File

@@ -293,6 +293,24 @@ namespace GozareshgirProgramManager.Infrastructure.Migrations
b.ToTable("BugSectionAdditionalTimes", (string)null);
});
modelBuilder.Entity("GozareshgirProgramManager.Domain.ProjectAgg.Entities.Bug.BugSetTimeSlice", b =>
{
b.Property<Guid>("Id")
.HasColumnType("uniqueidentifier");
b.Property<DateTime>("CreationDate")
.HasColumnType("datetime2");
b.Property<string>("TimeSlice")
.IsRequired()
.HasMaxLength(30)
.HasColumnType("nvarchar(30)");
b.HasKey("Id");
b.ToTable("BugSetTimeSlices", (string)null);
});
modelBuilder.Entity("GozareshgirProgramManager.Domain.ProjectAgg.Entities.Phase.PhaseSection", b =>
{
b.Property<Guid>("Id")

View File

@@ -31,6 +31,7 @@ public class ProgramManagerDbContext : DbContext, IProgramManagerDbContext
public DbSet<PhaseSection> PhaseSections { get; set; } = null!;
public DbSet<BugSection> BugSections { get; set; } = null!;
public DbSet<BugSectionAdditionalTime> BugSectionAdditionalTimes { get; set; } = null!;
public DbSet<BugSetTimeSlice> BugSetTimeSlices { get; set; } = null!;
// New Hierarchy entities
public DbSet<Project> Projects { get; set; } = null!;

View File

@@ -0,0 +1,22 @@
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Bug;
using GozareshgirProgramManager.Infrastructure.Persistence._Common;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace GozareshgirProgramManager.Infrastructure.Persistence.Mappings;
public class BugSetTimeSliceMapping : IEntityTypeConfiguration<BugSetTimeSlice>
{
public void Configure(EntityTypeBuilder<BugSetTimeSlice> builder)
{
builder.ToTable("BugSetTimeSlices");
builder.HasKey(x => x.Id);
builder.Property(x => x.Id)
.ValueGeneratedNever();
builder.Property(x => x.TimeSlice)
.HasTimeSpanConversion();
}
}