using Data.SeaHavenIndustries; namespace SeaHaven.DataServices.Interfaces { public interface IWorkOrderDataService { // Query operations Task GetByIdAsync(int id); Task GetByIdWithDetailsAsync(int id); Task GetByInternalNumberAsync(string internalNumber); Task> GetAllAsync(); Task> GetByLocationIdAsync(int locationId); Task> GetByAssigneeAsync(string assigneeId); Task> GetByStatusAsync(string status); Task> GetByPriorityAsync(string priority); // Paged results Task<(IEnumerable Items, int TotalCount)> GetPagedAsync( int page, int pageSize, string? search = null, string? status = null, string? priority = null); // Command operations Task AddAsync(WorkOrder workOrder); Task UpdateAsync(WorkOrder workOrder); Task DeleteAsync(int id); // Related entities Task> GetWorkOrderContactsAsync(int workOrderId); Task> GetWorkOrderCategoriesAsync(int workOrderId); Task> GetWorkOrderAttachmentsAsync(int workOrderId); Task> GetWorkOrderCommentsAsync(int workOrderId); // Validation Task ExistsAsync(int id); Task InternalNumberExistsAsync(string internalNumber, int? excludeId = null); // Internal number generation Task GenerateNextInternalWONumberAsync(); // Statistics Task CountAsync(); Task CountByStatusAsync(string status); Task CountByLocationAsync(int locationId); } }