🔨 changements dans le StubData Players et PlayerController + IDataManager

EF
Aurelien PINTRAND 2 years ago
parent 91e6fb5e48
commit 27f5f970f2

@ -23,7 +23,7 @@ namespace Model
Task<IEnumerable<Player?>> GetItemsByPseudo(string charPseudo, int index, int count, string? orderingPropertyName, bool descending = false); Task<IEnumerable<Player?>> GetItemsByPseudo(string charPseudo, int index, int count, string? orderingPropertyName, bool descending = false);
Task<int> GetNbItemsByPseudo(string charPseudo); Task<int> GetNbItemsByPseudo(string charPseudo);
//byId ? Task<IEnumerable<Player?>> GetItemsById(int id);
} }

@ -37,12 +37,14 @@ namespace Stub
orderingPropertyName, descending); orderingPropertyName, descending);
public Task<int> GetNbItems() public Task<int> GetNbItems()
=> Task.FromResult(parent.players.Count); => Task.FromResult(parent.players.Count());
public Task<Player?> UpdateItem(Player? oldItem, Player? newItem) public Task<Player?> UpdateItem(Player? oldItem, Player? newItem)
=> parent.players.UpdateItem(oldItem, newItem); => parent.players.UpdateItem(oldItem, newItem);
private Func<Player, string, bool> filterByPseudo = (player, substring) => player.Pseudo.Contains(substring, StringComparison.InvariantCultureIgnoreCase); private Func<Player, string, bool> filterByPseudo = (player, substring) => player.Pseudo.Contains(substring, StringComparison.InvariantCultureIgnoreCase);
private Func<Player, int, bool> filterById = (player, id) => player.Id.Equals(id);
public Task<IEnumerable<Player?>> GetItemsByPseudo(string charPseudo, int index, int count, string? orderingPropertyName, bool descending = false) public Task<IEnumerable<Player?>> GetItemsByPseudo(string charPseudo, int index, int count, string? orderingPropertyName, bool descending = false)
=> parent.players.GetItemsWithFilterAndOrdering(player => filterByPseudo(player, charPseudo), index, count, orderingPropertyName, descending); => parent.players.GetItemsWithFilterAndOrdering(player => filterByPseudo(player, charPseudo), index, count, orderingPropertyName, descending);
@ -51,6 +53,11 @@ namespace Stub
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<IEnumerable<Player?>> GetItemsById(int id)
{
return parent.players.GetItemsWithFilterAndOrdering<Player>(player => filterById(player, id), 0, 1);
}
} }
} }
} }

@ -32,47 +32,37 @@ namespace Trek12_API.Controllers
//} //}
[HttpGet] [HttpGet]
public async Task<IActionResult> Get(int index, int count, string? order = null, bool descending = false) public async Task<IActionResult> Get()
{ {
try try
{ {
if (index < 0)
{ var list = await playersManager.GetItems(0, playersManager.GetNbItems().Result);
_logger.LogWarning($"Invalid index value {index} in Get method."); return Ok(list);
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()));
} }
catch (Exception ex) 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."); return StatusCode(500, "Internal server error.");
} }
} }
[HttpGet("pseudo/{pseudo}")] [HttpGet("players/{pseudo}")]
public async Task<IActionResult> GetByPseudo([FromRoute] string pseudo, int index, int count, string? order = null, bool descending = false) public async Task<IActionResult> GetByPseudo([FromRoute] string pseudo, int index, int count, string? order = null, bool descending = false)
{ {
var player = await playersManager.GetItemsByPseudo(pseudo, index, count, order, descending); var player = await playersManager.GetItemsByPseudo(pseudo, index, count, order, descending);
return Ok(player?.toDTOs()); return Ok(player?.toDTOs());
} }
[HttpGet("players/{id}")]
public async Task<IActionResult> 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] [HttpPost]
public async Task<IActionResult> Post(PlayerDTO player) public async Task<IActionResult> Post(PlayerDTO player)
{ {
@ -99,15 +89,14 @@ namespace Trek12_API.Controllers
return Ok(); return Ok();
} }
[HttpPut("name=Update")]
public async Task<IActionResult> Update(string pseudo, PlayerDTO playerOld) [HttpPut(Name= "UpdatePlayer")]
public async Task<IActionResult> Update(int id, PlayerDTO newPlayer)
{ {
Player playerOldModel = playerOld.toModel(); await playersManager.UpdateItem(playersManager.GetItems(0,1).Result.FirstOrDefault(), newPlayer.toModel());
Player playerNew = new Player(pseudo, playerOldModel.Stats); return Ok(newPlayer);
await playersManager.UpdateItem(playerOldModel, playerNew);
return Ok(playerNew);
} }
/*
[HttpPut("name=UpdateMaxChain")] [HttpPut("name=UpdateMaxChain")]
public async Task<IActionResult> UpdateMaxChain(int newMaxChain, PlayerDTO playerOld) public async Task<IActionResult> UpdateMaxChain(int newMaxChain, PlayerDTO playerOld)
{ {
@ -146,6 +135,6 @@ namespace Trek12_API.Controllers
playerNew.AddWin(); playerNew.AddWin();
await playersManager.UpdateItem(playerOldModel, playerNew); await playersManager.UpdateItem(playerOldModel, playerNew);
return Ok(playerNew); return Ok(playerNew);
} }*/
} }
} }

Loading…
Cancel
Save