public async Task <IActionResult> Settings() { var userName = HttpUserIdentity.CurrentUserName(User); var settings = await _settingsRepo.GetUserSettingsByUserNameAsync(userName); var contribution = settings != null && settings.ContributionStrategy != null ? new ContributionSettings { contribution = settings.ContributionStrategy.AmountPerFrequency().FormatCurrency(), //"$250.10", frequency = settings.ContributionStrategy.ContributionFrequency?.ToString() ?? "N/A", //"Biweekly" description = string.Format("<p>{0} of your pay</p><p>{1} employer match</p>", settings.ContributionStrategy.SalaryPercent?.ToString("P0") ?? "N/A", settings.ContributionStrategy.CompanyMatch?.ToString("P0") ?? "N/A") } : ContributionSettings.Undefined(); var risks = settings != null && settings.RiskStrategy != null && _risksConfig.RiskStrategies.ContainsKey(settings.RiskStrategy) ? new RiskSettings { profileName = _risksConfig.RiskStrategies[settings.RiskStrategy].Name, //"Aggressive Growth", description = _risksConfig.RiskStrategies[settings.RiskStrategy].Description, //"<p>100% Growth Assets (Stocks)</p><p>0% Defensive Assets (Bonds)</p>", fee = string.Format("{0:0.00}%", _risksConfig.RiskStrategies[settings.RiskStrategy].Fee) //"0.20%" } : RiskSettings.Undefined(); return(Json(new AccountSettings() { contribution = contribution, riskProfile = risks })); }
public async Task <IActionResult> Values() { var userName = HttpUserIdentity.CurrentUserName(User); var res = await _accountRepo.GetUserAccountsByUserNameAsync(userName); if (!res.Any()) { return(BadRequest(new { message = "You have no accounts configured" })); } return(Json(await GetAccountsWithValues(res))); }
/// <summary> /// Loads the identity. /// </summary> /// <param name="userId">The user id.</param> private void LoadIdentity(string userId) { SysUser user = _userService.getByAccount(userId); HttpUserIdentity identity = new HttpUserIdentity(userId, user.Name, user.Email, user); identityCache[userId] = new IdentitiyCache(identity); // ProfileBase profile = ProfileBase.Create(userId); //string userName = profile.GetPropertyValue("Name").ToString(); //string unitCode = profile.GetPropertyValue("UnitCode").ToString(); //HttpUserIdentity identity = new HttpUserIdentity(userId, userName, unitCode, profile); //identityCache[userId] = new IdentitiyCache(identity); }
public async Task <IActionResult> UserInfo() { var userName = HttpUserIdentity.CurrentUserName(User); var user = await _userManager.FindByEmailAsync(userName); var accounts = await _accountRepo.GetUserAccountsByUserNameAsync(userName); return(Json(new AppUser { email = user.Email, accounts = accounts.Select(x => new AppUser.AccountInfo { id = x.AccountId, name = x.DisplayName }).ToArray() })); }
public async Task <IActionResult> Values(string id) { var userName = HttpUserIdentity.CurrentUserName(User); var res = await _accountRepo.GetUserAccountsByUserNameAsync(userName); if (!res.Any()) { return(BadRequest(new { message = "You have no accounts configured" })); } var account = res.FirstOrDefault(x => x.AccountId == id); if (account == null) { return(NotFound(new { message = "Account not found" })); } return(Json(await GetAccountWithValues(account))); }
public async Task <IActionResult> Forecast() { var userName = HttpUserIdentity.CurrentUserName(User); var age = (await _profileRepo.GetUserProfileByUserNameAsync(userName) ?? UserProfile.Default()).Age(); var accounts = (await _accountRepo.GetUserAccountsByUserNameAsync(userName)); var currentBalance = (await Task.WhenAll(accounts.Select(acc => _timeseriesRepo.GetLatestMarketValueForAccountAsync(acc.AccountId)))).Sum(); var startBalance = (await Task.WhenAll(accounts.Select(acc => _timeseriesRepo.GetStartMarketValueForAccountAsync(acc.AccountId)))).Sum(); //var halfWay = startBalance + (currentBalance - startBalance)/2; var annualContribution = (await _settingsRepo.GetUserSettingsByUserNameAsync(userName))?.ContributionStrategy?.AnnualContribution() ?? 0; var byAmount = currentBalance.HasValue ? _calculation.PredictionForYears( startBalance: currentBalance.Value, annualContribution: annualContribution, annualGrowth: _calcConfig.DefaultGrowth, years: age.HasValue ? (_calcConfig.YearsAtRetirement - age.Value) : _calcConfig.YearsForPrediction) : default(double?); return(Json(new Forecast { byAmount = byAmount.FormatCurrency(), // "$1,019,101", byAge = age.HasValue ? $"{_calcConfig.YearsAtRetirement}" : $"{_calcConfig.YearsForPrediction}", //"65" currentAge = age.HasValue ? age.Value.ToString() : $"", //"52" currentAmount = currentBalance.FormatCurrency(), // "$51,823.33", forecast = new [] { new ChartPointReal { x = 1, label = "Joined Wealthperk", y = startBalance, z = startBalance }, //new ChartPointReal { x = 2, label = "", y = halfWay, z = halfWay }; new ChartPointReal { x = 2, label = age.HasValue ? $"{age} years old" : "current age", y = currentBalance, z = currentBalance }, //x = 3 new ChartPoint { x = 3, label = age.HasValue ? $"{_calcConfig.YearsAtRetirement} years old" : $" after {_calcConfig.YearsForPrediction} years", z = byAmount } //x = 4 }, /*new [] { * new ChartPointReal { x = 1, label = "Today", y = 180, z = 180 }, * new ChartPointReal { x = 2, label = "", y = 240, z = 240 }, * new ChartPointReal { x = 3, label = "48 years old", y = 360, z = 360 }, * new ChartPoint { x = 4, label = "65 years old", z = 1000 } * }*/ forRetirement = age.HasValue })); }
/// <summary> /// Initializes a new instance of the <see cref="IdentitiyCache"/> class. /// </summary> /// <param name="identity">The identity.</param> public IdentitiyCache(HttpUserIdentity identity) { this.userIdentity = identity; this.timeStamp = DateTime.Now; }