using Data.SeaHavenIndustries;
namespace SeaHaven.DataServices.Interfaces
{
///
/// Data service interface for Contact entity
/// Handles all data access operations for Contacts
///
public interface IContactDataService
{
// Query operations
Task GetByIdAsync(int id);
Task GetByIdWithDetailsAsync(int id);
Task> GetAllAsync();
Task> GetByAccountIdAsync(int accountId);
Task> GetByTypeAsync(string type);
Task GetByEmailAsync(string email);
Task GetByPhoneAsync(string phone);
// Paged results
Task<(IEnumerable Items, int TotalCount)> GetPagedAsync(
int page,
int pageSize,
string? search = null,
string? type = null);
// Command operations
Task AddAsync(Contacts contact);
Task UpdateAsync(Contacts contact);
Task DeleteAsync(int id);
// Validation operations
Task ExistsAsync(int id);
Task EmailExistsAsync(string email, int? excludeId = null);
Task PhoneExistsAsync(string phone, int? excludeId = null);
// Count operations
Task CountAsync();
Task CountByAccountIdAsync(int accountId);
Task CountByTypeAsync(string type);
}
}