public JArray getDishesById(List <Dish> dishes, List <Ingredients> ingredients, int id) { /* * return JArray with dish by id, if does not exits return error */ DishByIdResponse dishByIdResponse = new DishByIdResponse(); List <DishByIdResponse> list = new List <DishByIdResponse>(); List <ParentDish> listParentDish = new List <ParentDish>(); if (dishes.Exists(x => x.id == id)) { Dish dish = dishes.Find(x => x.id == id); dishByIdResponse.id = dish.id; dishByIdResponse.name = dish.name; dishByIdResponse.lastupdatedOn = dish.updatedOn; ParentDish parentDish = new ParentDish(); parentDish.id = dish.parentId; Dish parent = dishes.Find(x => x.id == dish.parentId); parentDish.name = parent.name; listParentDish.Add(parentDish); dishByIdResponse.parentDish = listParentDish; List <IngredientsResponse> ingredientResponseList = new List <IngredientsResponse>(); foreach (Ingredient i in dish.ingredients) { IngredientsResponse ingredientResponse = new IngredientsResponse(); Ingredients ingredient = ingredients.Find(x => x.id == i.ingredientId); ingredientResponse.id = ingredient.id; ingredientResponse.name = ingredient.name; ingredientResponse.amount = i.amount; ingredientResponseList.Add(ingredientResponse); dishByIdResponse.ingredients = ingredientResponseList; } list.Add(dishByIdResponse); string json = JsonConvert.SerializeObject(list); return(JArray.Parse(json)); } else { string message = "Dish with id: " + id + " is not found"; return(ExceptionHandler.getException(message)); } }
public async Task <DishesById> GetDishById(int id) { var dishDb = await _dishRepository.GetDishById(id); var dishById = new DishesById(); dishById.Id = dishDb.Id; dishById.Name = dishDb.Name; dishById.UpdatedOn = dishDb.UpdatedOn; dishById.ParentDish = new List <ParentDish>(); dishById.Ingredients = new List <IngredientsWithAmount>(); var dishesIngredients = await _dishesIngredientsRepository.GetDishIngredientsByDishesId(dishDb.Id); foreach (var item in dishesIngredients) { var ingredientsById = await _ingredientsRepository.GetIngredientsById(item.IngredientId); foreach (var item2 in ingredientsById) { var ingridientWithAmount = new IngredientsWithAmount { IngredientId = item.IngredientId, Name = item2.Name, Amount = item.Amount }; dishById.Ingredients.Add(ingridientWithAmount); } } var dishWithParentId = await _dishRepository.GetDishByParentId(dishDb.ParentId); if (dishWithParentId != null) { foreach (var item3 in dishWithParentId) { var dishesByIngredients = await _dishesIngredientsRepository.GetDishIngredientsByDishesId(item3.Id); foreach (var item4 in dishesByIngredients) { var ingredientByParent = await _ingredientsRepository.GetIngredientsById(item4.IngredientId); foreach (var item5 in ingredientByParent) { var ingridientWithAmount = new IngredientsWithAmount(); ingridientWithAmount.IngredientId = item4.IngredientId; ingridientWithAmount.Name = item5.Name; ingridientWithAmount.Amount = item4.Amount; dishById.Ingredients.Add(ingridientWithAmount); } } } foreach (var parent in dishWithParentId) { var parentDish = new ParentDish(); parentDish.ParentId = parent.Id; parentDish.ParentDishName = parent.Name; dishById.ParentDish.Add(parentDish); } } return(dishById); }