public PageResponse <DishDTO> Execute(DishSearch search) { var query = _unitOfWork.Dish.GetAll(); if (search.MinPrice.HasValue) { query = query.Where(p => p.Price >= search.MinPrice); } if (search.MaxPrice.HasValue) { query = query.Where(p => p.Price <= search.MaxPrice); } if (search.Title != null) { var keyword = search.Title.ToLower(); query = query.Where(p => p.Title.ToLower().Contains(keyword)); } if (search.CategoryId != null) { query = query.Where(p => p.CategoryId == search.CategoryId); } var totalCount = query.Count(); query = query.Skip((search.PageNumber - 1) * search.PerPage).Take(search.PerPage); var pagesCount = (int)Math.Ceiling((double)totalCount / search.PerPage); var response = new PageResponse <DishDTO> { CurrentPage = search.PageNumber, TotalCount = totalCount, PageCount = pagesCount, Data = query.Select(p => new DishDTO { Id = p.Id, Titile = p.Title, Price = p.Price, Category = p.Category.Name, Serving = p.Serving, Ingridients = p.Ingredients, CategoryId = p.CategoryId }) }; return(response); }
public ActionResult <PageResponse <DishDTO> > Get([FromQuery] DishSearch search) { var dishes = _dishService.Execute(search); return(Ok(dishes)); }