/// <summary> /// speichert ein WorkoutPlanModel in der Datenbank ab. Wenn das Objekt bereits in der DB existiert, dann /// wird es geaendert, ansonsten neu angelegt. /// </summary> /// <param name="model">Das WorkoutPlanModel-Objekt das gespeichert werden soll</param> public void SaveWorkout(ml_WorkoutPlan workout) { if (workout.ID <= 0) { _repo.Insert(workout); } else { _repo.Update(workout); } }
public ActionResult Create(FormCollection formData) { RedirectIfNotLoggedIn(); bool isValid = true; // Anzahl der Trainingseinheiten validieren int numWorkouts = -1; if (!Int32.TryParse(formData["numWorkouts"], out numWorkouts) || numWorkouts < 1 || numWorkouts > 7) { ModelState.AddModelError("numWorkouts", "Die Anzahl der Trainingseinheiten ist nicht gültig."); isValid = false; } // Trainingsplan-Name validieren string workoutName = formData["workoutName"] ?? ""; if (String.IsNullOrEmpty(workoutName)) { ModelState.AddModelError("workoutName", "Bitte gib einen gültigen Namen für den Trainingsplan an."); isValid = false; } // einzelne Trainingseinheiten validieren Dictionary<int, IEnumerable<ml_WorkoutDay>> daysOfWorkout = null; try { daysOfWorkout = _workoutDayService.GetDaysOfWorkout(formData, numWorkouts); if (daysOfWorkout == null || daysOfWorkout.Count == 0) { ModelState.AddModelError("noWorkouts", "Es wurden keine gültigen Trainingseinheiten erstellt."); isValid = false; } else { int workoutIndex = 0; foreach (var singleDayOfWorkout in daysOfWorkout) { workoutIndex++; if (singleDayOfWorkout.Value == null) { ModelState.AddModelError("day-" + workoutIndex, "Die Angaben für Trainingseinheit " + workoutIndex + " sind nicht vollständig."); isValid = false; } } } } catch (muscle_log.framework.Exceptions.WorkoutDayException e) { ModelState.AddModelError("day-" + e.Day, e.Message); isValid = false; } // wenn Validierung keine Fehler gefunden hat, dann koennen jetzt der Plan und die Einheiten gespeichert werden.. if (isValid) { MuscleLogContext ctx = new MuscleLogContext(); // WorkoutModel erstellen ml_WorkoutPlan workoutModel = new ml_WorkoutPlan(); workoutModel.PlanName = workoutName; workoutModel.NumWorkouts = (byte)numWorkouts; workoutModel.Public = (byte)(((formData["workoutPublic"] ?? "").ToString() == "on") ? 1 : 0); workoutModel.CRDT = DateTime.Now; workoutModel.LUDT = DateTime.Now; workoutModel.UserID = CurrentUser.ID; workoutModel.Deleted = 0; _workoutService.SaveWorkout(workoutModel); // WorkoutDayModels speichern _workoutDayService.SaveDaysOfWorkout(daysOfWorkout, workoutModel.ID); _unitOfWork.SaveChanges(); var workouts = _workoutService.List(CurrentUser.ID); var pager = new Pager(workouts); pager.DisplayedPages = 5; pager.PageSize = 10; // TODO: retrieve from DB. pager.StartIndex = 0; ViewData["WorkoutPageSize"] = pager.PageSize; ViewData["WorkoutCount"] = pager.Count; ViewData["WorkoutPagesCount"] = pager.PageCount; ViewData["ActivePage"] = pager.GetActivePage(); ViewData["FirstPage"] = pager.StartPage; ViewData["LastPage"] = Math.Min(pager.StartPage + pager.DisplayedPages, pager.PageCount); ViewData["success"] = "Der Trainingsplan wurde erstellt."; return View("List", workouts); } return View(); }