public async Task <IActionResult> AddPlayerToGame([FromBody] AddPlayerToGameRequest addPlayerToGameRequest) { _logger?.LogDebug($"AddPlayerToGame for game: {addPlayerToGameRequest.CatanGame.Id} and user: {addPlayerToGameRequest.UserName} "); // TODO: add authentication token when validating user exists try { HttpResponseMessage userResponse = await _sHttpCient.GetAsync($"{_usersEndpoint}" + $"account/SearchPlayer?userName={addPlayerToGameRequest.UserName}"); if (!userResponse.IsSuccessStatusCode) { _logger?.LogError($"AddPlayerToGame Unexpected response from 'Players' endpoint. User: {addPlayerToGameRequest.UserName}. Game: {addPlayerToGameRequest.CatanGame.Id}"); return(StatusCode(500)); } } catch (Exception ex) { _logger?.LogError($"AddPlayerToGame Error while tring to reach 'Players' endpoint for user {addPlayerToGameRequest.UserName} and game {addPlayerToGameRequest.CatanGame.Id}", ex); return(Problem(statusCode: 400, title: "Invalid user")); } await _catanGameBusinessLogic.AddPlayerToGame(addPlayerToGameRequest.CatanGame, addPlayerToGameRequest.UserName); return(Ok()); }
public async Task <ActionResult <AddPlayerToGameResponse> > AddPlayer(Guid gameId, AddPlayerToGameRequest request) { var playerId = Guid.NewGuid(); var result = await _mediator.Send(new AddPlayer { GameId = gameId, PlayerId = playerId, GameSecret = request.Secret, Gravatar = request.Gravatar, PlayerName = request.PlayerName }); if (!result.IsSuccess) { return(StatusCode(StatusCodes.Status500InternalServerError, result.ErrorMessage)); } await _gameHub.Clients.Groups(gameId.ToString()).PlayerAddedToGame(new PlayerMessage { GameId = gameId, PlayerId = playerId, PlayerName = request.PlayerName, Gravatar = request.Gravatar }); return(Ok(new AddPlayerToGameResponse { PlayerId = playerId, Token = new AccessToken(result.Message) })); }