public SummaryViewModel(IQueryDispatcher queryDispatcher, TransactionsProvider provider, StockSummaryViewModel stockSummary) : base(queryDispatcher, provider) { StocksSummaryViewModel = stockSummary; BalanceModel = PlotHelper.CreatePlotModel(); BalanceModel.IsLegendVisible = false; FlowsModel = PlotHelper.CreatePlotModel(); FlowsModel.IsLegendVisible = false; YearBalanceModel = PlotHelper.CreatePlotModel(); YearBalanceModel.IsLegendVisible = false; BalanceModel.Axes.Add(new DateTimeAxis { Position = AxisPosition.Bottom, IntervalType = DateTimeIntervalType.Months }); FlowsModel.Axes.Add(new DateTimeAxis { Position = AxisPosition.Bottom, IntervalType = DateTimeIntervalType.Months }); YearBalanceModel.Axes.Add(new LinearAxis { Position = AxisPosition.Left, IsAxisVisible = false }); YearBalanceModel.Axes.Add(new DateTimeAxis { Position = AxisPosition.Bottom, IntervalType = DateTimeIntervalType.Years }); Update(); }
public static StockSummaryListViewModel GetStockSummaryByUser(string username) { Entities entities = new Entities(); StockSummaryListViewModel result = new StockSummaryListViewModel(); DateTime current = DateTime.Now; var stocks = entities.Assets.Include("StockTransactions").Include("Liabilities").Where(x => x.Username.Equals(username) && x.AssetType == (int)Constants.Constants.ASSET_TYPE.STOCK && !x.DisabledDate.HasValue); foreach (var stock in stocks) { StockSummaryViewModel stockViewModel = new StockSummaryViewModel(); stockViewModel.Name = stock.AssetName; stockViewModel.Note = stock.Note; foreach (var transactions in stock.StockTransactions.Where(x => !x.DisabledDate.HasValue)) { StockTransactionViewModel transactionViewModel = StockQueries.CreateViewModel(transactions); stockViewModel.NumberOfStock += (int)transactionViewModel.NumberOfStock.Value; stockViewModel.SpotRice += transactionViewModel.SpotRice.Value; stockViewModel.StockValue += transactionViewModel.StockValue.Value; stockViewModel.ExpectedDividend += transactionViewModel.ExpectedDividend.Value; var liabilites = transactionViewModel.Liabilities.Liabilities.Where(x => x.StartDate <= current && x.EndDate >= current); stockViewModel.LiabilityValue = liabilites.Sum(x => x.Value.Value); stockViewModel.MonthlyInterestPayment = liabilites.Sum(x => x.MonthlyInterestPayment); stockViewModel.OriginalInterestPayment = liabilites.Sum(x => x.OriginalInterestPayment); stockViewModel.MonthlyPayment = liabilites.Sum(x => x.TotalMonthlyPayment); stockViewModel.AnnualPayment = stockViewModel.MonthlyPayment * 12; stockViewModel.RemainedValue = liabilites.Sum(x => x.RemainedValue); } stockViewModel.InterestRate = stockViewModel.LiabilityValue > 0 ? stockViewModel.OriginalInterestPayment / stockViewModel.LiabilityValue * 12 : 0; result.StockSummaries.Add(stockViewModel); } result.TotalLiabilityValue = result.StockSummaries.Sum(x => x.LiabilityValue); result.TotalNumberOfStock = result.StockSummaries.Sum(x => x.NumberOfStock); result.TotalStockValue = result.StockSummaries.Sum(x => x.StockValue); result.TotalMonthlyInterestPayment = result.StockSummaries.Sum(x => x.MonthlyInterestPayment); result.TotalInterestRate = result.TotalLiabilityValue > 0 ? result.StockSummaries.Sum(x => x.OriginalInterestPayment) / result.TotalLiabilityValue * 12 : 0; result.TotalMonthlyPayment = result.StockSummaries.Sum(x => x.MonthlyPayment); result.TotalAnnualPayment = result.StockSummaries.Sum(x => x.AnnualPayment); result.TotalRemainedValue = result.StockSummaries.Sum(x => x.RemainedValue); return(result); }