using NetinaShop.Domain.Entities.Brands; namespace NetinaShop.Repository.Handlers.Brands; public class GetBrandsQueryHandler : IRequestHandler> { private readonly IRepositoryWrapper _repositoryWrapper; public GetBrandsQueryHandler(IRepositoryWrapper repositoryWrapper) { _repositoryWrapper = repositoryWrapper; } public async Task> Handle(GetBrandsQuery request, CancellationToken cancellationToken) { IQueryable baseBrands; List brands; if (request.BrandName != null) { baseBrands = _repositoryWrapper.SetRepository() .TableNoTracking .Where(b => b.Name.Trim().Contains(request.BrandName.Trim())) .OrderByDescending(b => b.CreatedAt); } else { baseBrands = _repositoryWrapper.SetRepository().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; } }