Beispiel #1
0
        /// <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());
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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");
                }
            }
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #7
0
        /// <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);
        }
Beispiel #8
0
        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());
        }
Beispiel #9
0
 public IViewComponentResult Invoke(MacroNewtUser user)
 {
     return(View(user));
 }