diff --git a/SeaHaven.Services/Implementation/WorkOrderUpliftService.cs b/SeaHaven.Services/Implementation/WorkOrderUpliftService.cs index 9d4f08b..149aeaa 100644 --- a/SeaHaven.Services/Implementation/WorkOrderUpliftService.cs +++ b/SeaHaven.Services/Implementation/WorkOrderUpliftService.cs @@ -437,7 +437,7 @@ namespace SeaHaven.Services.Implementation { await _dispatchData.StageAuditLogAsync(new WorkOrderAuditLog { - WorkOrderId = dispatch.WorkOrderId ?? workOrderId, + WorkOrderId = workOrderId, UserId = userId, FieldName = $"Dispatch {dispatch.DispatchNumber} Uplift", OldValue = isStatusTransition ? oldValue.ToString() : $"${Convert.ToDecimal(oldValue):F2}", diff --git a/SeaHavenIndustries.Tests/WorkOrderUpliftServiceTests.cs b/SeaHavenIndustries.Tests/WorkOrderUpliftServiceTests.cs index 9546fbf..13e5c22 100644 --- a/SeaHavenIndustries.Tests/WorkOrderUpliftServiceTests.cs +++ b/SeaHavenIndustries.Tests/WorkOrderUpliftServiceTests.cs @@ -143,6 +143,37 @@ public sealed class WorkOrderUpliftServiceTests Assert.Equal(1, await context.DispatchUpliftRequests.CountAsync()); } + [Fact] + public async Task CreateAsync_WithoutPrimaryDispatch_AuditsRequestedWorkOrderWhenDispatchBelongsToAnother() + { + await using var context = CreateContext(); + var (workOrder, dispatch) = await SeedWorkOrderAsync(context, primaryDispatchId: null); + context.workOrders.Add(new WorkOrder + { + Id = 2, + InternalWONumber = "10000000002", + AccountId = 1, + WorkOrderType = WorkOrderType.PM, + }); + dispatch.WorkOrderId = 2; + context.DispatchWorkOrders.Add(new DispatchWorkOrder + { + DispatchId = dispatch.Id, + WorkOrderId = workOrder.Id, + }); + await context.SaveChangesAsync(); + + var service = NewService(context); + await service.CreateAsync( + workOrder.Id, + new CreateWorkOrderUpliftRequestDto { Amount = 400m, Notes = "Associated dispatch" }, + Dispatcher(), + CancellationToken.None); + + var audit = Assert.Single(context.WorkOrderAuditLogs); + Assert.Equal(workOrder.Id, audit.WorkOrderId); + } + [Fact] public async Task CreateAsync_PmAmountAboveCap_CreatesPendingRequest() {