public List <WorkoutSet> GetWorkOutSets(WorkoutVM workoutVM, Workout.Models.Workout workout) { List <WorkoutSet> workoutSets = new List <WorkoutSet>(); foreach (var exercise in workoutVM.AllExercises) { List <int> sets = exercise.SetsAndReps .Split(new char[] { ' ', ',' }) .Where(x => !string.IsNullOrEmpty(x)) .Select(x => int.Parse(x)) .ToList(); for (int i = 0; i < sets.Count; i++) { WorkoutSet workoutSet = new WorkoutSet(); workoutSet.Reps = sets[i]; workoutSet.SetOrder = i + 1; workoutSet.ExerciseId = exercise.ExerciseID; workoutSet.DateCreated = DateTime.Now; workoutSet.Workout = workout; workoutSet.ExerciseId = exercise.ExerciseID; workoutSet.Active = true; workoutSets.Add(workoutSet); } } return(workoutSets); }
// GET: Workout/Details/5 public ActionResult Details(int id) { //if (id == null) //{ // return new HttpStatus(HttpStatusCode.BadRequest); //} Workout.Models.Workout workout = _context.Workout.Find(id); //if (student == null) //{ // return HttpNotFound(); //} return(View(workout)); }
public ActionResult EditWorkout(WorkoutVM workoutVM) { Workout.Models.Workout workout = workoutVM.Workout; workout.WorkoutSet = _context.WorkoutSet.Where(ws => ws.WorkoutId == workout.WorkoutId).ToList(); workout.WorkoutToExercise = _context.WorkoutToExercise.Where(wte => wte.WorkoutId == workout.WorkoutId).ToList(); foreach (var wte in workout.WorkoutToExercise) { wte.Active = false; } foreach (var ws in workout.WorkoutSet) { ws.Active = false; } _context.WorkoutSet.UpdateRange(workout.WorkoutSet); _context.WorkoutToExercise.UpdateRange(workout.WorkoutToExercise); _context.SaveChanges(); workoutVM.Workout.WorkoutToExercise = workoutVM.AllExercises .Where(e => e.Selected) .Select(x => new WorkoutToExercise { Workout = workout, ExerciseId = x.ExerciseID, Order = x.Order, Active = true }) .ToList(); workoutVM.AllExercises = workoutVM.AllExercises.Where(e => e.Selected).ToList(); workoutVM.Workout.WorkoutSet = GetWorkOutSets(workoutVM, workoutVM.Workout); _context.Workout.Update(workout); _context.SaveChanges(); return(RedirectToAction("Index")); //comment - }
//[ValidateAntiForgeryToken] public async Task <ActionResult> Create([FromForm] WorkoutVM workoutVM) { if (!User.Identity.IsAuthenticated) { return(View("NotAuthenticated")); } var workout = new Workout.Models.Workout(); workout.DateCreated = DateTime.Now; workout.CreatedBy = 1; workout.WorkoutName = workoutVM.Workout.WorkoutName; workout.WorkoutToExercise = workoutVM.AllExercises.Where(e => e.Selected).Select(x => new WorkoutToExercise { Workout = workout, ExerciseId = x.ExerciseID, Order = x.Order, Active = true }).ToList(); workoutVM.AllExercises = workoutVM.AllExercises.Where(e => e.Selected).ToList(); IdentityUser user = await _userManager.GetUserAsync(User); workout.AspNetUserId = user.Id; workout.WorkoutSet = GetWorkOutSets(workoutVM, workout); try { if (ModelState.IsValid) { _context.Workout.Add(workout); _context.SaveChanges(); return(RedirectToAction("Index")); } } catch (Exception ex) { ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator."); } return(View(workout)); }
public WorkoutVM(Workout.Models.Workout workout) { Workout = workout; AllExercises = workout.WorkoutToExercise.Select(ws => new ExerciseVM(ws.Exercise.ExerciseName)).ToList(); }
public ActionResult EditWorkout([FromRoute] int id) { Workout.Models.Workout workout = _context.Workout .Where(w => w.WorkoutId == id) .Single(); //******************************************* //var workouts = _context.Workout.ToList(); var exercises = _context.Exercise.ToList(); workout.WorkoutToExercise = _context.WorkoutToExercise.Where(we => we.WorkoutId == workout.WorkoutId && we.Active).ToList(); foreach (var we in workout.WorkoutToExercise) { we.Exercise = exercises.Where(e => e.ExerciseId == we.ExerciseId).Single(); } workout.WorkoutSet = _context.WorkoutSet.Where(ws => ws.WorkoutId == workout.WorkoutId && ws.Active).OrderBy(ws => ws.SetOrder).ToList(); WorkoutVM workoutVM = new WorkoutVM(workout); Dictionary <string, List <string> > exerciseToSets = new Dictionary <string, List <string> >(); List <WorkoutToExercise> wtes = workout.WorkoutToExercise.OrderBy(x => x.Order).ToList(); foreach (var wte in wtes) { foreach (var ws in wte.Workout.WorkoutSet.Where(ws => ws.ExerciseId == wte.ExerciseId).OrderBy(x => x.SetOrder)) { if (exerciseToSets.ContainsKey(ws.Exercise.ExerciseName)) { exerciseToSets[ws.Exercise.ExerciseName].Add(ws.Reps.ToString()); } else { exerciseToSets[ws.Exercise.ExerciseName] = new List <string> { ws.Reps.ToString() }; } } } workoutVM.ExerciseDisplay = exerciseToSets;// exerciseToSets.Select(kvp => kvp.Key + " | " + string.Join(", ", kvp.Value)).ToList(); foreach (ExerciseVM evm in workoutVM.AllExercises) { evm.SetsAndReps = string.Join(", ", exerciseToSets[evm.ExerciseName]); evm.Order = wtes.Where(wte => wte.Exercise.ExerciseName == evm.ExerciseName).Single().Order; evm.Selected = true; evm.ExerciseID = wtes.Where(wte => wte.Exercise.ExerciseName == evm.ExerciseName).Single().ExerciseId; } workoutVM.AllExercises = workoutVM.AllExercises.OrderBy(e => e.Order).ToList(); HashSet <int> exerciseIDs = workoutVM.AllExercises.Select(ex => ex.ExerciseID).ToHashSet(); workoutVM.AllExercises.AddRange(exercises.Where(e => !exerciseIDs.Contains(e.ExerciseId)).Select(e => new ExerciseVM { ExerciseID = e.ExerciseId, ExerciseName = e.ExerciseName })); //******************************************* //workout.WorkoutToExercise = _context.WorkoutToExercise.Where(we => we.WorkoutId == workout.WorkoutId).ToList(); //workout.WorkoutSet = _context.WorkoutSet.Where(ws => ws.WorkoutId == workout.WorkoutId).ToList(); //foreach (var we in workout.WorkoutToExercise) //{ // we.Exercise = _context.Exercise.Where(e => e.ExerciseId == we.ExerciseId).Single(); //} //var vm = new WorkoutVM(); //vm.Workout = workout; //vm.AllExercises = workout.WorkoutSet.Select(ws => ws.Exercise) // .ToList().Select(x => new ExerciseVM { ExerciseID = x.ExerciseId, ExerciseName = x.ExerciseName }) // .ToList(); //foreach (var ws in workout.WorkoutSet) //{ //} return(View("Edit", workoutVM)); }