public IActionResult Save(SwimCreate sc) { if (string.IsNullOrEmpty(UserId)) { var current_User = userManager.GetUserAsync(HttpContext.User).Result; UserId = current_User.Id; } Workout wo = (from x in context.Workouts where x.UserId == UserId && x.Name == sc.WorkoutName select x).SingleOrDefault();// FirstOrDefault(); //wo = context.Workouts.SingleOrDefault(b => b.UserId == UserId && b.Name == sc.WorkoutName); if (wo == null) { wo = new Workout { AthleteName = sc.AthleteName, CoolDownStepCount = sc.CoolDownEndSteps - sc.CoolDownBeginSteps, WarmUpStepCount = sc.WarmUpEndSteps - sc.WarmUpBeginSteps, MainStepCount = sc.MainEndSteps - sc.MainBeginSteps, Description = sc.WorkoutDescription, Name = sc.WorkoutName, UserId = UserId, TotalYards = sc.TotalYards, TotalMeters = sc.TotalMeters }; context.Workouts.Add(wo); //Save changes to get a valid wo.Id. context.SaveChanges(); } else { wo.AthleteName = sc.AthleteName; wo.CoolDownStepCount = sc.CoolDownEndSteps - sc.CoolDownBeginSteps; wo.WarmUpStepCount = sc.WarmUpEndSteps - sc.WarmUpBeginSteps; wo.MainStepCount = sc.MainEndSteps - sc.MainBeginSteps; wo.Description = sc.WorkoutDescription; wo.Name = sc.WorkoutName; wo.UserId = UserId; wo.TotalYards = sc.TotalYards; wo.TotalMeters = sc.TotalMeters; } for (int i = 0; i < sc.SwimSets.Count; i++) { if (sc.SwimSets[i].RepCount > 0) { WorkoutSection wos = WorkoutSection.CoolDown; if (sc.SwimSets[i].StepNumber < wo.WarmUpStepCount) { wos = WorkoutSection.WarmUp; } else if (sc.SwimSets[i].StepNumber < (wo.MainStepCount + wo.WarmUpStepCount)) { wos = WorkoutSection.Main; } SwimSet ss = (from x in context.SwimSets where x.WorkoutId == wo.Id && x.StepNumber == sc.SwimSets[i].StepNumber select x).FirstOrDefault(); SwimSet ssNew = new SwimSet { Comment = sc.SwimSets[i].Comment, Distance = sc.SwimSets[i].Distance, RepCount = sc.SwimSets[i].RepCount, Speed = sc.SwimSets[i].Speed, Rest = sc.SwimSets[i].Rest, StepNumber = i, Total = sc.SwimSets[i].Total, WorkoutId = wo.Id, Group = wos }; if (ss != null) { ss = ssNew; } else { context.SwimSets.Add(ssNew); } } } context.SaveChanges(); sc.SwimSpeedSelectList = sc.GetPaceSelectListItems(); sc.SetDistanceSelectList = sc.GetSetDistanceSelectList(); sc.Workouts = GetUsersWorkouts(); sc.WorkoutId = wo.Id; model = sc; return(RedirectToAction("Index")); }
private static string CreateSets(SwimCreate sc, int poolLength, string endline, WorkoutSection section) { string retString = string.Empty; int beginStep = 0, endStep = 0; switch (section) { case WorkoutSection.WarmUp: beginStep = sc.WarmUpBeginSteps; endStep = sc.WarmUpEndSteps; break; case WorkoutSection.Main: beginStep = sc.MainBeginSteps; endStep = sc.MainEndSteps; break; case WorkoutSection.CoolDown: beginStep = sc.CoolDownBeginSteps; endStep = sc.CoolDownEndSteps; break; } for (int i = beginStep; i < endStep; i++) { if (sc.SwimSets[i].RepCount > 0) { string format = string.Empty; if (sc.SwimSets[i].RepCount > 1) { format = "{0} x {1} @{2} {3}s {4}"; } else { format = "{1} @{2} {3}s {4}"; } retString += string.Format(format, sc.SwimSets[i].RepCount, sc.SwimSets[i].Distance, sc.SwimSets[i].Speed[0], sc.SwimSets[i].Rest, sc.SwimSets[i].Comment) + endline; } } return(retString); }