using Data.SeaHavenIndustries; namespace SeaHaven.DataServices.Interfaces { public record SiteOptionRow(int Id, string? Code, string? City, string? State); public interface ILocationDataService { Task GetByIdAsync(int id); Task GetByIdWithDetailsAsync(int id); Task> GetAllAsync(); Task> GetByAccountIdAsync(int accountId); // Paged results returning DTOs Task<(IEnumerable Items, int TotalCount)> GetPagedAsync(int page, int pageSize, string? search = null); // For addressbook endpoint - returns simplified DTO Task<(IEnumerable Items, int TotalCount)> GetAddressbookPagedAsync(int page, int pageSize, string? search = null); Task> GetSiteOptionsAsync(string? search = null); Task AddAsync(Locations location); Task UpdateAsync(Locations location); Task DeleteAsync(int id); Task ExistsAsync(int id); Task CountAsync(); Task<(List Items, int TotalCount)> GetListPagedAsync(int page, int pageSize, string? search, CancellationToken cancellationToken); Task GetDetailByIdAsync(int id, CancellationToken cancellationToken); Task GetByIdForUpdateAsync(int id, CancellationToken cancellationToken); Task AddAsync(Locations location, CancellationToken cancellationToken); Task UpdateAsync(Locations location, CancellationToken cancellationToken); Task DeleteByIdAsync(int id, CancellationToken cancellationToken); } }