public GuessOutcomeDTO(GuessOutcome guessOutcome)
 {
     this.BullsNumber = guessOutcome.BullsNumber;
     this.CowsNumber  = guessOutcome.CowsNumber;
 }
        public async Task <ComputerAnswerDTO> Play(ValueOnlyGuessDTO ValueOnlyUserGuessDTO)
        {
            if (!ModelState.IsValid)
            {
                return(null);
            }
            Game game = await _gameHandler.GetActiveGame(HttpContext);

            _context.Attach(game);
            if (game == null)
            {
                return(null);
            }

            GuessOutcome userGuessOutcome = await _gameHandler.GetUserGuessOutcome(HttpContext, ValueOnlyUserGuessDTO.Value);

            Guess userGuess = new Guess()
            {
                Value        = ValueOnlyUserGuessDTO.Value,
                GuessOutcome = userGuessOutcome,
                GuessMaker   = GuessMaker.User,
                Game         = game
            };

            _context.Attach(userGuess);

            string AIGuess = await _gameHandler.GetAIGuess(HttpContext);

            GuessOutcome aiGuessOutcomeDTO = await _gameHandler.GetAIGuessOutcome(HttpContext, AIGuess);

            Guess aiGuess = new Guess()
            {
                Value        = AIGuess,
                GuessOutcome = aiGuessOutcomeDTO,
                GuessMaker   = GuessMaker.AI,
                Game         = game
            };

            _context.Attach(aiGuess);

            GuessDTO          aiGuessDTO     = new GuessDTO(aiGuess);
            GuessDTO          userGuessDTO   = new GuessDTO(userGuess);
            ComputerAnswerDTO computerAnswer = new ComputerAnswerDTO
            {
                AIGuess   = aiGuessDTO,
                UserGuess = userGuessDTO
            };

            if (userGuessOutcome.BullsNumber == ValueOnlyUserGuessDTO.Value.Length)//All numbers match - User wins
            {
                game.WonByUser             = true;
                computerAnswer.UserVictory = true;
                computerAnswer.AIGuess     = null;
            }
            else if (aiGuessOutcomeDTO.BullsNumber == AIGuess.Length)//All numbers match - AI wins
            {
                game.WonByAI             = true;
                computerAnswer.AIVictory = true;
            }
            await _context.SaveChangesAsync();

            return(computerAnswer);
        }