Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public async Task <BasePagingResponse <ProductResModel> > GetProduct([FromQuery] GetProductsReqModel model)
 {
     return(await _productService.GetProductsAsync(model));
 }