feat: simplify StartWork and StopWork methods by removing userId parameter

This commit is contained in:
2025-12-15 10:43:17 +03:30
parent e05eb1236b
commit 2a31b27f9b
2 changed files with 10 additions and 20 deletions

View File

@@ -45,12 +45,12 @@ public class ChangeStatusSectionCommandHandler : IBaseCommandHandler<ChangeStatu
if (section.Status == TaskSectionStatus.InProgress)
{
// Coming FROM InProgress: Stop the active activity
section.StopWork(currentUser, request.Status);
section.StopWork(request.Status);
}
else if (request.Status == TaskSectionStatus.InProgress)
{
// Going TO InProgress: Start work and create activity
section.StartWork(currentUser);
section.StartWork();
}
else
{
@@ -82,11 +82,11 @@ public class ChangeStatusSectionCommandHandler : IBaseCommandHandler<ChangeStatu
// Valid transitions matrix
var validTransitions = new Dictionary<TaskSectionStatus, List<TaskSectionStatus>>
{
{ TaskSectionStatus.ReadyToStart, new List<TaskSectionStatus> { TaskSectionStatus.InProgress } },
{ TaskSectionStatus.InProgress, new List<TaskSectionStatus> { TaskSectionStatus.Incomplete, TaskSectionStatus.Completed } },
{ TaskSectionStatus.Incomplete, new List<TaskSectionStatus> { TaskSectionStatus.InProgress, TaskSectionStatus.Completed } },
{ TaskSectionStatus.Completed, new List<TaskSectionStatus> { TaskSectionStatus.InProgress, TaskSectionStatus.Incomplete } }, // Can return to InProgress or Incomplete
{ TaskSectionStatus.NotAssigned, new List<TaskSectionStatus> { TaskSectionStatus.InProgress, TaskSectionStatus.ReadyToStart } }
{ TaskSectionStatus.ReadyToStart, [TaskSectionStatus.InProgress] },
{ TaskSectionStatus.InProgress, [TaskSectionStatus.Incomplete, TaskSectionStatus.Completed] },
{ TaskSectionStatus.Incomplete, [TaskSectionStatus.InProgress, TaskSectionStatus.Completed] },
{ TaskSectionStatus.Completed, [TaskSectionStatus.InProgress, TaskSectionStatus.Incomplete] }, // Can return to InProgress or Incomplete
{ TaskSectionStatus.NotAssigned, [TaskSectionStatus.InProgress, TaskSectionStatus.ReadyToStart] }
};
if (!validTransitions.TryGetValue(currentStatus, out var allowedTargets))

View File

@@ -104,13 +104,8 @@ public class TaskSection : EntityBase<Guid>
UpdateStatus(TaskSectionStatus.NotAssigned);
}
public void StartWork(long userId, string? notes = null)
public void StartWork(string? notes = null)
{
if (CurrentAssignedUserId != userId)
{
throw new BadRequestException("کاربر مجاز به شروع این بخش نیست");
}
// if (Status == TaskSectionStatus.Completed)
// {
// throw new BadRequestException("این بخش قبلاً تکمیل شده است");
@@ -121,14 +116,14 @@ public class TaskSection : EntityBase<Guid>
throw new BadRequestException("یک فعالیت در حال انجام وجود دارد");
}
var activity = new TaskSectionActivity(Id, userId, notes);
var activity = new TaskSectionActivity(Id, CurrentAssignedUserId, notes);
_activities.Add(activity);
UpdateStatus(TaskSectionStatus.InProgress);
}
public void StopWork(long userId, TaskSectionStatus taskSectionStatus, string? endNotes = null)
public void StopWork(TaskSectionStatus taskSectionStatus, string? endNotes = null)
{
var activeActivity = _activities.FirstOrDefault(a => a.IsActive);
if (activeActivity == null)
@@ -136,11 +131,6 @@ public class TaskSection : EntityBase<Guid>
throw new BadRequestException("هیچ فعالیت فعالی یافت نشد");
}
if (activeActivity.UserId != userId)
{
throw new BadRequestException("کاربر مجاز به توقف این فعالیت نیست");
}
UpdateStatus(taskSectionStatus);
activeActivity.StopWork(endNotes);
}