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();
}
}