Пример #1
0
        // GET: StockPortfolios/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            StockPortfolio stockPortfolio = db.StockPortfolios.Find(id);

            if (stockPortfolio == null)
            {
                return(HttpNotFound());
            }

            foreach (var s in db.Stocks)
            {
                s.CurrentPrice = GetQuote.GetStock(s.TickerSymbol).PreviousClose;
            }
            foreach (var p in db.StockPurchases)
            {
                p.TotalStockValue = p.Stock.CurrentPrice * p.NumberOfShares;
            }
            if (stockPortfolio.StockPurchases.Count != 0)
            {
                stockPortfolio.StockPortionValue = 0;
                foreach (var v in stockPortfolio.StockPurchases)
                {
                    stockPortfolio.StockPortionValue += v.TotalStockValue;
                    v.ChangeInPrice        = v.Stock.CurrentPrice - v.InitialSharePrice;
                    v.TotalChange          = v.TotalStockValue - (v.NumberOfShares * v.InitialSharePrice);
                    v.StockPurchaseDisplay = v.Stock.StockName + ", Current Price: " + v.Stock.CurrentPrice.ToString("c") + ", Number of shares: " + v.NumberOfShares;
                }
            }
            db.SaveChanges();

            StockPortfolioDetailsViewModel model = new StockPortfolioDetailsViewModel {
                StockPortfolioID = id, StockPortfolio = stockPortfolio, StockPurchases = stockPortfolio.StockPurchases, Transactions = stockPortfolio.Transactions
            };

            ViewBag.Count            = stockPortfolio.Transactions.Count();
            ViewBag.TransactionTypes = new SelectList(Utilities.Utility.TranscationTypes);
            return(View(model));
        }
Пример #2
0
        public ActionResult Details(StockPortfolioDetailsViewModel model, String TransactionNumber, String DateRange, String Description, String TransactionType, String PriceRange, String RangeFrom, String RangeTo, SortBy TransactionNumberSort, SortBy TransactionTypeSort, SortBy DescriptionSort, SortBy AmountSort, SortBy DateSort)
        {
            int?id = model.StockPortfolioID;

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            StockPortfolio stockPortfolio = GetStockPortfolio();
            StockPortfolioDetailsViewModel modelToPass = new StockPortfolioDetailsViewModel {
                StockPortfolioID = id, StockPortfolio = stockPortfolio, StockPurchases = stockPortfolio.StockPurchases, Transactions = stockPortfolio.Transactions
            };

            if (stockPortfolio == null)
            {
                return(HttpNotFound());
            }

            var query = from t in stockPortfolio.Transactions
                        select t;

            if (TransactionNumber != null && TransactionNumber != "")
            {
                Int32 number;
                try
                {
                    number = Convert.ToInt32(TransactionNumber);
                    query  = query.Where(t => t.TransactionID.Equals(number));
                }
                catch
                {
                    ViewBag.TransactionNumberValidation = "Enter a whole number";
                    ViewBag.Count            = stockPortfolio.Transactions.Count();
                    ViewBag.TransactionTypes = new SelectList(Utilities.Utility.TranscationTypes);
                    return(View(modelToPass));
                }
            }
            query = query.Where(t => t.Description.Contains(Description));
            if (!DateRange.Equals("Custom") && !DateRange.Equals("All"))
            {
                if (DateRange.Equals("Last 15 days"))
                {
                    query = query.Where(t => t.TransactionDate >= DateTime.Now.AddDays(-1));
                }
                else if (DateRange.Equals("Last 30 days"))
                {
                    query = query.Where(t => t.TransactionDate >= DateTime.Now.AddDays(-30));
                }
                else
                {
                    query = query.Where(t => t.TransactionDate >= DateTime.Now.AddDays(-60));
                }
            }
            if (DateRange.Equals("Custom"))
            {
                query = query.Where(t => t.TransactionDate >= model.DateFrom && t.TransactionDate <= model.DateTo);
            }
            if (!TransactionType.Equals("All"))
            {
                query = query.Where(t => t.TransactionType.Equals(TransactionType));
            }
            if (!PriceRange.Equals("Custom"))
            {
                if (PriceRange.Equals("$0-$100"))
                {
                    query = query.Where(t => t.Amount >= 0 && t.Amount <= 100);
                }
                else if (PriceRange.Equals("$100-$200"))
                {
                    query = query.Where(t => t.Amount >= 100 && t.Amount <= 200);
                }
                else if (PriceRange.Equals("$200-$300"))
                {
                    query = query.Where(t => t.Amount >= 200 && t.Amount <= 300);
                }
                else
                {
                    query = query.Where(t => t.Amount >= 300);
                }
            }
            else
            {
                Decimal rangeFrom;
                Decimal rangeTo;
                try
                {
                    rangeFrom = Convert.ToDecimal(RangeFrom);
                    rangeTo   = Convert.ToDecimal(RangeTo);
                    query     = query.Where(t => t.Amount >= rangeFrom && t.Amount <= rangeTo);
                }
                catch
                {
                    ViewBag.Message          = "Enter a valid range of numbers";
                    ViewBag.Count            = stockPortfolio.Transactions.Count();
                    ViewBag.TransactionTypes = new SelectList(Utilities.Utility.TranscationTypes);
                    return(View(modelToPass));
                }
            }

            if (TransactionNumberSort.Equals(SortBy.Ascending))
            {
                if (TransactionTypeSort.Equals(SortBy.Ascending))
                {
                    if (DescriptionSort.Equals(SortBy.Ascending))
                    {
                        if (AmountSort.Equals(SortBy.Ascending))
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderBy(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenBy(t => t.Description).ThenBy(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderBy(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenBy(t => t.Description).ThenBy(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                        else
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderBy(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenBy(t => t.Description).ThenByDescending(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderBy(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenBy(t => t.Description).ThenByDescending(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                    }
                    else
                    {
                        if (AmountSort.Equals(SortBy.Ascending))
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderBy(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenByDescending(t => t.Description).ThenBy(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderBy(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenByDescending(t => t.Description).ThenBy(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                        else
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderBy(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenByDescending(t => t.Description).ThenByDescending(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderBy(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenByDescending(t => t.Description).ThenByDescending(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                    }
                }
                else
                {
                    if (DescriptionSort.Equals(SortBy.Ascending))
                    {
                        if (AmountSort.Equals(SortBy.Ascending))
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderBy(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenBy(t => t.Description).ThenBy(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderBy(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenBy(t => t.Description).ThenBy(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                        else
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderBy(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenBy(t => t.Description).ThenByDescending(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderBy(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenBy(t => t.Description).ThenByDescending(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                    }
                    else
                    {
                        if (AmountSort.Equals(SortBy.Ascending))
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderBy(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenByDescending(t => t.Description).ThenBy(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderBy(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenByDescending(t => t.Description).ThenBy(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                        else
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderBy(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenByDescending(t => t.Description).ThenByDescending(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderBy(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenByDescending(t => t.Description).ThenByDescending(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                    }
                }
            }
            else
            {
                if (TransactionTypeSort.Equals(SortBy.Ascending))
                {
                    if (DescriptionSort.Equals(SortBy.Ascending))
                    {
                        if (AmountSort.Equals(SortBy.Ascending))
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenBy(t => t.Description).ThenBy(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenBy(t => t.Description).ThenBy(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                        else
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenBy(t => t.Description).ThenByDescending(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenBy(t => t.Description).ThenByDescending(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                    }
                    else
                    {
                        if (AmountSort.Equals(SortBy.Ascending))
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenByDescending(t => t.Description).ThenBy(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenByDescending(t => t.Description).ThenBy(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                        else
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenByDescending(t => t.Description).ThenByDescending(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenBy(t => t.TransactionType).ThenByDescending(t => t.Description).ThenByDescending(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                    }
                }
                else
                {
                    if (DescriptionSort.Equals(SortBy.Ascending))
                    {
                        if (AmountSort.Equals(SortBy.Ascending))
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenBy(t => t.Description).ThenBy(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenBy(t => t.Description).ThenBy(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                        else
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenBy(t => t.Description).ThenByDescending(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenBy(t => t.Description).ThenByDescending(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                    }
                    else
                    {
                        if (AmountSort.Equals(SortBy.Ascending))
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenByDescending(t => t.Description).ThenBy(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenByDescending(t => t.Description).ThenBy(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                        else
                        {
                            if (DateSort.Equals(SortBy.Ascending))
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenByDescending(t => t.Description).ThenByDescending(t => t.Amount).ThenBy(t => t.TransactionDate);
                            }
                            else
                            {
                                query.OrderByDescending(t => t.TransactionID).ThenByDescending(t => t.TransactionType).ThenByDescending(t => t.Description).ThenByDescending(t => t.Amount).ThenByDescending(t => t.TransactionDate);
                            }
                        }
                    }
                }
            }

            query.OrderByDescending(t => t.TransactionID);
            List <Transaction> list = query.ToList();

            modelToPass = new StockPortfolioDetailsViewModel {
                StockPortfolioID = id, StockPortfolio = stockPortfolio, StockPurchases = stockPortfolio.StockPurchases, Transactions = list
            };
            ViewBag.Count            = list.Count();
            ViewBag.TransactionTypes = new SelectList(Utilities.Utility.TranscationTypes);
            return(View(modelToPass));
        }