Example #1
0
        public ActionResult Get()
        {
            RecipeapiContext con = new RecipeapiContext();

            con.Recipe.ToList();
            List <ExRecipe> returnRecipeList = new List <ExRecipe>();

            foreach (Recipe recipe in con.Recipe.ToList())
            {
                ExRecipe returnRecipe = new ExRecipe();
                returnRecipe.id             = recipe.Id;
                returnRecipe.name           = recipe.Name;
                returnRecipe.description    = recipe.Description;
                returnRecipe.Categories     = con.Category.Where(mt => mt.CategoryToRecipe.Any(mt1 => mt1.Recipe.Id == recipe.Id)).ToList();
                returnRecipe.CookTime       = recipe.CookTime;
                returnRecipe.PrepTime       = recipe.PrepTime;
                returnRecipe.Cuisine        = recipe.Cuisine;
                returnRecipe.DietList       = con.Diet.Where(mt => mt.DietToRecipe.Any(mt1 => mt1.Recipe.Id == recipe.Id)).ToList();
                returnRecipe.Image          = recipe.Image;
                returnRecipe.IngredientList = con.Ingredients.Where(nutr => nutr.Recipe.Value == recipe.Id).ToList();
                //returnRecipe.Ingredients = JsonConvert.SerializeObject(returnRecipe.IngredientList);
                returnRecipe.Instructions     = (!string.IsNullOrEmpty(recipe.Instructions))?JsonConvert.DeserializeObject <List <InstructionObj> >(recipe.Instructions):new List <InstructionObj>();
                returnRecipe.MealTypeList     = con.MealType.Where(mt => mt.MealTypeToRecipe.Any(mt1 => mt1.Recipe.Id == recipe.Id)).ToList();
                returnRecipe.NumberOfServings = recipe.NumberOfServings;
                returnRecipe.Nutrition        = con.Nutrition.Where(nutr => nutr.Recipe.Value == recipe.Id).ToList();
                returnRecipeList.Add(returnRecipe);
            }
            return(Ok(JsonConvert.SerializeObject(returnRecipeList)));
        }
Example #2
0
        public ActionResult Get(int id)
        {
            if (id == 0)
            {
                return(BadRequest("Id cannot be 0"));
            }
            try
            {
                RecipeapiContext con    = new RecipeapiContext();
                Recipe           recipe = con.Recipe.FirstOrDefault(res => res.Id == id);


                ExRecipe returnRecipe = new ExRecipe();
                returnRecipe.id               = recipe.Id;
                returnRecipe.name             = recipe.Name;
                returnRecipe.description      = recipe.Description;
                returnRecipe.Categories       = con.Category.Where(mt => mt.CategoryToRecipe.Any(mt1 => mt1.Recipe.Id == recipe.Id)).ToList();
                returnRecipe.CookTime         = recipe.CookTime;
                returnRecipe.PrepTime         = recipe.PrepTime;
                returnRecipe.Cuisine          = recipe.Cuisine;
                returnRecipe.DietList         = con.Diet.Where(mt => mt.DietToRecipe.Any(mt1 => mt1.Recipe.Id == recipe.Id)).ToList();
                returnRecipe.Image            = recipe.Image;
                returnRecipe.IngredientList   = con.Ingredients.Where(nutr => nutr.Recipe.Value == recipe.Id).ToList();
                returnRecipe.Ingredients      = JsonConvert.SerializeObject(returnRecipe.IngredientList);
                returnRecipe.Instructions     = (!string.IsNullOrEmpty(recipe.Instructions)) ? JsonConvert.DeserializeObject <List <InstructionObj> >(recipe.Instructions) : new List <InstructionObj>();;
                returnRecipe.MealTypeList     = con.MealType.Where(mt => mt.MealTypeToRecipe.Any(mt1 => mt1.Recipe.Id == recipe.Id)).ToList();
                returnRecipe.NumberOfServings = recipe.NumberOfServings;
                returnRecipe.Nutrition        = con.Nutrition.Where(nutr => nutr.Recipe.Value == recipe.Id).ToList();


                if (recipe != null)
                {
                    return(Ok(JsonConvert.SerializeObject(returnRecipe)));
                }
                else
                {
                    return(NotFound());
                }
            }catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Example #3
0
        public ActionResult Post(ExRecipe recipe)
        {
            RecipeapiContext con = new RecipeapiContext();

            //List<Ingredients> ingrList = new List<Ingredients>();
            //foreach(Ingredients ingredient in recipe.IngredientList)
            //{

            //    ingrList.Add(ingredient);
            //}
            Recipe recipeObj = new Recipe();

            if (recipe.id > 0)
            {
                recipeObj = con.Recipe.FirstOrDefault(rec => rec.Id == recipe.id) ?? new Recipe();;
            }


            recipeObj.Name             = recipe.name;
            recipeObj.Description      = recipe.description;
            recipeObj.Ingredients      = null;// JsonConvert.SerializeObject(recipe.IngredientList);
            recipeObj.Image            = recipe.Image;
            recipeObj.NumberOfServings = recipe.NumberOfServings;
            recipeObj.CookTime         = recipe.CookTime;
            recipeObj.PrepTime         = recipe.PrepTime;
            recipeObj.Instructions     = JsonConvert.SerializeObject(recipe.Instructions);
            recipeObj.Cuisine          = recipe.Cuisine;
            //recipeObj.IngredientsNavigation = ingrList;



            //List< DietToRecipe> dietToRList = new List<DietToRecipe>();
            //List<CategoryToRecipe> CategoryToRList = new List<CategoryToRecipe>();
            //List<MealTypeToRecipe> MealTypeToRList = new List<MealTypeToRecipe>();


            // Search for deleted Nutrition items
            List <int> existinglistIngre = con.Ingredients.Where(nutr => nutr.Recipe == recipe.id).Select(dbnutr => dbnutr.Id).ToList();
            List <int> deleteListIngr    = new List <int>();

            if (recipe.IngredientList != null)
            {
                deleteListIngr = existinglistIngre.Except(recipe.IngredientList.Select(x => x.Id)).ToList();
                foreach (int id in deleteListIngr)
                {
                    Ingredients n = con.Ingredients.FirstOrDefault(nut => nut.Id == id);
                    if (n != null)
                    {
                        con.Ingredients.Remove(n);
                    }
                }

                // Add or update nutrition records
                foreach (Ingredients nutr in recipe.IngredientList)
                {
                    if (nutr.Id > 0)
                    {
                        Ingredients n = con.Ingredients.FirstOrDefault(nutrition => nutrition.Id == nutr.Id);
                        n.Product  = nutr.Product;
                        n.Units    = nutr.Units;
                        n.Quantity = nutr.Quantity;
                    }
                    else
                    {
                        recipeObj.IngredientsNavigation.Add(nutr);
                    }
                }
            }


            // Search for deleted Nutrition items
            List <int> existinglist = con.Nutrition.Where(nutr => nutr.Recipe == recipe.id).Select(dbnutr => dbnutr.Id).ToList();
            List <int> deleteList   = new List <int>();

            if (recipe.Nutrition != null)
            {
                deleteList = existinglist.Except(recipe.Nutrition.Select(x => x.Id)).ToList();

                foreach (int id in deleteList)
                {
                    Nutrition n = con.Nutrition.FirstOrDefault(nut => nut.Id == id);
                    if (n != null)
                    {
                        con.Nutrition.Remove(n);
                    }
                }

                // Add or update nutrition records
                foreach (Nutrition nutr in recipe.Nutrition)
                {
                    if (nutr.Id > 0)
                    {
                        Nutrition n = con.Nutrition.FirstOrDefault(nutrition => nutrition.Id == nutr.Id);
                        n.Label = nutr.Label;
                        n.Unit  = nutr.Unit;
                        n.Value = nutr.Value;
                    }
                    else
                    {
                        recipeObj.Nutrition.Add(nutr);
                    }
                }
            }

            // Search for deleted Nutrition items
            List <string> existinglistMeal = con.MealTypeToRecipe.Where(nutr => nutr.RecipeId == recipe.id).Select(dbnutr => dbnutr.MealType.Name).ToList();
            List <string> deleteListMeal   = new List <string>();

            if (recipe.MealTypeList != null)
            {
                deleteListMeal = existinglistMeal.Except(recipe.MealTypeList.Select(x => x.Name)).ToList();
                foreach (string id in deleteListMeal)
                {
                    MealTypeToRecipe n = con.MealTypeToRecipe.FirstOrDefault(nut => nut.MealType.Name == id && nut.RecipeId == recipe.id);
                    if (n != null)
                    {
                        con.MealTypeToRecipe.Remove(n);
                    }
                }
                foreach (MealType meal in recipe.MealTypeList)
                {
                    MealTypeToRecipe dtor = null;
                    //Getting mealType from DB list
                    MealType mealType = con.MealType.FirstOrDefault(d => d.Name == meal.Name);
                    if (mealType != null)
                    {
                        // checking if it is linked to recipe
                        dtor = con.MealTypeToRecipe.FirstOrDefault(mtr => mtr.MealTypeId == mealType.Id && recipe.id == mtr.RecipeId);
                    }

                    // if connection between recipe and mealtype dont exist, create it
                    if (dtor == null)
                    {
                        dtor          = new MealTypeToRecipe();
                        dtor.MealType = mealType ?? meal;
                        dtor.Recipe   = recipeObj;
                        recipeObj.MealTypeToRecipe.Add(dtor);
                    }
                }
            }


            // Search for deleted Category items
            List <string> existinglistCate = con.CategoryToRecipe.Where(nutr => nutr.RecipeId == recipe.id).Select(dbnutr => dbnutr.Category.Name).ToList();
            List <string> deleteListCat    = new List <string>();

            if (recipe.Categories != null)
            {
                deleteListCat = existinglistCate.Except(recipe.Categories.Select(x => x.Name)).ToList();
            }

            foreach (string id in deleteListCat)
            {
                CategoryToRecipe n = con.CategoryToRecipe.FirstOrDefault(nut => nut.Category.Name == id && nut.RecipeId == recipe.id);
                if (n != null)
                {
                    con.CategoryToRecipe.Remove(n);
                }
            }
            foreach (Category category in recipe.Categories)
            {
                CategoryToRecipe dtor = null;
                Category         cat  = con.Category.FirstOrDefault(d => d.Name == category.Name);
                if (cat != null)
                {
                    // checking if it is linked to recipe
                    dtor = con.CategoryToRecipe.FirstOrDefault(ctr => ctr.CategoryId == cat.Id && recipe.id == ctr.RecipeId);
                }
                if (dtor == null)
                {
                    dtor          = new CategoryToRecipe();
                    dtor.Category = cat ?? category;
                    dtor.Recipe   = recipeObj;
                    recipeObj.CategoryToRecipe.Add(dtor);
                }
            }

            // Delete diets connection
            List <string> existinglistDietCon = con.DietToRecipe.Where(nutr => nutr.RecipeId == recipe.id).Select(dbnutr => dbnutr.Diet.Name).ToList();
            List <string> deleteListDiet      = new List <string>();

            if (recipe.DietList != null)
            {
                deleteListDiet = existinglistDietCon.Except(recipe.DietList.Select(x => x.Name)).ToList();

                foreach (string id in deleteListDiet)
                {
                    DietToRecipe n = con.DietToRecipe.FirstOrDefault(nut => nut.Diet.Name == id && nut.RecipeId == recipe.id);
                    if (n != null)
                    {
                        con.DietToRecipe.Remove(n);
                    }
                }
                foreach (Diet d in recipe.DietList)
                {
                    Diet         diet = con.Diet.FirstOrDefault(di => di.Name == d.Name);
                    DietToRecipe dtor = null;
                    if (diet != null)
                    {
                        dtor = con.DietToRecipe.FirstOrDefault(ctr => ctr.Diet.Name == d.Name && recipe.id == ctr.RecipeId);
                    }

                    if (dtor == null)
                    {
                        dtor        = new DietToRecipe();
                        dtor.Diet   = diet ?? d;
                        dtor.Recipe = recipeObj;
                        recipeObj.DietToRecipe.Add(dtor);
                    }
                }
            }
            //recipeObj.CategoryToRecipe = null;
            //recipeObj.DietToRecipe = null;
            //recipeObj.MealTypeToRecipe = null;

            //recipeObj.CategoryToRecipe = CategoryToRList;
            //recipeObj.DietToRecipe = dietToRList;
            //recipeObj.MealTypeToRecipe = MealTypeToRList;

            if (recipe.id == 0)
            {
                con.Recipe.Add(recipeObj);
            }
            con.SaveChanges();
            return(Ok());
        }