From 0b5a3f1d03608928cd23cbbcd8b8e74d8e976a3e Mon Sep 17 00:00:00 2001 From: Emre Date: Sat, 4 Mar 2023 22:46:18 +0100 Subject: [PATCH] Updating logs from ChampionsController class and create a new function for ChampionStub --- .../Controllers/v1/ChampionsController.cs | 12 +++---- .../Controllers/v2/ChampionsController.cs | 23 ++++++------ .../Sources/StubLib/StubData.Champions.cs | 35 +++++++++++-------- .../Tests/ApiTests/ChampionsControllerTest.cs | 2 +- 4 files changed, 40 insertions(+), 32 deletions(-) diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs index 96ecf2b..2186cd5 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v1/ChampionsController.cs @@ -28,7 +28,7 @@ namespace ApiLol.Controllers.v1 int nbTotal = await _manager.ChampionsMgr.GetNbItems(); - _logger.LogInformation($"method Get call"); + _logger.LogInformation("Executing {Action} with parameters: {Parameters}", nameof(Get), pageRequest); IEnumerable dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count)) .Select(x => x.ToDto()); return Ok(dtos); @@ -38,11 +38,11 @@ namespace ApiLol.Controllers.v1 [HttpGet("{name}")] public async Task 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())) .Select(x => x.ToDto()); - return Ok(dtos); + return Ok(dtos.First()); } @@ -51,7 +51,7 @@ namespace ApiLol.Controllers.v1 public async Task Post([FromBody] ChampionDto champion) { - _logger.LogInformation($"method Post call"); + _logger.LogInformation("method {Action} call with {item}", nameof(Post), champion); return CreatedAtAction(nameof(Get), (await _manager.ChampionsMgr.AddItem(champion.ToModel())).ToDto()); @@ -62,7 +62,7 @@ namespace ApiLol.Controllers.v1 public async Task 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())); return Ok(await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel())); @@ -74,7 +74,7 @@ namespace ApiLol.Controllers.v1 public async Task 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())); return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First())); diff --git a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs index 1715b6a..092347b 100644 --- a/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs +++ b/src/EntityFramework_LoL/Sources/ApiLol/Controllers/v2/ChampionsController.cs @@ -1,4 +1,5 @@ using ApiLol.Mapper; +using Azure.Core; using DTO; using Microsoft.AspNetCore.Mvc; using Microsoft.IdentityModel.Tokens; @@ -35,7 +36,7 @@ namespace ApiLol.Controllers.v2 return BadRequest($"Champion limit exceed, max {nbTotal}"); } - _logger.LogInformation($"method Get call"); + _logger.LogInformation("Executing {Action} with parameters: {Parameters}", nameof(Get), pageRequest); IEnumerable dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count)) .Select(x => x.ToDto()); return Ok(dtos); @@ -58,13 +59,13 @@ namespace ApiLol.Controllers.v2 pageRequest.index = 0; 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}"); return BadRequest($"Champion limit exceed, max {nbTotal}"); } - _logger.LogInformation($"method Get call"); + _logger.LogInformation("Executing {Action} with parameters: {Parameters}", nameof(Get), pageRequest); IEnumerable dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count)) .Select(x => x.ToDto()); return Ok(dtos); @@ -81,7 +82,7 @@ namespace ApiLol.Controllers.v2 { 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())) .Select(x => x.ToDto()); if (dtos.IsNullOrEmpty()) @@ -89,7 +90,7 @@ namespace ApiLol.Controllers.v2 _logger.LogWarning($"{name} was not found"); return NotFound(); } - return Ok(dtos); + return Ok(dtos.First()); } catch (Exception e) { @@ -103,7 +104,7 @@ namespace ApiLol.Controllers.v2 { 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())); if (!dtos.IsNullOrEmpty()) { @@ -124,11 +125,11 @@ namespace ApiLol.Controllers.v2 { 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())); if (dtos.IsNullOrEmpty()) { - return NotFound("Name not exist"); + return NotFound($"Name {name} not exist"); } // Checks if the new name exists if (name != champion.Name) @@ -152,6 +153,7 @@ namespace ApiLol.Controllers.v2 { try { + _logger.LogInformation("method {Action} call with {name}", nameof(GetChampionsSkins), name); var champions = await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()); //skinsDTO IEnumerable res = champions.First().Skins.Select(e => e.ToDto()); @@ -169,6 +171,7 @@ namespace ApiLol.Controllers.v2 { try { + _logger.LogInformation("method {Action} call with {name}", nameof(GetChampionsSkills), name); var champions = await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()); //SkillDTO IEnumerable res = champions.First().Skills.Select(e => e.ToDto()); @@ -187,11 +190,11 @@ namespace ApiLol.Controllers.v2 { 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())); if (dtos.IsNullOrEmpty()) { - _logger.LogWarning($"{name} was not found"); + _logger.LogWarning("{name} was not found", name); return BadRequest(); } return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First())); diff --git a/src/EntityFramework_LoL/Sources/StubLib/StubData.Champions.cs b/src/EntityFramework_LoL/Sources/StubLib/StubData.Champions.cs index c487e45..58fc925 100644 --- a/src/EntityFramework_LoL/Sources/StubLib/StubData.Champions.cs +++ b/src/EntityFramework_LoL/Sources/StubLib/StubData.Champions.cs @@ -3,19 +3,19 @@ using Model; namespace StubLib { - public partial class StubData - { - private List champions = new() - { - new Champion("Akali", ChampionClass.Assassin), - new Champion("Aatrox", ChampionClass.Fighter), - new Champion("Ahri", ChampionClass.Mage), - new Champion("Akshan", ChampionClass.Marksman), - new Champion("Bard", ChampionClass.Support), - new Champion("Alistar", ChampionClass.Tank), - }; - - public class ChampionsManager : IChampionsManager + public partial class StubData + { + private List champions = new() + { + new Champion("Akali", ChampionClass.Assassin), + new Champion("Aatrox", ChampionClass.Fighter), + new Champion("Ahri", ChampionClass.Mage), + new Champion("Akshan", ChampionClass.Marksman), + new Champion("Bard", ChampionClass.Support), + new Champion("Alistar", ChampionClass.Tank), + }; + + public class ChampionsManager : IChampionsManager { private readonly StubData parent; @@ -82,19 +82,24 @@ namespace StubLib (parent.championsAndRunePages .Where(tuple => tuple.Item2.Equals(runePage)) .Select(tuple => tuple.Item1) - .Skip(index*count).Take(count)); + .Skip(index * count).Take(count)); private Func filterByName = (champ, substring) => champ.Name.Equals(substring, StringComparison.InvariantCultureIgnoreCase); + private Func filterByNameContains = (champ, substring) => champ.Name.Contains(substring, StringComparison.InvariantCultureIgnoreCase); + public Task GetNbItemsByName(string substring) => parent.champions.GetNbItemsWithFilter(champ => filterByName(champ, substring)); public Task> GetItemsByName(string substring, int index, int count, string? orderingPropertyName, bool descending = false) => parent.champions.GetItemsWithFilterAndOrdering(champ => filterByName(champ, substring), index, count, orderingPropertyName, descending); + public Task> 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 UpdateItem(Champion? oldItem, Champion? newItem) => parent.champions.UpdateItem(oldItem, newItem); } - } + } } diff --git a/src/EntityFramework_LoL/Sources/Tests/ApiTests/ChampionsControllerTest.cs b/src/EntityFramework_LoL/Sources/Tests/ApiTests/ChampionsControllerTest.cs index 021b773..e7ba998 100644 --- a/src/EntityFramework_LoL/Sources/Tests/ApiTests/ChampionsControllerTest.cs +++ b/src/EntityFramework_LoL/Sources/Tests/ApiTests/ChampionsControllerTest.cs @@ -26,7 +26,7 @@ namespace ApiTests //Act 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 var objectResult = champion as OkObjectResult;