Clean up
This commit is contained in:
@@ -5,8 +5,6 @@ VisualStudioVersion = 17.0.31903.59
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColaFlow.Domain", "src\ColaFlow.Domain\ColaFlow.Domain.csproj", "{0F399DDB-4292-4527-B2F0-2252516F7615}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColaFlow.Application", "src\ColaFlow.Application\ColaFlow.Application.csproj", "{6ECE123E-3FD9-4146-B44E-B1332FAFC010}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColaFlow.Infrastructure", "src\ColaFlow.Infrastructure\ColaFlow.Infrastructure.csproj", "{D6E0C1D8-CAA7-4F95-88E1-C253B0390494}"
|
||||
@@ -67,18 +65,6 @@ Global
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Release|x64.Build.0 = Release|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615}.Release|x86.Build.0 = Release|Any CPU
|
||||
{6ECE123E-3FD9-4146-B44E-B1332FAFC010}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6ECE123E-3FD9-4146-B44E-B1332FAFC010}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6ECE123E-3FD9-4146-B44E-B1332FAFC010}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
@@ -300,13 +286,12 @@ Global
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{0F399DDB-4292-4527-B2F0-2252516F7615} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
{6ECE123E-3FD9-4146-B44E-B1332FAFC010} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
{D6E0C1D8-CAA7-4F95-88E1-C253B0390494} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
{AED08D6B-D0A2-4B67-BF43-D8244C424145} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
{931322BD-B4BD-436A-BEE8-FCF95FF4A09E} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
{73C1CF97-527D-427B-842B-C4CBED3429B5} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
{614DB4A0-24C4-457F-82BB-CE077BCA6E4E} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
{931322BD-B4BD-436A-BEE8-FCF95FF4A09E} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
|
||||
{73C1CF97-527D-427B-842B-C4CBED3429B5} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
|
||||
{614DB4A0-24C4-457F-82BB-CE077BCA6E4E} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
|
||||
{C8E42992-5E42-0C2B-DBFE-AA848D06431C} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
{EAF2C884-939C-428D-981F-CDABE5D42852} = {C8E42992-5E42-0C2B-DBFE-AA848D06431C}
|
||||
{EC447DCF-ABFA-6E24-52A5-D7FD48A5C558} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
@@ -326,4 +311,7 @@ Global
|
||||
{6401A1D7-2E1E-4FE1-B2F6-3DC82C2948DA} = {ACB2D19B-6984-27D8-539C-F209B7C78BA5}
|
||||
{86D74CD1-A0F7-467B-899B-82641451A8C4} = {ACB2D19B-6984-27D8-539C-F209B7C78BA5}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {3A6D2E28-927B-49D8-BABA-B5D2FC6D416E}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ColaFlow.Domain\ColaFlow.Domain.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="15.1.0" />
|
||||
<PackageReference Include="FluentValidation" Version="12.0.0" />
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ColaFlow.Domain\ColaFlow.Domain.csproj" />
|
||||
<ProjectReference Include="..\ColaFlow.Application\ColaFlow.Application.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -1,112 +0,0 @@
|
||||
using ColaFlow.Shared.Kernel.Common;
|
||||
using ColaFlow.Modules.ProjectManagement.Domain.Exceptions;
|
||||
using ColaFlow.Modules.ProjectManagement.Domain.ValueObjects;
|
||||
|
||||
using ColaFlow.Modules.ProjectManagement.Domain.Events;
|
||||
namespace ColaFlow.Modules.ProjectManagement.Domain.Aggregates.ProjectAggregate;
|
||||
|
||||
/// <summary>
|
||||
/// Story Entity (part of Project aggregate)
|
||||
/// </summary>
|
||||
public class Story : Entity
|
||||
{
|
||||
public new StoryId Id { get; private set; }
|
||||
public string Title { get; private set; }
|
||||
public string Description { get; private set; }
|
||||
public EpicId EpicId { get; private set; }
|
||||
public WorkItemStatus Status { get; private set; }
|
||||
public TaskPriority Priority { get; private set; }
|
||||
public decimal? EstimatedHours { get; private set; }
|
||||
public decimal? ActualHours { get; private set; }
|
||||
public UserId? AssigneeId { get; private set; }
|
||||
|
||||
private readonly List<WorkTask> _tasks = new();
|
||||
public IReadOnlyCollection<WorkTask> Tasks => _tasks.AsReadOnly();
|
||||
|
||||
public DateTime CreatedAt { get; private set; }
|
||||
public UserId CreatedBy { get; private set; }
|
||||
public DateTime? UpdatedAt { get; private set; }
|
||||
|
||||
// EF Core constructor
|
||||
private Story()
|
||||
{
|
||||
Id = null!;
|
||||
Title = null!;
|
||||
Description = null!;
|
||||
EpicId = null!;
|
||||
Status = null!;
|
||||
Priority = null!;
|
||||
CreatedBy = null!;
|
||||
}
|
||||
|
||||
public static Story Create(string title, string description, EpicId epicId, TaskPriority priority, UserId createdBy)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(title))
|
||||
throw new DomainException("Story title cannot be empty");
|
||||
|
||||
if (title.Length > 200)
|
||||
throw new DomainException("Story title cannot exceed 200 characters");
|
||||
|
||||
return new Story
|
||||
{
|
||||
Id = StoryId.Create(),
|
||||
Title = title,
|
||||
Description = description ?? string.Empty,
|
||||
EpicId = epicId,
|
||||
Status = WorkItemStatus.ToDo,
|
||||
Priority = priority,
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
CreatedBy = createdBy
|
||||
};
|
||||
}
|
||||
|
||||
public WorkTask CreateTask(string title, string description, TaskPriority priority, UserId createdBy)
|
||||
{
|
||||
var task = WorkTask.Create(title, description, this.Id, priority, createdBy);
|
||||
_tasks.Add(task);
|
||||
return task;
|
||||
}
|
||||
|
||||
public void UpdateDetails(string title, string description)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(title))
|
||||
throw new DomainException("Story title cannot be empty");
|
||||
|
||||
if (title.Length > 200)
|
||||
throw new DomainException("Story title cannot exceed 200 characters");
|
||||
|
||||
Title = title;
|
||||
Description = description ?? string.Empty;
|
||||
UpdatedAt = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public void UpdateStatus(WorkItemStatus newStatus)
|
||||
{
|
||||
Status = newStatus;
|
||||
UpdatedAt = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public void AssignTo(UserId assigneeId)
|
||||
{
|
||||
AssigneeId = assigneeId;
|
||||
UpdatedAt = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public void UpdateEstimate(decimal hours)
|
||||
{
|
||||
if (hours < 0)
|
||||
throw new DomainException("Estimated hours cannot be negative");
|
||||
|
||||
EstimatedHours = hours;
|
||||
UpdatedAt = DateTime.UtcNow;
|
||||
}
|
||||
|
||||
public void LogActualHours(decimal hours)
|
||||
{
|
||||
if (hours < 0)
|
||||
throw new DomainException("Actual hours cannot be negative");
|
||||
|
||||
ActualHours = hours;
|
||||
UpdatedAt = DateTime.UtcNow;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user