Api/NetinaShop.Repository/Handlers/Brands/GetBrandsQueryHandler.cs

47 lines
1.4 KiB
C#

using NetinaShop.Domain.Entities.Brands;
namespace NetinaShop.Repository.Handlers.Brands;
public class GetBrandsQueryHandler : IRequestHandler<GetBrandsQuery, List<BrandSDto>>
{
private readonly IRepositoryWrapper _repositoryWrapper;
public GetBrandsQueryHandler(IRepositoryWrapper repositoryWrapper)
{
_repositoryWrapper = repositoryWrapper;
}
public async Task<List<BrandSDto>> Handle(GetBrandsQuery request, CancellationToken cancellationToken)
{
IQueryable<Brand> baseBrands;
List<BrandSDto> brands;
if (request.BrandName != null)
{
baseBrands = _repositoryWrapper.SetRepository<Brand>()
.TableNoTracking
.Where(b => b.Name.Trim().Contains(request.BrandName.Trim()))
.OrderByDescending(b => b.CreatedAt);
}
else
{
baseBrands = _repositoryWrapper.SetRepository<Brand>().TableNoTracking
.OrderByDescending(b => b.CreatedAt);
}
if (request.Page != null)
{
brands = await baseBrands.Skip(request.Page.Value * 10).Take(10)
.Select(BrandMapper.ProjectToSDto)
.ToListAsync(cancellationToken);
}
else
{
brands = await baseBrands
.Select(BrandMapper.ProjectToSDto)
.ToListAsync(cancellationToken);
}
return brands;
}
}