using GestionIntegral.Api.Models.Distribucion;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace GestionIntegral.Api.Data.Repositories.Distribucion
{
    public interface IZonaRepository
    {
        Task<IEnumerable<Zona>> GetAllAsync(string? nombreFilter, string? descripcionFilter, bool soloActivas = true);
        Task<Zona?> GetByIdAsync(int id, bool soloActivas = true);
        Task<Zona?> CreateAsync(Zona nuevaZona, int idUsuario);
        Task<bool> UpdateAsync(Zona zonaAActualizar, int idUsuario);
        Task<bool> SoftDeleteAsync(int id, int idUsuario); // Cambiado de DeleteAsync a SoftDeleteAsync
        Task<bool> ExistsByNameAsync(string nombre, int? excludeId = null, bool soloActivas = true);
        Task<bool> IsInUseAsync(int id);
        Task<IEnumerable<(ZonaHistorico Historial, string NombreUsuarioModifico)>> GetHistorialAsync(
        DateTime? fechaDesde, DateTime? fechaHasta,
        int? idUsuarioModifico, string? tipoModificacion,
        int? idZonaOriginal);
    }
}