示例#1
0
        public ActionResult Details(int?id)
        {
            int userId = Convert.ToInt32(Session["userId"]);

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Game game = db.Games.Find(id);

            if (game == null)
            {
                return(HttpNotFound());
            }
            ViewBag.joined = false;
            DuckLab.ViewModels.GameViewModel theGame = new ViewModels.GameViewModel();
            theGame.game = game;
            foreach (GameUser user in game.GameUsers)
            {
                if (user.userId == userId)
                {
                    ViewBag.joined = true;
                }
                DuckLab.ViewModels.Player player = new ViewModels.Player();
                player.name        = user.User.firstName + " " + user.User.lastName;
                player.gameBalance = Convert.ToDouble(user.availableBalance);
                foreach (UserStock stock in db.UserStocks.Where(x => x.gameId == id && x.userId == user.userId))
                {
                    decimal stockPrice = stock.Company.CompanyStocks.OrderByDescending(x => x.stockTime).FirstOrDefault().stockPrice *stock.quantityPurchased ?? 0;
                    player.gameBalance += Convert.ToDouble(stockPrice);
                }
                theGame.Players.Add(player);
            }
            return(View(theGame));
        }
        public ActionResult Details(int?id)
        {
            if (Session["userId"] == null)
            {
                return(RedirectToAction("Login", "Users"));
            }

            int userId = Convert.ToInt32(Session["userId"]);

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Game game = db.Games.Find(id);

            if (game == null)
            {
                return(HttpNotFound());
            }
            ViewBag.joined = false;
            DuckLab.ViewModels.GameViewModel theGame = new ViewModels.GameViewModel();
            theGame.game = game;
            foreach (GameUser user in game.GameUsers)
            {
                if (user.userId == userId)
                {
                    ViewBag.joined = true;
                }
                DuckLab.ViewModels.Player player = new ViewModels.Player();
                player.name        = user.User.firstName + " " + user.User.lastName;
                player.gameBalance = Convert.ToDouble(user.availableBalance);
                foreach (UserStock stock in db.UserStocks.Where(x => x.gameId == id && x.userId == user.userId))
                {
                    decimal stockPrice = stock.Company.CompanyStocks.OrderByDescending(x => x.stockTime).FirstOrDefault().stockPrice *stock.quantityPurchased ?? 0;
                    player.gameBalance += Convert.ToDouble(stockPrice);
                }
                theGame.Players.Add(player);
            }

            DuckLab.ViewModels.Player winningPlayer = theGame.Players.OrderByDescending(x => x.gameBalance).First();
            ViewBag.winningPlayer = winningPlayer.name;

            if (game.gameStatus.Trim() == "Active")
            {
                if (game.gameType == "Timed")
                {
                    if (game.endDate < DateTime.Now)
                    {
                        game.gameStatus      = "Finished";
                        db.Entry(game).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                }
                else if (game.gameType == "Profit Goal")
                {
                    if ((double)game.profitGoal < winningPlayer.gameBalance)
                    {
                        game.gameStatus      = "Finished";
                        db.Entry(game).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                }
            }


            return(View(theGame));
        }