public IHttpActionResult Get(int id)
        {
            var game = this.Data.Games.Find(id);

            if (game == null)
            {
                return(this.BadRequest("Game with such Id does not exist"));
            }

            var userId = this.UserIdentityProvider.GetUserId();

            if (game.FirstPlayerId != userId && game.SecondPlayerId != userId)
            {
                return(this.BadRequest("This is not your game"));
            }

            if (game.GameState == GameState.WaitingForOpponent)
            {
                return(this.BadRequest("The game has not started"));
            }

            if (game.GameState == GameState.Finished)
            {
                return(this.BadRequest("The game has finished"));
            }

            var model = new GameDetailsDataModel(game, game.FirstPlayerId == userId);

            return(this.Ok(model));
        }
Esempio n. 2
0
        public IHttpActionResult Details(int id)
        {
            var game = this.data.Games.Find(id);

            if (game == null || game.GameState == 0)
            {
                return(NotFound());
            }

            var gameModel = new GameDetailsDataModel(game);

            gameModel.YourColor = this.User.Identity.GetUserName() == gameModel.Red ? "Red" : "Blue";
            return(Ok(gameModel));
        }
        public IHttpActionResult GetGameDetails(int id)
        {
            var game = this.Data.Games
                       .All()
                       .Where(g => g.GameState != GameState.WaitingForOpponent && g.GameState != GameState.Finished)
                       .FirstOrDefault(g => g.Id == id);

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

            var currentUserId = this.GetCurrentUserId();

            var currentUserSecretNumber = game.FirstUserId == currentUserId ? game.FirstUserSecretNumber : game.SecondUserSecretNumber;
            var currentUserColor        = game.FirstUserId == currentUserId ? "Red" : "Blue";
            var currentUserGuesses      = this.Data.Guesses
                                          .All()
                                          .Where(guess => guess.UserId == currentUserId)
                                          .Select(GuessDataModel.FromGuess)
                                          .ToList();

            var opponentGuess = this.Data.Guesses
                                .All()
                                .Where(guess => guess.UserId != currentUserId)
                                .Select(GuessDataModel.FromGuess)
                                .ToList();

            var gameDetails = new GameDetailsDataModel(game);

            gameDetails.YourNumber      = currentUserSecretNumber;
            gameDetails.YourGuesses     = currentUserGuesses;
            gameDetails.OpponentGuesses = opponentGuess;
            gameDetails.YourColor       = currentUserColor;

            return(Ok(gameDetails));
        }