/// <summary> /// Retrieves user's daily target data for the current day /// </summary> /// <remarks> /// This method is very redundant and a good example of 'if it ain't broke don't fix it'. Didn't want to mess with providing DateTime.Today as /// a parsed string and having something break, so left this and GetPastMacroTargets as separate methods. Additionally, GetCurrentMacroTargets is /// called indirectly from a block of javascript and wanted to avoid addressing multiple language date/time rules. /// </remarks> /// <param name="user">The <see cref="MacroNewtUser"/> for which daily macro stats are being queried</param> /// <returns>A populated <see cref="CurrentDayCalStatsViewModel"/> object</returns> public CurrentDayCalStatsViewModel GetCurrentMacroTargets(MacroNewtUser user) { int targetTotalCal = _context.Users .Where(u => u.Id == user.Id) .Select(u => u.DailyTargetCalories) .FirstOrDefault(); DailyCalTotal dct = _context.DailyCalTotal .Where(d => (d.Id == user.Id) && (d.CalorieDay == DateTime.Today)) .FirstOrDefault(); return(OrganizeCalStats(user, targetTotalCal, dct)); }
private async Task LoadSharedKeyAndQrCodeUriAsync(MacroNewtUser user) { // Load the authenticator key & QR code URI to display on the form var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user); if (string.IsNullOrEmpty(unformattedKey)) { await _userManager.ResetAuthenticatorKeyAsync(user); unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user); } SharedKey = FormatKey(unformattedKey); var email = await _userManager.GetEmailAsync(user); AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey); }
public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); // Get the information about the user from the external login provider var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { ErrorMessage = "Error loading external login information during confirmation."; return(RedirectToPage("./Login", new { ReturnUrl = returnUrl })); } if (ModelState.IsValid) { var user = new MacroNewtUser { UserName = Input.Email, Email = Input.Email }; var result = await _userManager.CreateAsync(user); if (result.Succeeded) { result = await _userManager.AddLoginAsync(user, info); if (result.Succeeded) { await _signInManager.SignInAsync(user, isPersistent : false); _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider); return(LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } LoginProvider = info.LoginProvider; ReturnUrl = returnUrl; return(Page()); }
public async Task <IActionResult> EditUserDetails([Bind("ProfileName,Name,DOB,Gender,Weight,DailyTargetCalories,Id")] MacroNewtUser user) { if (ModelState.IsValid) { var userToUpdate = _context.Users .Where(u => u.Id == user.Id) .FirstOrDefault(); if (userToUpdate != null) { try { userToUpdate.ProfileName = user.ProfileName; userToUpdate.Name = user.Name; userToUpdate.DOB = user.DOB; userToUpdate.Gender = user.Gender; userToUpdate.Weight = user.Weight; userToUpdate.DailyTargetCalories = user.DailyTargetCalories; _context.Users.Update(userToUpdate); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!UserExists(user.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction("ManageUsers", "Admin")); } } return(View(user)); }
private async Task CreateRoles(IServiceProvider serviceProvider) { string[] roleNames = { "Admin", "User" }; IdentityResult roleResult; foreach (var roleName in roleNames) { var roleExist = await _roleManager.RoleExistsAsync(roleName); if (!roleExist) { roleResult = await _roleManager.CreateAsync(new IdentityRole(roleName)); } } var powerUser = new MacroNewtUser { UserName = Configuration["MacroNewtUserName"], Email = Configuration["MacroNewtUserEmail"], Name = "Admin", ProfileName = "Admin" }; string userPWD = Configuration["MacroNewtPassword"]; var _user = await _userManager.FindByEmailAsync(Configuration["MacroNewtUserEmail"]); if (_user == null) { var createPowerUser = await _userManager.CreateAsync(powerUser, userPWD); if (createPowerUser.Succeeded) { await _userManager.AddToRoleAsync(powerUser, "Admin"); } } }
/// <summary> /// Compares user's goals with daily intake to properly display progress bars /// </summary> /// <remarks> /// Much of the arithmetic is conditional and based on whether or not the user has surpassed daily targets. /// Conditions provide for a different progress bar appearance if user has failed to meet goals. /// </remarks> /// <param name="user">The <see cref="MacroNewtUser"/> for which daily stats are being organized</param> /// <param name="targetTotalCal">The int daily target calories for the user</param> /// <param name="dct">The <see cref="DailyCalTotal"/> stats for the user on target day</param> /// <returns>A populated <see cref="CurrentDayCalStatsViewModel"/> object</returns> public CurrentDayCalStatsViewModel OrganizeCalStats(MacroNewtUser user, int targetTotalCal, DailyCalTotal dct) { if (dct == null) { dct = new DailyCalTotal(); } double proteinBal = 0.2; double proteinTar = 0; double fatBal = 0.25; double fatTar = 0; double carbBal = 0.55; double carbTar = 0; var showMacros = _context.UserGoals .Where(g => g.Id == user.Id) .FirstOrDefault(); if (showMacros != null) { proteinBal = ((double)showMacros.ProteinPercent / 100); fatBal = ((double)showMacros.FatPercent / 100); carbBal = ((double)showMacros.CarbPercent / 100); proteinTar = (double)targetTotalCal * proteinBal; fatTar = ((double)targetTotalCal * fatBal); carbTar = ((double)targetTotalCal * carbBal); } CurrentDayCalStatsViewModel cdcsvm = new CurrentDayCalStatsViewModel() { TargetCalories = targetTotalCal, CurrentDayCalories = dct.TotalDailyCalories, CurrentDayCaloriesPercent = Math.Round(((dct.TotalDailyCalories * 100) / (targetTotalCal * 1.5))), PercentageCaloriesConsumed = Math.Round(dct.TotalDailyCalories * 100.0 / targetTotalCal), TargetProteinCalories = Convert.ToInt32(proteinTar), CurrentDayProteinCalories = dct.TotalDailyProteinCalories, CurrentDayProteinCaloriesPercent = Math.Round(((dct.TotalDailyProteinCalories * 100) / (proteinTar * 1.5))), PercentageProteinCaloriesConsumed = Math.Round(dct.TotalDailyProteinCalories * 100.0 / proteinTar), TargetFatCalories = Convert.ToInt32(fatTar), CurrentDayFatCalories = dct.TotalDailyFatCalories, CurrentDayFatCaloriesPercent = Math.Round(((dct.TotalDailyFatCalories * 100) / (fatTar * 1.5))), PercentageFatCaloriesConsumed = Math.Round(dct.TotalDailyFatCalories * 100.0 / fatTar), TargetCarbCalories = Convert.ToInt32(carbTar), CurrentDayCarbCalories = dct.TotalDailyCarbCalories, CurrentDayCarbCaloriesPercent = Math.Round(((dct.TotalDailyCarbCalories * 100) / (carbTar * 1.5))), PercentageCarbCaloriesConsumed = Math.Round(dct.TotalDailyCarbCalories * 100.0 / carbTar) }; if (showMacros != null) { cdcsvm.ShowMacros = true; } if (dct.TotalDailyCalories > targetTotalCal) { cdcsvm.TotalCaloriesSurplusPercent = Math.Round(((dct.TotalDailyCalories) / (double)targetTotalCal) * 100); cdcsvm.TotalCaloriesSurplusDisplayPercent = Math.Round(((dct.TotalDailyCalories - targetTotalCal) * 100) / ((double)targetTotalCal * 1.5)); if (cdcsvm.TotalCaloriesSurplusDisplayPercent > 38) { cdcsvm.TotalCaloriesSurplusDisplayPercent = 38; } } else { cdcsvm.CaloriesRemainingPercent = (67 - (cdcsvm.CurrentDayCaloriesPercent)); } if (cdcsvm.CurrentDayProteinCalories > cdcsvm.TargetProteinCalories) { cdcsvm.TotalProteinCaloriesSurplusPercent = Math.Round(((cdcsvm.CurrentDayProteinCalories) / (double)cdcsvm.TargetProteinCalories) * 100); cdcsvm.TotalProteinCaloriesSurplusDisplayPercent = Math.Round(((cdcsvm.CurrentDayProteinCalories - cdcsvm.TargetProteinCalories) * 100) / ((double)cdcsvm.TargetProteinCalories * 1.5)); if (cdcsvm.TotalProteinCaloriesSurplusDisplayPercent > 38) { cdcsvm.TotalProteinCaloriesSurplusDisplayPercent = 38; } } else { cdcsvm.CurrentDayProteinCaloriesRemainingPercent = (67 - (cdcsvm.CurrentDayProteinCaloriesPercent)); } if (cdcsvm.CurrentDayFatCalories > cdcsvm.TargetFatCalories) { cdcsvm.TotalFatCaloriesSurplusPercent = Math.Round(((cdcsvm.CurrentDayFatCalories) / (double)cdcsvm.TargetFatCalories) * 100); cdcsvm.TotalFatCaloriesSurplusDisplayPercent = Math.Round(((cdcsvm.CurrentDayFatCalories - cdcsvm.TargetFatCalories) * 100) / ((double)cdcsvm.TargetFatCalories * 1.5)); if (cdcsvm.TotalFatCaloriesSurplusDisplayPercent > 38) { cdcsvm.TotalFatCaloriesSurplusDisplayPercent = 38; } } else { cdcsvm.CurrentDayFatCaloriesRemainingPercent = (67 - (cdcsvm.CurrentDayFatCaloriesPercent)); } if (cdcsvm.CurrentDayCarbCalories > cdcsvm.TargetCarbCalories) { cdcsvm.TotalCarbCaloriesSurplusPercent = Math.Round(((cdcsvm.CurrentDayCarbCalories) / (double)cdcsvm.TargetCarbCalories) * 100); cdcsvm.TotalCarbCaloriesSurplusDisplayPercent = Math.Round(((cdcsvm.CurrentDayCarbCalories - cdcsvm.TargetCarbCalories) * 100) / ((double)cdcsvm.TargetCarbCalories * 1.5)); if (cdcsvm.TotalCarbCaloriesSurplusDisplayPercent > 38) { cdcsvm.TotalCarbCaloriesSurplusDisplayPercent = 38; } } else { cdcsvm.CurrentDayCarbCaloriesRemainingPercent = (67 - (cdcsvm.CurrentDayCarbCaloriesPercent)); } return(cdcsvm); }
/// <summary> /// Performs conditional arithmetic to provide progress bar displays for calories and macronutrients while logging meals. /// </summary> /// <remarks> /// Similar to <see cref="OrganizeCalStats(MacroNewtUser, int, DailyCalTotal)"/> but has to account for the display of the pending meal about to be logged /// </remarks> /// <param name="user">The <see cref="MacroNewtUser"/> for which macro targets are being organized</param> /// <param name="admin">A boolean indicator of whether current user has administrative access</param> /// <param name="mealId">An int identifier of the <see cref="Meal"/> being confirmed</param> /// <param name="date">The date and time the meal is being logged</param> /// <param name="mealCalories">The int total calorie content of the meal</param> /// <param name="mealProtein">The int total calories present in the meal from protein sources</param> /// <param name="mealFat">The int total calories present in the meal from fat sources</param> /// <param name="mealCarb">The int total calories present in the meal from carb sources</param> /// <returns>A populated <see cref="ConfirmMealViewModel"/> object</returns> public ConfirmMealViewModel GetMacroTargets(MacroNewtUser user, Boolean admin, int mealId, DateTime date, int mealCalories, int mealProtein, int mealFat, int mealCarb) { string UserId = user.Id; int targetTotalCal = _context.Users .Where(u => u.Id == UserId) .Select(u => u.DailyTargetCalories) .FirstOrDefault(); DailyCalTotal dct = _context.DailyCalTotal .Where(d => (d.Id == UserId) && (d.CalorieDay.Date == date.Date)) .FirstOrDefault(); if (dct == null) { dct = new DailyCalTotal { Id = UserId }; } double proteinBal = 0.2; double proteinTar = 0; double fatBal = 0.25; double fatTar = 0; double carbBal = 0.55; double carbTar = 0; var showMacros = _context.UserGoals .Where(g => g.Id == user.Id) .FirstOrDefault(); if (showMacros != null) { proteinBal = ((double)showMacros.ProteinPercent / 100); fatBal = ((double)showMacros.FatPercent / 100); carbBal = ((double)showMacros.CarbPercent / 100); proteinTar = (double)targetTotalCal * proteinBal; fatTar = ((double)targetTotalCal * fatBal); carbTar = ((double)targetTotalCal * carbBal); } if (mealId != 0) { var oldMeal = _context.Meal .Where(m => m.Id == mealId) .FirstOrDefault(); dct.TotalDailyCalories = (dct.TotalDailyCalories - oldMeal.Calories); dct.TotalDailyProteinCalories = (dct.TotalDailyProteinCalories - oldMeal.ProteinCalories); dct.TotalDailyFatCalories = (dct.TotalDailyFatCalories - oldMeal.FatCalories); dct.TotalDailyCarbCalories = (dct.TotalDailyCarbCalories - oldMeal.CarbCalories); } ConfirmMealViewModel cmvm = new ConfirmMealViewModel() { TargetCalories = targetTotalCal, CurrentDayCalories = dct.TotalDailyCalories, CurrentDayCaloriesPercent = Math.Round(((dct.TotalDailyCalories * 100) / (targetTotalCal * 1.5))), PercentageCaloriesConsumed = Math.Round((dct.TotalDailyCalories + mealCalories) * 100.0 / targetTotalCal), MealCalories = mealCalories, MealCaloriesPercent = ((mealCalories * 100) / (targetTotalCal * 1.5)), TargetProteinCalories = Convert.ToInt32(proteinTar), CurrentDayProteinCalories = dct.TotalDailyProteinCalories, CurrentDayProteinCaloriesPercent = Math.Round(((dct.TotalDailyProteinCalories * 100) / (proteinTar * 1.5))), PercentageProteinCaloriesConsumed = Math.Round((dct.TotalDailyProteinCalories + (mealProtein * 4)) * 100.0 / proteinTar), MealProteinCalories = (mealProtein * 4), MealProteinCaloriesPercent = ((mealProtein * 4 * 100) / (proteinTar * 1.5)), TargetFatCalories = Convert.ToInt32(fatTar), CurrentDayFatCalories = dct.TotalDailyFatCalories, CurrentDayFatCaloriesPercent = Math.Round(((dct.TotalDailyFatCalories * 100) / (fatTar * 1.5))), PercentageFatCaloriesConsumed = Math.Round((dct.TotalDailyFatCalories + (mealFat * 9)) * 100.0 / fatTar), MealFatCalories = (mealFat * 9), MealFatCaloriesPercent = ((mealFat * 9 * 100) / (fatTar * 1.5)), TargetCarbCalories = Convert.ToInt32(carbTar), CurrentDayCarbCalories = dct.TotalDailyCarbCalories, CurrentDayCarbCaloriesPercent = Math.Round(((dct.TotalDailyCarbCalories * 100) / (carbTar * 1.5))), PercentageCarbCaloriesConsumed = Math.Round((dct.TotalDailyCarbCalories + (mealCarb * 4)) * 100.0 / carbTar), MealCarbCalories = (mealCarb * 4), MealCarbCaloriesPercent = ((mealCarb * 4 * 100) / (carbTar * 1.5)) }; if (showMacros != null) { cmvm.ShowMacros = true; } if (mealId != 0) { cmvm.EditingMeal = true; } if (dct.TotalDailyCalories > targetTotalCal) { cmvm.TotalCaloriesSurplusPercent = Math.Round(((dct.TotalDailyCalories + mealCalories) / (double)targetTotalCal) * 100); cmvm.TotalCaloriesSurplusDisplayPercent = Math.Round(((dct.TotalDailyCalories + cmvm.MealCalories - cmvm.TargetCalories) * 100) / ((double)targetTotalCal * 1.5)); cmvm.TotalOldCaloriesSurplusDisplayPercent = Math.Round(((dct.TotalDailyCalories - cmvm.TargetCalories) * 100) / ((double)targetTotalCal * 1.5)); cmvm.TotalNewCaloriesSurplusDisplayPercent = Math.Round(((cmvm.MealCalories) * 100) / ((double)targetTotalCal * 1.5)); if (cmvm.TotalOldCaloriesSurplusDisplayPercent > 38) { cmvm.TotalOldCaloriesSurplusDisplayPercent = 38; cmvm.TotalNewCaloriesSurplusDisplayPercent = 0; } else if (cmvm.TotalNewCaloriesSurplusDisplayPercent + cmvm.TotalOldCaloriesSurplusDisplayPercent > 38) { cmvm.TotalNewCaloriesSurplusDisplayPercent = 38 - cmvm.TotalOldCaloriesSurplusDisplayPercent; } } else if (dct.TotalDailyCalories + mealCalories > targetTotalCal) { cmvm.MealCaloriesSurplus = dct.TotalDailyCalories + mealCalories - targetTotalCal; cmvm.MealCaloriesSurplusUnderPercent = Math.Round((((mealCalories - cmvm.MealCaloriesSurplus) * 100) / (targetTotalCal * 1.5))); cmvm.MealCaloriesSurplusOverPercent = Math.Round(((cmvm.MealCaloriesSurplus * 100) / (targetTotalCal * 1.5))); cmvm.MealCaloriesSurplusOverDisplayPercent = Math.Round(100 + (cmvm.MealCaloriesSurplus * 100) / ((double)targetTotalCal)); } else { cmvm.MealCaloriesRemainingPercent = (67 - (cmvm.CurrentDayCaloriesPercent + cmvm.MealCaloriesPercent)); } if (cmvm.CurrentDayProteinCalories > cmvm.TargetProteinCalories) { cmvm.TotalProteinCaloriesSurplusPercent = Math.Round(((cmvm.CurrentDayProteinCalories + cmvm.MealProteinCalories) / (double)cmvm.TargetProteinCalories) * 100); cmvm.TotalProteinCaloriesSurplusDisplayPercent = Math.Round(((cmvm.CurrentDayProteinCalories + cmvm.MealProteinCalories - cmvm.TargetProteinCalories) * 100) / ((double)cmvm.TargetProteinCalories * 1.5)); cmvm.TotalOldProteinCaloriesSurplusDisplayPercent = Math.Round(((cmvm.CurrentDayProteinCalories - cmvm.TargetProteinCalories) * 100) / ((double)cmvm.TargetProteinCalories * 1.5)); cmvm.TotalNewProteinCaloriesSurplusDisplayPercent = Math.Round(((cmvm.MealProteinCalories) * 100) / ((double)cmvm.TargetProteinCalories * 1.5)); if (cmvm.TotalOldProteinCaloriesSurplusDisplayPercent > 38) { cmvm.TotalOldProteinCaloriesSurplusDisplayPercent = 38; cmvm.TotalNewProteinCaloriesSurplusDisplayPercent = 0; } else if (cmvm.TotalNewProteinCaloriesSurplusDisplayPercent + cmvm.TotalOldProteinCaloriesSurplusDisplayPercent > 38) { cmvm.TotalNewProteinCaloriesSurplusDisplayPercent = 38 - cmvm.TotalOldProteinCaloriesSurplusDisplayPercent; } } else if (cmvm.CurrentDayProteinCalories + cmvm.MealProteinCalories > cmvm.TargetProteinCalories) { cmvm.MealProteinCaloriesSurplus = cmvm.CurrentDayProteinCalories + cmvm.MealProteinCalories - cmvm.TargetProteinCalories; cmvm.MealProteinCaloriesSurplusUnderPercent = Math.Round((((cmvm.MealProteinCalories - cmvm.MealProteinCaloriesSurplus) * 100) / (cmvm.TargetProteinCalories * 1.5))); cmvm.MealProteinCaloriesSurplusOverPercent = Math.Round(((cmvm.MealProteinCaloriesSurplus * 100) / (cmvm.TargetProteinCalories * 1.5))); cmvm.MealProteinCaloriesSurplusOverDisplayPercent = Math.Round(100 + (cmvm.MealProteinCaloriesSurplus * 100) / ((double)cmvm.TargetProteinCalories)); } else { cmvm.MealProteinCaloriesRemainingPercent = (67 - (cmvm.CurrentDayProteinCaloriesPercent + cmvm.MealProteinCaloriesPercent)); } if (cmvm.CurrentDayFatCalories > cmvm.TargetFatCalories) { cmvm.TotalFatCaloriesSurplusPercent = Math.Round(((cmvm.CurrentDayFatCalories + cmvm.MealFatCalories) / (double)cmvm.TargetFatCalories) * 100); cmvm.TotalFatCaloriesSurplusDisplayPercent = Math.Round(((cmvm.CurrentDayFatCalories + cmvm.MealFatCalories - cmvm.TargetFatCalories) * 100) / ((double)cmvm.TargetFatCalories * 1.5)); cmvm.TotalOldFatCaloriesSurplusDisplayPercent = Math.Round(((cmvm.CurrentDayFatCalories - cmvm.TargetFatCalories) * 100) / ((double)cmvm.TargetFatCalories * 1.5)); cmvm.TotalNewFatCaloriesSurplusDisplayPercent = Math.Round(((cmvm.MealFatCalories) * 100) / ((double)cmvm.TargetFatCalories * 1.5)); if (cmvm.TotalOldFatCaloriesSurplusDisplayPercent > 38) { cmvm.TotalOldFatCaloriesSurplusDisplayPercent = 38; cmvm.TotalNewFatCaloriesSurplusDisplayPercent = 0; } else if (cmvm.TotalNewFatCaloriesSurplusDisplayPercent + cmvm.TotalOldFatCaloriesSurplusDisplayPercent > 38) { cmvm.TotalNewFatCaloriesSurplusDisplayPercent = 38 - cmvm.TotalOldFatCaloriesSurplusDisplayPercent; } } else if (cmvm.CurrentDayFatCalories + cmvm.MealFatCalories > cmvm.TargetFatCalories) { cmvm.MealFatCaloriesSurplus = cmvm.CurrentDayFatCalories + cmvm.MealFatCalories - cmvm.TargetFatCalories; cmvm.MealFatCaloriesSurplusUnderPercent = Math.Round((((cmvm.MealFatCalories - cmvm.MealFatCaloriesSurplus) * 100) / (cmvm.TargetFatCalories * 1.5))); cmvm.MealFatCaloriesSurplusOverPercent = Math.Round(((cmvm.MealFatCaloriesSurplus * 100) / (cmvm.TargetFatCalories * 1.5))); cmvm.MealFatCaloriesSurplusOverDisplayPercent = Math.Round(100 + (cmvm.MealFatCaloriesSurplus * 100) / ((double)cmvm.TargetFatCalories)); } else { cmvm.MealFatCaloriesRemainingPercent = (67 - (cmvm.CurrentDayFatCaloriesPercent + cmvm.MealFatCaloriesPercent)); } if (cmvm.CurrentDayCarbCalories > cmvm.TargetCarbCalories) { cmvm.TotalCarbCaloriesSurplusPercent = Math.Round(((cmvm.CurrentDayCarbCalories + cmvm.MealCarbCalories) / (double)cmvm.TargetCarbCalories) * 100); cmvm.TotalCarbCaloriesSurplusDisplayPercent = Math.Round(((cmvm.CurrentDayCarbCalories + cmvm.MealCarbCalories - cmvm.TargetCarbCalories) * 100) / ((double)cmvm.TargetCarbCalories * 1.5)); cmvm.TotalOldCarbCaloriesSurplusDisplayPercent = Math.Round(((cmvm.CurrentDayCarbCalories - cmvm.TargetCarbCalories) * 100) / ((double)cmvm.TargetCarbCalories * 1.5)); cmvm.TotalNewCarbCaloriesSurplusDisplayPercent = Math.Round(((cmvm.MealCarbCalories) * 100) / ((double)cmvm.TargetCarbCalories * 1.5)); if (cmvm.TotalOldCarbCaloriesSurplusDisplayPercent > 38) { cmvm.TotalOldCarbCaloriesSurplusDisplayPercent = 38; cmvm.TotalNewCarbCaloriesSurplusDisplayPercent = 0; } else if (cmvm.TotalNewCarbCaloriesSurplusDisplayPercent + cmvm.TotalOldCarbCaloriesSurplusDisplayPercent > 38) { cmvm.TotalNewCarbCaloriesSurplusDisplayPercent = 38 - cmvm.TotalOldCarbCaloriesSurplusDisplayPercent; } } else if (cmvm.CurrentDayCarbCalories + cmvm.MealCarbCalories > cmvm.TargetCarbCalories) { cmvm.MealCarbCaloriesSurplus = cmvm.CurrentDayCarbCalories + cmvm.MealCarbCalories - cmvm.TargetCarbCalories; cmvm.MealCarbCaloriesSurplusUnderPercent = Math.Round((((cmvm.MealCarbCalories - cmvm.MealCarbCaloriesSurplus) * 100) / (cmvm.TargetCarbCalories * 1.5))); cmvm.MealCarbCaloriesSurplusOverPercent = Math.Round(((cmvm.MealCarbCaloriesSurplus * 100) / (cmvm.TargetCarbCalories * 1.5))); cmvm.MealCarbCaloriesSurplusOverDisplayPercent = Math.Round(100 + (cmvm.MealCarbCaloriesSurplus * 100) / ((double)cmvm.TargetCarbCalories)); } else { cmvm.MealCarbCaloriesRemainingPercent = (67 - (cmvm.CurrentDayCarbCaloriesPercent + cmvm.MealCarbCaloriesPercent)); } cmvm.UserEmail = user.Email; if (admin) { cmvm.Admin = true; } return(cmvm); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { var age = DateTime.Today.Year - Input.DOB.Year; if (Input.DOB.Date > DateTime.Today.AddYears(-age)) { age--; } var user = new MacroNewtUser { Name = Input.Name, DOB = Input.DOB, Age = age, HeightFeet = -1, HeightInches = -1, Weight = 0, DailyTargetCalories = 2000, UserName = Input.Email, ProfileName = Input.ProfileName, Email = Input.Email }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { await _userManager.AddToRoleAsync(user, "User"); _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { userId = user.Id, code = code }, protocol: Request.Scheme); EmailBuildHandler ebh = new EmailBuildHandler(); string finalEmail = ebh.BuildVerificationEmailHtml(user.Name, user.Email, callbackUrl); await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", finalEmail); await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } foreach (var error in result.Errors) { if (error.Description.StartsWith("User name")) { ModelState.AddModelError(string.Empty, "Email address '" + Input.Email + "' is already taken"); error.Description.Replace("User name", "Email address"); } else { ModelState.AddModelError(string.Empty, error.Description); } } } // If we got this far, something failed, redisplay form return(Page()); }
public IViewComponentResult Invoke(MacroNewtUser user) { return(View(user)); }