Example #1
0
        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);
        }