Compare commits
2 Commits
Feature/Sm
...
c2fdc217b9
| Author | SHA1 | Date | |
|---|---|---|---|
| c2fdc217b9 | |||
| db0047d3d3 |
@@ -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)
|
||||
{
|
||||
|
||||
@@ -26,6 +26,7 @@ public record ProjectSetTimeResponseSkill
|
||||
|
||||
public class ProjectSetTimeResponseSectionAdditionalTime
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public int Hours { get; init; }
|
||||
public int Minutes { get; init; }
|
||||
public string Description { get; init; }
|
||||
|
||||
@@ -70,6 +70,7 @@ public class ProjectSetTimeDetailsQueryHandler
|
||||
AdditionalTimes = section?.AdditionalTimes
|
||||
.Select(x => new ProjectSetTimeResponseSectionAdditionalTime
|
||||
{
|
||||
Id = x.Id,
|
||||
Description = x.Reason ?? "",
|
||||
Hours = (int)x.Hours.TotalHours,
|
||||
Minutes = x.Hours.Minutes,
|
||||
|
||||
Reference in New Issue
Block a user