shoc-backend/SeaHaven.DataServices/Interfaces/IWorkOrderBoardMutationDataService.cs
Arthur Bassi 03c069d10d fix(work-orders): detach shared dispatch on vendor fork
Keep same-vendor saves idempotent and drop stale DispatchWorkOrders so listing and uplift follow the new primary.
2026-09-01 09:42:41 -03:00

28 lines
1.3 KiB
C#

using Data.SeaHavenIndustries;
namespace SeaHaven.DataServices.Interfaces
{
public enum BoardSaveOutcome
{
Saved,
ConcurrencyConflict
}
public interface IWorkOrderBoardMutationDataService
{
Task<bool> VendorExistsAsync(int vendorId, CancellationToken cancellationToken);
Task<int> GetMaxWorkOrderIdAsync(CancellationToken cancellationToken);
Task<WorkOrder?> GetTrackedWorkOrderAsync(int workOrderId, CancellationToken cancellationToken);
Task<Dispatch?> GetTrackedDispatchAsync(int dispatchId, int workOrderId, CancellationToken cancellationToken);
Task<Dispatch?> GetTrackedDispatchByIdAsync(int dispatchId, CancellationToken cancellationToken);
void DetachWorkOrderFromDispatch(Dispatch dispatch, int workOrderId);
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<CancellationToken, Task> work, CancellationToken cancellationToken);
Task<BoardSaveOutcome> SaveAsync(CancellationToken cancellationToken);
}
}