Esempio n. 1
0
        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
            }));
        }
Esempio n. 2
0
        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)));
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        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()
            }));
        }
Esempio n. 5
0
        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)));
        }
Esempio n. 6
0
        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
            }));
        }
Esempio n. 7
0
 /// <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;
 }