public async Task <ActionResult> Create(FoodItemFormViewModel foodItem) { try { var user = await GetUserAsync(); var pantryId = user.PantryId; var groceryList = await _context.GroceryLists .FirstOrDefaultAsync(gl => gl.PantryId == user.PantryId); var foodMatch = await _context.Foods .FirstOrDefaultAsync(f => f.Name.Contains(foodItem.FoodItemName)); if (foodMatch == null) { var food = new Food() { PantryId = pantryId, Name = foodItem.FoodItemName, CategoryId = foodItem.CategoryId, Quantity = 0, QuantityUnitId = foodItem.QuantityUnitId, Threshold = foodItem.Threshold, IsThreshold = foodItem.IsThreshold }; _context.Foods.Add(food); await _context.SaveChangesAsync(); var groceryListFoodItem = new GroceryListFood() { FoodId = food.Id, Quantity = foodItem.Quantity, GroceryListId = groceryList.Id }; _context.GroceryListFoods.Add(groceryListFoodItem); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } else { var categories = await _context.Categories.Select(c => new SelectListItem() { Text = c.Name, Value = c.Id.ToString() }).ToListAsync(); var quantityUnits = await _context.QuantityUnits.Select(qu => new SelectListItem() { Text = qu.Name, Value = qu.Id.ToString() }).ToListAsync(); foodItem.QuantityUnitOptions = quantityUnits.OrderBy(qu => qu.Text).ToList(); foodItem.CategoryOptions = categories; foodItem.ShowDialog = true; return(View(foodItem)); } } catch (Exception ex) { return(View()); } }