Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
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);
        }