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);
        }
        private void positionWatchGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            DependencyObject source = e.OriginalSource as DependencyObject;

            if (source == null)
            {
                return;
            }

            if (source is FrameworkElement)
            {
                DataRecordPresenter drp = Infragistics.Windows.Utilities.GetAncestorFromType(source,
                                                                                             typeof(DataRecordPresenter), true) as DataRecordPresenter;
                if (drp == null)
                {
                    return;
                }

                if (drp.Record != null)
                {
                    drp.Record.IsSelected = true;
                    drp.IsActive          = true;

                    DataRecord r = drp.DataRecord;
                    if (r != null)
                    {
                        StockPositionViewModel stockDetails = r.DataItem as StockPositionViewModel;
                        if (stockDetails != null)
                        {
                            StockTransactionViewModel stockTransaction = new StockTransactionViewModel();

                            stockTransaction.Account = _vm.SelectedAccount;
                            stockTransaction.StockTickerDetailsViewModel = stockDetails.StockTickerDetails;
                            stockTransaction.StockPosition   = stockDetails;
                            stockTransaction.Quantity        = stockDetails.Quantity;
                            stockTransaction.TransactionType = TransactionType.Sell;

                            if (this.BuySellCommand != null && this.BuySellCommand is RelayCommand <StockTransactionViewModel> )
                            {
                                this.BuySellCommand.Execute(stockTransaction);
                            }
                        }
                    }
                }
            }
        }
Пример #3
0
        internal void ShowBuySellDialog(StockTransactionViewModel transaction, bool isBuying = false)
        {
            BuySellDialogWindow.DataContext = transaction;
            var content = BuySellDialogWindow.Content as BuySellDialogContent;

            if (isBuying)
            {
                content.MaxSellableUnits = Int16.MaxValue;
            }
            else
            {
                content.MaxSellableUnits = transaction.StockPosition.Quantity;
            }
            content.StockTransactionCompleted -= ContentStockTransactionCompleted;
            content.StockTransactionCompleted += new EventHandler <EventArgs>(ContentStockTransactionCompleted);
            BuySellDialogWindow.Show();
        }
        public static StockTransactionViewModel CreateViewModel(StockTransactions transaction)
        {
            Entities entities = new Entities();
            StockTransactionViewModel model = new StockTransactionViewModel();

            model.NumberOfStock    = transaction.NumberOfShares;
            model.SpotRice         = transaction.SpotPrice;
            model.StockValue       = transaction.Value;
            model.ExpectedDividend = transaction.ExpectedDividend / 100;

            var liabilities = entities.Liabilities.Where(x => x.TransactionId == transaction.Id);

            foreach (var liability in liabilities.Where(x => !x.DisabledDate.HasValue))
            {
                StockLiabilityViewModel liabilityViewModel = StockLiabilityQueries.CreateViewModel(liability);
                model.Liabilities.Liabilities.Add(liabilityViewModel);
            }

            return(model);
        }
        public static StockListViewModel GetStockByUser(string username)
        {
            Entities           entities = new Entities();
            StockListViewModel result   = new StockListViewModel();
            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)
            {
                StockViewModel stockViewModel = new StockViewModel();
                stockViewModel.Id   = stock.Id;
                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.Transactions.Transactions.Add(transactionViewModel);
                }

                var liabilities = stockViewModel.Transactions.Transactions.Select(x => x.Liabilities.Liabilities.Where(y => y.StartDate <= current && y.EndDate >= current));
                stockViewModel.TotalLiabilityValue          = liabilities.Sum(x => x.Sum(y => y.Value.HasValue ? y.Value.Value : 0));
                stockViewModel.TotalOriginalPayment         = liabilities.Sum(x => x.Sum(y => y.MonthlyOriginalPayment));
                stockViewModel.TotalInterestPayment         = liabilities.Sum(x => x.Sum(y => y.MonthlyInterestPayment));
                stockViewModel.TotalMonthlyPayment          = liabilities.Sum(x => x.Sum(y => y.TotalMonthlyPayment));
                stockViewModel.TotalPayment                 = liabilities.Sum(x => x.Sum(y => y.TotalPayment));
                stockViewModel.TotalRemainedValue           = liabilities.Sum(x => x.Sum(y => y.RemainedValue));
                stockViewModel.TotalOriginalInterestPayment = liabilities.Sum(x => x.Sum(y => y.OriginalInterestPayment));
                stockViewModel.TotalInterestRate            = stockViewModel.TotalLiabilityValue > 0 ? stockViewModel.TotalOriginalInterestPayment / stockViewModel.TotalLiabilityValue * 12 : 0;
                stockViewModel.RowSpan = stockViewModel.Transactions.Transactions.Any() ? stockViewModel.Transactions.Transactions.Count() + stockViewModel.Transactions.Transactions.Select(x => x.Liabilities.Liabilities).Count() + 4 : 4;

                if (stockViewModel.Transactions.Transactions.Any())
                {
                    stockViewModel.RowSpan = 4;
                    bool flag = false;
                    foreach (var transaction in stockViewModel.Transactions.Transactions)
                    {
                        if (transaction.Liabilities.Liabilities.Count() > 0)
                        {
                            if (flag == false)
                            {
                                flag = true;
                            }
                            stockViewModel.RowSpan += transaction.Liabilities.Liabilities.Count();
                        }
                    }
                    if (flag == true)
                    {
                        stockViewModel.RowSpan += 1;
                    }
                }
                else
                {
                    stockViewModel.RowSpan = 4;
                }

                result.Stocks.Add(stockViewModel);
            }

            result.TotalValue    = result.Stocks.Select(x => x.Transactions.Transactions).Sum(x => x.Sum(y => y.StockValue.Value));
            result.IsInitialized = UserQueries.IsCompleteInitialized(username);

            return(result);
        }