add task section revision and folderize the project domain
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.SkillAgg.Entities;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Phase;
|
||||
|
||||
/// <summary>
|
||||
/// بخش فاز - برای ذخیره تخصیص کاربر و مهارت در سطح Phase
|
||||
@@ -1,8 +1,9 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Enums;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Events;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Phase;
|
||||
|
||||
/// <summary>
|
||||
/// فاز پروژه - سطح میانی در سلسله مراتب
|
||||
@@ -28,7 +29,7 @@ public class ProjectPhase : ProjectHierarchyNode
|
||||
}
|
||||
|
||||
public Guid ProjectId { get; private set; }
|
||||
public Project Project { get; private set; } = null!;
|
||||
public Project.Project Project { get; private set; } = null!;
|
||||
public IReadOnlyList<ProjectTask> Tasks => _tasks.AsReadOnly();
|
||||
public IReadOnlyList<PhaseSection> PhaseSections => _phaseSections.AsReadOnly();
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Phase;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Enums;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Events;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Project;
|
||||
|
||||
/// <summary>
|
||||
/// پروژه - بالاترین سطح در سلسله مراتب و Aggregate Root
|
||||
@@ -1,7 +1,7 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.SkillAgg.Entities;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Project;
|
||||
|
||||
/// <summary>
|
||||
/// ProjectSection: shortcut container for UserId + SkillId at Project level
|
||||
@@ -1,32 +1,32 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Phase;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Enums;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Events;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task;
|
||||
|
||||
/// <summary>
|
||||
/// تسک - پایینترین سطح در سلسله مراتب که شامل بخشها میشود
|
||||
/// </summary>
|
||||
public class ProjectTask : ProjectHierarchyNode
|
||||
{
|
||||
private readonly List<TaskSection> _sections;
|
||||
private readonly List<TaskSection.TaskSection> _sections;
|
||||
|
||||
private ProjectTask()
|
||||
{
|
||||
_sections = new List<TaskSection>();
|
||||
_sections = new List<TaskSection.TaskSection>();
|
||||
}
|
||||
|
||||
public ProjectTask(string name, Guid phaseId, string? description = null) : base(name, description)
|
||||
{
|
||||
PhaseId = phaseId;
|
||||
_sections = new List<TaskSection>();
|
||||
_sections = new List<TaskSection.TaskSection>();
|
||||
Priority = ProjectTaskPriority.Low;
|
||||
AddDomainEvent(new TaskCreatedEvent(Id, phaseId, name));
|
||||
}
|
||||
|
||||
public Guid PhaseId { get; private set; }
|
||||
public ProjectPhase Phase { get; private set; } = null!;
|
||||
public IReadOnlyList<TaskSection> Sections => _sections.AsReadOnly();
|
||||
public IReadOnlyList<TaskSection.TaskSection> Sections => _sections.AsReadOnly();
|
||||
|
||||
// Task-specific properties
|
||||
public Enums.TaskStatus Status { get; private set; } = Enums.TaskStatus.NotStarted;
|
||||
@@ -40,7 +40,7 @@ public class ProjectTask : ProjectHierarchyNode
|
||||
|
||||
#region Section Management
|
||||
|
||||
public void AddSection(TaskSection section, bool cascadeToChildren = false)
|
||||
public void AddSection(TaskSection.TaskSection section, bool cascadeToChildren = false)
|
||||
{
|
||||
var existingSection = _sections.FirstOrDefault(s => s.SkillId == section.SkillId);
|
||||
if (existingSection != null)
|
||||
@@ -84,7 +84,7 @@ public class ProjectTask : ProjectHierarchyNode
|
||||
return;
|
||||
}
|
||||
|
||||
var section = new TaskSection(Id, skillId, assignedUserId);
|
||||
var section = new TaskSection.TaskSection(Id, skillId, assignedUserId);
|
||||
_sections.Add(section);
|
||||
AddDomainEvent(new TaskSectionAddedEvent(Id, section.Id, skillId));
|
||||
}
|
||||
@@ -204,12 +204,12 @@ public class ProjectTask : ProjectHierarchyNode
|
||||
|
||||
#region Query Helpers
|
||||
|
||||
public IEnumerable<TaskSection> GetSectionsBySkill(Guid skillId)
|
||||
public IEnumerable<TaskSection.TaskSection> GetSectionsBySkill(Guid skillId)
|
||||
{
|
||||
return _sections.Where(s => s.SkillId == skillId);
|
||||
}
|
||||
|
||||
public TaskSection? GetSectionBySkill(Guid skillId)
|
||||
public TaskSection.TaskSection? GetSectionBySkill(Guid skillId)
|
||||
{
|
||||
return _sections.FirstOrDefault(s => s.SkillId == skillId);
|
||||
}
|
||||
@@ -219,7 +219,7 @@ public class ProjectTask : ProjectHierarchyNode
|
||||
return _sections.Any(s => s.SkillId == skillId);
|
||||
}
|
||||
|
||||
public IEnumerable<TaskSection> GetAssignedSections(long userId)
|
||||
public IEnumerable<TaskSection.TaskSection> GetAssignedSections(long userId)
|
||||
{
|
||||
return _sections.Where(s => s.CurrentAssignedUserId == userId);
|
||||
}
|
||||
@@ -1,12 +1,10 @@
|
||||
using System.Linq;
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain._Common.Exceptions;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Enums;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Events;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Models;
|
||||
using GozareshgirProgramManager.Domain.SkillAgg.Entities;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
|
||||
/// <summary>
|
||||
/// بخش تسک - برای ذخیره کار واقعی که کاربر روی یک مهارت خاص انجام میدهد
|
||||
@@ -1,7 +1,6 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
|
||||
/// <summary>
|
||||
/// فعالیت کاری روی یک بخش
|
||||
@@ -1,6 +1,6 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
|
||||
/// <summary>
|
||||
/// زمان اضافی اضافه شده بعد از تخمین اولیه
|
||||
@@ -0,0 +1,14 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
|
||||
public class TaskSectionRevision:EntityBase<Guid>
|
||||
{
|
||||
public Guid TaskSectionId { get; private set; }
|
||||
|
||||
public TaskSectionRevisionStatus Status { get; private set; }
|
||||
public string Message { get; private set; }
|
||||
|
||||
public Guid CreatedByUserId { get; private set; }
|
||||
public DateTime CreatedAt { get; private set; }
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Enums;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
|
||||
public class TaskSectionTimeRequest:EntityBase<Guid>
|
||||
{
|
||||
@@ -1,5 +1,7 @@
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Phase;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Repositories;
|
||||
public interface IPhaseSectionRepository : IRepository<Guid, PhaseSection>
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Phase;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Repositories;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Project;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Repositories;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Project;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Repositories;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Repositories;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Repositories;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Collections;
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Repositories;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.ProjectAgg.Repositories;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using GozareshgirProgramManager.Domain._Common;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities;
|
||||
using GozareshgirProgramManager.Domain.ProjectAgg.Entities.Task.TaskSection;
|
||||
|
||||
namespace GozareshgirProgramManager.Domain.SkillAgg.Entities;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user