Ejemplo n.º 1
0
        public async Task updateMyBodyMeasurements()
        {
            try
            {
                if (myBodyMeasurements == null)
                {
                    myBodyMeasurements = new BodyMeasurement();
                }
                var tempBodyMeasurements = await myBl.GetBodyMeasurement(myBodyMeasurements.Date);

                if (tempBodyMeasurements == null)
                {
                    tempBodyMeasurements      = new BodyMeasurement();
                    tempBodyMeasurements.Date = myBodyMeasurements.Date;
                    myBodyMeasurements        = tempBodyMeasurements;
                    Weight = tempBodyMeasurements.Weight;
                    Height = tempBodyMeasurements.Height;
                    await _myMessageDialog.ShowInfoDialogAsync("Please Update Your Body Measurements For This Day.");
                }
                else
                {
                    myBodyMeasurements = tempBodyMeasurements;
                    Weight             = tempBodyMeasurements.Weight;
                    Height             = tempBodyMeasurements.Height;
                }
            }
            catch (Exception ex)
            {
                updateMyBodyMeasurements();
                await _myMessageDialog.ShowInfoDialogAsync(ex.Message);
            }
        }
 public async Task <IEnumerable <BodyInjury> > GetBodyInjuriesToDelete(BodyMeasurement measurement)
 {
     return(await _trainingPlannerDbContext.BodyInjuries
            .Where(c => c.BodyMeasurementId == measurement.Id)
            .Except(measurement.Injuries)
            .ToListAsync());
 }
        public async Task <BodyMeasurement> UpdateBodyMeasurement(BodyMeasurement measurement)
        {
            _trainingPlannerDbContext.Update(measurement);
            await _trainingPlannerDbContext.SaveChangesAsync();

            return(measurement);
        }
Ejemplo n.º 4
0
        public ActionResult DeleteConfirmed(int id)
        {
            BodyMeasurement bodyMeasurement = db.BodyMeasurements.Find(id);

            db.BodyMeasurements.Remove(bodyMeasurement);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 5
0
        public void FatPercentageForFemaleBasedOffMeasurementsShouldBeAbout25Percent()
        {
            AppUser         appUser         = new AppUser("", "", "", 60, GenderType.Female, MeasurementSystem.Imperial);
            BodyMeasurement bodyMeasurement = new BodyMeasurement(appUser, 10, 30, 30, 60, 60, DateTime.Today, MeasurementSystem.Imperial);
            double          actual          = BodyFatPercentageCalculator.CalculateBodyFatPercentage(bodyMeasurement);

            Assert.AreEqual(25.19, actual, .01);
        }
        public async Task <BodyMeasurement> CreateBodyMeasurement(BodyMeasurement measurement)
        {
            await _trainingPlannerDbContext.BodyMeasurements.AddAsync(measurement);

            await _trainingPlannerDbContext.SaveChangesAsync();

            return(measurement);
        }
Ejemplo n.º 7
0
 public ActionResult Edit([Bind(Include = "Id,Height,Weight,BodyFatPercent,BodyMassIndex,LeanBodyMass,WaistCircumference")] BodyMeasurement bodyMeasurement)
 {
     if (ModelState.IsValid)
     {
         db.Entry(bodyMeasurement).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(bodyMeasurement));
 }
        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);
        }
Ejemplo n.º 9
0
        public ActionResult Create([Bind(Include = "Id,Height,Weight,BodyFatPercent,BodyMassIndex,LeanBodyMass,WaistCircumference")] BodyMeasurement bodyMeasurement)
        {
            if (ModelState.IsValid)
            {
                db.BodyMeasurements.Add(bodyMeasurement);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(bodyMeasurement));
        }
        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);
        }
Ejemplo n.º 11
0
        // GET: BodyMeasurements/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            BodyMeasurement bodyMeasurement = db.BodyMeasurements.Find(id);

            if (bodyMeasurement == null)
            {
                return(HttpNotFound());
            }
            return(View(bodyMeasurement));
        }
Ejemplo n.º 12
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);
        }
Ejemplo n.º 13
0
 public RecognitionCorrectionHint(SkeletonJoint joint           = SkeletonJoint.NUM_JOINTS, float dirX = 0, float dirY = 0, float dirZ = 0, float dist = 0,
                                  bool isAngle                  = false, ChangeType changeType = ChangeType.SPEED, ChangeDirection changeDir = ChangeDirection.DIFFERENT,
                                  BodyMeasurement measuringUnit = BodyMeasurement.NUM_MEASUREMENTS, int failedState = -1)
 {
     m_joint           = joint;
     m_dirX            = dirX;
     m_dirY            = dirY;
     m_dirZ            = dirZ;
     m_dist            = dist;
     m_isAngle         = isAngle;
     m_changeType      = changeType;
     m_changeDirection = changeDir;
     m_measuringUnit   = measuringUnit;
     m_failedState     = failedState;
 }
        private static double CalculateBodyFatPercentageUsingImperialUnits(BodyMeasurement bodyMeasurement)
        {
            if (bodyMeasurement.AppUser.Gender == GenderType.Male)
            {
                double maleBodyFatPercentage = 86.01 * Math.Log10(bodyMeasurement.WaistCircumference - bodyMeasurement.NeckCircumference) -
                                               (70.041 * Math.Log10(bodyMeasurement.Height)) + 36.76;

                return(maleBodyFatPercentage);
            }

            // Calculation for female
            double hipCircumference        = (double)bodyMeasurement.HipCircumference;
            double femaleBodyFatPercentage = 163.205 * Math.Log10(bodyMeasurement.WaistCircumference + hipCircumference -
                                                                  bodyMeasurement.NeckCircumference) - (97.684 * Math.Log10(bodyMeasurement.Height)) - 78.387;;

            return(femaleBodyFatPercentage);
        }
        /// <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));
        }
Ejemplo n.º 16
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);
            }
        }
Ejemplo n.º 17
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();
        }
Ejemplo n.º 18
0
        public async Task AddBodyMeasurement(BodyMeasurement bodyMeasurement)
        {
            try
            {
                using (var db = new EatingRightDBContext())
                {
                    // var user = await GetCurrentUser();
                    var userEmail = await GetCurrentUserEmail();

                    var user = await db.Users
                               .Where(A => A.Email.Equals(userEmail)).Include(a => a.Meals).Include(a => a.Meals.Select(m => m.FoodItems)).Include(a => a.Goals).Include(a => a.BodyMeasurements).SingleOrDefaultAsync();

                    var isExistBodyMeasurement = user.BodyMeasurements.Where(A => A.Date.Year == bodyMeasurement.Date.Year && A.Date.Month == bodyMeasurement.Date.Month && A.Date.Day == bodyMeasurement.Date.Day).FirstOrDefault();

                    foreach (PropertyInfo p in bodyMeasurement.GetType().GetProperties())
                    {
                        if (p.GetType() != bodyMeasurement.Date.GetType() && p.GetValue(bodyMeasurement) == null)
                        {
                            p.SetValue(bodyMeasurement, 0.00, null);
                        }
                    }

                    if (isExistBodyMeasurement == null)
                    {
                        user.BodyMeasurements.Add(bodyMeasurement);
                    }
                    else
                    {
                        // goal.Date = isExistGoal.Date;
                        // db.Entry(isExistGoal).CurrentValues.SetValues(goal);

                        isExistBodyMeasurement.Weight = bodyMeasurement.Weight;
                        isExistBodyMeasurement.Height = bodyMeasurement.Height;
                    }
                    // db.Users.AddOrUpdate(user);
                    await db.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Ejemplo n.º 19
0
        private async Task SaveBodyMeasurements()
        {
            try
            {
                BodyMeasurement temp = new BodyMeasurement();
                temp.Date   = myBodyMeasurements.Date;
                temp.Weight = myBodyMeasurements.Weight;
                temp.Height = myBodyMeasurements.Height;

                await myBl.AddBodyMeasurement(temp);

                await _myMessageDialog.ShowInfoDialogAsync("Body Measurement Saved!");

                OnPropertyChanged();
            }
            catch (Exception ex)
            {
                updateMyBodyMeasurements();
                await _myMessageDialog.ShowInfoDialogAsync(ex.Message);
            }
        }
Ejemplo n.º 20
0
        /**
         * \brief Get the name string representation of a body measurement id
         */
        public static string getBodyMeasureName(BodyMeasurement id)
        {
            switch (id)
            {
            case BodyMeasurement.BODY_HEIGHT:
                return("bodyHeight");

            case BodyMeasurement.TORSO_HEIGHT:
                return("torsoHeight");

            case BodyMeasurement.SHOULDER_WIDTH:
                return("shoulderWidth");

            case BodyMeasurement.HIP_WIDTH:
                return("hipWidth");

            case BodyMeasurement.ARM_LENGTH:
                return("armLength");

            case BodyMeasurement.UPPER_ARM_LENGTH:
                return("upperArmLength");

            case BodyMeasurement.LOWER_ARM_LENGTH:
                return("lowerArmLength");

            case BodyMeasurement.LEG_LENGTH:
                return("legLength");

            case BodyMeasurement.UPPER_LEG_LENGTH:
                return("upperLegLength");

            case BodyMeasurement.LOWER_LEG_LENGTH:
                return("lowerLegLength");

            default:
                return("");
            }
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Deletes the measurement with the id <paramref name="bodyMeasurementIdToDelete"/>. If no measurement is found then a RestException will be thrown. If
        /// the measurement being deleted does not belong to the current user, then a RestException will be thrown.
        /// </summary>
        /// <param name="bodyMeasurementIdToDelete"></param>
        public void Handle(int bodyMeasurementIdToDelete)
        {
            Dictionary <string, string> errors = new Dictionary <string, string>();

            BodyMeasurement bodyMeasurementToRemove = _bodyFitTrackerContext.BodyMeasurements
                                                      .Where(b => b.BodyMeasurementId == bodyMeasurementIdToDelete).FirstOrDefault();

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

            int currentUserId = _userAccessor.GetCurrentUserId();

            if (currentUserId != bodyMeasurementToRemove.AppUserId)
            {
                errors.Add("", "Access to another user's body measurement is denied");
                throw new RestException(HttpStatusCode.Forbidden, errors);
            }

            _bodyFitTrackerContext.BodyMeasurements.Remove(bodyMeasurementToRemove);
            _bodyFitTrackerContext.SaveChanges();
        }
Ejemplo n.º 22
0
        public static BodyMeasurement Convert(BodyMeasurement bodyMeasurement, MeasurementSystem sourceUnits, MeasurementSystem destinationUnits)
        {
            if (sourceUnits == destinationUnits)
            {
                return(bodyMeasurement);
            }

            double?hipCircumference   = null;
            double neckCircumference  = MeasurementConverter.ConvertLength(bodyMeasurement.NeckCircumference, sourceUnits, destinationUnits);
            double waistCircumference = MeasurementConverter.ConvertLength(bodyMeasurement.WaistCircumference, sourceUnits, destinationUnits);

            if (bodyMeasurement.HipCircumference.HasValue)
            {
                hipCircumference = MeasurementConverter.ConvertLength((double)bodyMeasurement.HipCircumference, sourceUnits, destinationUnits);
            }

            double height = MeasurementConverter.ConvertLength(bodyMeasurement.Height, sourceUnits, destinationUnits);
            double weight = MeasurementConverter.ConvertWeight(bodyMeasurement.Weight, sourceUnits, destinationUnits);

            return(new BodyMeasurement(bodyMeasurement.AppUser, neckCircumference, waistCircumference, hipCircumference, height, weight, bodyMeasurement.DateAdded, destinationUnits)
            {
                BodyMeasurementId = bodyMeasurement.BodyMeasurementId
            });
        }
Ejemplo n.º 23
0
 public async Task AddBodyMeasurement(BodyMeasurement bodyMeasurement)
 {
     await myDal.AddBodyMeasurement(bodyMeasurement);
 }
 public async Task DeleteBodyMeasurement(BodyMeasurement measurement)
 {
     _trainingPlannerDbContext.BodyMeasurements.Remove(measurement);
     await _trainingPlannerDbContext.SaveChangesAsync();
 }
        /// <summary>
        /// Calculates the body fat percentage based off of the given <paramref name="bodyMeasurement"/>.
        /// </summary>
        /// <returns> The body fat percentage </returns>
        public static double CalculateBodyFatPercentage(BodyMeasurement bodyMeasurement)
        {
            BodyMeasurement bodyMeasurementConvertedToImperial = BodyMeasurementConverter.Convert(bodyMeasurement, bodyMeasurement.Units, MeasurementSystem.Imperial);

            return(CalculateBodyFatPercentageUsingImperialUnits(bodyMeasurementConvertedToImperial));
        }
Ejemplo n.º 26
0
        private async Task RemoveBodyInjuries(BodyMeasurement mappedMeasurement)
        {
            var bodyInjuriesToDelete = await _bodyMeasurementRepository.GetBodyInjuriesToDelete(mappedMeasurement);

            await _bodyMeasurementRepository.RemoveBodyInjuries(bodyInjuriesToDelete, false);
        }