diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQuery.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQuery.cs index a3ac883d..3f666afc 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQuery.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQuery.cs @@ -26,6 +26,7 @@ public record ProjectSetTimeResponseSkill public class ProjectSetTimeResponseSectionAdditionalTime { + public Guid Id { get; set; } public int Hours { get; init; } public int Minutes { get; init; } public string Description { get; init; } diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQueryHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQueryHandler.cs index c5b5fe39..5a537d76 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQueryHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectSetTimeDetails/ProjectSetTimeDetailsQueryHandler.cs @@ -71,6 +71,7 @@ public class ProjectSetTimeDetailsQueryHandler AdditionalTimes = section?.AdditionalTimes .Select(x => new ProjectSetTimeResponseSectionAdditionalTime { + Id = x.Id, Description = x.Reason ?? "", Hours = (int)x.Hours.TotalHours, Minutes = x.Hours.Minutes, diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Queries/CreateTimeRequestDetails/CreateTimeRequestDetailsQuery.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Queries/CreateTimeRequestDetails/CreateTimeRequestDetailsQuery.cs index 6a2c7e18..1632c11f 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Queries/CreateTimeRequestDetails/CreateTimeRequestDetailsQuery.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/TaskSectionTimeRequests/Queries/CreateTimeRequestDetails/CreateTimeRequestDetailsQuery.cs @@ -1,14 +1,17 @@ using GozareshgirProgramManager.Application._Common.Extensions; using GozareshgirProgramManager.Application._Common.Interfaces; using GozareshgirProgramManager.Application._Common.Models; +using GozareshgirProgramManager.Domain._Common; +using GozareshgirProgramManager.Domain._Common.Exceptions; using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection; using Microsoft.EntityFrameworkCore; namespace GozareshgirProgramManager.Application.Modules.TaskSectionTimeRequests.Queries.CreateTimeRequestDetails; -public record CreateTimeRequestDetailsResponse(List Revisions); +public record CreateTimeRequestDetailsResponse(List Revisions, + string ProjectName,string PhaseName,string SectionName,string SkillName); -public record CreateTimeRequestDetailsRevision(string Message, List Files); +public record CreateTimeRequestDetailsRevision(string Message, List Files,Guid Id,string CreationDate); public record CreateTimeRequestDetailsQuery(Guid TaskSectionId) : IBaseQuery; @@ -26,11 +29,23 @@ public class public async Task> Handle(CreateTimeRequestDetailsQuery request, CancellationToken cancellationToken) { + var section =await _context.TaskSections + .Include(x => x.Task) + .ThenInclude(x => x.Phase) + .ThenInclude(x => x.Project) + .Include(x => x.Skill) + .FirstOrDefaultAsync(x => x.Id == request.TaskSectionId, cancellationToken: cancellationToken); + + if (section == null) + { + throw new BadRequestException("بخش فرعی نامعتبر است"); + } + var revisions = await _context.TaskSectionRevisions.Where(x => x.TaskSectionId == request.TaskSectionId && x.Status == RevisionReviewStatus.Pending).ToListAsync(cancellationToken: cancellationToken); var fileIds = revisions.SelectMany(x => x.Files) - .Select(x => x.Id).ToList(); + .Select(x => x.FileId).ToList(); var files =await _context.UploadedFiles .Where(x => fileIds.Contains(x.Id)).ToListAsync(cancellationToken: cancellationToken); @@ -40,9 +55,11 @@ public class var selectFileIds = x.Files.Select(f => f.FileId).ToList(); var filesDto = files.Where(f => selectFileIds.Contains(f.Id)) .Select(f => f.ToDto()).ToList(); - return new CreateTimeRequestDetailsRevision(x.Message, filesDto); + + return new CreateTimeRequestDetailsRevision(x.Message, filesDto,x.Id,x.CreationDate.ToFarsi()); }).ToList(); - var res = new CreateTimeRequestDetailsResponse(resItem); + var res = new CreateTimeRequestDetailsResponse(resItem,section.Task.Phase.Project.Name,section.Task.Phase.Name,section.Task.Name, + section.Skill!.Name); return OperationResult.Success(res); }