using GestionIntegral.Api.Dtos.Empresas; // DTOs de Empresas
using GestionIntegral.Api.Dtos.Auditoria;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace GestionIntegral.Api.Services.Distribucion
{
    public interface IEmpresaService
    {
        Task<IEnumerable<EmpresaDto>> ObtenerTodasAsync(string? nombreFilter, string? detalleFilter);
        Task<EmpresaDto?> ObtenerPorIdAsync(int id);
        Task<(EmpresaDto? Empresa, string? Error)> CrearAsync(CreateEmpresaDto createDto, int idUsuario);
        Task<(bool Exito, string? Error)> ActualizarAsync(int id, UpdateEmpresaDto updateDto, int idUsuario);
        Task<(bool Exito, string? Error)> EliminarAsync(int id, int idUsuario);
        Task<IEnumerable<EmpresaDropdownDto>> ObtenerParaDropdown();
        Task<EmpresaLookupDto?> ObtenerLookupPorIdAsync(int id);
        Task<IEnumerable<EmpresaHistorialDto>> ObtenerHistorialAsync(
        DateTime? fechaDesde, DateTime? fechaHasta,
        int? idUsuarioModifico, string? tipoModificacion,
        int? idEmpresaAfectada);
    }
}