// Archivo: GestionIntegral.Api/Data/Repositories/Usuarios/IUsuarioRepository.cs using GestionIntegral.Api.Models.Usuarios; // Para Usuario using GestionIntegral.Api.Dtos.Usuarios.Auditoria; using System.Collections.Generic; using System.Threading.Tasks; using System.Data; namespace GestionIntegral.Api.Data.Repositories.Usuarios { public interface IUsuarioRepository { Task> GetAllAsync(string? userFilter, string? nombreFilter); Task GetByIdAsync(int id); Task> GetByIdsAsync(IEnumerable ids); Task GetByUsernameAsync(string username); // Ya existe en IAuthRepository, pero lo duplicamos para cohesión del CRUD Task CreateAsync(Usuario nuevoUsuario, int idUsuarioCreador, IDbTransaction transaction); Task UpdateAsync(Usuario usuarioAActualizar, int idUsuarioModificador, IDbTransaction transaction); // DeleteAsync no es común para usuarios, se suelen deshabilitar. // Task DeleteAsync(int id, int idUsuarioModificador, IDbTransaction transaction); Task SetPasswordAsync(int userId, string newHash, string newSalt, bool debeCambiarClave, int idUsuarioModificador, IDbTransaction transaction); Task UserExistsAsync(string username, int? excludeId = null); Task> GetAllWithProfileNameAsync(string? userFilter, string? nombreFilter); Task<(Usuario? Usuario, string? NombrePerfil)> GetByIdWithProfileNameAsync(int id); Task> GetHistorialByUsuarioIdAsync(int idUsuarioAfectado, DateTime? fechaDesde, DateTime? fechaHasta); Task> GetAllHistorialAsync(DateTime? fechaDesde, DateTime? fechaHasta, int? idUsuarioModificoFilter, string? tipoModFilter); } }