From 572f66f905a139eb25f4e5b63058763868eda22c Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 7 Jan 2026 16:52:50 +0330 Subject: [PATCH 1/5] feat: implement auto-pending for task sections reaching estimated time --- .../AutoPendingFullTimeTaskSectionsCommand.cs | 62 +++++++++++++++++++ .../ProjectAgg/Entities/TaskSection.cs | 2 +- .../Repositories/ITaskSectionRepository.cs | 3 + .../Repositories/TaskSectionRepository.cs | 9 +++ .../ProgramManager/ProjectController.cs | 3 + 5 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/AutoPendingFullTimeTaskSections/AutoPendingFullTimeTaskSectionsCommand.cs diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/AutoPendingFullTimeTaskSections/AutoPendingFullTimeTaskSectionsCommand.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/AutoPendingFullTimeTaskSections/AutoPendingFullTimeTaskSectionsCommand.cs new file mode 100644 index 00000000..6e1e9802 --- /dev/null +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/AutoPendingFullTimeTaskSections/AutoPendingFullTimeTaskSectionsCommand.cs @@ -0,0 +1,62 @@ +using GozareshgirProgramManager.Application._Common.Interfaces; +using GozareshgirProgramManager.Application._Common.Models; +using GozareshgirProgramManager.Domain._Common; +using GozareshgirProgramManager.Domain.ProjectAgg.Repositories; +using GozareshgirProgramManager.Domain.ProjectAgg.Enums; + +namespace GozareshgirProgramManager.Application.Modules.Projects.Commands.AutoPendingFullTimeTaskSections; + +public record AutoPendingFullTimeTaskSectionsCommand : IBaseCommand; + +public class AutoPendingFullTimeTaskSectionsCommandHandler : IBaseCommandHandler +{ + private readonly ITaskSectionRepository _taskSectionRepository; + private readonly IUnitOfWork _unitOfWork; + + public AutoPendingFullTimeTaskSectionsCommandHandler( + ITaskSectionRepository taskSectionRepository, + IUnitOfWork unitOfWork) + { + _taskSectionRepository = taskSectionRepository; + _unitOfWork = unitOfWork; + } + + public async Task Handle(AutoPendingFullTimeTaskSectionsCommand request, CancellationToken cancellationToken) + { + try + { + // تمام سکشن‌هایی که هنوز Pending یا Completed نشده‌اند را دریافت کن + var taskSections = await _taskSectionRepository.GetAllNotCompletedOrPendingIncludeAllAsync(cancellationToken); + + foreach (var section in taskSections) + { + var totalSpent = section.GetTotalTimeSpent(); + var estimate = section.FinalEstimatedHours; + + if (estimate.TotalMinutes <= 0) + continue; // تسک بدون تخمین را نادیده بگیر + + if (totalSpent >= estimate) + { + // مهم: وضعیت را مستقل از فعال/غیرفعال بودن فعالیت‌ها PendingForCompletion کنیم + if (section.IsInProgress()) + { + // اگر فعالیت فعال دارد، با وضعیت جدید متوقف شود + section.StopWork(TaskSectionStatus.PendingForCompletion, "اتمام خودکار - رسیدن به ۱۰۰٪ زمان تخمینی"); + } + else + { + section.UpdateStatus(TaskSectionStatus.PendingForCompletion); + } + } + } + + await _unitOfWork.SaveChangesAsync(cancellationToken); + return OperationResult.Success(); + } + catch (Exception ex) + { + return OperationResult.Failure($"خطا در در انتظار تکمیل قرار دادن خودکار تسک‌ها: {ex.Message}"); + } + } +} diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Entities/TaskSection.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Entities/TaskSection.cs index 072422fe..83b86c23 100644 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Entities/TaskSection.cs +++ b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Entities/TaskSection.cs @@ -270,7 +270,7 @@ public class TaskSection : EntityBase // متوقف کردن فعالیت با EndDate دقیق شده activeActivity.StopWorkWithSpecificTime(adjustedEndDate, "متوقف خودکار - بیش از تایم تعیین شده"); - UpdateStatus(TaskSectionStatus.Incomplete); + UpdateStatus(TaskSectionStatus.PendingForCompletion); } } } \ No newline at end of file diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Repositories/ITaskSectionRepository.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Repositories/ITaskSectionRepository.cs index 487991a8..50e1a2b0 100644 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Repositories/ITaskSectionRepository.cs +++ b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Repositories/ITaskSectionRepository.cs @@ -14,4 +14,7 @@ public interface ITaskSectionRepository: IRepository Task> GetAssignedToUserAsync(long userId); Task> GetActiveSectionsIncludeAllAsync(CancellationToken cancellationToken); Task HasUserAnyInProgressSectionAsync(long userId, CancellationToken cancellationToken = default); + + // جدید: دریافت سکشن‌هایی که هنوز Completed یا PendingForCompletion نشده‌اند با اطلاعات کامل + Task> GetAllNotCompletedOrPendingIncludeAllAsync(CancellationToken cancellationToken); } \ No newline at end of file diff --git a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/TaskSectionRepository.cs b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/TaskSectionRepository.cs index d6d60b69..ce590dc7 100644 --- a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/TaskSectionRepository.cs +++ b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/TaskSectionRepository.cs @@ -53,4 +53,13 @@ public class TaskSectionRepository:RepositoryBase,ITaskSection .AnyAsync(x => x.CurrentAssignedUserId == userId && x.Status == TaskSectionStatus.InProgress, cancellationToken); } + + public Task> GetAllNotCompletedOrPendingIncludeAllAsync(CancellationToken cancellationToken) + { + return _context.TaskSections + .Where(x => x.Status != TaskSectionStatus.Completed && x.Status != TaskSectionStatus.PendingForCompletion) + .Include(x => x.Activities) + .Include(x => x.AdditionalTimes) + .ToListAsync(cancellationToken); + } } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Controllers/ProgramManager/ProjectController.cs b/ServiceHost/Areas/Admin/Controllers/ProgramManager/ProjectController.cs index 95d6da94..b2841335 100644 --- a/ServiceHost/Areas/Admin/Controllers/ProgramManager/ProjectController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ProgramManager/ProjectController.cs @@ -22,6 +22,7 @@ using GozareshgirProgramManager.Application.Modules.Projects.Queries.GetProjectH using MediatR; using Microsoft.AspNetCore.Mvc; using ServiceHost.BaseControllers; +using GozareshgirProgramManager.Application.Modules.Projects.Commands.AutoPendingFullTimeTaskSections; namespace ServiceHost.Areas.Admin.Controllers.ProgramManager; @@ -122,6 +123,8 @@ public class ProjectController : ProgramManagerBaseController { // اجرای Command برای متوقف کردن تسک‌های overtime قبل از نمایش await _mediator.Send(new AutoStopOverTimeTaskSectionsCommand()); + // سپس تسک‌هایی که به 100% زمان تخمینی رسیده‌اند را به حالت PendingForCompletion ببریم + await _mediator.Send(new AutoPendingFullTimeTaskSectionsCommand()); var res = await _mediator.Send(query); return res; From 380ed8f6b1b42bf222dca953caa26c4253accbb9 Mon Sep 17 00:00:00 2001 From: mahan Date: Wed, 7 Jan 2026 18:34:37 +0330 Subject: [PATCH 2/5] feat: update SetTimeProjectCommandHandler to set status to Incomplete when additional time is added --- .../SetTimeProjectCommandHandler.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/SetTimeProject/SetTimeProjectCommandHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/SetTimeProject/SetTimeProjectCommandHandler.cs index fdbadc28..a9ca3a61 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/SetTimeProject/SetTimeProjectCommandHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/SetTimeProject/SetTimeProjectCommandHandler.cs @@ -365,10 +365,26 @@ public class SetTimeProjectCommandHandler : IBaseCommandHandler Date: Thu, 8 Jan 2026 10:46:04 +0330 Subject: [PATCH 3/5] feat: update application URL in launchSettings and enhance task sorting by priority in ProjectBoardListQueryHandler --- .../Queries/ProjectBoardList/ProjectBoardListQueryHandler.cs | 4 +++- ServiceHost/Properties/launchSettings.json | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectBoardList/ProjectBoardListQueryHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectBoardList/ProjectBoardListQueryHandler.cs index 1157a932..a082f648 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectBoardList/ProjectBoardListQueryHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectBoardList/ProjectBoardListQueryHandler.cs @@ -53,7 +53,9 @@ public class ProjectBoardListQueryHandler : IBaseQueryHandler x.Id, x => x.FullName, cancellationToken); - var result = data .OrderByDescending(x => x.CurrentAssignedUserId == currentUserId) + var result = data + .OrderByDescending(x => x.CurrentAssignedUserId == currentUserId) + .ThenByDescending(x=>x.Task.Priority) .ThenBy(x => GetStatusOrder(x.Status)) .Select(x => { diff --git a/ServiceHost/Properties/launchSettings.json b/ServiceHost/Properties/launchSettings.json index f5214c2b..788962e4 100644 --- a/ServiceHost/Properties/launchSettings.json +++ b/ServiceHost/Properties/launchSettings.json @@ -19,7 +19,7 @@ "sqlDebugging": true, "dotnetRunMessages": "true", "nativeDebugging": true, - "applicationUrl": "https://localhost:5004;http://localhost:5003;https://192.168.0.117:5006", + "applicationUrl": "https://localhost:5004;http://localhost:5003;", "jsWebView2Debugging": false, "hotReloadEnabled": true }, @@ -44,7 +44,7 @@ "sqlDebugging": true, "dotnetRunMessages": "true", "nativeDebugging": true, - "applicationUrl": "https://localhost:5004;http://localhost:5003;https://192.168.0.117:5006;", + "applicationUrl": "https://localhost:5004;http://localhost:5003;", "jsWebView2Debugging": false, "hotReloadEnabled": true } From 8679abb1e7cf5b682429ef6bfca853458aac2dd6 Mon Sep 17 00:00:00 2001 From: mahan Date: Thu, 8 Jan 2026 11:18:15 +0330 Subject: [PATCH 4/5] feat: enhance ChangeTaskPriorityCommand to support multi-level priority updates for tasks, phases, and projects --- .../ChangeTaskPriorityCommand.cs | 88 ++++++++++++++++--- 1 file changed, 78 insertions(+), 10 deletions(-) diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/ChangeTaskPriority/ChangeTaskPriorityCommand.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/ChangeTaskPriority/ChangeTaskPriorityCommand.cs index 23d23830..a1886b56 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/ChangeTaskPriority/ChangeTaskPriorityCommand.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/ChangeTaskPriority/ChangeTaskPriorityCommand.cs @@ -6,35 +6,103 @@ using GozareshgirProgramManager.Domain.ProjectAgg.Repositories; namespace GozareshgirProgramManager.Application.Modules.Projects.Commands.ChangeTaskPriority; -/// -/// Command to change a task priority. -/// -public record ChangeTaskPriorityCommand(Guid TaskId, TaskPriority Priority) : IBaseCommand; +public record ChangeTaskPriorityCommand( + Guid Id, + ProjectHierarchyLevel Level, + TaskPriority Priority +) : IBaseCommand; public class ChangeTaskPriorityCommandHandler : IBaseCommandHandler { private readonly IProjectTaskRepository _taskRepository; + private readonly IProjectPhaseRepository _phaseRepository; + private readonly IProjectRepository _projectRepository; private readonly IUnitOfWork _unitOfWork; - public ChangeTaskPriorityCommandHandler(IProjectTaskRepository taskRepository, IUnitOfWork unitOfWork) + public ChangeTaskPriorityCommandHandler( + IProjectTaskRepository taskRepository, + IProjectPhaseRepository phaseRepository, + IProjectRepository projectRepository, + IUnitOfWork unitOfWork) { _taskRepository = taskRepository; + _phaseRepository = phaseRepository; + _projectRepository = projectRepository; _unitOfWork = unitOfWork; } public async Task Handle(ChangeTaskPriorityCommand request, CancellationToken cancellationToken) { - var task = await _taskRepository.GetByIdAsync(request.TaskId, cancellationToken); + switch (request.Level) + { + case ProjectHierarchyLevel.Task: + return await HandleTaskLevelAsync(request.Id, request.Priority, cancellationToken); + case ProjectHierarchyLevel.Phase: + return await HandlePhaseLevelAsync(request.Id, request.Priority, cancellationToken); + case ProjectHierarchyLevel.Project: + return await HandleProjectLevelAsync(request.Id, request.Priority, cancellationToken); + default: + return OperationResult.Failure("سطح نامعتبر است"); + } + } + + // Task-level priority update + private async Task HandleTaskLevelAsync(Guid taskId, TaskPriority priority, CancellationToken ct) + { + var task = await _taskRepository.GetByIdAsync(taskId, ct); if (task is null) return OperationResult.NotFound("تسک یافت نشد"); - // Idempotent: if already same priority, skip extra work - if (task.Priority != request.Priority) + if (task.Priority != priority) { - task.SetPriority(request.Priority); + task.SetPriority(priority); } - await _unitOfWork.SaveChangesAsync(cancellationToken); + await _unitOfWork.SaveChangesAsync(ct); + return OperationResult.Success(); + } + + // Phase-level bulk priority update + private async Task HandlePhaseLevelAsync(Guid phaseId, TaskPriority priority, CancellationToken ct) + { + var phase = await _phaseRepository.GetWithTasksAsync(phaseId); + if (phase is null) + return OperationResult.NotFound("فاز یافت نشد"); + + var tasks = phase.Tasks?.ToList() ?? new List(); + foreach (var t in tasks) + { + if (t.Priority != priority) + { + t.SetPriority(priority); + } + } + + await _unitOfWork.SaveChangesAsync(ct); + return OperationResult.Success(); + } + + // Project-level bulk priority update across all phases + private async Task HandleProjectLevelAsync(Guid projectId, TaskPriority priority, CancellationToken ct) + { + var project = await _projectRepository.GetWithFullHierarchyAsync(projectId); + if (project is null) + return OperationResult.NotFound("پروژه یافت نشد"); + + var phases = project.Phases?.ToList() ?? new List(); + foreach (var phase in phases) + { + var tasks = phase.Tasks?.ToList() ?? new List(); + foreach (var t in tasks) + { + if (t.Priority != priority) + { + t.SetPriority(priority); + } + } + } + + await _unitOfWork.SaveChangesAsync(ct); return OperationResult.Success(); } } From 7c611825a4b863626478352d4ee8e8908b1e226c Mon Sep 17 00:00:00 2001 From: mahan Date: Thu, 8 Jan 2026 12:09:18 +0330 Subject: [PATCH 5/5] feat: refactor task priority handling to use ProjectTaskPriority across commands, DTOs, and repositories --- .../Commands/AddTaskToPhase/AddTaskToPhaseCommand.cs | 2 +- .../ChangeTaskPriority/ChangeTaskPriorityCommand.cs | 8 ++++---- .../Projects/Queries/GetProjectsList/GetTaskListDto.cs | 2 +- .../ProjectBoardList/ProjectBoardListQueryHandler.cs | 1 + .../Queries/ProjectBoardList/ProjectBoardListResponse.cs | 1 + .../ProjectAgg/Entities/ProjectTask.cs | 6 +++--- .../Enums/{TaskPriority.cs => ProjectTaskPriority.cs} | 2 +- .../ProjectAgg/Events/ProjectEvents.cs | 2 +- .../ProjectAgg/Repositories/IProjectTaskRepository.cs | 2 +- .../Persistence/Repositories/ProjectTaskRepository.cs | 2 +- 10 files changed, 15 insertions(+), 13 deletions(-) rename ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Enums/{TaskPriority.cs => ProjectTaskPriority.cs} (92%) diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/AddTaskToPhase/AddTaskToPhaseCommand.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/AddTaskToPhase/AddTaskToPhaseCommand.cs index ba82f57c..1373f8a6 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/AddTaskToPhase/AddTaskToPhaseCommand.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/AddTaskToPhase/AddTaskToPhaseCommand.cs @@ -10,7 +10,7 @@ public record AddTaskToPhaseCommand( Guid PhaseId, string Name, string? Description = null, - TaskPriority Priority = TaskPriority.Medium, + ProjectTaskPriority Priority = ProjectTaskPriority.Medium, int OrderIndex = 0, DateTime? DueDate = null ) : IBaseCommand; diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/ChangeTaskPriority/ChangeTaskPriorityCommand.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/ChangeTaskPriority/ChangeTaskPriorityCommand.cs index a1886b56..d6ea7e1e 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/ChangeTaskPriority/ChangeTaskPriorityCommand.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/ChangeTaskPriority/ChangeTaskPriorityCommand.cs @@ -9,7 +9,7 @@ namespace GozareshgirProgramManager.Application.Modules.Projects.Commands.Change public record ChangeTaskPriorityCommand( Guid Id, ProjectHierarchyLevel Level, - TaskPriority Priority + ProjectTaskPriority Priority ) : IBaseCommand; public class ChangeTaskPriorityCommandHandler : IBaseCommandHandler @@ -47,7 +47,7 @@ public class ChangeTaskPriorityCommandHandler : IBaseCommandHandler HandleTaskLevelAsync(Guid taskId, TaskPriority priority, CancellationToken ct) + private async Task HandleTaskLevelAsync(Guid taskId, ProjectTaskPriority priority, CancellationToken ct) { var task = await _taskRepository.GetByIdAsync(taskId, ct); if (task is null) @@ -63,7 +63,7 @@ public class ChangeTaskPriorityCommandHandler : IBaseCommandHandler HandlePhaseLevelAsync(Guid phaseId, TaskPriority priority, CancellationToken ct) + private async Task HandlePhaseLevelAsync(Guid phaseId, ProjectTaskPriority priority, CancellationToken ct) { var phase = await _phaseRepository.GetWithTasksAsync(phaseId); if (phase is null) @@ -83,7 +83,7 @@ public class ChangeTaskPriorityCommandHandler : IBaseCommandHandler HandleProjectLevelAsync(Guid projectId, TaskPriority priority, CancellationToken ct) + private async Task HandleProjectLevelAsync(Guid projectId, ProjectTaskPriority priority, CancellationToken ct) { var project = await _projectRepository.GetWithFullHierarchyAsync(projectId); if (project is null) diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/GetProjectsList/GetTaskListDto.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/GetProjectsList/GetTaskListDto.cs index 62b7e26e..0661cdb1 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/GetProjectsList/GetTaskListDto.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/GetProjectsList/GetTaskListDto.cs @@ -15,7 +15,7 @@ public class GetTaskDto // Task-specific fields public TimeSpan SpentTime { get; init; } public TimeSpan RemainingTime { get; init; } - public TaskPriority Priority { get; set; } + public ProjectTaskPriority Priority { get; set; } public List Sections { get; init; } } diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectBoardList/ProjectBoardListQueryHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectBoardList/ProjectBoardListQueryHandler.cs index a082f648..00b49401 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectBoardList/ProjectBoardListQueryHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/ProjectBoardList/ProjectBoardListQueryHandler.cs @@ -105,6 +105,7 @@ public class ProjectBoardListQueryHandler : IBaseQueryHandler(); - Priority = TaskPriority.Medium; + Priority = ProjectTaskPriority.Medium; AddDomainEvent(new TaskCreatedEvent(Id, phaseId, name)); } @@ -30,7 +30,7 @@ public class ProjectTask : ProjectHierarchyNode // Task-specific properties public Enums.TaskStatus Status { get; private set; } = Enums.TaskStatus.NotStarted; - public TaskPriority Priority { get; private set; } + public ProjectTaskPriority Priority { get; private set; } public DateTime? StartDate { get; private set; } public DateTime? EndDate { get; private set; } public DateTime? DueDate { get; private set; } @@ -119,7 +119,7 @@ public class ProjectTask : ProjectHierarchyNode AddDomainEvent(new TaskStatusUpdatedEvent(Id, status)); } - public void SetPriority(TaskPriority priority) + public void SetPriority(ProjectTaskPriority priority) { Priority = priority; AddDomainEvent(new TaskPriorityUpdatedEvent(Id, priority)); diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Enums/TaskPriority.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Enums/ProjectTaskPriority.cs similarity index 92% rename from ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Enums/TaskPriority.cs rename to ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Enums/ProjectTaskPriority.cs index 13ccd784..2a2ab36f 100644 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Enums/TaskPriority.cs +++ b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Enums/ProjectTaskPriority.cs @@ -3,7 +3,7 @@ namespace GozareshgirProgramManager.Domain.ProjectAgg.Enums; /// /// اولویت تسک /// -public enum TaskPriority +public enum ProjectTaskPriority { /// /// پایین diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Events/ProjectEvents.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Events/ProjectEvents.cs index 155fec66..64f21ef9 100644 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Events/ProjectEvents.cs +++ b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Events/ProjectEvents.cs @@ -78,7 +78,7 @@ public record TaskStatusUpdatedEvent(Guid TaskId, TaskStatus Status) : IDomainEv public DateTime OccurredOn { get; init; } = DateTime.Now; } -public record TaskPriorityUpdatedEvent(Guid TaskId, TaskPriority Priority) : IDomainEvent +public record TaskPriorityUpdatedEvent(Guid TaskId, ProjectTaskPriority Priority) : IDomainEvent { public DateTime OccurredOn { get; init; } = DateTime.Now; } diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Repositories/IProjectTaskRepository.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Repositories/IProjectTaskRepository.cs index 8b0ff688..9894a764 100644 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Repositories/IProjectTaskRepository.cs +++ b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/ProjectAgg/Repositories/IProjectTaskRepository.cs @@ -36,7 +36,7 @@ public interface IProjectTaskRepository : IRepository /// /// Get tasks by priority /// - Task> GetByPriorityAsync(ProjectAgg.Enums.TaskPriority priority); + Task> GetByPriorityAsync(ProjectAgg.Enums.ProjectTaskPriority priority); /// /// Get tasks assigned to user diff --git a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/ProjectTaskRepository.cs b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/ProjectTaskRepository.cs index 4e09e8cb..cbaa79fe 100644 --- a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/ProjectTaskRepository.cs +++ b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Persistence/Repositories/ProjectTaskRepository.cs @@ -58,7 +58,7 @@ public class ProjectTaskRepository : RepositoryBase, IProject .ToListAsync(); } - public Task> GetByPriorityAsync(TaskPriority priority) + public Task> GetByPriorityAsync(ProjectTaskPriority priority) { return _context.ProjectTasks .Where(t => t.Priority == priority)