public IActionResult AddFavorite(string symbol, int?userId)
        {
            if (String.IsNullOrEmpty(symbol))
            {
                return(BadRequest());
            }

            symbol = symbol.ToUpper();

            var company = _dbContext.StockCompanies.Find(symbol);

            if (company == null)
            {
                return(NotFound());
            }

            var users =
                from user in _dbContext.Users
                orderby user.LastName
                select new
            {
                ID       = user.UserID,
                FullName = user.FirstName + " " + user.LastName
            };

            var favorite = new UserStockFavorite()
            {
                Symbol = symbol
            };

            if (userId.HasValue && users.Select(u => u.ID).Contains(userId.Value))
            {
                favorite.UserID = userId.Value;
            }

            ViewBag.CompanyName = company.CompanyName;
            ViewBag.Users       = new SelectList(users, "ID", "FullName");

            return(View(favorite));
        }
        public IActionResult AddFavorite(string symbol, [Bind("Symbol,UserID")] UserStockFavorite favorite)
        {
            if (String.IsNullOrEmpty(symbol) || symbol != favorite.Symbol)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(View(favorite));
            }

            var userFavorite = _dbContext.UserStockFavorites.Find(favorite.UserID, favorite.Symbol);

            // if the stock is already in the User's favorites, we just do nothing
            if (userFavorite == null)
            {
                _dbContext.UserStockFavorites.Add(favorite);
                _dbContext.SaveChanges();
            }

            return(RedirectToAction(nameof(Index)));
        }
        public IActionResult RemoveFavorite(string symbol, int?userId, [Bind("Symbol,UserID")] UserStockFavorite favorite)
        {
            if (String.IsNullOrEmpty(symbol) || symbol != favorite.Symbol ||
                !userId.HasValue || userId <= 0 || userId != favorite.UserID)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(View(favorite));
            }

            var userFavorite = _dbContext.UserStocks.Find(favorite.UserID, favorite.Symbol);

            // if the stock is not in the User's favorites, we just do nothing
            if (userFavorite != null)
            {
                _dbContext.UserStocks.Remove(userFavorite);
                _dbContext.SaveChanges();
            }

            return(RedirectToAction("Details", "Users", new { id = userId }));
        }