using SeaHaven.Services.DTOs; namespace SeaHaven.Services.Interfaces { /// /// Contact business service interface /// Handles business logic, validation, and orchestration for Contact operations /// public interface IContactService { // Query operations Task GetContactByIdAsync(int id); Task GetContactByIdWithDetailsAsync(int id); Task> GetAllContactsAsync(); Task> GetContactsByAccountIdAsync(int accountId); Task> GetContactsByTypeAsync(string type); Task GetContactByEmailAsync(string email); // Paged results Task> GetContactsPagedAsync( int page, int pageSize, string? search = null, string? type = null); // Command operations Task CreateContactAsync(CreateContactDTO dto, string userId); Task UpdateContactAsync(int id, UpdateContactDTO dto, string userId); Task DeleteContactAsync(int id, string userId); // Validation operations Task ContactExistsAsync(int id); Task EmailExistsAsync(string email, int? excludeId = null); Task PhoneExistsAsync(string phone, int? excludeId = null); // Statistics Task GetTotalContactCountAsync(); Task GetContactCountByAccountAsync(int accountId); Task> GetContactCountByTypeAsync(); } }