public async Task <PaginatedItemsViewModel <FoodViewModel> > GetFoodByCategory(int id, int pageSize, int pageIndex) { var filterSpecification = new FoodFilterSpecification(id); var roots = await _asyncFoodRepository.ListAsync(filterSpecification); var root = roots.FirstOrDefault(); var menu = await _asyncMenuRepository.GetByIdAsync(root.MenuId); if (menu.ExprireTime >= DateTime.Now) { var totalItems = roots.Count(); var itemsOnPage = roots.OrderBy(x => x.Name) .Select(x => new FoodViewModel { Id = x.Id, Description = x.Description, Name = x.Name, Price = x.Price, MenuId = x.MenuId, CategoryId = x.CategoryId, Image = x.Image }) .Skip(pageSize * pageIndex) .Take(pageSize) .ToList(); var model = new PaginatedItemsViewModel <FoodViewModel>( pageIndex, pageSize, totalItems, itemsOnPage); return(model); } return(null); }
public async Task <PaginatedItemsViewModel <FoodViewModel> > SearchFoodByFoodName(string foodName, int pageIndex, int pageSize) { if (!String.IsNullOrEmpty(foodName)) { var filterSpecification = new FoodFilterSpecification(foodName); var roots = await _asyncFoodRepository.ListAsync(filterSpecification); var root = roots.FirstOrDefault(); var menu = await _asyncMenuRepository.GetByIdAsync(root.MenuId); var totalItems = roots.Count(); var itemsOnPage = roots.OrderBy(x => x.Name) .Select(x => new FoodViewModel { Id = x.Id, Description = x.Description, Name = x.Name, Price = x.Price, MenuId = x.MenuId, CategoryId = x.CategoryId, Image = x.Image }) .Skip(pageSize * pageIndex) .Take(pageSize) .ToList(); var model = new PaginatedItemsViewModel <FoodViewModel>( pageIndex, pageSize, totalItems, itemsOnPage); return(model); } return(await GetAll(pageIndex, pageSize)); }