Updating logs from ChampionsController class and create a new function for ChampionStub
continuous-integration/drone/push Build is passing Details

Logs_Version_Filtrage_Pagination
Emre KARTAL 2 years ago
parent 074892b3a7
commit 0b5a3f1d03

@ -28,7 +28,7 @@ namespace ApiLol.Controllers.v1
int nbTotal = await _manager.ChampionsMgr.GetNbItems(); int nbTotal = await _manager.ChampionsMgr.GetNbItems();
_logger.LogInformation($"method Get call"); _logger.LogInformation("Executing {Action} with parameters: {Parameters}", nameof(Get), pageRequest);
IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count)) IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count))
.Select(x => x.ToDto()); .Select(x => x.ToDto());
return Ok(dtos); return Ok(dtos);
@ -38,11 +38,11 @@ namespace ApiLol.Controllers.v1
[HttpGet("{name}")] [HttpGet("{name}")]
public async Task<IActionResult> Get(string name) public async Task<IActionResult> Get(string name)
{ {
_logger.LogInformation($"method GetByName call with {name}"); _logger.LogInformation("method {Action} call with {name}", nameof(Get), name);
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems())) var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()))
.Select(x => x.ToDto()); .Select(x => x.ToDto());
return Ok(dtos); return Ok(dtos.First());
} }
@ -51,7 +51,7 @@ namespace ApiLol.Controllers.v1
public async Task<IActionResult> Post([FromBody] ChampionDto champion) public async Task<IActionResult> Post([FromBody] ChampionDto champion)
{ {
_logger.LogInformation($"method Post call"); _logger.LogInformation("method {Action} call with {item}", nameof(Post), champion);
return CreatedAtAction(nameof(Get), return CreatedAtAction(nameof(Get),
(await _manager.ChampionsMgr.AddItem(champion.ToModel())).ToDto()); (await _manager.ChampionsMgr.AddItem(champion.ToModel())).ToDto());
@ -62,7 +62,7 @@ namespace ApiLol.Controllers.v1
public async Task<IActionResult> Put(string name, [FromBody] ChampionDto champion) public async Task<IActionResult> Put(string name, [FromBody] ChampionDto champion)
{ {
_logger.LogInformation($"method Put call with {name}"); _logger.LogInformation("method {Action} call with {name} and {item}", nameof(Put), name, champion);
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()));
return Ok(await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel())); return Ok(await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel()));
@ -74,7 +74,7 @@ namespace ApiLol.Controllers.v1
public async Task<IActionResult> Delete(string name) public async Task<IActionResult> Delete(string name)
{ {
_logger.LogInformation($"method Delete call with {name}"); _logger.LogInformation("method {Action} call with {name}", nameof(Delete), name);
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()));
return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First())); return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First()));

@ -1,4 +1,5 @@
using ApiLol.Mapper; using ApiLol.Mapper;
using Azure.Core;
using DTO; using DTO;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Tokens;
@ -35,7 +36,7 @@ namespace ApiLol.Controllers.v2
return BadRequest($"Champion limit exceed, max {nbTotal}"); return BadRequest($"Champion limit exceed, max {nbTotal}");
} }
_logger.LogInformation($"method Get call"); _logger.LogInformation("Executing {Action} with parameters: {Parameters}", nameof(Get), pageRequest);
IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count)) IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count))
.Select(x => x.ToDto()); .Select(x => x.ToDto());
return Ok(dtos); return Ok(dtos);
@ -58,13 +59,13 @@ namespace ApiLol.Controllers.v2
pageRequest.index = 0; pageRequest.index = 0;
pageRequest.count = nbTotal; pageRequest.count = nbTotal;
} }
else if (pageRequest.count * pageRequest.index >= nbTotal) else if (pageRequest.count * pageRequest.index >= nbTotal || pageRequest.count > nbTotal)
{ {
_logger.LogWarning($"too many, maximum {nbTotal}"); _logger.LogWarning($"too many, maximum {nbTotal}");
return BadRequest($"Champion limit exceed, max {nbTotal}"); return BadRequest($"Champion limit exceed, max {nbTotal}");
} }
_logger.LogInformation($"method Get call"); _logger.LogInformation("Executing {Action} with parameters: {Parameters}", nameof(Get), pageRequest);
IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count)) IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count))
.Select(x => x.ToDto()); .Select(x => x.ToDto());
return Ok(dtos); return Ok(dtos);
@ -81,7 +82,7 @@ namespace ApiLol.Controllers.v2
{ {
try try
{ {
_logger.LogInformation($"method GetByName call with {name}"); _logger.LogInformation("method {Action} call with {name}", nameof(Get), name);
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems())) var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()))
.Select(x => x.ToDto()); .Select(x => x.ToDto());
if (dtos.IsNullOrEmpty()) if (dtos.IsNullOrEmpty())
@ -89,7 +90,7 @@ namespace ApiLol.Controllers.v2
_logger.LogWarning($"{name} was not found"); _logger.LogWarning($"{name} was not found");
return NotFound(); return NotFound();
} }
return Ok(dtos); return Ok(dtos.First());
} }
catch (Exception e) catch (Exception e)
{ {
@ -103,7 +104,7 @@ namespace ApiLol.Controllers.v2
{ {
try try
{ {
_logger.LogInformation($"method Post call"); _logger.LogInformation("method {Action} call with {item}", nameof(Post), champion);
var dtos = (await _manager.ChampionsMgr.GetItemsByName(champion.Name, 0, await _manager.ChampionsMgr.GetNbItems())); var dtos = (await _manager.ChampionsMgr.GetItemsByName(champion.Name, 0, await _manager.ChampionsMgr.GetNbItems()));
if (!dtos.IsNullOrEmpty()) if (!dtos.IsNullOrEmpty())
{ {
@ -124,11 +125,11 @@ namespace ApiLol.Controllers.v2
{ {
try try
{ {
_logger.LogInformation($"method Put call with {name}"); _logger.LogInformation("method {Action} call with {name} and {item}", nameof(Put), name, champion);
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()));
if (dtos.IsNullOrEmpty()) if (dtos.IsNullOrEmpty())
{ {
return NotFound("Name not exist"); return NotFound($"Name {name} not exist");
} }
// Checks if the new name exists // Checks if the new name exists
if (name != champion.Name) if (name != champion.Name)
@ -152,6 +153,7 @@ namespace ApiLol.Controllers.v2
{ {
try try
{ {
_logger.LogInformation("method {Action} call with {name}", nameof(GetChampionsSkins), name);
var champions = await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()); var champions = await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems());
//skinsDTO //skinsDTO
IEnumerable<SkinDto> res = champions.First().Skins.Select(e => e.ToDto()); IEnumerable<SkinDto> res = champions.First().Skins.Select(e => e.ToDto());
@ -169,6 +171,7 @@ namespace ApiLol.Controllers.v2
{ {
try try
{ {
_logger.LogInformation("method {Action} call with {name}", nameof(GetChampionsSkills), name);
var champions = await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()); var champions = await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems());
//SkillDTO //SkillDTO
IEnumerable<SkillDto> res = champions.First().Skills.Select(e => e.ToDto()); IEnumerable<SkillDto> res = champions.First().Skills.Select(e => e.ToDto());
@ -187,11 +190,11 @@ namespace ApiLol.Controllers.v2
{ {
try try
{ {
_logger.LogInformation($"method Delete call with {name}"); _logger.LogInformation("method {Action} call with {name}", nameof(Delete), name);
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems())); var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()));
if (dtos.IsNullOrEmpty()) if (dtos.IsNullOrEmpty())
{ {
_logger.LogWarning($"{name} was not found"); _logger.LogWarning("{name} was not found", name);
return BadRequest(); return BadRequest();
} }
return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First())); return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First()));

@ -3,19 +3,19 @@ using Model;
namespace StubLib namespace StubLib
{ {
public partial class StubData public partial class StubData
{ {
private List<Champion> champions = new() private List<Champion> champions = new()
{ {
new Champion("Akali", ChampionClass.Assassin), new Champion("Akali", ChampionClass.Assassin),
new Champion("Aatrox", ChampionClass.Fighter), new Champion("Aatrox", ChampionClass.Fighter),
new Champion("Ahri", ChampionClass.Mage), new Champion("Ahri", ChampionClass.Mage),
new Champion("Akshan", ChampionClass.Marksman), new Champion("Akshan", ChampionClass.Marksman),
new Champion("Bard", ChampionClass.Support), new Champion("Bard", ChampionClass.Support),
new Champion("Alistar", ChampionClass.Tank), new Champion("Alistar", ChampionClass.Tank),
}; };
public class ChampionsManager : IChampionsManager public class ChampionsManager : IChampionsManager
{ {
private readonly StubData parent; private readonly StubData parent;
@ -82,19 +82,24 @@ namespace StubLib
(parent.championsAndRunePages (parent.championsAndRunePages
.Where(tuple => tuple.Item2.Equals(runePage)) .Where(tuple => tuple.Item2.Equals(runePage))
.Select(tuple => tuple.Item1) .Select(tuple => tuple.Item1)
.Skip(index*count).Take(count)); .Skip(index * count).Take(count));
private Func<Champion, string, bool> filterByName = (champ, substring) => champ.Name.Equals(substring, StringComparison.InvariantCultureIgnoreCase); private Func<Champion, string, bool> filterByName = (champ, substring) => champ.Name.Equals(substring, StringComparison.InvariantCultureIgnoreCase);
private Func<Champion, string, bool> filterByNameContains = (champ, substring) => champ.Name.Contains(substring, StringComparison.InvariantCultureIgnoreCase);
public Task<int> GetNbItemsByName(string substring) public Task<int> GetNbItemsByName(string substring)
=> parent.champions.GetNbItemsWithFilter(champ => filterByName(champ, substring)); => parent.champions.GetNbItemsWithFilter(champ => filterByName(champ, substring));
public Task<IEnumerable<Champion?>> GetItemsByName(string substring, int index, int count, string? orderingPropertyName, bool descending = false) public Task<IEnumerable<Champion?>> GetItemsByName(string substring, int index, int count, string? orderingPropertyName, bool descending = false)
=> parent.champions.GetItemsWithFilterAndOrdering(champ => filterByName(champ, substring), index, count, orderingPropertyName, descending); => parent.champions.GetItemsWithFilterAndOrdering(champ => filterByName(champ, substring), index, count, orderingPropertyName, descending);
public Task<IEnumerable<Champion?>> GetItemsByNameContains(string substring, int index, int count, string? orderingPropertyName, bool descending = false)
=> parent.champions.GetItemsWithFilterAndOrdering(champ => filterByNameContains(champ, substring), index, count, orderingPropertyName, descending);
public Task<Champion?> UpdateItem(Champion? oldItem, Champion? newItem) public Task<Champion?> UpdateItem(Champion? oldItem, Champion? newItem)
=> parent.champions.UpdateItem(oldItem, newItem); => parent.champions.UpdateItem(oldItem, newItem);
} }
} }
} }

@ -26,7 +26,7 @@ namespace ApiTests
//Act //Act
var total = await stub.ChampionsMgr.GetNbItems(); var total = await stub.ChampionsMgr.GetNbItems();
var champion = await champs.Get(new PageRequest() { index = 0, count = total }); var champion = await champs.Get(new PageRequest());
//Assert //Assert
var objectResult = champion as OkObjectResult; var objectResult = champion as OkObjectResult;

Loading…
Cancel
Save