Esempio n. 1
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);
        }
Esempio n. 2
0
        /// <summary>
        /// Creates a new <see cref="BodyMeasurement"/> based off of the <paramref name="createOrEditBodyMeasurementRequest"/>, if the measurement
        /// does not already exist. If the measurement described in the request does exist, then the existing measurement will be edited.
        /// </summary>
        public void Handle(CreateOrEditBodyMeasurementRequest createOrEditBodyMeasurementRequest)
        {
            bool measurementIsBeingCreated = createOrEditBodyMeasurementRequest.IdOfBodyMeasurementToEdit == null;

            if (measurementIsBeingCreated)
            {
                BodyMeasurement bodyMeasurement = CreateBodyMeasurement(createOrEditBodyMeasurementRequest);

                _bodyFitTrackerContext.BodyMeasurements.Add(bodyMeasurement);
                _bodyFitTrackerContext.SaveChanges();
            }

            else
            {
                TryEditingMeasurement(createOrEditBodyMeasurementRequest);
            }
        }
Esempio n. 3
0
        private void TryEditingMeasurement(CreateOrEditBodyMeasurementRequest request)
        {
            int currentUserId = _userAccessor.GetCurrentUserId();
            Dictionary <string, string> errors = new Dictionary <string, string>();
            AppUser appUser = _bodyFitTrackerContext.AppUsers.Where(x => x.AppUserId == currentUserId).First();

            BodyMeasurement bodyMeasurementToEdit = appUser.BodyMeasurements.Where(x => x.BodyMeasurementId ==
                                                                                   request.IdOfBodyMeasurementToEdit).FirstOrDefault();

            if (bodyMeasurementToEdit == null)
            {
                errors.Add("", $"The bodymeasurement with id {request.IdOfBodyMeasurementToEdit} was not found");
                throw new RestException(HttpStatusCode.NotFound, errors);
            }

            // all measurements in the database should be in imperial units

            MeasurementSystem sourceUnits      = appUser.MeasurementSystemPreference;
            MeasurementSystem destinationUnits = MeasurementSystem.Imperial;

            bodyMeasurementToEdit.NeckCircumference =
                MeasurementConverter.ConvertLength(request.NeckCircumference, sourceUnits, destinationUnits);

            bodyMeasurementToEdit.WaistCircumference =
                MeasurementConverter.ConvertLength(request.WaistCircumference,
                                                   sourceUnits, destinationUnits);

            if (request.HipCircumference.HasValue)
            {
                bodyMeasurementToEdit.HipCircumference =
                    MeasurementConverter.ConvertLength((double)request.HipCircumference, sourceUnits, destinationUnits);
            }
            bodyMeasurementToEdit.Height =
                MeasurementConverter.ConvertLength(request.Height, sourceUnits, destinationUnits);

            bodyMeasurementToEdit.Weight =
                MeasurementConverter.ConvertWeight(request.Weight, sourceUnits, destinationUnits);

            bodyMeasurementToEdit.DateAdded = request.DateAdded;

            bodyMeasurementToEdit.BodyFatPercentage = BodyFatPercentageCalculator.CalculateBodyFatPercentage(bodyMeasurementToEdit);

            _bodyFitTrackerContext.SaveChanges();
        }
        public void ValidationShouldSucceedIfAllFieldsAreValid()
        {
            var userAccessorMock = new Mock <IUserAccessor>();

            userAccessorMock.Setup(x => x.GetCurrentUsersGender()).Returns(GenderType.Male);
            CreateOrEditBodyMeasurementRequestValidator validator             = new CreateOrEditBodyMeasurementRequestValidator(userAccessorMock.Object);
            CreateOrEditBodyMeasurementRequest          createBodyMeasurement = new CreateOrEditBodyMeasurementRequest
            {
                NeckCircumference  = 10,
                WaistCircumference = 10,
                HipCircumference   = 10,
                Height             = 60,
                Weight             = 100,
                DateAdded          = DateTime.Today,
            };

            ValidationResult validationResult = validator.Validate(createBodyMeasurement);

            Assert.IsTrue(validationResult.IsValid);
        }
 public void EditBodyMeasurement(int id, CreateOrEditBodyMeasurementRequest editBodyMeasurementRequest)
 {
     editBodyMeasurementRequest.IdOfBodyMeasurementToEdit = id;
     _createOrEditBodyMeasurementHandler.Handle(editBodyMeasurementRequest);
 }
 public void CreateBodyMeasurement(CreateOrEditBodyMeasurementRequest createBodyMeasurementRequest)
 {
     _createOrEditBodyMeasurementHandler.Handle(createBodyMeasurementRequest);
 }