Practice ยท 1 of 4
Milestone 1 โ Task Domain Validation
The engine's first gate: CreateTask input validation. Write
Solution.ValidateTaskInput(string title, Priority priority, Status status)
which:
- throws System.ArgumentException when the title is null, empty/whitespace
after trimming, or over 120 chars (after trim),
- throws System.ArgumentException when priority or status is not a defined
enum value (e.g. (Priority)99),
- returns the **trimmed** title when everything is valid,
and Solution.NewTask(int id, int projectId, string title, Priority priority)
returning a new TaskItem with Status = Status.Todo, AssigneeId = null
(title already validated/trimmed by you).
Provided: DomainGuard.ValidTitle/Defined helpers โ reuse them, do not
re-implement the checks.
``csharp
public static class Solution
{
public static string ValidateTaskInput(string title, Priority priority, Status status);
public static TaskItem NewTask(int id, int projectId, string title, Priority priority);
}
`
Provided types: TaskItem(int Id, int ProjectId, string Title, int? AssigneeId, Priority Priority, Status Status), Priority, Status`.
Back to lesson: Practice: Capstone Milestones: Domain to Engine