public void BodyMeasurementValuesShouldBeIdenticalIfSourceAndDestinationUnitsAreSame()
        {
            AppUser         appUser         = new AppUser("", "", "", 60, GenderType.Female, MeasurementSystem.Imperial);
            BodyMeasurement bodyMeasurement = new BodyMeasurement(appUser, 10, 30, 30, 60, 120, DateTime.Today, MeasurementSystem.Imperial);

            BodyMeasurement converted = BodyMeasurementConverter.Convert(bodyMeasurement, appUser.MeasurementSystemPreference, appUser.MeasurementSystemPreference);

            Assert.AreEqual(bodyMeasurement.Height, converted.Height);
            Assert.AreEqual(bodyMeasurement.Weight, converted.Weight);
        }
        public void MetricBodyMeasurementValuesConvertedToImperialTest()
        {
            AppUser         appUser         = new AppUser("", "", "", 140, GenderType.Female, MeasurementSystem.Metric);
            BodyMeasurement bodyMeasurement = new BodyMeasurement(appUser, 22, 60, 60, 140, 60, DateTime.Today, MeasurementSystem.Metric);

            BodyMeasurement converted = BodyMeasurementConverter.Convert(bodyMeasurement, appUser.MeasurementSystemPreference, MeasurementSystem.Imperial);

            double expectedBodyFatPercentage = bodyMeasurement.BodyFatPercentage;

            Assert.AreEqual(expectedBodyFatPercentage, converted.BodyFatPercentage, .01);
            Assert.AreEqual(55.118, converted.Height, .01);
        }
예제 #3
0
        private BodyMeasurement CreateBodyMeasurement(CreateOrEditBodyMeasurementRequest request)
        {
            int     currentUserId = _userAccessor.GetCurrentUserId();
            AppUser appUser       = _bodyFitTrackerContext.AppUsers.Where(x => x.AppUserId == currentUserId).First();

            BodyMeasurement bodyMeasurement = new BodyMeasurement(appUser, request.NeckCircumference,
                                                                  request.WaistCircumference, request.HipCircumference,
                                                                  request.Height, request.Weight,
                                                                  request.DateAdded, appUser.MeasurementSystemPreference);

            BodyMeasurement bodyMeasurementConvertedToImperial = BodyMeasurementConverter.Convert(bodyMeasurement, appUser.MeasurementSystemPreference, MeasurementSystem.Imperial); // all measurements in the database should be in imperial units

            return(bodyMeasurementConvertedToImperial);
        }
        /// <summary>
        /// Returns a list of <see cref="BodyMeasurementDTO"/> for the current user
        /// </summary>
        public List <BodyMeasurementDTO> Handle()
        {
            int     userId      = _userAccessor.GetCurrentUserId();
            AppUser currentUser = _bodyFitTrackerContext.AppUsers.Find(userId);

            // all measurements in the database are in imperial units
            List <BodyMeasurement> bodyMeasurements = BodyMeasurementConverter.Convert(currentUser.
                                                                                       BodyMeasurements.ToList(), MeasurementSystem.Imperial, currentUser.MeasurementSystemPreference);

            bodyMeasurements = bodyMeasurements.OrderByDescending(b => b.DateAdded).ToList();

            List <BodyMeasurementDTO> bodyMeasurementDTOs = _mapper.Map <List <BodyMeasurement>, List <BodyMeasurementDTO> >(bodyMeasurements);

            return(bodyMeasurementDTOs);
        }
        /// <summary>
        /// Returns the <see cref="BodyMeasurementDTO"/> with the given <paramref name="bodyMeasurementId"/> for the current user.
        /// If a body measurement is not found, then a <see cref="RestException"/> will be thrown.
        /// </summary>
        public BodyMeasurementDTO Handle(int bodyMeasurementId)
        {
            int userId = _userAccessor.GetCurrentUserId();
            Dictionary <string, string> errors = new Dictionary <string, string>();
            AppUser         currentUser        = _bodyFitTrackerContext.AppUsers.Find(userId);
            BodyMeasurement bodyMeasurement    = currentUser.BodyMeasurements.Where(x => x.BodyMeasurementId == bodyMeasurementId).FirstOrDefault();

            if (bodyMeasurement == null)
            {
                errors.Add("", $"The body measurement with id {bodyMeasurementId} was not found");
                throw new RestException(HttpStatusCode.NotFound, errors);
            }

            BodyMeasurement measurementInUsersPreferredUnits = BodyMeasurementConverter.Convert(bodyMeasurement, MeasurementSystem.Imperial, currentUser.MeasurementSystemPreference);

            return(_mapper.Map <BodyMeasurement, BodyMeasurementDTO>(measurementInUsersPreferredUnits));
        }