using System.Collections.Generic;
using System.Threading.Tasks;
using GestionIntegral.Api.Dtos.Anomalia;

namespace GestionIntegral.Api.Services.Anomalia
{
    public interface IAlertaService
    {
        /// <summary>
        /// Obtiene todas las alertas que no han sido marcadas como leídas.
        /// </summary>
        /// <returns>Una colección de DTOs de alertas genéricas.</returns>
        Task<IEnumerable<AlertaGenericaDto>> ObtenerAlertasNoLeidasAsync();

        /// <summary>
        /// Marca una alerta específica como leída.
        /// </summary>
        /// <param name="idAlerta">El ID de la alerta a marcar.</param>
        /// <returns>Una tupla indicando si la operación fue exitosa y un mensaje de error si falló.</returns>
        Task<(bool Exito, string? Error)> MarcarComoLeidaAsync(int idAlerta);

        /// <summary>
        /// Marca como leídas todas las alertas de un mismo tipo y para una misma entidad.
        /// (Ej: todas las alertas de "DevolucionAnomala" para el Canillita ID 45).
        /// </summary>
        /// <param name="tipoAlerta">El tipo de alerta a marcar (ej. "DevolucionAnomala").</param>
        /// <param name="idEntidad">El ID de la entidad afectada (ej. el IdCanilla).</param>
        /// <returns>Una tupla indicando si la operación fue exitosa y un mensaje de error si falló.</returns>
        Task<(bool Exito, string? Error)> MarcarGrupoComoLeidoAsync(string tipoAlerta, int idEntidad);
    }
}