using Domain.Entities; using Domain.Exceptions; using Features.ImageUploads.Services; using Features.Users.Dtos; using Features.Users.Repository; using MediatR; namespace Features.Users.Queries.GetPublicUserProfileById; public class GetPublicUserProfileByIdHandler( IUserListRepository repository, IFileStorageProvider fileStorageProvider ) : IRequestHandler { /// Thrown when no user account exists with the given ID. public async Task Handle( GetPublicUserProfileByIdQuery request, CancellationToken cancellationToken ) { UserAccount? user = await repository.GetByIdAsync(request.UserAccountId); if (user is null) throw new NotFoundException($"User with ID {request.UserAccountId} not found"); return user.ToPublicProfileDto(fileStorageProvider); } }