refactor SetTimeProjectCommandHandler to validate total time after applying changes
This commit is contained in:
@@ -375,7 +375,6 @@ public class SetTimeProjectCommandHandler : IBaseCommandHandler<SetTimeProjectCo
|
||||
// مدیریت هوشمند زمانهای اضافی
|
||||
var existingAdditionalTimes = section.AdditionalTimes.ToList();
|
||||
var incomingAdditionalTimes = sectionItem.AdditionalTime ?? [];
|
||||
var currentTotalSpent = section.GetTotalTimeSpent();
|
||||
|
||||
bool hasRealChange = false;
|
||||
|
||||
@@ -406,14 +405,6 @@ public class SetTimeProjectCommandHandler : IBaseCommandHandler<SetTimeProjectCo
|
||||
// اگر آیتم با این ID وجود دارد، بررسی کن اگر تغییر کرده باشد
|
||||
if (existingAdditionalTime.HasChanged(additionalTimeSpan, additionalTime.Description))
|
||||
{
|
||||
var newTotalTime = section.InitialEstimatedHours
|
||||
.Add(existingAdditionalTimes
|
||||
.Where(x => x.Id != existingAdditionalTime.Id)
|
||||
.Aggregate(TimeSpan.Zero, (acc, x) => acc.Add(x.Hours))
|
||||
.Add(additionalTimeSpan));
|
||||
|
||||
ValidateTotalTimeNotLessThanSpent(newTotalTime, currentTotalSpent);
|
||||
|
||||
// ویرایش بدون حذف و ایجاد دوباره
|
||||
existingAdditionalTime.Update(additionalTimeSpan, additionalTime.Description);
|
||||
hasRealChange = true;
|
||||
@@ -424,15 +415,17 @@ public class SetTimeProjectCommandHandler : IBaseCommandHandler<SetTimeProjectCo
|
||||
// اگر ID نداشت یا ID جدید بود، اضافه کن
|
||||
if (additionalTime.Id == null || additionalTime.Id == Guid.Empty)
|
||||
{
|
||||
var newTotalTime = section.FinalEstimatedHours.Add(additionalTimeSpan);
|
||||
ValidateTotalTimeNotLessThanSpent(newTotalTime, currentTotalSpent);
|
||||
|
||||
section.AddAdditionalTime(additionalTimeSpan, additionalTime.Description, addedByUserId);
|
||||
hasRealChange = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// اعتبارسنجی بعد از اعمال تمام تغییرات
|
||||
var currentTotalSpent = section.GetTotalTimeSpent();
|
||||
var newTotalTime = section.FinalEstimatedHours;
|
||||
ValidateTotalTimeNotLessThanSpent(newTotalTime, currentTotalSpent);
|
||||
|
||||
// تغییر status به Incomplete فقط اگر تغییری واقعی اعمال شده باشد و در وضعیتی غیر از ReadyToStart باشد
|
||||
if (hasRealChange && section.Status != TaskSectionStatus.ReadyToStart)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user