diff --git a/Sources/Model/IDataManager.cs b/Sources/Model/IDataManager.cs index 0a5f475..e28909d 100644 --- a/Sources/Model/IDataManager.cs +++ b/Sources/Model/IDataManager.cs @@ -23,7 +23,7 @@ namespace Model Task> GetItemsByPseudo(string charPseudo, int index, int count, string? orderingPropertyName, bool descending = false); Task GetNbItemsByPseudo(string charPseudo); - //byId ? + Task> GetItemsById(int id); } diff --git a/Sources/Stub/Stub/StubData.Players.cs b/Sources/Stub/Stub/StubData.Players.cs index da8abe5..042e9b0 100644 --- a/Sources/Stub/Stub/StubData.Players.cs +++ b/Sources/Stub/Stub/StubData.Players.cs @@ -37,12 +37,14 @@ namespace Stub orderingPropertyName, descending); public Task GetNbItems() - => Task.FromResult(parent.players.Count); + => Task.FromResult(parent.players.Count()); public Task UpdateItem(Player? oldItem, Player? newItem) => parent.players.UpdateItem(oldItem, newItem); private Func filterByPseudo = (player, substring) => player.Pseudo.Contains(substring, StringComparison.InvariantCultureIgnoreCase); + private Func filterById = (player, id) => player.Id.Equals(id); + public Task> GetItemsByPseudo(string charPseudo, int index, int count, string? orderingPropertyName, bool descending = false) => parent.players.GetItemsWithFilterAndOrdering(player => filterByPseudo(player, charPseudo), index, count, orderingPropertyName, descending); @@ -51,6 +53,11 @@ namespace Stub { throw new NotImplementedException(); } + + public Task> GetItemsById(int id) + { + return parent.players.GetItemsWithFilterAndOrdering(player => filterById(player, id), 0, 1); + } } } } diff --git a/Sources/Trek12_API/Controllers/PlayerController.cs b/Sources/Trek12_API/Controllers/PlayerController.cs index b332c72..9cbb16f 100644 --- a/Sources/Trek12_API/Controllers/PlayerController.cs +++ b/Sources/Trek12_API/Controllers/PlayerController.cs @@ -32,47 +32,37 @@ namespace Trek12_API.Controllers //} [HttpGet] - public async Task Get(int index, int count, string? order = null, bool descending = false) + public async Task Get() { try { - if (index < 0) - { - _logger.LogWarning($"Invalid index value {index} in Get method."); - return BadRequest("Index must be a non-negative integer."); - } - if (count <= 0) - { - _logger.LogWarning($"Invalid count value {count} in Get method."); - return BadRequest("Count must be a positive integer."); - } - - var list = await playersManager.GetItems(index, count, order, descending); - - if (list == null || !list.Any()) - { - _logger.LogWarning($"No players found in Get method with index {index} and count {count}."); - return NotFound("No players found."); - } - - _logger.LogInformation($"Returning list of {list.Count()} players in Get method with index {index} and count {count}."); - return Ok(list.Select(player => player?.toDTO())); + + var list = await playersManager.GetItems(0, playersManager.GetNbItems().Result); + return Ok(list); + } catch (Exception ex) { - _logger.LogError($"Error occurred in Get method with index {index} and count {count}: {ex.Message}"); + _logger.LogError($"Error: {ex.Message}"); return StatusCode(500, "Internal server error."); } } - [HttpGet("pseudo/{pseudo}")] + [HttpGet("players/{pseudo}")] public async Task GetByPseudo([FromRoute] string pseudo, int index, int count, string? order = null, bool descending = false) { var player = await playersManager.GetItemsByPseudo(pseudo, index, count, order, descending); return Ok(player?.toDTOs()); } + [HttpGet("players/{id}")] + public async Task GetById([FromRoute] int id, int index, int count, string? order = null, bool descending = false) + { + var player = await playersManager.GetItemsById(id); + return Ok(player?.toDTOs()); + } + [HttpPost] public async Task Post(PlayerDTO player) { @@ -99,15 +89,14 @@ namespace Trek12_API.Controllers return Ok(); } - [HttpPut("name=Update")] - public async Task Update(string pseudo, PlayerDTO playerOld) + + [HttpPut(Name= "UpdatePlayer")] + public async Task Update(int id, PlayerDTO newPlayer) { - Player playerOldModel = playerOld.toModel(); - Player playerNew = new Player(pseudo, playerOldModel.Stats); - await playersManager.UpdateItem(playerOldModel, playerNew); - return Ok(playerNew); + await playersManager.UpdateItem(playersManager.GetItems(0,1).Result.FirstOrDefault(), newPlayer.toModel()); + return Ok(newPlayer); } - +/* [HttpPut("name=UpdateMaxChain")] public async Task UpdateMaxChain(int newMaxChain, PlayerDTO playerOld) { @@ -146,6 +135,6 @@ namespace Trek12_API.Controllers playerNew.AddWin(); await playersManager.UpdateItem(playerOldModel, playerNew); return Ok(playerNew); - } + }*/ } }