public async Task <ActionResult <GuessWord> > CreateGuessWordInRoom(Guid gameRoomId, GuessWordRequestDTO guessWordRequestDTO)
        {
            _logger.LogInformation("New guess word creation: {@guessWordRequestDTO}", guessWordRequestDTO);
            var guessWordDTO = new GuessWordDTO
            {
                GameRoomId = gameRoomId,
                PlayerId   = guessWordRequestDTO.PlayerId,
                GuessWord  = guessWordRequestDTO.GuessWord
            };

            var validator        = new GuessWordCreationHostValidation(_gameRoomServiceAsync, _playerServiceAsync);
            var validationResult = validator.Validate(guessWordDTO);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors));
            }

            _logger.LogInformation("Validations were successfull, removing player from the room...");
            var guessWordResponseDTO = await _gameRoomServiceAsync.CreateGuessWord(guessWordDTO);

            return(StatusCode(201, guessWordResponseDTO));
        }
        public async Task <GuessWordResponseDTO> CreateGuessWord(GuessWordDTO guessWordDTO)
        {
            var gameRoom = await _repository.GetById(guessWordDTO.GameRoomId);  // previously validated

            var newGuessWord = new GuessWord()
            {
                GameRoom   = gameRoom !,
                GameRoomId = gameRoom !.Id,
                Word       = guessWordDTO.GuessWord
            };

            var gameRound = new GameRound
            {
                GuessWord   = newGuessWord,
                GuessWordId = newGuessWord.Id
            };

            newGuessWord.Round = gameRound; // 1-to-1 relationship must be also created!
            await _repositoryGuessWord.Save(newGuessWord);

            return(new GuessWordResponseDTO {
                Id = newGuessWord.Id, GuessWord = newGuessWord.Word
            });
        }