using SIGCM2.Application.Abstractions; using SIGCM2.Application.Abstractions.Persistence; using SIGCM2.Domain.Exceptions; namespace SIGCM2.Application.Usuarios.GetById; public sealed class GetUsuarioByIdQueryHandler : ICommandHandler { private readonly IUsuarioRepository _repository; public GetUsuarioByIdQueryHandler(IUsuarioRepository repository) { _repository = repository; } public async Task Handle(GetUsuarioByIdQuery query) { var usuario = await _repository.GetDetailAsync(query.Id) ?? throw new UsuarioNotFoundException(query.Id); return new UsuarioDetailDto( Id: usuario.Id, Username: usuario.Username, Nombre: usuario.Nombre, Apellido: usuario.Apellido, Email: usuario.Email, Rol: usuario.Rol, Activo: usuario.Activo, MustChangePassword: usuario.MustChangePassword, UltimoLogin: usuario.UltimoLogin, FechaModificacion: usuario.FechaModificacion ); } }