public async Task <ActionResult> PutCurrentPlayer([FromBody] PlayerPutRequestModel player) { string userId = User.GetId(); // TODO - need to prevent modifying gamertag // Update player await _store.SavePlayerAsync( new Player { UserId = userId, Gamertag = player.Gamertag, Country = player.Country, CustomTag = player.CustomTag }); // Return result return(NoContent()); }
public async Task <ActionResult> Post([FromBody] PlayerPostRequestModel newPlayer) { // Save player var player = new Player { UserId = newPlayer.UserId, Gamertag = newPlayer.Gamertag, Country = newPlayer.Country, CustomTag = newPlayer.CustomTag }; await _store.SavePlayerAsync(player); // Return result return(CreatedAtRoute(nameof(GetPlayer), new { gamertag = player.Gamertag }, null)); }
public async Task <IActionResult> SetGamertagForPlayerId( [FromRoute] string playerid, [FromBody] SetGamertagRequestModel model) { var player = await _store.GetPlayerDetailsByUserIdAsync(playerid); if (player == null) { player = new Player { UserId = playerid }; } if (!string.IsNullOrEmpty(player.Gamertag)) { _logger.LogInformation("Player already has gamertag (cannot update) in SetGamertagForPlayerId"); _appMonitor.LogEvent("RegisterFailed", properties: new Dictionary <string, string> { { "Reason", "UserAlreadyHasGamertag" }, { "Source", "Interactive" } }); return(this.ValidationFailed(new ErrorDetail("gamertag", "Cannot update gamertag"))); } player.Gamertag = model.Gamertag; await _store.SavePlayerAsync(player); _appMonitor.LogEvent("RegisterSucceeded", properties: new Dictionary <string, string> { { "Reason", "UserAlreadyHasGamertag" }, { "Source", "Interactive" } }); return(Ok()); }
public async Task <ActionResult> SetGamertagForPlayerId( [FromRoute] string playerid, [FromBody] SetGamertagRequestModel model) { if (!ModelState.IsValid) { _logger.LogInformation("Invalid model state in SetGamertagForPlayerId"); return(BadRequest()); } var player = await _store.GetPlayerDetailsByUserIdAsync(playerid); if (player == null) { player = new Player { UserId = playerid }; } if (!string.IsNullOrEmpty(player.Gamertag)) { _logger.LogInformation("Player already has gamertag (cannot update) in SetGamertagForPlayerId"); return(BadRequest()); } player.Gamertag = model.Gamertag; await _store.SavePlayerAsync(player); return(Ok()); }
public async Task <ActionResult> Post([FromBody] PlayerPostRequestModel newPlayer) { if (!ModelState.IsValid) { // TODO log and return validation message return(BadRequest()); } // Save player var player = new Player { UserId = newPlayer.UserId, Gamertag = newPlayer.Gamertag, Country = newPlayer.Country, CustomTag = newPlayer.CustomTag }; await _store.SavePlayerAsync(player); // Return result return(CreatedAtRoute(nameof(GetPlayer), new { gamertag = player.Gamertag }, null)); }
public async Task <IActionResult> PutCurrentPlayer([FromBody] PlayerPutRequestModel player) { string userId = User.GetId(); bool newPlayer = false; var playerEntity = await _store.GetPlayerDetailsByUserIdAsync(userId); if (playerEntity == null) { newPlayer = true; if (player.Gamertag != null) { // check if gamertag is already in use var existingPlayerForGamertag = await _store.GetPlayerDetailsByUserIdAsync(player.Gamertag); if (existingPlayerForGamertag != null && existingPlayerForGamertag.UserId != userId) { // Can't use a gamertag from another user return(this.ValidationFailed(new ErrorDetail("gamertag", "Gamertag already in use"))); } } playerEntity = new Player { UserId = userId, Gamertag = player.Gamertag, Country = player.Country, CustomTag = player.CustomTag }; } else { if (playerEntity.Gamertag != player.Gamertag) { // can't change gamertag return(this.ValidationFailed(new ErrorDetail("gamertag", "Can't change gamertag"))); } playerEntity.Country = player.Country; playerEntity.CustomTag = player.CustomTag; } // Update player await _store.SavePlayerAsync(playerEntity); // is this a new player registration? if (newPlayer) { _appMonitor.LogEvent("Register"); } // Return result return(NoContent()); }
public async Task <IActionResult> PutCurrentPlayer([FromBody] PlayerPutRequestModel player) { string userId = User.GetId(); // prevent modifying gamertag var existingPlayerForGamertag = await _store.GetPlayerDetailsByGamertagAsync(player.Gamertag); if (existingPlayerForGamertag != null && existingPlayerForGamertag.UserId != userId) { // Can't use a gamertag from another user return(this.ValidationFailed(new ErrorDetail("gamertag", "Gamertag already in use"))); } var playerEntity = await _store.GetPlayerDetailsByUserIdAsync(userId); if (playerEntity == null) { playerEntity = new Player { UserId = userId, Gamertag = player.Gamertag, Country = player.Country, CustomTag = player.CustomTag }; } else { if (playerEntity.Gamertag != player.Gamertag) { // can't change gamertag return(this.ValidationFailed(new ErrorDetail("gamertag", "Can't change gamertag"))); } playerEntity.Country = player.Country; playerEntity.CustomTag = player.CustomTag; } // Update player await _store.SavePlayerAsync(playerEntity); // Return result return(NoContent()); }
public async Task <IActionResult> SetGamertagForPlayerId( [FromRoute] string playerid, [FromBody] SetGamertagRequestModel model) { var player = await _store.GetPlayerDetailsByUserIdAsync(playerid); if (player == null) { player = new Player { UserId = playerid }; } if (!string.IsNullOrEmpty(player.Gamertag)) { _logger.LogInformation("Player already has gamertag (cannot update) in SetGamertagForPlayerId"); return(this.ValidationFailed(new ErrorDetail("gamertag", "Cannot update gamertag"))); } player.Gamertag = model.Gamertag; await _store.SavePlayerAsync(player); return(Ok()); }