public IActionResult NewMealView() { long loggedUserId = GetUserSessionId(); NewMealModel returnModel = new NewMealModel(); SetBasicInfo(ref dishList, ref mealList, ref returnModel, loggedUserId); returnModel.AllMeals = returnModel.AllMeals.Where(x => x.User_Id == loggedUserId).ToList(); return(View(returnModel)); }
public IActionResult NewMealView(string submitButton, NewMealModel model) { long loggedUserId = GetUserSessionId(); NewMealModel returnModel = new NewMealModel(); SetBasicInfo(ref dishList, ref mealList, ref returnModel, loggedUserId); var meal = new MealItem(); //Został wciśnięty przycisk "Dodaj posiłek" if (submitButton == "add") { //Jeżeli nie uzupełniono obowiązkowych pól formularza if (!ModelState.IsValid) { return(View(returnModel)); } meal.Id = CalculateNextMealId(); //Pobranie z bazy danych dania którego dotyczył posiłek DishItem selectedDish = _dishDriver.GetDish(model.DishId); //Uzupełnienie obiektu posiłku i dodanie go do bazy meal.User_Id = GetUserSessionId(); meal.Dish_Id = model.DishId; meal.Amount = model.Amount; meal.Description = model.Description; meal.Meal_Name = model.Name; meal.Energy_Value = selectedDish.Energy_Value / 100 * model.Amount; meal.Carbonhydrate = selectedDish.Carbonhydrate / 100 * model.Amount; meal.Fat = selectedDish.Fat / 100 * model.Amount; meal.Fibre = selectedDish.Fibre / 100 * model.Amount; meal.Protein = selectedDish.Protein / 100 * model.Amount; meal.Sodium = selectedDish.Sodium / 100 * model.Amount; meal.Meal_Date = Convert.ToDateTime(model.Date + " " + model.Time); _mealDriver.Add(meal); returnModel.AddedDish = model.Name; returnModel.Communicate = "Added"; } //Został wciśnięty przycisk "Edytuj posiłek" else if (submitButton == "edit") { //Pobranie z bazy danych dania którego dotyczył posiłek DishItem selectedDish = _dishDriver.GetDish(model.EditedToDishId); //Uzupełnienie obiektu posiłku i aktualizacja odpowiedniego rekordu var mealEdit = new MealItem(); mealEdit.Id = model.EditMealId; mealEdit.Meal_Name = model.EditedToName; mealEdit.Description = model.EditedToDescription; mealEdit.User_Id = GetUserSessionId(); mealEdit.Dish_Id = model.EditedToDishId; mealEdit.Amount = model.EditedToAmount; mealEdit.Energy_Value = selectedDish.Energy_Value / 100 * model.EditedToAmount; mealEdit.Carbonhydrate = selectedDish.Carbonhydrate / 100 * model.EditedToAmount; mealEdit.Fat = selectedDish.Fat / 100 * model.EditedToAmount; mealEdit.Fibre = selectedDish.Fibre / 100 * model.EditedToAmount; mealEdit.Protein = selectedDish.Protein / 100 * model.EditedToAmount; mealEdit.Sodium = selectedDish.Sodium / 100 * model.EditedToAmount; mealEdit.Meal_Date = Convert.ToDateTime(model.EditedToDate + " " + model.EditedToTime); _mealDriver.Update(mealEdit); returnModel.AddedDish = model.EditedToName; returnModel.AllMeals = _mealDriver.GetAllMeal().ToList(); returnModel.Communicate = "Edited"; } //Został wciśnięty przycisk "Usuń posiłek" else if (submitButton == "delete") { //Usuwanie posiłku z bazy _mealDriver.Delete(model.EditMealId); returnModel.Communicate = "Deleted"; } //Aktualizacja modelu zwrotnego po dodaniu/edycji/usunięciu posiłku SetBasicInfo(ref dishList, ref mealList, ref returnModel, loggedUserId); return(View(returnModel)); }
//Metoda uzupełniająca pola modelu, aktualnymi danymi z bazy private void SetBasicInfo(ref List <DishItem> dishList, ref List <MealItem> mealList, ref NewMealModel returnModel, long loggedUserId) { dishList = _dishDriver.GetAllDish().ToList(); mealList = _mealDriver.GetAllMeal().ToList(); returnModel.OnlyMineDDLDishList = dishList.Where(x => x.UserId == loggedUserId).Select(a => new SelectListItem { Value = a.Id.ToString(), Text = a.Name }).ToList(); returnModel.MealList = mealList.Where(a => a.User_Id == loggedUserId).Select(a => new SelectListItem { Value = a.Id.ToString(), Text = a.Meal_Name + " " + a.Meal_Date }).ToList(); returnModel.AllMeals = mealList.ToList(); returnModel.DDLDishList = dishList.Select(a => new SelectListItem { Value = a.Id.ToString(), Text = a.Name }).ToList(); }