public IActionResult Create([FromBody] WorkoutRequest request) { CleanSets(request); var exercises = CreateExercises(request.Sets).ToList(); var workout = Mapper.Map <WorkoutDetails>(request); workout.UserId = CurrentUserId; var userWeight = measurementRepository.GetUserWeight(CurrentUserId); var maxs = Calculate1RMs(workout, exercises, userWeight); Update1RMs(maxs); CalculateLoads(workout.Sets, exercises, userWeight); trainingRepository.CreateWorkout(workout); var burnedCalories = request.EnergyExpenditure ?? CalculateEnergyExpenditure(workout.Duration, userWeight); var energyExpenditure = new EnergyExpenditure { UserId = CurrentUserId, Time = workout.Time, WorkoutId = workout.Id, EnergyKcal = burnedCalories }; activityRepository.CreateEnergyExpenditure(energyExpenditure); var response = Mapper.Map <WorkoutDetailsResponse>(workout); return(Ok(response)); }
private void CalculateEnergy(EnergyExpenditure expenditure) { var userWeight = measurementRepository.GetUserWeight(CurrentUserId); if (!userWeight.HasValue) { return; } if (expenditure.ActivityId.HasValue && expenditure.Duration.HasValue) { var activity = activityRepository.GetActivity(expenditure.ActivityId.Value); expenditure.EnergyKcal = activity.EnergyExpenditure * userWeight.Value * (decimal)expenditure.Duration.Value.TotalMinutes; } }
public IActionResult Update(Guid id, [FromBody] WorkoutRequest request) { CleanSets(request); var workout = trainingRepository.GetWorkout(id); if (workout.UserId != CurrentUserId) { return(Unauthorized()); } var exercises = CreateExercises(request.Sets).ToList(); Mapper.Map(request, workout); var userWeight = measurementRepository.GetUserWeight(CurrentUserId); var maxs = Calculate1RMs(workout, exercises, userWeight); Update1RMs(maxs); CalculateLoads(workout.Sets, exercises, userWeight); trainingRepository.UpdateWorkout(workout); var burnedCalories = request.EnergyExpenditure ?? CalculateEnergyExpenditure(workout.Duration, userWeight); var energyExpenditure = activityRepository.GetEnergyExpenditureForWorkout(id); if (energyExpenditure == null) { energyExpenditure = new EnergyExpenditure { UserId = CurrentUserId, Time = workout.Time, WorkoutId = workout.Id, EnergyKcal = burnedCalories }; activityRepository.CreateEnergyExpenditure(energyExpenditure); } else { energyExpenditure.Time = workout.Time; energyExpenditure.EnergyKcal = burnedCalories; activityRepository.UpdateEnergyExpenditure(energyExpenditure); } var response = Mapper.Map <WorkoutDetailsResponse>(workout); return(Ok(response)); }