public IHttpActionResult CompleteWorkout([FromBody] JObject jsonResult) { dynamic jObjReturn = new JObject(); try { WorkoutDetails workout = jsonResult.ToObject <WorkoutDetails>(); JObject jObj = CallAPI(CompleteWorkoutEndpoint, "POST", jsonResult.ToString()); if (jObj["status"].ToString() == "OK") { jObjReturn.status = "OK"; jObjReturn.result = "New workout created successfully!"; } else { jObjReturn.status = "FAILED"; jObjReturn.result = $"Failed to create new workouts.\n{jObj["result"].ToString()}"; } } catch (Exception ex) { jObjReturn.status = "FAILED"; jObjReturn.result = ex.Message; } return(Ok(jObjReturn)); }
private IEnumerable <OneRepMax> Calculate1RMs(WorkoutDetails workout, List <Exercise> exercises, decimal?userWeight) { var maxs = new List <OneRepMax>(); foreach (var set in workout.Sets.Where(s => s.Reps > 0 && s.Reps <= 10 && s.Weights > 0)) { var exercise = exercises.FirstOrDefault(e => e.Id == set.ExerciseId); if (exercise == null) { exercise = trainingRepository.GetExercise(set.ExerciseId, CurrentUserId, DateTimeOffset.MinValue); exercises.Add(exercise); } maxs.Add(new OneRepMax { UserId = CurrentUserId, ExerciseId = set.ExerciseId, Time = workout.Time, Max = Math.Round(TrainingUtils.Calculate1RM(set.Reps, set.Weights), 3), MaxBW = (userWeight.HasValue && exercise.PercentageBW.HasValue) ? Math.Round(TrainingUtils.Calculate1RM(set.Reps, set.Weights + userWeight.Value * (exercise.PercentageBW.Value / 100)) - (userWeight.Value * (exercise.PercentageBW.Value / 100)), 3) : null as decimal?, MaxInclBW = (userWeight.HasValue && exercise.PercentageBW.HasValue) ? Math.Round(TrainingUtils.Calculate1RM(set.Reps, set.Weights + userWeight.Value * (exercise.PercentageBW.Value / 100)), 3) : null as decimal?, }); } return(maxs.GroupBy(m => m.ExerciseId).Select(m => m.OrderByDescending(m2 => m2.Max).First())); }
public ActionResult DeleteConfirmed(int id) { WorkoutDetails workoutDetails = db.WorkoutDetails.Find(id); db.WorkoutDetails.Remove(workoutDetails); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Edit([Bind(Include = "WorkoutDetailsID,WorkoutTitle,Duration,EquipmentUsed,WorkoutID,TrainerID")] WorkoutDetails workoutDetails) { if (ModelState.IsValid) { db.Entry(workoutDetails).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.TrainerID = new SelectList(db.Trainers, "TrainerID", "FirstName", workoutDetails.TrainerID); ViewBag.WorkoutID = new SelectList(db.Workouts, "WorkoutID", "TrainerName", workoutDetails.WorkoutID); return(View(workoutDetails)); }
public IActionResult Start([FromBody] WorkoutStartModel request) { var workout = new WorkoutDetails { UserId = CurrentUserId, Time = request.Time }; trainingRepository.CreateWorkout(workout); var response = Mapper.Map <WorkoutDetailsResponse>(workout); return(Ok(response)); }
public WorkoutDetails Workoutdetails(WorkoutDetailsRequestModel objWorkoutDetailsRequestModel) { try { WorkoutDetails model = _objFriendFitDBEntity.Database.SqlQuery <WorkoutDetails>("WorkoutDetailsById @WorkoutId=@WorkoutId", new SqlParameter("WorkoutId", objWorkoutDetailsRequestModel.WorkoutId)).FirstOrDefault(); return(model); } catch (Exception ex) { return(null); } }
// GET: WorkoutDetails/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WorkoutDetails workoutDetails = db.WorkoutDetails.Find(id); if (workoutDetails == null) { return(HttpNotFound()); } return(View(workoutDetails)); }
// GET: WorkoutDetails/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } WorkoutDetails workoutDetails = db.WorkoutDetails.Find(id); if (workoutDetails == null) { return(HttpNotFound()); } ViewBag.TrainerID = new SelectList(db.Trainers, "TrainerID", "FirstName", workoutDetails.TrainerID); ViewBag.WorkoutID = new SelectList(db.Workouts, "WorkoutID", "TrainerName", workoutDetails.WorkoutID); return(View(workoutDetails)); }
public IHttpActionResult NewWorkout([FromBody] JObject jsonResult) { WorkoutDetails newWorkout = jsonResult.ToObject <WorkoutDetails>(); dynamic jObjReturn = new JObject(); newWorkout.Exercises = newWorkout.Exercises.Where(x => x.ExerciseId != 0).ToList(); // Valitdate json structure contents. if (newWorkout.WorkoutTitle == null || newWorkout.Exercises.Count == 0) { jObjReturn.status = "FAILED"; jObjReturn.result = $"Please provide valid values!"; } // Check if workout name FOR THIS USER does not already exist. if (GetWorkouts(newWorkout.UserId).FirstOrDefault(x => x.WorkoutTitle.Trim().ToUpper() == newWorkout.WorkoutTitle.Trim().ToUpper()) != null) { jObjReturn.status = "FAILED"; jObjReturn.result = $"Workout with this name already exists!"; } else { JObject jObj = CallAPI(CreateWorkoutEndpoint, "POST", jsonResult.ToString()); if (jObj["status"].ToString() == "OK") { jObjReturn.status = "OK"; jObjReturn.result = "New workout created successfully!"; } else { jObjReturn.status = "FAILED"; jObjReturn.result = $"Failed to create new workouts.\n{jObj["result"].ToString()}"; } } return(Ok(jObjReturn)); }
/// <summary> /// Builds only the commands in an interval /// </summary> /// <param name="interval">The interval</param> /// <param name="workoutDetails">The workout details</param> /// <returns>Enumerable of the commands</returns> private IEnumerable <ICommand>?BuildInterval(Interval interval, WorkoutDetails workoutDetails) { if (interval.WorkoutType == null && interval.IntervalType == null) { _logger.LogCritical("Workout type and Interval type was unexpectedly null. One must be specified based on Variable vs Fixed. No workout has been set."); return(null); } if (interval.Duration == null) { _logger.LogCritical("Duration was unexpected null. No workout has been set."); return(null); } int durationValue; int?splitValue = null; if (workoutDetails.WorkoutDuration == WorkoutDuration.Time) { // Time is in 0.01s resolution, so requires converstion durationValue = interval.Duration.Value * 100; if (workoutDetails.RequireSplits && interval.Splits != null) { splitValue = interval.Splits.Value * 100; } } else { // Other durations are valid as-is durationValue = interval.Duration.Value; if (workoutDetails.RequireSplits && interval.Splits != null) { splitValue = interval.Splits.Value; } } if (splitValue == null && workoutDetails.RequireSplits) { _logger.LogCritical("Split Value was unexpectedly null. No workout has been set."); return(null); } List <ICommand> commands = new(); if (interval.WorkoutType != null) { commands.Add(new SetWorkoutTypeCommand(interval.WorkoutType.Value)); } commands.Add(new SetWorkoutDurationCommand(workoutDetails.WorkoutDuration, durationValue)); if (workoutDetails.RequireSplits && splitValue != null) { commands.Add(new SetSplitDurationCommand(workoutDetails.WorkoutDuration, splitValue.Value)); } else if ((workoutDetails.RequireRest || interval.IntervalType != null) && interval.SecondsOfRest != null) { commands.Add(new SetRestDurationCommand(interval.SecondsOfRest.Value)); } if (interval.TargetPace != null) { commands.Add(new SetTargetPaceCommand(interval.TargetPace.Value)); } return(commands); }