261 lines
8.9 KiB
C#
261 lines
8.9 KiB
C#
using GozareshgirProgramManager.Application.Modules.Projects.DTOs;
|
|
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
|
using GozareshgirProgramManager.Domain.ProjectAgg.Enums;
|
|
|
|
namespace GozareshgirProgramManager.Application.Modules.Projects.Extensions;
|
|
|
|
/// <summary>
|
|
/// Mapping extensions for project hierarchy entities to DTOs
|
|
/// </summary>
|
|
public static class ProjectMappingExtensions
|
|
{
|
|
#region Project Mappings
|
|
|
|
public static ProjectDto ToDto(this Project project)
|
|
{
|
|
return new ProjectDto
|
|
{
|
|
Id = project.Id,
|
|
Name = project.Name,
|
|
Description = project.Description,
|
|
CreationDate = project.CreationDate,
|
|
StartDate = project.StartDate,
|
|
EndDate = project.EndDate,
|
|
PlannedStartDate = project.PlannedStartDate,
|
|
PlannedEndDate = project.PlannedEndDate,
|
|
Status = project.Status.ToString(),
|
|
HasAssignmentOverride = project.HasAssignmentOverride,
|
|
TotalTimeSpent = project.GetTotalTimeSpent(),
|
|
TotalEstimatedTime = project.GetTotalEstimatedTime(),
|
|
Phases = project.Phases.Select(p => p.ToDto()).ToList()
|
|
};
|
|
}
|
|
|
|
public static ProjectDto ToSummaryDto(this Project project)
|
|
{
|
|
return new ProjectDto
|
|
{
|
|
Id = project.Id,
|
|
Name = project.Name,
|
|
Description = project.Description,
|
|
CreationDate = project.CreationDate,
|
|
StartDate = project.StartDate,
|
|
EndDate = project.EndDate,
|
|
PlannedStartDate = project.PlannedStartDate,
|
|
PlannedEndDate = project.PlannedEndDate,
|
|
Status = project.Status.ToString(),
|
|
HasAssignmentOverride = project.HasAssignmentOverride,
|
|
TotalTimeSpent = project.GetTotalTimeSpent(),
|
|
TotalEstimatedTime = project.GetTotalEstimatedTime()
|
|
// No phases for summary
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Phase Mappings
|
|
|
|
public static ProjectPhaseDto ToDto(this ProjectPhase phase)
|
|
{
|
|
return new ProjectPhaseDto
|
|
{
|
|
Id = phase.Id,
|
|
Name = phase.Name,
|
|
Description = phase.Description,
|
|
CreationDate = phase.CreationDate,
|
|
ProjectId = phase.ProjectId,
|
|
Status = phase.Status.ToString(),
|
|
StartDate = phase.StartDate,
|
|
EndDate = phase.EndDate,
|
|
OrderIndex = phase.OrderIndex,
|
|
HasAssignmentOverride = phase.HasAssignmentOverride,
|
|
TotalTimeSpent = phase.GetTotalTimeSpent(),
|
|
TotalEstimatedTime = phase.GetTotalEstimatedTime(),
|
|
Tasks = phase.Tasks.Select(t => t.ToDto()).ToList()
|
|
};
|
|
}
|
|
|
|
public static ProjectPhaseDto ToSummaryDto(this ProjectPhase phase)
|
|
{
|
|
return new ProjectPhaseDto
|
|
{
|
|
Id = phase.Id,
|
|
Name = phase.Name,
|
|
Description = phase.Description,
|
|
CreationDate = phase.CreationDate,
|
|
ProjectId = phase.ProjectId,
|
|
Status = phase.Status.ToString(),
|
|
StartDate = phase.StartDate,
|
|
EndDate = phase.EndDate,
|
|
OrderIndex = phase.OrderIndex,
|
|
HasAssignmentOverride = phase.HasAssignmentOverride,
|
|
TotalTimeSpent = phase.GetTotalTimeSpent(),
|
|
TotalEstimatedTime = phase.GetTotalEstimatedTime()
|
|
// No tasks for summary
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Task Mappings
|
|
|
|
public static ProjectTaskDto ToDto(this ProjectTask task)
|
|
{
|
|
return new ProjectTaskDto
|
|
{
|
|
Id = task.Id,
|
|
Name = task.Name,
|
|
Description = task.Description,
|
|
CreationDate = task.CreationDate,
|
|
PhaseId = task.PhaseId,
|
|
Status = task.Status.ToString(),
|
|
Priority = task.Priority.ToString(),
|
|
StartDate = task.StartDate,
|
|
EndDate = task.EndDate,
|
|
DueDate = task.DueDate,
|
|
OrderIndex = task.OrderIndex,
|
|
AllocatedTime = task.AllocatedTime,
|
|
HasTimeOverride = task.HasTimeOverride,
|
|
HasAssignmentOverride = task.HasAssignmentOverride,
|
|
TotalTimeSpent = task.GetTotalTimeSpent(),
|
|
TotalEstimatedTime = task.GetTotalEstimatedTime(),
|
|
Sections = task.Sections.Select(s => s.ToDto()).ToList()
|
|
};
|
|
}
|
|
|
|
public static ProjectTaskDto ToSummaryDto(this ProjectTask task)
|
|
{
|
|
return new ProjectTaskDto
|
|
{
|
|
Id = task.Id,
|
|
Name = task.Name,
|
|
Description = task.Description,
|
|
CreationDate = task.CreationDate,
|
|
PhaseId = task.PhaseId,
|
|
Status = task.Status.ToString(),
|
|
Priority = task.Priority.ToString(),
|
|
StartDate = task.StartDate,
|
|
EndDate = task.EndDate,
|
|
DueDate = task.DueDate,
|
|
OrderIndex = task.OrderIndex,
|
|
AllocatedTime = task.AllocatedTime,
|
|
HasTimeOverride = task.HasTimeOverride,
|
|
HasAssignmentOverride = task.HasAssignmentOverride,
|
|
TotalTimeSpent = task.GetTotalTimeSpent(),
|
|
TotalEstimatedTime = task.GetTotalEstimatedTime()
|
|
// No sections for summary
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Section Mappings
|
|
|
|
public static ProjectSectionDto ToDto(this TaskSection section)
|
|
{
|
|
return new ProjectSectionDto
|
|
{
|
|
Id = section.Id,
|
|
TaskId = section.TaskId,
|
|
SkillId = section.SkillId,
|
|
SkillName = section.Skill?.Name ?? string.Empty,
|
|
InitialEstimatedHours = section.InitialEstimatedHours,
|
|
InitialDescription = section.InitialDescription,
|
|
Status = section.Status.ToString(),
|
|
CurrentAssignedUserId = section.CurrentAssignedUserId,
|
|
CreationDate = section.CreationDate,
|
|
FinalEstimatedHours = section.FinalEstimatedHours,
|
|
TotalTimeSpent = section.GetTotalTimeSpent(),
|
|
ProgressPercentage = section.GetProgressPercentage(),
|
|
IsCompleted = section.IsCompleted(),
|
|
IsInProgress = section.IsInProgress(),
|
|
Activities = section.Activities.Select(a => a.ToDto()).ToList(),
|
|
AdditionalTimes = section.AdditionalTimes.Select(at => at.ToDto()).ToList()
|
|
};
|
|
}
|
|
|
|
public static ProjectSectionDto ToSummaryDto(this TaskSection section)
|
|
{
|
|
return new ProjectSectionDto
|
|
{
|
|
Id = section.Id,
|
|
TaskId = section.TaskId,
|
|
SkillId = section.SkillId,
|
|
SkillName = section.Skill?.Name ?? string.Empty,
|
|
InitialEstimatedHours = section.InitialEstimatedHours,
|
|
InitialDescription = section.InitialDescription,
|
|
Status = section.Status.ToString(),
|
|
CurrentAssignedUserId = section.CurrentAssignedUserId,
|
|
CreationDate = section.CreationDate,
|
|
FinalEstimatedHours = section.FinalEstimatedHours,
|
|
TotalTimeSpent = section.GetTotalTimeSpent(),
|
|
ProgressPercentage = section.GetProgressPercentage(),
|
|
IsCompleted = section.IsCompleted(),
|
|
IsInProgress = section.IsInProgress()
|
|
// No activities or additional times for summary
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Activity Mappings
|
|
|
|
public static TaskSectionActivityDto ToDto(this TaskSectionActivity activity)
|
|
{
|
|
return new TaskSectionActivityDto
|
|
{
|
|
Id = activity.Id,
|
|
SectionId = activity.SectionId,
|
|
UserId = activity.UserId,
|
|
StartDate = activity.StartDate,
|
|
EndDate = activity.EndDate,
|
|
Notes = activity.Notes,
|
|
EndNotes = activity.EndNotes,
|
|
IsActive = activity.IsActive,
|
|
TimeSpent = activity.GetTimeSpent()
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Additional Time Mappings
|
|
|
|
public static TaskSectionAdditionalTimeDto ToDto(this TaskSectionAdditionalTime additionalTime)
|
|
{
|
|
return new TaskSectionAdditionalTimeDto
|
|
{
|
|
Id = additionalTime.Id,
|
|
Hours = additionalTime.Hours,
|
|
Reason = additionalTime.Reason,
|
|
AddedByUserId = additionalTime.AddedByUserId,
|
|
AddedAt = additionalTime.AddedAt
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Collection Mappings
|
|
|
|
public static List<ProjectDto> ToSummaryDtos(this IEnumerable<Project> projects)
|
|
{
|
|
return projects.Select(p => p.ToSummaryDto()).ToList();
|
|
}
|
|
|
|
public static List<ProjectPhaseDto> ToSummaryDtos(this IEnumerable<ProjectPhase> phases)
|
|
{
|
|
return phases.Select(p => p.ToSummaryDto()).ToList();
|
|
}
|
|
|
|
public static List<ProjectTaskDto> ToSummaryDtos(this IEnumerable<ProjectTask> tasks)
|
|
{
|
|
return tasks.Select(t => t.ToSummaryDto()).ToList();
|
|
}
|
|
|
|
public static List<ProjectSectionDto> ToSummaryDtos(this IEnumerable<TaskSection> sections)
|
|
{
|
|
return sections.Select(s => s.ToSummaryDto()).ToList();
|
|
}
|
|
|
|
#endregion
|
|
}
|