public SRL_MealRecipe(MealRecipe item) { this.MealId = item.MealId; this.RecipeId = item.RecipeId; this.RecipeName = item.Recipe.RecipeName; this.Servings = item.Servings; }
protected void rptRecipes_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) { MyBuyList.Shared.Entities.Menu menu = this.CurrentMenu; Meal meal = null; MealRecipe currentMealRecipe = e.Item.DataItem as MealRecipe; if (currentMealRecipe != null) { meal = currentMealRecipe.Meal; } LinkButton lnkBtn = e.Item.FindControl("removeFromMeal") as LinkButton; if (lnkBtn != null) { lnkBtn.Attributes["recipeId"] = currentMealRecipe.RecipeId.ToString(); lnkBtn.Attributes["mealSignature"] = this.GetMealSignature(meal); } TextBox txtBox = e.Item.FindControl("txtServings") as TextBox; if (txtBox != null) { txtBox.Attributes["recipeId"] = currentMealRecipe.RecipeId.ToString(); txtBox.Attributes["mealSignature"] = this.GetMealSignature(meal); } }
private bool AddMealRecipe(MyBuyListEntities dc, int mealId, int recipeId, int servings) { try { MealRecipe mealRecipe = dc.MealRecipes.SingleOrDefault(mr => mr.MealId == mealId && mr.RecipeId == recipeId); if (mealRecipe == null) { mealRecipe = new MealRecipe(); mealRecipe.MealId = mealId; mealRecipe.RecipeId = recipeId; mealRecipe.Servings = servings; dc.MealRecipes.Add(mealRecipe); dc.SaveChanges(); //dc.MealRecipes.InsertOnSubmit(mealRecipe); //dc.SubmitChanges(); return(true); } else { return(false); } } catch { return(false); } }
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) { } }
internal MealRecipe GetMealRecipe(int mealId, int recipeId) { using (DataContext) { try { MealRecipe mealRecipe = DataContext.MealRecipes.Single(mr => mr.MealId == mealId && mr.RecipeId == recipeId); return(mealRecipe); } catch { return(null); } } }
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; } } } }
protected void dlRecipes_ItemDataBound(object sender, DataListItemEventArgs e) { MealRecipe mealRecipe = e.Item.DataItem as MealRecipe; HyperLink hlkRecipeDetails = e.Item.FindControl("hlkRecipeDetails") as HyperLink; Label lblRecipeArrow = e.Item.FindControl("lblRecipeArrow") as Label; if (mealRecipe != null && hlkRecipeDetails != null) { hlkRecipeDetails.Text = mealRecipe.Recipe.RecipeName.TrimToMax(21); hlkRecipeDetails.NavigateUrl += mealRecipe.RecipeId.ToString(); } else { lblRecipeArrow.Visible = false; hlkRecipeDetails.Visible = false; } }
internal bool RemoveMealRecipe(int mealId, int recipeId) { using (DataContext) { try { MealRecipe mealRecipe = DataContext.MealRecipes.Single(mr => mr.MealId == mealId && mr.RecipeId == recipeId); DataContext.MealRecipes.DeleteOnSubmit(mealRecipe); DataContext.SubmitChanges(); return(true); } catch { return(false); } } }
internal bool SaveMealRecipe(int mealId, int recipeId, int servings) { using (DataContext) { try { MealRecipe mealRecipe = DataContext.MealRecipes.Single(mr => mr.MealId == mealId && mr.RecipeId == recipeId); mealRecipe.Servings = servings; DataContext.SubmitChanges(); return(true); } catch { return(false); } } }
protected void txtServings_TextChanged(object sender, EventArgs e) { MyBuyList.Shared.Entities.Menu menu = this.CurrentMenu; TextBox txtServings = sender as TextBox; if (txtServings != null) { int recipeId = 0; int[] mealIdentifiers = GetMealIdentifiers(txtServings.Attributes["mealSignature"]); if (int.TryParse(txtServings.Attributes["recipeId"], out recipeId) && mealIdentifiers != null && mealIdentifiers.Length == 3) { Meal mealToChange = null; // TODO: change all the occurances of this code to "switch", and try to do it with a delegate, that point to different methods // according to the menuTypeId. These methods will get a menu object (menuToSave) and a meal object (from menu) or the whole menu object (menu) switch (menu.MenuTypeId) { case (int)MenuTypeEnum.QuickMenu: mealToChange = menu.Meals.SingleOrDefault(me => me.MealTypeId == mealIdentifiers[1]); break; case (int)MenuTypeEnum.OneMeal: mealToChange = menu.Meals.SingleOrDefault(me => me.CourseTypeId == mealIdentifiers[2]); break; case (int)MenuTypeEnum.Weekly: mealToChange = menu.Meals.SingleOrDefault(me => me.DayIndex == mealIdentifiers[0] && me.MealTypeId == mealIdentifiers[1]); break; } if (mealToChange != null) { MealRecipe recipeToChange = mealToChange.MealRecipes.SingleOrDefault(re => re.RecipeId == recipeId); if (recipeToChange != null) { recipeToChange.Servings = int.Parse(txtServings.Text); } } } } }
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(); }
public static object[] SaveServings(int?servings, int mealId, int recipeId) { string errorMsg = ValidationResources.WrongServingsFieldValue; if (servings != null && servings != 0) { if (BusinessFacade.Instance.SaveMealRecipe(mealId, recipeId, servings.Value)) { return(new object[] { true, null, servings }); } else { MealRecipe mealRecipe = BusinessFacade.Instance.GetMealRecipe(mealId, recipeId); return(new object[] { false, errorMsg, mealRecipe.Servings }); } } else { MealRecipe mealRecipe = BusinessFacade.Instance.GetMealRecipe(mealId, recipeId); return(new object[] { false, errorMsg, mealRecipe.Servings }); } }
public async Task <Meal> EditMeal(EditMealViewModel model) { var meal = this.context.Meals.Include(m => m.Location).Include(m => m.FoodyUser).Include(m => m.MealFoodItems).ThenInclude(mfi => mfi.FoodItem) .Include(m => m.MealRecipes).ThenInclude(mr => mr.Recipe) .FirstOrDefault(m => m.Id == model.Id); if (meal == null) { return(null); } var caloriesChange = false; if (model.FoodItems != null) { foreach (var foodItemViewModel in model.FoodItems) { var foodItem = this.context.FoodItems.FirstOrDefault(fi => fi.Name == foodItemViewModel.Name); if (foodItem == null) { continue; } var existingMealFoodItem = meal.MealFoodItems.FirstOrDefault(mfi => mfi.FoodItem.Name == foodItemViewModel.Name); if (foodItemViewModel.AmountInGrams > 0) { if (existingMealFoodItem == null) { var newMealFoodItem = new MealFoodItem { Meal = meal, FoodItem = foodItem, AmountInGrams = foodItemViewModel.AmountInGrams }; meal.MealFoodItems.Add(newMealFoodItem); caloriesChange = true; } else { if (!existingMealFoodItem.AmountInGrams.Equals(foodItemViewModel.AmountInGrams)) { existingMealFoodItem.AmountInGrams = foodItemViewModel.AmountInGrams; caloriesChange = true; } } } else { if (existingMealFoodItem != null) { meal.MealFoodItems.Remove(existingMealFoodItem); caloriesChange = true; } } } } if (model.Recipes != null) { foreach (var recipeViewModel in model.Recipes) { var recipe = this.context.Recipes.FirstOrDefault(r => r.Name == recipeViewModel.Name); if (recipe == null) { continue; } var existingMealRecipe = meal.MealRecipes.FirstOrDefault(mr => mr.Recipe.Name == recipeViewModel.Name); if (recipeViewModel.AmountInGrams > 0) { if (existingMealRecipe == null) { var newMealRecipe = new MealRecipe { Meal = meal, Recipe = recipe, AmountInGrams = recipeViewModel.AmountInGrams }; meal.MealRecipes.Add(newMealRecipe); caloriesChange = true; } else { if (!existingMealRecipe.AmountInGrams.Equals(recipeViewModel.AmountInGrams)) { existingMealRecipe.AmountInGrams = recipeViewModel.AmountInGrams; caloriesChange = true; } } } else { if (existingMealRecipe != null) { meal.MealRecipes.Remove(existingMealRecipe); caloriesChange = true; } } } } meal.Note = model.Note; if (meal.Location == null || meal.Location.Name != model.Location) { meal.Location = this.HandleLocation(model.Location, meal.FoodyUserId); } meal.TimeOfConsumption = model.TimeOfConsumption; context.SaveChanges(); if (caloriesChange) { Thread.Sleep(500); await this.SetMealCaloriesAsync(meal.Id); } return(meal); }
void rptRecipes_ItemDataBound(object sender, RepeaterItemEventArgs e) { int menuId = 0; int menuTypeId = 0; if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { menuId = ((MenuView)e.Item.DataItem).MenuId; menuTypeId = ((MenuView)e.Item.DataItem).MenuTypeId; HyperLink lnkRecipe = (HyperLink)e.Item.FindControl("lnkRecipe"); lnkRecipe.NavigateUrl = ResolveUrl(string.Format("~/MenuDetails.aspx?menuId={0}", menuId.ToString())); LinkButton lnkBtn = e.Item.FindControl("btnAddRemoveFromFavorites") as LinkButton; if (lnkBtn != null) { if (((BasePage)this.Page).UserId != -1) { lnkBtn.CommandArgument = ((MenuView)e.Item.DataItem).MenuId.ToString(); if (((MenuView)e.Item.DataItem).IsInFavorites) { lnkBtn.Text = "הסר מהמועדפים שלי"; lnkBtn.Style["color"] = "Red"; lnkBtn.CommandName = "Remove"; } else { lnkBtn.Text = "הוסף למועדפים שלי"; lnkBtn.Style["color"] = "#656565"; lnkBtn.CommandName = "Add"; } } else { lnkBtn.Visible = false; Literal lit = (Literal)e.Item.FindControl("seperator"); if (lit != null) { lit.Visible = false; } } } HtmlGenericControl divMyFavoritesInfoTag = e.Item.FindControl("myFavoritesInfoTag") as HtmlGenericControl; if (((MenuView)e.Item.DataItem).IsInFavorites) { divMyFavoritesInfoTag.Visible = true; } else { divMyFavoritesInfoTag.Visible = false; } Label lblAllFavorites = e.Item.FindControl("lblAllFavorites") as Label; lblAllFavorites.Text = ((MenuView)e.Item.DataItem).NumUserFavorites.ToString(); Label lbl1 = e.Item.FindControl("lblMealTitle1") as Label; Label lbl2 = e.Item.FindControl("lblMealTitle2") as Label; Label lbl3 = e.Item.FindControl("lblMealTitle3") as Label; DataList dl1 = e.Item.FindControl("dlRecipes1") as DataList; DataList dl2 = e.Item.FindControl("dlRecipes2") as DataList; DataList dl3 = e.Item.FindControl("dlRecipes3") as DataList; Meal[] menuMeals = BusinessFacade.Instance.GetMenuMeals(menuId); //present "meals preview" in a different way for each menu type: if (menuTypeId == (int)MenuTypeEnum.OneMeal) { Meal meal1 = menuMeals.SingleOrDefault(me => me.CourseTypeId == 0); Meal meal2 = menuMeals.SingleOrDefault(me => me.CourseTypeId == 1); Meal meal3 = menuMeals.SingleOrDefault(me => me.CourseTypeId == 3); if (lbl1 != null && lbl2 != null && lbl3 != null) { lbl1.Text = "מנה ראשונה"; lbl2.Text = "מנה עיקרית"; lbl3.Text = "קינוח"; } MealRecipe[] tempRecipesList = new MealRecipe[2]; if (meal1 != null && meal1.MealRecipes.Count > 0) { tempRecipesList[0] = meal1.MealRecipes[0]; if (meal1.MealRecipes.Count > 1) { tempRecipesList[1] = meal1.MealRecipes[1]; } dl1.DataSource = tempRecipesList; dl1.DataBind(); } if (meal2 != null && meal2.MealRecipes.Count > 0) { tempRecipesList[0] = meal2.MealRecipes[0]; if (meal2.MealRecipes.Count > 1) { tempRecipesList[1] = meal2.MealRecipes[1]; } dl2.DataSource = tempRecipesList; dl2.DataBind(); } if (meal3 != null && meal3.MealRecipes.Count > 0) { tempRecipesList[0] = meal3.MealRecipes[0]; if (meal3.MealRecipes.Count > 1) { tempRecipesList[1] = meal3.MealRecipes[1]; } dl3.DataSource = tempRecipesList; dl3.DataBind(); } } else if (menuTypeId == (int)MenuTypeEnum.Weekly) { IEnumerable <Meal> meals1 = menuMeals.Where(mm => mm.DayIndex == 1); IEnumerable <Meal> meals2 = menuMeals.Where(mm => mm.DayIndex == 2); IEnumerable <Meal> meals3 = menuMeals.Where(mm => mm.DayIndex == 3); if (lbl1 != null && lbl2 != null && lbl3 != null) { lbl1.Text = "יום ראשון"; lbl2.Text = "יום שני"; lbl3.Text = "יום שלישי"; } MealRecipe[] tempRecipesList = new MealRecipe[2]; if (meals1 != null) { int i = 0; foreach (Meal meal in meals1) { foreach (MealRecipe mr in meal.MealRecipes) { if (i < 2) { tempRecipesList[i] = mr; i++; } else { break; } } } dl1.DataSource = tempRecipesList; dl1.DataBind(); } if (meals2 != null) { int i = 0; foreach (Meal meal in meals2) { foreach (MealRecipe mr in meal.MealRecipes) { if (i < 2) { tempRecipesList[i] = mr; i++; } else { break; } } } dl2.DataSource = tempRecipesList; dl2.DataBind(); } if (meals3 != null) { int i = 0; foreach (Meal meal in meals3) { foreach (MealRecipe mr in meal.MealRecipes) { if (i < 2) { tempRecipesList[i] = mr; i++; } else { break; } } } dl3.DataSource = tempRecipesList; dl3.DataBind(); } } else if (menuTypeId == (int)MenuTypeEnum.QuickMenu) //only one meal in menu { Meal meal1 = menuMeals.SingleOrDefault(me => me.MealTypeId == 4); if (meal1 != null) { MealRecipe[] allRecipesList = new MealRecipe[meal1.MealRecipes.Count]; int i = 0; foreach (MealRecipe mr in meal1.MealRecipes) { allRecipesList[i] = mr; i++; } MealRecipe[] tempRecipesList = new MealRecipe[2]; if (allRecipesList.Length > 0) { tempRecipesList[0] = allRecipesList[0]; if (allRecipesList.Length >= 2) { tempRecipesList[1] = allRecipesList[1]; } else { tempRecipesList[1] = null; } dl1.DataSource = tempRecipesList; dl1.DataBind(); } if (allRecipesList.Length >= 3) { tempRecipesList[0] = allRecipesList[2]; if (allRecipesList.Length >= 4) { tempRecipesList[1] = allRecipesList[3]; } else { tempRecipesList[1] = null; } dl2.DataSource = tempRecipesList; dl2.DataBind(); } if (allRecipesList.Length >= 5) { tempRecipesList[0] = allRecipesList[4]; if (allRecipesList.Length >= 6) { tempRecipesList[1] = allRecipesList[5]; } else { tempRecipesList[1] = null; } dl3.DataSource = tempRecipesList; dl3.DataBind(); } } } } }
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; }
//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(); }
protected void removeFromMeal_Click(object sender, EventArgs e) { MyBuyList.Shared.Entities.Menu menu = this.CurrentMenu; LinkButton lnkBtn = sender as LinkButton; if (lnkBtn != null) { string mealSignature = lnkBtn.Attributes["mealSignature"]; int recipeId; if (!string.IsNullOrEmpty(mealSignature) && int.TryParse(lnkBtn.Attributes["recipeId"], out recipeId)) { int[] mealIdentifiers = GetMealIdentifiers(mealSignature); Meal currentMeal = null; //no mealId at this stage. meal is identified by day / meal type / course type. switch (menu.MenuTypeId) { case (int)MenuTypeEnum.QuickMenu: currentMeal = menu.Meals.SingleOrDefault(me => me.MealTypeId == mealIdentifiers[1]); break; case (int)MenuTypeEnum.OneMeal: currentMeal = menu.Meals.SingleOrDefault(me => me.CourseTypeId == mealIdentifiers[2]); break; case (int)MenuTypeEnum.Weekly: currentMeal = menu.Meals.SingleOrDefault(me => me.DayIndex == mealIdentifiers[0] && me.MealTypeId == mealIdentifiers[1]); break; } //if (menu.MenuTypeId == (int)MenuTypeEnum.QuickMenu) //only one meal in the menu //{ // currentMeal = menu.Meals.SingleOrDefault(me => me.MealTypeId == mealIdentifiers[1]); //} //if (menu.MenuTypeId == (int)MenuTypeEnum.OneMeal) //{ // currentMeal = menu.Meals.SingleOrDefault(me => me.CourseTypeId == mealIdentifiers[2]); //} //else //{ // currentMeal = menu.Meals.SingleOrDefault(me => me.DayIndex == mealIdentifiers[0] && me.MealTypeId == mealIdentifiers[1]); //} if (currentMeal != null) { MealRecipe recipe = currentMeal.MealRecipes.SingleOrDefault(mr => mr.RecipeId == recipeId); if (recipe != null) { currentMeal.MealRecipes.Remove(recipe); //if (currentMeal.MealRecipes.Count == 0) //{ // menu.Meals.Remove(currentMeal); //} } } this.CurrentMenu = menu; RebindMealsDetails(); this.upMealsDetails.Update(); this.RebindMenuRecipes(); this.upSelectedRecipes.Update(); } } }
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) { } }
public async Task <Meal> AddMeal(AddMealBindingModel model, string username) { var user = this.context.Users.FirstOrDefault(u => u.UserName == username); if (user == null) { return(null); } Location location = null; if (!string.IsNullOrEmpty(model.Location)) { location = this.HandleLocation(model.Location, user.Id); } var mealFoodItems = new List <MealFoodItem>(); var mealRecipes = new List <MealRecipe>(); if (model.FoodItems != null) { foreach (var foodItemBindingModel in model.FoodItems) { var foodItem = this.context.FoodItems.FirstOrDefault(fi => fi.Name == foodItemBindingModel.Name); if (foodItem != null && foodItemBindingModel.AmountInGrams > 0) { var mealFoodItem = new MealFoodItem { FoodItem = foodItem, AmountInGrams = foodItemBindingModel.AmountInGrams }; mealFoodItems.Add(mealFoodItem); } } } if (model.Recipes != null) { foreach (var recipeBindingModel in model.Recipes) { var recipe = this.context.Recipes.FirstOrDefault(r => r.Name == recipeBindingModel.Name); if (recipe != null && recipeBindingModel.AmountInGrams > 0) { var mealRecipe = new MealRecipe { Recipe = recipe, AmountInGrams = recipeBindingModel.AmountInGrams }; mealRecipes.Add(mealRecipe); } } } var meal = new Meal { FoodyUser = user, Location = location, MealFoodItems = mealFoodItems, MealRecipes = mealRecipes, Note = model.Note, TimeOfConsumption = model.TimeOfConsumption }; this.context.Meals.Add(meal); this.context.SaveChanges(); await this.SetMealCaloriesAsync(meal.Id); return(meal); }