using GestionIntegral.Api.Models.Comunicaciones;

namespace GestionIntegral.Api.Data.Repositories.Comunicaciones
{
    public interface IEmailLogRepository
    {
        /// <summary>
        /// Guarda un nuevo registro de log de email en la base de datos.
        /// </summary>
        Task CreateAsync(EmailLog log);

        /// <summary>
        /// Obtiene todos los registros de log de email que coinciden con una referencia específica.
        /// </summary>
        /// <param name="referenciaId">El identificador de la entidad (ej. "Factura-59").</param>
        /// <returns>Una colección de registros de log de email.</returns>
        Task<IEnumerable<EmailLog>> GetByReferenceAsync(string referenciaId);

        /// <summary>
        /// Obtiene todos los registros de log de email que pertenecen a un lote de envío masivo.
        /// </summary>
        /// <param name="idLoteDeEnvio">El ID del lote de envío.</param>
        /// <returns>Una colección de registros de log de email.</returns>
        Task<IEnumerable<EmailLog>> GetByLoteIdAsync(int idLoteDeEnvio);
    }
}