Exemple #1
0
        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);
        }