47 lines
1.4 KiB
C#
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;
|
|
}
|
|
} |