Example #1
0
        public async Task <IHttpActionResult> createMenu(MenuRecipe item)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            double?Price = db.Ingredients.Where(x => item.ChildIngredients.Contains(x.Id)).Sum(x => x.Price);

            Ingredient IntermediateIngredient = new Ingredient()
            {
                Name  = item.Name,
                Price = Price
            };

            db.Ingredients.Add(IntermediateIngredient);
            await db.SaveChangesAsync();

            var Ingredient = db.Ingredients.First(x => x.Name == item.Name);

            foreach (var IngredientId in item.ChildIngredients)
            {
                db.IngredientRecipes.Add(new IngredientRecipe()
                {
                    ChildIngredientId  = IngredientId,
                    ParentIngredientId = Ingredient.Id
                });
            }

            await db.SaveChangesAsync();

            return(Ok(item));
        }
Example #2
0
        public async Task <IHttpActionResult> GetMenu(int id)
        {
            //var param = new SqlParameter("@Id", id);
            //I know of SQL injection yet there was some weired issue causing the parameter not pass correctly
            var Menu = db.Menu.SqlQuery($"exec GetMenuItems @Id={id}").First();

            if (Menu == null)
            {
                return(NotFound());
            }

            var ChildIngredientIds = db.IngredientRecipes
                                     .Where(x => x.ParentIngredientId == Menu.Id)
                                     .Select(x => x.ChildIngredientId).ToList();
            var MenuRecipe = new MenuRecipe()
            {
                Id               = Menu.Id,
                Name             = Menu.MenuItem,
                Price            = Menu.Price,
                ChildIngredients = ChildIngredientIds
            };


            return(Ok(MenuRecipe));
        }
Example #3
0
    protected void NewMenu()
    {
        MyBuyList.Shared.Entities.Menu menu = new MyBuyList.Shared.Entities.Menu();

        Dictionary <int, Recipe> selectedRecipes = Utils.SelectedRecipes;

        if (selectedRecipes != null && selectedRecipes.Count != 0)
        {
            foreach (KeyValuePair <int, Recipe> r in selectedRecipes)
            {
                MenuRecipe recipe = new MenuRecipe();
                recipe.RecipeId = r.Key;
                recipe.Recipe   = r.Value;
                recipe.Menu     = this.CurrentMenu;
                menu.MenuRecipes.Add(recipe);
            }
        }

        menu.MenuId     = 0;
        menu.MenuTypeId = 1;

        this.CurrentMenu = menu;

        this.RebindMenuRecipes();

        this.rbnCategoryOneMeal.Checked = true;
        this.rbnCategoryWeekly.Checked  = false;
        this.TablesTitleImg.ImageUrl    = "Images/SubHeader_MeatDetails.png";
        this.divNumDiners.Visible       = true;

        this.RebindMealsDetails();

        this.BindMenuCategories();
    }
Example #4
0
        public async Task <IHttpActionResult> GetInterIngredient(int id)
        {
            //var param = new SqlParameter("@Id", id);
            //I know of SQL Injection yet I have to use this approach due to some problems.
            var Menu = db.Menu.SqlQuery($"exec GetIntermediateIngredints @id={id}").First();

            if (Menu == null)
            {
                return(NotFound());
            }

            var ChildIngredientIds = db.IngredientRecipes
                                     .Where(x => x.ParentIngredientId == Menu.Id)
                                     .Select(x => x.ChildIngredientId).ToList();
            var InterIngredientRecipe = new MenuRecipe()
            {
                Id               = Menu.Id,
                Name             = Menu.MenuItem,
                Price            = Menu.Price,
                ChildIngredients = ChildIngredientIds
            };


            return(Ok(InterIngredientRecipe));
        }
Example #5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                MyBuyList.Shared.Entities.Menu menu = new MyBuyList.Shared.Entities.Menu();

                Meal theMeal = new Meal();
                theMeal.MealTypeId   = 4;
                theMeal.CourseTypeId = 0;
                theMeal.CreatedDate  = DateTime.Now;
                theMeal.ModifiedDate = DateTime.Now;

                Dictionary <int, Recipe> selectedRecipes         = Utils.SelectedRecipes;
                Dictionary <int, int>    selectedRecipesServings = Utils.SelectedRecipesServings;

                menu.MenuName    = string.Format("רשימת קניות מהירה מתאריך {0}, {1}", DateTime.Now.ToShortDateString(), DateTime.Now.ToLongTimeString());
                menu.MenuTypeId  = (int)MenuTypeEnum.QuickMenu;
                menu.UserId      = ((BasePage)this.Page).UserId;
                menu.IsPublic    = false;
                menu.Description = string.Format("רשימת קניות מהירה שהופקה בתאריך {0}, בשעה {1}. כוללת {2} מתכונים", DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), (selectedRecipes != null) ? selectedRecipes.Count.ToString() : "0");

                if (selectedRecipes != null && selectedRecipes.Count != 0)
                {
                    foreach (KeyValuePair <int, Recipe> r in selectedRecipes)
                    {
                        MenuRecipe recipe = new MenuRecipe();
                        recipe.RecipeId = r.Key;
                        menu.MenuRecipes.Add(recipe);

                        MealRecipe mealRecipe = new MealRecipe();
                        mealRecipe.RecipeId = r.Key;
                        //mealRecipe.Servings = r.Value.ExpectedServings;
                        mealRecipe.ExpectedServings = r.Value.ExpectedServings;
                        mealRecipe.Servings         = selectedRecipesServings.Keys.Contains(recipe.RecipeId) ? selectedRecipesServings[recipe.RecipeId] : r.Value.Servings;
                        theMeal.MealRecipes.Add(mealRecipe);
                    }
                }

                menu.Meals.Add(theMeal);

                int newMenuId;

                BusinessFacade.Instance.CreateOrUpdateMenu(menu, out newMenuId);

                if (newMenuId != 0)
                {
                    Utils.SelectedRecipes         = null;
                    Utils.SelectedRecipesServings = null;
                    string url = string.Format("~/ShoppingList.aspx?menuId={0}", newMenuId);
                    this.Response.Redirect(url);
                }
            }
        }
        catch (Exception)
        {
        }
    }
Example #6
0
        public void AddMenuItem(int menuId, int recipeId, string user)
        {
            MenuRecipe dbMRecipe = new MenuRecipe()
            {
                MenuId   = _mRepo.GetMenuById(menuId).First().Id,
                RecipeId = _rRepo.GetById(recipeId, user).First().Id
            };

            _mrRepo.AddMenuItem(dbMRecipe);
        }
Example #7
0
 public void AddMenuItem(MenuRecipe item)
 {
     if ((from mr in _db.MenuRecipes
          where mr.MenuId == item.MenuId &&
          mr.RecipeId == item.RecipeId
          select mr).FirstOrDefault() == null)
     {
         _db.MenuRecipes.Add(item);
         _db.SaveChanges();
     }
 }
Example #8
0
        public async Task <MenuRecipeResponse> UnassingMenuRecipeAsync(int menuId, int recipeId)
        {
            try
            {
                MenuRecipe menuRecipe = await _menuRecipeRepository.FindByMenuIdAndRecipeId(menuId, recipeId);

                _menuRecipeRepository.Remove(menuRecipe);
                return(new MenuRecipeResponse(menuRecipe));
            }
            catch (Exception ex)
            {
                return(new MenuRecipeResponse($"An error ocurred while assigning Recipe to Menu: {ex.Message}"));
            }
        }
Example #9
0
    protected void ChangeServings(object sender, CommandEventArgs e)
    {
        int recipeId = Convert.ToInt32(e.CommandArgument);

        MyBuyList.Shared.Entities.Menu menu = CurrentMenu;

        //Recipe recipe1 = BusinessFacade.Instance.GetRecipe(recipeId);

        MenuRecipe menuRecipe = menu.MenuRecipes.SingleOrDefault(x => x.RecipeId == recipeId);

        if (menuRecipe != null)
        {
            MealRecipe mealRecipe = (from p in menu.Meals
                                     join p1 in menuRecipe.Recipe.MealRecipes on p.MealId equals p1.MealId
                                     where p.MenuId == menu.MenuId &&
                                     p1.RecipeId == recipeId && p1.Meal != null
                                     select new MealRecipe
            {
                RecipeId = recipeId,
                Servings = p1.Servings,
                Recipe = menuRecipe.Recipe,
                MealId = p.MealId
            }).SingleOrDefault();

            if (mealRecipe != null)
            {
                switch (e.CommandName)
                {
                case "Increase":
                    mealRecipe.Servings += menuRecipe.Recipe.Servings;
                    break;

                case "Decrease":
                    if (mealRecipe.Servings > menuRecipe.Recipe.Servings)
                    {
                        mealRecipe.Servings -= menuRecipe.Recipe.Servings;
                    }
                    break;
                }

                MealRecipe recipe = menuRecipe.Recipe.MealRecipes.SingleOrDefault(x => x.MealId == mealRecipe.MealId && x.Meal != null);
                if (recipe != null)
                {
                    recipe.Servings = mealRecipe.Servings;
                }
            }
        }
    }
Example #10
0
        public async Task <IHttpActionResult> PutRecipe(MenuRecipe item)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (item.Id == 0)
            {
                return(BadRequest());
            }

            if (!IngredientRecipeExists(item.Id))
            {
                return(NotFound());
            }

            var PreviousRecipe = db.IngredientRecipes.Where(x => x.ParentIngredientId == item.Id).ToList();

            foreach (var recipe in PreviousRecipe)
            {
                db.IngredientRecipes.Remove(recipe);
                db.SaveChanges();
            }


            foreach (var IngredientId in item.ChildIngredients)
            {
                db.IngredientRecipes.Add(new IngredientRecipe()
                {
                    ChildIngredientId  = IngredientId,
                    ParentIngredientId = item.Id
                });
            }
            await db.SaveChangesAsync();

            double?Price = db.Ingredients.Where(x => item.ChildIngredients.Contains(x.Id)).Sum(x => x.Price);

            var Recipe = db.Ingredients.Where(x => x.Id == item.Id).First();

            Recipe.Price           = Price;
            db.Entry(Recipe).State = EntityState.Modified;
            await db.SaveChangesAsync();


            return(Ok(item));
        }
Example #11
0
        private async void OnAddToMenuClicked(object sender, EventArgs e)
        {
            RcpToMenu = new AddEditGetMenu()
            {
                RecipeId     = Convert.ToInt32(App.RecipeViewModel.CurrentRcp.RecipeID),
                MenuServings = App.RecipeViewModel.CurrentRcp.RecipeServings,
                UserId       = Data.CABEServices.UserDetails.ID,
            };
            if (App.CurrentMenu == null)
            {
                var tempMenuId   = 0;
                var tempMenuName = "";

                // Establish CurrentMenu
                var menuList = await App.cabeMgr.GetSavedMenusAsync(CurrentUserID);

                if (menuList.Count > 0)
                {
                    foreach (Menu menu in menuList)
                    {
                        if (menu.CurrentMenu == true)
                        {
                            tempMenuId   = menu.Id;
                            tempMenuName = menu.MenuName;
                        }
                    }
                }
                RcpToMenu.MenuId   = tempMenuId;
                RcpToMenu.MenuName = tempMenuName;
                if (tempMenuId != 0)
                {
                    var tempCurrentMenu = new MenuRecipe();
                    tempCurrentMenu.MenuId   = tempMenuId;
                    tempCurrentMenu.MenuName = tempMenuName;
                    App.CurrentMenu          = tempCurrentMenu;
                }
                await App.cabeMgr.AddEditGetMenuAsync(RcpToMenu);
            }
            else
            {
                RcpToMenu.MenuName = App.CurrentMenu.MenuName;
                RcpToMenu.MenuId   = App.CurrentMenu.MenuId;
                await App.cabeMgr.AddEditGetMenuAsync(RcpToMenu);
            }

            await Navigation.PushAsync(new Pages.CurrentMenuPage());
        }
Example #12
0
        public static MenuRecipeViewModel SearchMenuRecipe(string MenuItemCode)
        {
            using (CFMMCDEntities db = new CFMMCDEntities())
            {
                List <INVRIRP0>     MRRowList   = new List <INVRIRP0>();
                MenuRecipeViewModel MRViewModel = new MenuRecipeViewModel();

                if (db.INVRIRP0.Where(o => o.RIRMIC.ToString().Equals(MenuItemCode)).Any())
                {
                    MRRowList = db.INVRIRP0.Where(o => o.RIRMIC.ToString().Equals(MenuItemCode)).ToList();
                }

                MRViewModel.RIRMIC = MenuItemCode;
                MRViewModel.MIMDSC = db.CSHMIMP0.Single(o => o.MIMMIC.ToString().Equals(MenuItemCode)).MIMDSC;
                MRViewModel.MIMLON = db.CSHMIMP0.Single(o => o.MIMMIC.ToString().Equals(MenuItemCode)).MIMLON;
                if (MRRowList.Count() > 0 && MRRowList.FirstOrDefault().Group != null)
                {
                    MRViewModel.Group = (int)MRRowList.FirstOrDefault().Group;
                }
                else
                {
                    MRViewModel.Group = 0;
                }
                MRViewModel.MenuRecipeList = new List <MenuRecipe>();
                foreach (var v in MRRowList)
                {
                    MenuRecipe mr = new MenuRecipe();
                    mr.RIRRID = v.RIRRID;
                    mr.RIRRIC = v.RIRRIC.ToString();
                    mr.RIMRID = db.INVRIMP0.Single(o => o.RIMRIC.ToString().Equals(mr.RIRRIC)).RIMRID;
                    // Get price by getting primary vendor id first
                    int primVenId = (int)db.INVRIMP0.Single(o => o.RIMRIC == v.RIRRIC).RIMPVN;
                    // Look up Raw item and Vendor
                    if (db.RIM_VEM_Lookup.Where(o => o.RIM_VEM_ID.Equals(v.RIRRIC.ToString() + primVenId.ToString())).Any())
                    {
                        mr.RIMCPR = db.RIM_VEM_Lookup.Single(o => o.RIM_VEM_ID.Equals(v.RIRRIC.ToString() + primVenId.ToString())).RIMCPR.ToString();
                    }
                    mr.RIRSFQ = v.RIRSFQ.ToString();
                    mr.RIRCWC = v.RIRCWC;
                    mr.RIRSTA = v.RIRSTA;
                    mr.STOATT = db.INVRIMP0.Single(o => o.RIMRIC == v.RIRRIC).Store_Attrib;
                    MRViewModel.MenuRecipeList.Add(mr);
                }
                return(MRViewModel);
            }
        }
Example #13
0
    protected void lnkRemove_Click(object sender, EventArgs e)
    {
        MyBuyList.Shared.Entities.Menu menu = this.CurrentMenu;

        LinkButton lnkBtn = sender as LinkButton;

        int recipeId;

        if (lnkBtn != null && int.TryParse(lnkBtn.Attributes["recipeId"], out recipeId))
        {
            foreach (Meal meal in menu.Meals)
            {
                MealRecipe mealRecipeToRemove = meal.MealRecipes.SingleOrDefault(mr => mr.RecipeId == recipeId);
                if (mealRecipeToRemove != null)
                {
                    meal.MealRecipes.Remove(mealRecipeToRemove);
                }
            }

            MenuRecipe menuRecipeToRemove = menu.MenuRecipes.SingleOrDefault(mr => mr.RecipeId == recipeId);

            if (menuRecipeToRemove != null)
            {
                menu.MenuRecipes.Remove(menuRecipeToRemove);
            }

            Dictionary <int, Recipe> selectedRecipes = Utils.SelectedRecipes;
            selectedRecipes.Remove(recipeId);
        }

        CurrentMenu = menu;

        ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "setDirty", "setDirty();", true);

        RebindMenuRecipes();
        RebindMealsDetails();
        upSelectedRecipes.Update();
        upMealsDetails.Update();
    }
Example #14
0
        public IActionResult Create([FromBody] AddEditGetMenuVM menuInput)
        {
            if (ModelState.IsValid)
            {
                var addMenu = false;
                if (menuInput.MenuId == 0)
                {
                    addMenu = true;
                }

                // Validate UserId, MenuId & RecipeId before writing to database
                if (_context.Users.FirstOrDefault(m => m.Id == menuInput.UserId) == null || _context.Recipes.FirstOrDefault(r => r.Id == menuInput.RecipeId) == null)
                {
                    return(BadRequest());
                }
                if (addMenu == false && _context.Menus.FirstOrDefault(m => m.Id == menuInput.MenuId) == null)
                {
                    return(BadRequest());
                }  // end check for valid UserId, MenuId and RecipeId input

                // Clear current menu bit for user
                var clearCurrent = new Menu();
                clearCurrent = _context.Menus.FirstOrDefault(m => m.UserId == menuInput.UserId && m.CurrentMenu == true);
                if (clearCurrent != null)
                {
                    clearCurrent.CurrentMenu = false;
                    _context.Menus.Update(clearCurrent);
                    _context.SaveChanges();
                }

                // If new menu add to Menus table & get MenuId
                var newMenu = new Menu();
                if (addMenu == true)
                {
                    newMenu.UserId      = menuInput.UserId;
                    newMenu.MenuName    = menuInput.MenuName;
                    newMenu.CurrentMenu = true;
                    _context.Menus.Add(newMenu);
                    _context.SaveChanges();
                }
                else
                {
                    var editMenu = new Menu();
                    editMenu             = _context.Menus.FirstOrDefault(m => m.Id == menuInput.MenuId);
                    editMenu.CurrentMenu = true;
                    _context.Menus.Update(editMenu);
                    _context.SaveChanges();
                }

                // Store recipe in MenuRecipe table
                var newMenuRecipe = new MenuRecipe();
                if (addMenu == true)
                {
                    newMenuRecipe.MenuId = newMenu.Id;
                }
                else
                {
                    newMenuRecipe.MenuId = menuInput.MenuId;
                }
                newMenuRecipe.RecipeId     = menuInput.RecipeId;
                newMenuRecipe.MenuServings = menuInput.MenuServings;
                _context.MenuRecipe.Add(newMenuRecipe);
                _context.SaveChanges();

                return(CreatedAtRoute("", new { id = newMenuRecipe.MenuId }, menuInput));
            }
            else
            {
                return(BadRequest());
            }
        }
Example #15
0
    protected void EditMenu(int menuId)
    {
        try
        {
            titleImg.ImageUrl = "~/Images/Header_EditMenu.png";

            MyBuyList.Shared.Entities.Menu menu = BusinessFacade.Instance.GetMenuEx(menuId);

            if (menu != null)
            {
                if ((((BasePage)Page).UserType != 1) && (menu.UserId != ((BasePage)Page).UserId) && !(menu.IsPublic) || menu.IsDeleted)
                {
                    AppEnv.MoveToDefaultPage();
                }

                Dictionary <int, Recipe> selectedRecipes = Utils.SelectedRecipes;

                foreach (MenuRecipe mr in menu.MenuRecipes)
                {
                    selectedRecipes.Add(mr.RecipeId, mr.Recipe);
                }

                if (selectedRecipes != null && selectedRecipes.Count != 0)
                {
                    foreach (KeyValuePair <int, Recipe> r in selectedRecipes)
                    {
                        MenuRecipe menuRecipe = new MenuRecipe {
                            RecipeId = r.Key, Recipe = r.Value, Menu = CurrentMenu
                        };

                        bool containsRecipe = false;
                        foreach (MenuRecipe mr in menu.MenuRecipes)
                        {
                            if (mr.RecipeId == r.Key)
                            {
                                containsRecipe   = true;
                                r.Value.Servings = mr.Recipe.Servings;

                                MealRecipe mealRecipe = (from p in menu.Meals
                                                         join p1 in mr.Recipe.MealRecipes on p.MealId equals p1.MealId
                                                         where p.MenuId == menu.MenuId &&
                                                         p1.RecipeId == r.Key
                                                         select new MealRecipe
                                {
                                    RecipeId = r.Key,
                                    Servings = p1.Servings,
                                    Recipe = r.Value,
                                    MealId = p.MealId
                                }).SingleOrDefault();

                                if (mealRecipe != null)
                                {
                                    r.Value.ExpectedServings   = mealRecipe.Servings;
                                    mr.Recipe.ExpectedServings = mealRecipe.Servings;
                                }
                            }
                        }
                        if (!containsRecipe)
                        {
                            menu.MenuRecipes.Add(menuRecipe);
                        }
                    }
                }


                bool isOneMeal = (menu.MenuTypeId == (int)MenuTypeEnum.OneMeal || menu.MenuTypeId == (int)MenuTypeEnum.QuickMenu);

                rbnCategoryOneMeal.Enabled = isOneMeal;
                rbnCategoryWeekly.Enabled  = !isOneMeal;


                CurrentMenu = menu;

                RebindMenuRecipes();

                RebindMenuDetails();

                BindMenuCategories();
            }
            else
            {
                AppEnv.MoveToDefaultPage();
            }
        }
        catch (Exception)
        {
        }
    }
Example #16
0
    public static void AddToMenu_DnD(int recipeId, string mealSignature)
    {
        MyBuyList.Shared.Entities.Menu menu = HttpContext.Current.Session["currentMenu"] as MyBuyList.Shared.Entities.Menu;

        Meal meal = null;

        int[] mealIdentifiers = GetMealIdentifiers(mealSignature);

        int dayIndex     = mealIdentifiers[0];
        int mealTypeId   = mealIdentifiers[1];
        int courseTypeId = mealIdentifiers[2];


        if (mealIdentifiers != null && mealIdentifiers.Length == 3)
        {
            if (menu.MenuTypeId == (int)MenuTypeEnum.QuickMenu) //only one meal in the menu
            {
                meal = menu.Meals.SingleOrDefault(me => me.MealTypeId == mealTypeId);
            }
            else if (menu.MenuTypeId == (int)MenuTypeEnum.OneMeal)
            {
                meal = menu.Meals.SingleOrDefault(me => me.CourseTypeId == courseTypeId);
            }
            else
            {
                meal = menu.Meals.SingleOrDefault(me => me.DayIndex == dayIndex && me.MealTypeId == mealTypeId);
            }

            if (meal == null)
            {
                meal              = new Meal();
                meal.MealId       = 0;
                meal.CourseTypeId = courseTypeId;
                meal.DayIndex     = dayIndex;
                meal.MealTypeId   = mealTypeId;
                meal.CreatedDate  = DateTime.Now;
                meal.ModifiedDate = DateTime.Now;

                menu.Meals.Add(meal);
            }

            //Page page = HttpContext.Current.Handler as Page;
        }

        MealRecipe mealRecipe = new MealRecipe();

        MenuRecipe menuRec = menu.MenuRecipes.SingleOrDefault(mr => mr.RecipeId == recipeId);

        if (menuRec != null)
        {
            mealRecipe.Recipe           = menuRec.Recipe;
            mealRecipe.Servings         = menuRec.Recipe.Servings;
            mealRecipe.ExpectedServings = menuRec.Recipe.ExpectedServings;
        }

        MealRecipe sameMealRecipe = meal.MealRecipes.SingleOrDefault(smr => smr.RecipeId == mealRecipe.RecipeId);

        if (sameMealRecipe == null)
        {
            meal.MealRecipes.Add(mealRecipe);
        }

        HttpContext.Current.Session["currentMenu"] = menu;
    }
Example #17
0
    //note: the "detour" on the way to this method (through a JS function that clicks a hidden button) is neccessary because if this method
    //is called directly from within the "poping" panel, it forces "full" postback for some reason. In this way it is avoided, and selection
    //flow seems "smoother".
    protected void btnTmpOK_Click(object sender, EventArgs e)
    {
        MyBuyList.Shared.Entities.Menu menu = CurrentMenu;

        //get relevant meal, or create it if it doesn't exist.
        Meal meal;
        int? dayIndex = null, courseTypeId = null;
        int  mealTypeId;

        switch ((MenuTypeEnum)menu.MenuTypeId)
        {
        case MenuTypeEnum.QuickMenu:
            mealTypeId   = 4;
            courseTypeId = 0;

            meal = menu.Meals.SingleOrDefault(me => me.MealTypeId == mealTypeId);
            break;

        case MenuTypeEnum.OneMeal:
            courseTypeId = int.Parse(ddlChooseCourse.SelectedItem.Value);
            if (courseTypeId == -1)
            {
                return;
            }

            mealTypeId = 4;

            meal = menu.Meals.SingleOrDefault(me => me.CourseTypeId == courseTypeId);
            break;

        default:
            dayIndex   = int.Parse(ddlChooseDay.SelectedItem.Value);
            mealTypeId = int.Parse(ddlChooseMeal.SelectedItem.Value);
            if (dayIndex == 0 || mealTypeId == 0)
            {
                return;
            }

            meal = menu.Meals.SingleOrDefault(me => me.DayIndex == dayIndex && me.MealTypeId == mealTypeId);
            break;
        }

        if (meal == null)
        {
            meal = new Meal
            {
                MealId       = 0,
                CourseTypeId = courseTypeId,
                DayIndex     = dayIndex,
                MealTypeId   = mealTypeId,
                CreatedDate  = DateTime.Now,
                ModifiedDate = DateTime.Now
            };

            menu.Meals.Add(meal);
        }

        //get recipe id, create MealRecipe, and add to MealRecipes of the current / new meal.
        int recipeId;
        int servingsNum;

        bool succeeded = int.TryParse(hfRecipeId.Value, out recipeId);

        if (succeeded)
        {
            MealRecipe mealRecipe = new MealRecipe();

            MenuRecipe menuRec = menu.MenuRecipes.SingleOrDefault(mr => mr.RecipeId == recipeId);
            if (menuRec != null)
            {
                mealRecipe.Recipe = menuRec.Recipe;

                int  expectedServings;
                bool tryParse = int.TryParse(hfExpectedServings.Value, out expectedServings);
                if (tryParse)
                {
                    mealRecipe.ExpectedServings     = expectedServings;
                    menuRec.Recipe.ExpectedServings = expectedServings;
                }
            }

            MealRecipe sameMealRecipe = meal.MealRecipes.SingleOrDefault(smr => smr.RecipeId == mealRecipe.RecipeId);
            if (sameMealRecipe == null)
            {
                meal.MealRecipes.Add(mealRecipe);
            }
        }


        //save menu changes and display changed menu
        CurrentMenu = menu;

        RebindMealsDetails();
        upMealsDetails.Update();
        RebindMenuRecipes();
        upSelectedRecipes.Update();
    }
Example #18
0
        public IActionResult Create([FromBody] AddEditRecipeVM recipeInput)
        //public IActionResult Post([FromBody] Object jsonRecipeInput)
        {
            //var jsonString = jsonRecipeInput.ToString();
            //AddEditRecipeVM recipeInput = JsonConvert.DeserializeObject<AddEditRecipeVM>(jsonString);

            if (ModelState.IsValid)
            {
                // Validate data here before writing to database
                if (_context.Users.FirstOrDefault(u => u.Id == recipeInput.userRecipeFavorite.UserId) == null || _context.Users.FirstOrDefault(u => u.Id == recipeInput.recipe.OwnerId) == null)
                {
                    return(NotFound());
                }

                var editRecipe = false;
                List <MenuRecipe>         menuRecipeEdits    = new List <MenuRecipe>();
                List <UserRecipeFavorite> userRecipeFavEdits = new List <UserRecipeFavorite>();
                if (recipeInput.recipe.RecipeId != 0)
                {
                    editRecipe = true;

                    // Save list of MenuRecipe entries
                    var tempMenuRecipes = from recipePtr in _context.MenuRecipe
                                          where recipePtr.RecipeId == recipeInput.recipe.RecipeId
                                          select recipePtr;
                    menuRecipeEdits = tempMenuRecipes.ToList();

                    // Delete MenuRecipe entries
                    _context.MenuRecipe.RemoveRange(_context.MenuRecipe.Where(m => m.RecipeId == recipeInput.recipe.RecipeId));
                    _context.SaveChanges();

                    // Delete StepIngredients entries
                    var tempSteps = from stepPtr in _context.Steps
                                    where stepPtr.RecipeId == recipeInput.recipe.RecipeId
                                    select stepPtr;
                    var delStepList = tempSteps.ToList();
                    foreach (Step delStepPtr in delStepList)
                    {
                        _context.StepIngredient.RemoveRange(_context.StepIngredient.Where(s => s.StepId == delStepPtr.Id));
                    }
                    _context.SaveChanges();

                    // Delete RecipeKeyword entries
                    _context.RecipeKeyword.RemoveRange(_context.RecipeKeyword.Where(r => r.RecipeId == recipeInput.recipe.RecipeId));
                    _context.SaveChanges();

                    // Save list of UserRecipeFavorite entries if recipe is shared
                    var curRecipe = new Recipe();
                    curRecipe = _context.Recipes.FirstOrDefault(r => r.Id == recipeInput.recipe.RecipeId);
                    var curRecipeShared = false;
                    if (curRecipe != null)
                    {
                        curRecipeShared = curRecipe.Shared;
                    }
                    if (recipeInput.recipe.Shared == true && curRecipeShared == true)
                    {
                        var tempUserRecFav = from userRecipePtr in _context.UserRecipeFavorite
                                             where userRecipePtr.RecipeId == recipeInput.recipe.RecipeId && userRecipePtr.UserId != recipeInput.recipe.OwnerId
                                             select userRecipePtr;
                        userRecipeFavEdits = tempUserRecFav.ToList();
                    }

                    // Delete UserRecipeFavorite entries
                    _context.UserRecipeFavorite.RemoveRange(_context.UserRecipeFavorite.Where(u => u.RecipeId == recipeInput.recipe.RecipeId));
                    _context.SaveChanges();

                    // Delete Steps entries
                    foreach (Step delStepPtr in delStepList)
                    {
                        _context.Steps.RemoveRange(_context.Steps.Where(s => s.RecipeId == delStepPtr.RecipeId));
                    }
                    _context.SaveChanges();

                    // Delete Recipes entry
                    _context.Recipes.RemoveRange(_context.Recipes.Where(r => r.Id == recipeInput.recipe.RecipeId));
                    _context.SaveChanges();
                }

                // Add Recipe table entry
                var tempRecipe = new Recipe();
                tempRecipe.RecipeName      = recipeInput.recipe.RecipeName;
                tempRecipe.Description     = recipeInput.recipe.Description;
                tempRecipe.OwnerId         = recipeInput.recipe.OwnerId;
                tempRecipe.Shared          = recipeInput.recipe.Shared;
                tempRecipe.Notes           = recipeInput.recipe.Notes;
                tempRecipe.MyRating        = recipeInput.recipe.MyRating;
                tempRecipe.ShareRating     = recipeInput.recipe.ShareRating;
                tempRecipe.NumShareRatings = recipeInput.recipe.NumShareRatings;
                tempRecipe.RecipePic       = recipeInput.recipe.RecipePic;
                tempRecipe.PrepTime        = recipeInput.recipe.PrepTime;
                tempRecipe.CookTime        = recipeInput.recipe.CookTime;
                tempRecipe.RecipeServings  = recipeInput.recipe.RecipeServings;
                tempRecipe.ServingSize     = recipeInput.recipe.ServingSize;
                _context.Recipes.Add(tempRecipe);
                _context.SaveChanges();

                // Add entry to UserRecipeFavorite join table
                var tempUserRecipeFavorite = new UserRecipeFavorite();
                tempUserRecipeFavorite.UserId   = recipeInput.userRecipeFavorite.UserId;
                tempUserRecipeFavorite.RecipeId = tempRecipe.Id;
                tempUserRecipeFavorite.Favorite = recipeInput.userRecipeFavorite.Favorite;
                _context.UserRecipeFavorite.Add(tempUserRecipeFavorite);
                _context.SaveChanges();

                // Add steps to Steps table
                List <RecipeStepIngredientVM> tempRecipeStepIngredient = new List <RecipeStepIngredientVM>();
                tempRecipeStepIngredient = recipeInput.RecipeStepIngredients;

                // Add each step to Steps table
                foreach (RecipeStepIngredientVM stepItem in tempRecipeStepIngredient)
                {
                    var tempStepItem = new Step();
                    tempStepItem.RecipeId    = tempRecipe.Id;
                    tempStepItem.StepNumber  = stepItem.StepNumber;
                    tempStepItem.Instruction = stepItem.Instruction;
                    _context.Steps.Add(tempStepItem);
                    _context.SaveChanges();

                    // Add each ingredient to Ingredient and StepIngredient tables
                    List <IngredientListVM> tempIngredList = new List <IngredientListVM>();
                    tempIngredList = stepItem.IngredientList;

                    foreach (IngredientListVM ingredItem in tempIngredList)
                    {
                        var tempIngredId = 0;
                        var tempIngred   = new Ingredient();
                        tempIngred = _context.Ingredients.FirstOrDefault(i => i.IngredName.ToLower() == ingredItem.IngredName.ToLower());
                        if (tempIngred == null)
                        {
                            var newIngred = new Ingredient();
                            newIngred.IngredName = ingredItem.IngredName;
                            _context.Ingredients.Add(newIngred);
                            _context.SaveChanges();
                            tempIngredId = newIngred.Id;
                        }
                        else
                        {
                            tempIngredId = tempIngred.Id;
                        }  // end add ingredient name

                        var tempStepIngred = new StepIngredient();
                        tempStepIngred.StepId       = tempStepItem.Id;
                        tempStepIngred.IngredientId = tempIngredId;
                        tempStepIngred.IngredQty    = ingredItem.IngredQty;
                        tempStepIngred.IngredUnit   = ingredItem.IngredUnit;
                        _context.StepIngredient.Add(tempStepIngred);
                        _context.SaveChanges();
                    } // end add ingredItem loop
                }     // end add stepItem loop

                // Add searchwords to Keywords table
                List <Keyword> keywordList = new List <Keyword>();
                keywordList = recipeInput.Keywords;
                if (keywordList != null)
                {
                    foreach (Keyword tempKeyword in keywordList)
                    {
                        var tempKeywordId  = 0;
                        var tempSearchWord = new Keyword();
                        tempSearchWord = _context.Keywords.FirstOrDefault(k => k.SearchWord.ToLower() == tempKeyword.SearchWord.ToLower());
                        if (tempSearchWord == null)
                        {
                            var newKeyword = new Keyword();
                            newKeyword.SearchWord = tempKeyword.SearchWord;
                            _context.Keywords.Add(newKeyword);
                            _context.SaveChanges();
                            tempKeywordId = newKeyword.Id;
                        }
                        else
                        {
                            tempKeywordId = tempSearchWord.Id;
                        }

                        // Add entry to RecipeKeyword join table
                        var tempRecipeKeyword = new RecipeKeyword();
                        tempRecipeKeyword.RecipeId  = tempRecipe.Id;
                        tempRecipeKeyword.KeywordId = tempKeywordId;
                        _context.RecipeKeyword.Add(tempRecipeKeyword);
                        _context.SaveChanges();
                    }
                }

                if (editRecipe == true)
                {
                    // Re-enter MenuRecipe entries with new RecipeId
                    foreach (MenuRecipe recipePtr in menuRecipeEdits)
                    {
                        var tempMenuRecipe = new MenuRecipe();
                        tempMenuRecipe.MenuId       = recipePtr.MenuId;
                        tempMenuRecipe.RecipeId     = tempRecipe.Id;
                        tempMenuRecipe.MenuServings = recipePtr.MenuServings;
                        _context.MenuRecipe.Add(tempMenuRecipe);
                    }
                    _context.SaveChanges();

                    // Re-enter UserRecipeFavorites entries with new RecipeId for shared recipes
                    foreach (UserRecipeFavorite userRecipePtr in userRecipeFavEdits)
                    {
                        var tempUserRecipe = new UserRecipeFavorite();
                        tempUserRecipe.UserId   = userRecipePtr.UserId;
                        tempUserRecipe.RecipeId = tempRecipe.Id;
                        tempUserRecipe.Favorite = userRecipePtr.Favorite;
                        _context.UserRecipeFavorite.Add(tempUserRecipe);
                    }
                    _context.SaveChanges();
                }
                return(CreatedAtRoute("", new { id = tempRecipe.Id }, recipeInput));
            }
            return(BadRequest());
        }