using Data.SeaHavenIndustries; namespace SeaHaven.DataServices.Interfaces { public enum BoardSaveOutcome { Saved, ConcurrencyConflict } public interface IWorkOrderBoardMutationDataService { Task VendorExistsAsync(int vendorId, CancellationToken cancellationToken); Task GetMaxWorkOrderIdAsync(CancellationToken cancellationToken); Task GetTrackedWorkOrderAsync(int workOrderId, CancellationToken cancellationToken); Task GetTrackedDispatchAsync(int dispatchId, int workOrderId, CancellationToken cancellationToken); Task GetTrackedDispatchByIdAsync(int dispatchId, CancellationToken cancellationToken); void TrackNewWorkOrder(WorkOrder workOrder); void TrackNewDispatch(Dispatch dispatch); void TrackWorkOrderContact(int workOrderId, int contactId, string? notes); void SetExpectedWorkOrderVersion(WorkOrder workOrder, byte[] version); void SetExpectedDispatchVersion(Dispatch dispatch, byte[] version); bool HasPendingChanges(); Task ExecuteTransactionalAsync(Func work, CancellationToken cancellationToken); Task SaveAsync(CancellationToken cancellationToken); } }