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 }); }