shoc-backend/SeaHaven.Services/Interfaces/IContactService.cs

42 lines
1.6 KiB
C#
Raw Normal View History

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