Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        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));
        }