using Data.SeaHavenIndustries; using SeaHaven.DataServices.Dto; using SeaHaven.DataServices.Models; namespace SeaHaven.DataServices.Interfaces { public interface IDispatchDataService { Task GetByIdAsync(int id); Task GetByIdWithDetailsAsync(int id); Task GetByIdWithVendorAndWorkOrderAsync(int id); Task> GetAllAsync(); Task> GetByVendorIdAsync(int vendorId); Task> GetByWorkOrderIdAsync(int workOrderId); Task> GetByWorkOrderIdsAsync(IEnumerable workOrderIds); Task> GetByStatusAsync(string status); Task<(IEnumerable Items, int TotalCount)> GetPagedAsync(int page, int pageSize, string? search = null, string? status = null); Task AddAsync(Dispatch dispatch); Task UpdateAsync(Dispatch dispatch); Task DeleteAsync(int id); Task ExistsAsync(int id); Task GenerateNextDispatchNumberAsync(); Task GenerateNextPONumberAsync(); Task CountAsync(); Task> GetChecklistItemsAsync(int dispatchId); Task GetChecklistItemByIdAsync(int id); Task AddChecklistItemAsync(DispatchChecklistItem item); Task UpdateChecklistItemAsync(DispatchChecklistItem item); Task> GetSignoffsAsync(int dispatchId); Task AddSignoffAsync(DispatchSignoff signoff); Task StageSignoffAsync(DispatchSignoff signoff, CancellationToken cancellationToken); Task HasSignoffTypeAsync(int dispatchId, string signoffType); Task> GetDispatchWorkOrdersAsync(int dispatchId); Task AddDispatchWorkOrderAsync(DispatchWorkOrder dispatchWorkOrder); Task GetListAsync(DispatchListQuery query, CancellationToken cancellationToken); Task GetDetailAsync(int id, CancellationToken cancellationToken); Task GetDispatchDetailAsync(int id); Task> GetVendorDispatchSummariesAsync( int vendorId, string? status, CancellationToken cancellationToken); Task GetVendorDispatchDetailAsync( int id, int vendorId, CancellationToken cancellationToken); Task GetVendorDispatchForMutationAsync( int id, int vendorId, CancellationToken cancellationToken); Task> GetPortalChecklistAsync( int dispatchId, CancellationToken cancellationToken); Task> GetPortalSignoffsAsync( int dispatchId, CancellationToken cancellationToken); Task GetChecklistItemForDispatchAsync( int itemId, int dispatchId, CancellationToken cancellationToken); Task StageAuditLogAsync(WorkOrderAuditLog log, CancellationToken cancellationToken); Task GetDispatchDispatcherUserIdAsync( int workOrderId, CancellationToken cancellationToken); Task SaveChangesAsync(CancellationToken cancellationToken); } }