26 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 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<IEnumerable<Usuario>> GetAllAsync(string? userFilter, string? nombreFilter);
 | |
|         Task<Usuario?> GetByIdAsync(int id);
 | |
|         Task<Usuario?> GetByUsernameAsync(string username); // Ya existe en IAuthRepository, pero lo duplicamos para cohesión del CRUD
 | |
|         Task<Usuario?> CreateAsync(Usuario nuevoUsuario, int idUsuarioCreador, IDbTransaction transaction);
 | |
|         Task<bool> UpdateAsync(Usuario usuarioAActualizar, int idUsuarioModificador, IDbTransaction transaction);
 | |
|         // DeleteAsync no es común para usuarios, se suelen deshabilitar.
 | |
|         // Task<bool> DeleteAsync(int id, int idUsuarioModificador, IDbTransaction transaction);
 | |
|         Task<bool> SetPasswordAsync(int userId, string newHash, string newSalt, bool debeCambiarClave, int idUsuarioModificador, IDbTransaction transaction);
 | |
|         Task<bool> UserExistsAsync(string username, int? excludeId = null);
 | |
|         // Para el DTO de listado
 | |
|         Task<IEnumerable<(Usuario Usuario, string NombrePerfil)>> GetAllWithProfileNameAsync(string? userFilter, string? nombreFilter);
 | |
|         Task<(Usuario? Usuario, string? NombrePerfil)> GetByIdWithProfileNameAsync(int id);
 | |
|         Task<IEnumerable<UsuarioHistorialDto>> GetHistorialByUsuarioIdAsync(int idUsuarioAfectado, DateTime? fechaDesde, DateTime? fechaHasta);
 | |
|         Task<IEnumerable<UsuarioHistorialDto>> GetAllHistorialAsync(DateTime? fechaDesde, DateTime? fechaHasta, int? idUsuarioModificoFilter, string? tipoModFilter);
 | |
|     }
 | |
| } |