Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
 }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
 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));
        }
Esempio n. 9
0
        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));
        }
Esempio n. 10
0
        /// <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);
        }