public async Task <IActionResult> AddBodyWeight([Required] NewBodyWeightMeasurement bodyWeightModel)
        {
            var(isValid, reason) = bodyWeightModel.IsValid();
            if (!isValid)
            {
                return(BadRequest(reason));
            }

            var userId      = httpContextAccessor.GetUserId();
            var userProfile = await userProfileRepository.GetUserProfileAsync(userId);

            if (!userProfile.HasValue)
            {
                return(NotFound());
            }

            if (userProfile.ValueOrFailure().BirthDate > bodyWeightModel.MeasuredOn)
            {
                return(BadRequest("Measure date must be greater than birth date."));
            }

            var entity = new BodyWeight
            {
                UserId     = userId,
                Weight     = bodyWeightModel.Weight,
                MeasuredOn = bodyWeightModel.MeasuredOn
            };
            await bodyInfoRepository.AddBodyWeightAsync(entity);

            var model = new BodyWeightModel(entity.ID, entity.Weight, entity.MeasuredOn);

            return(Ok(model));
        }
        public async Task <IActionResult> DeleteBodyWeight([Required] BodyWeightModel bodyWeightModel)
        {
            var userId = httpContextAccessor.GetUserId();

            var entity = new BodyWeight
            {
                ID         = bodyWeightModel.Id,
                UserId     = userId,
                Weight     = bodyWeightModel.Weight,
                MeasuredOn = bodyWeightModel.MeasuredOn
            };
            await bodyInfoRepository.DeleteBodyWeightAsync(entity);

            return(NoContent());
        }