public async Task <BasePagingResponse <ProductResModel> > GetProductsAsync(GetProductsReqModel model) { var result = new BasePagingResponse <ProductResModel>(); var query = _context.Products.Include(p => p.Category) .Include(p => p.Brand) .Include(p => p.ProductImages) .AsNoTracking(); if (model.BrandId.HasValue) { query = query.Where(p => p.BrandId == model.BrandId); } if (model.CategoryId.HasValue) { query = query.Where(p => p.CategoryId == model.CategoryId); } if (!string.IsNullOrEmpty(model.Name)) { query = query.Where(p => p.Name.ToLower().Contains(model.Name.ToLower())); } query = CommonFunctions.SortQuery(model, query); result.Total = await query.CountAsync(); if (model.Page.HasValue && model.Page >= 0 && model.PageSize.HasValue && model.PageSize > 0) { query = query.Skip(model.PageSize.Value * (model.Page.Value - 1)).Take(model.PageSize.Value); } var products = await query.ToListAsync(); result.Items = _mapper.Map <List <Product>, List <ProductResModel> >(products); result.Page = model.Page; result.PageSize = model.PageSize; result.TotalPage = (int)Math.Ceiling(result.Total / (double)result.PageSize); return(result); }
public async Task <BasePagingResponse <ProductResModel> > GetProduct([FromQuery] GetProductsReqModel model) { return(await _productService.GetProductsAsync(model)); }