Api/Netina.Repository/Handlers/Reviews/GetReviewsQueryHandler.cs

22 lines
792 B
C#

using Review = Netina.Domain.Entities.Reviews.Review;
namespace Netina.Repository.Handlers.Reviews;
public class GetReviewsQueryHandler(IRepositoryWrapper repositoryWrapper)
: IRequestHandler<GetReviewsQuery, List<ReviewSDto>>
{
public async Task<List<ReviewSDto>> Handle(GetReviewsQuery request, CancellationToken cancellationToken)
{
var query = repositoryWrapper.SetRepository<Review>()
.TableNoTracking;
if (request.ProductId != null)
query = query.Where(q => q.ProductId == request.ProductId);
return await query
.OrderByDescending(r => r.CreatedAt)
.Skip(request.Page * 15)
.Take(15)
.Select(ReviewMapper.ProjectToSDto)
.ToListAsync(cancellationToken);
}
}