public UserBodyIndex AutoCalculateIndexes(UserBodyIndex userBodyIndex, AppUser user) { // Calculate Units userBodyIndex.WeightLb = userBodyIndex.WeightKg * CommonConstants.ExchangeUnits.KilogramsToPounds; userBodyIndex.BellyIn = userBodyIndex.BellyCm / CommonConstants.ExchangeUnits.InchesToCentimeters; // Calculate the IDI WPRO BMI index by having Weight (kg) and Height (m) userBodyIndex.IdiWproBmi = BodyIndexCalculation.GetIdiWproBmi(userBodyIndex.WeightKg, userBodyIndex.HeightCm / 100); // Calculate BodyFat by having Gender, Belly (inch) and Weight (lb) userBodyIndex.BodyFat = BodyIndexCalculation.GetBodyFat(user.Gender, userBodyIndex.BellyIn, userBodyIndex.WeightLb); // Calculate LBM by having WeightKg, BodyFat userBodyIndex.Lbm = BodyIndexCalculation.GetLbm(userBodyIndex.WeightKg, userBodyIndex.BodyFat); // Calculate BMR by having LBM userBodyIndex.Bmr = BodyIndexCalculation.GetBmr(userBodyIndex.Lbm); // Calculate TDEE after get the latest UserDesire of User decimal multiple = 0; var userDesire = _userDesireRepository.FindAll(x => x.UserId == user.Id).OrderByDescending(x => x.StartDate).FirstOrDefault(); multiple = userDesire != null?decimal.Parse(_commonCategoryRepository.FindSingle(x => x.GroupCode == CommonConstants.GroupCode.PracticeIntensive && x.Code == userDesire.PracticeIntensive).Description) : 1; userBodyIndex.Tdee = userBodyIndex.Bmr * multiple; return(userBodyIndex); }
public async Task <IActionResult> SaveBodyIndex(UserBodyIndex userBodyIndex) { bool result = true; string message = string.Empty; var loggedEmail = User.GetSpecificClaim("Email"); var customer = await _userManager.FindByIdAsync(userBodyIndex.UserId.ToString()); if (ModelState.IsValid) { userBodyIndex.UserModified = loggedEmail; if (userBodyIndex.Id == 0) { userBodyIndex.UserCreated = loggedEmail; _userBodyIndexService.Add(userBodyIndex, customer, out result, out message); } else { _userBodyIndexService.UpdateChangedProperties(userBodyIndex, customer, out result, out message); } return(new OkObjectResult(new GenericResult(result, message))); } else { List <string> listErrors = ModelState.Values.SelectMany(v => v.Errors).Select(x => x.ErrorMessage).ToList(); string errorString = String.Join("\n", listErrors.ToArray()); return(new OkObjectResult(new GenericResult(false, errorString))); } }
public void UpdateChangedProperties(UserBodyIndex userBodyIndex, AppUser user, out bool result, out string message) { userBodyIndex = AutoCalculateIndexes(userBodyIndex, user); _userBodyIndexRepository.UpdateChangedProperties(userBodyIndex.Id, userBodyIndex, out result, out message); if (result) { SaveChanges(); } else { Dispose(); } }