set orders for projects

This commit is contained in:
2026-01-13 15:49:51 +03:30
parent 0604514190
commit b7172630e2
4 changed files with 14 additions and 9 deletions

View File

@@ -72,6 +72,7 @@ public class GetProjectsListQueryHandler : IBaseQueryHandler<GetProjectsListQuer
}); });
} }
result = result.OrderByDescending(x => x.Percentage).ToList();
return result; return result;
} }
@@ -101,6 +102,7 @@ public class GetProjectsListQueryHandler : IBaseQueryHandler<GetProjectsListQuer
RemainingTime = remainingTime RemainingTime = remainingTime
}); });
} }
result = result.OrderByDescending(x => x.Percentage).ToList();
return result; return result;
} }
@@ -189,14 +191,14 @@ public class GetProjectsListQueryHandler : IBaseQueryHandler<GetProjectsListQuer
Level = ProjectHierarchyLevel.Task, Level = ProjectHierarchyLevel.Task,
ParentId = task.PhaseId, ParentId = task.PhaseId,
Percentage = percentage, Percentage = percentage,
TotalHours = (int)totalTime.TotalHours, TotalTime = totalTime,
Minutes = totalTime.Minutes,
SpentTime = spentTime, SpentTime = spentTime,
RemainingTime = remainingTime, RemainingTime = remainingTime,
Sections = sectionDtos, Sections = sectionDtos,
Priority = task.Priority Priority = task.Priority
}); });
} }
result = result.OrderByDescending(x => x.Percentage).ToList();
return result; return result;
} }

View File

@@ -9,8 +9,8 @@ public class GetTaskDto
public int Percentage { get; init; } public int Percentage { get; init; }
public ProjectHierarchyLevel Level { get; init; } public ProjectHierarchyLevel Level { get; init; }
public Guid? ParentId { get; init; } public Guid? ParentId { get; init; }
public int TotalHours { get; set; }
public int Minutes { get; set; } public TimeSpan TotalTime { get; set; }
// Task-specific fields // Task-specific fields
public TimeSpan SpentTime { get; init; } public TimeSpan SpentTime { get; init; }

View File

@@ -7,6 +7,6 @@ namespace GozareshgirProgramManager.Application.Modules.Projects.Queries.Project
public record ProjectBoardListQuery: IBaseQuery<List<ProjectBoardListResponse>> public record ProjectBoardListQuery: IBaseQuery<List<ProjectBoardListResponse>>
{ {
public long? UserId { get; set; } public long? UserId { get; set; }
public string? SearchText { get; set; } public string? ProjectName { get; set; }
public TaskSectionStatus? Status { get; set; } public TaskSectionStatus? Status { get; set; }
} }

View File

@@ -46,11 +46,11 @@ public class ProjectBoardListQueryHandler : IBaseQueryHandler<ProjectBoardListQu
queryable = queryable.Where(x => x.CurrentAssignedUserId == request.UserId); queryable = queryable.Where(x => x.CurrentAssignedUserId == request.UserId);
} }
if (!string.IsNullOrWhiteSpace(request.SearchText)) if (!string.IsNullOrWhiteSpace(request.ProjectName))
{ {
queryable = queryable.Where(x=>x.Task.Name.Contains(request.SearchText) queryable = queryable.Where(x=>x.Task.Name.Contains(request.ProjectName)
|| x.Task.Phase.Name.Contains(request.SearchText) || x.Task.Phase.Name.Contains(request.ProjectName)
|| x.Task.Phase.Project.Name.Contains(request.SearchText)); || x.Task.Phase.Project.Name.Contains(request.ProjectName));
} }
var data = await queryable.ToListAsync(cancellationToken); var data = await queryable.ToListAsync(cancellationToken);
@@ -70,6 +70,9 @@ public class ProjectBoardListQueryHandler : IBaseQueryHandler<ProjectBoardListQu
.OrderByDescending(x => x.CurrentAssignedUserId == currentUserId) .OrderByDescending(x => x.CurrentAssignedUserId == currentUserId)
.ThenByDescending(x=>x.Task.Priority) .ThenByDescending(x=>x.Task.Priority)
.ThenBy(x => GetStatusOrder(x.Status)) .ThenBy(x => GetStatusOrder(x.Status))
.ThenBy(x=>x.Task.Phase.ProjectId)
.ThenBy(x=>x.Task.PhaseId)
.ThenBy(x=>x.TaskId)
.Select(x => .Select(x =>
{ {
// محاسبه یکبار برای هر Activity و Cache کردن نتیجه // محاسبه یکبار برای هر Activity و Cache کردن نتیجه