mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-01 15:43:14 +00:00
feat(work-orders): derive lifecycle on board create and schedule PATCH
This commit is contained in:
parent
ae9122243d
commit
f3f9ac1b58
2 changed files with 8 additions and 14 deletions
|
|
@ -175,6 +175,8 @@ namespace SeaHaven.Services.Implementation
|
|||
if (request.ScheduledDate.HasValue)
|
||||
changes.AddRange(WorkOrderBoardFieldMutations.ApplyScheduledDate(workOrder, request.ScheduledDate.Value.Date));
|
||||
|
||||
changes.AddRange(WorkOrderBoardFieldMutations.ApplyAutoScheduleSideEffects(workOrder));
|
||||
|
||||
Dispatch? dispatch = null;
|
||||
if (hasVendorDispatch)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -637,6 +637,7 @@ namespace SeaHaven.Services.Implementation
|
|||
var changes = new List<FieldChange> { change };
|
||||
if (change.HasChanged)
|
||||
AppendIsAddOnRecalculation(workOrder, changes);
|
||||
changes.AddRange(ApplyAutoScheduleSideEffects(workOrder));
|
||||
return changes;
|
||||
}
|
||||
|
||||
|
|
@ -785,21 +786,12 @@ namespace SeaHaven.Services.Implementation
|
|||
}
|
||||
|
||||
private static List<FieldChange> ApplyAutoScheduleSideEffects(WorkOrder workOrder)
|
||||
{
|
||||
var changes = new List<FieldChange>();
|
||||
if (!WorkOrderBoardMutationRules.ShouldAutoSchedule(
|
||||
workOrder.LifecycleStatus,
|
||||
workOrder.ScheduledDate,
|
||||
workOrder.AssignTo,
|
||||
workOrder.ScheduleWeekOnly))
|
||||
return changes;
|
||||
=> WorkOrderBoardFieldMutations.ApplyAutoScheduleSideEffects(workOrder)
|
||||
.Select(ToFieldChange)
|
||||
.ToList();
|
||||
|
||||
var old = workOrder.LifecycleStatus?.ToString();
|
||||
workOrder.LifecycleStatus = LifecycleStatus.Scheduled;
|
||||
workOrder.Status = WorkOrderDerivedFields.GetLifecycleStatusLabel(LifecycleStatus.Scheduled);
|
||||
changes.Add(FieldChange.StatusChanged("LifecycleStatus", old, LifecycleStatus.Scheduled.ToString()));
|
||||
return changes;
|
||||
}
|
||||
private static FieldChange ToFieldChange(WorkOrderBoardFieldMutations.BoardFieldChange change)
|
||||
=> new(change.FieldName, change.OldValue, change.NewValue, change.Action, change.DispatchId, change.HasChanged);
|
||||
|
||||
private static bool RowVersionsMatch(byte[]? current, byte[] expected)
|
||||
=> current != null && current.AsSpan().SequenceEqual(expected);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue