diff --git a/Sources/APILOL/Controllers/Response/PageResponse.cs b/Sources/APILOL/Controllers/Response/PageResponse.cs new file mode 100644 index 0000000..00bd2df --- /dev/null +++ b/Sources/APILOL/Controllers/Response/PageResponse.cs @@ -0,0 +1,13 @@ +namespace APILOL.Controllers.Request +{ + public class PageResponse + { + public bool IsDesc { get; set; } = false; + + public int Offset { get; set; } = 0; + + public string? OrderingPropertyName { get; set; } = "Name"; + public int Limit { get; set; } = 10; + + } +} diff --git a/Sources/APILOL/Controllers/v1/ChampionsController.cs b/Sources/APILOL/Controllers/v1/ChampionsController.cs index abd025a..6094141 100644 --- a/Sources/APILOL/Controllers/v1/ChampionsController.cs +++ b/Sources/APILOL/Controllers/v1/ChampionsController.cs @@ -34,7 +34,7 @@ namespace APILOL.Controllers.v1 [HttpGet] public async Task Get([FromQuery] PageRequest request) { - _logger.LogInformation("API call - [GET] - CHAMPION"); + _logger.LogInformation("API call - [GET] - CHAMPION "); try { @@ -43,13 +43,14 @@ namespace APILOL.Controllers.v1 IEnumerable items = champions.Select(c => c.ToDto()); if (items.Count() == 0) { - _logger.LogInformation("No champion found."); + _logger.LogError("No champion found."); return NotFound("No champion found."); } - return Ok(items); + return Ok(new {data= items,count= await dataManager.GetNbItems(), offset = request.Offset, limit = request.Limit}); } catch(Exception error) { + _logger.LogInformation("Error in the request"); return BadRequest(error.Message); } @@ -60,7 +61,7 @@ namespace APILOL.Controllers.v1 [HttpGet("{name}")] public async Task Get([FromQuery] PageRequest request,string name) { - _logger.LogInformation("API call - [GET / NAME] - CHAMPION"); + _logger.LogInformation("API call - [GET / NAME] - CHAMPION {name}", name); try { if (dataManager.GetNbItemsByName(name) != null) @@ -69,16 +70,17 @@ namespace APILOL.Controllers.v1 IEnumerable items = champions.Select(c => c.ToDto()); if (items.Count() == 0) { - _logger.LogInformation("No champion found."); + _logger.LogError("No champion found."); return NotFound("No champion found."); } - return Ok(items); + return Ok(new {data= items,count= dataManager.GetNbItems()}); } return NotFound("No champion matching with this name."); } catch (Exception error) { + _logger.LogInformation("Error in the request"); return BadRequest(error.Message); } } @@ -97,7 +99,7 @@ namespace APILOL.Controllers.v1 await dataManager.AddItem(championDTO.ToModel()); return CreatedAtAction(nameof(Get), championDTO); } - _logger.LogInformation("A champion already exist with this Name. ( Unique Name )"); + _logger.LogError("A champion already exist with this Name. ( Unique Name )"); return BadRequest("A champion already exist with this Name. ( Unique Name )"); } catch (Exception error) @@ -128,13 +130,13 @@ namespace APILOL.Controllers.v1 return Ok(); } - _logger.LogInformation("champion already exist with this unique name."); + _logger.LogError("champion already exist with this unique name."); return BadRequest("champion already exist with this unique name."); } else { - _logger.LogInformation("champion not found."); + _logger.LogError("champion not found."); return NotFound("champion not found."); } await dataManager.UpdateItem(champion.First(), championDTO.ToModel()); @@ -143,6 +145,7 @@ namespace APILOL.Controllers.v1 } catch (Exception e) { + _logger.LogInformation("Error in the request"); return BadRequest(e.Message); } @@ -166,13 +169,14 @@ namespace APILOL.Controllers.v1 } else { - _logger.LogInformation("No matching Champion with this name"); + _logger.LogError("No matching Champion with this name"); return NotFound("No matching Champion with this name"); } } catch(Exception error) { + _logger.LogInformation("Error in the request"); return BadRequest(error); } } diff --git a/Sources/APILOL/Controllers/v1/RuneController.cs b/Sources/APILOL/Controllers/v1/RuneController.cs index abee737..ae014c4 100644 --- a/Sources/APILOL/Controllers/v1/RuneController.cs +++ b/Sources/APILOL/Controllers/v1/RuneController.cs @@ -30,7 +30,7 @@ namespace APILOL.Controllers.v1 // GET: api/ [MapToApiVersion("1.0")] [HttpGet] - public async Task Get([FromQuery] PageRequest request) + public async Task Get([FromQuery] PageResponse request) { _logger.LogInformation("API call - [GET] - RUNE"); try @@ -44,7 +44,7 @@ namespace APILOL.Controllers.v1 _logger.LogInformation("No rune found."); return NotFound("No rune found."); } - return Ok(items); + return Ok(new { data = items, count = await dataManager.GetNbItems(), offset = request.Offset, limit = request.Limit }); } catch (Exception error) { diff --git a/Sources/APILOL/Controllers/v1/RunePageController.cs b/Sources/APILOL/Controllers/v1/RunePageController.cs index a1c473d..866c0b2 100644 --- a/Sources/APILOL/Controllers/v1/RunePageController.cs +++ b/Sources/APILOL/Controllers/v1/RunePageController.cs @@ -44,7 +44,7 @@ namespace APILOL.Controllers.v1 _logger.LogInformation("No runePage found."); return NotFound("No runePage found."); } - return Ok(items); + return Ok(new { data = items, count = await dataManager.GetNbItems(), offset = request.Offset, limit = request.Limit }); } catch (Exception error) { diff --git a/Sources/APILOL/Controllers/v1/SkinController.cs b/Sources/APILOL/Controllers/v1/SkinController.cs index 7ef464b..6973ded 100644 --- a/Sources/APILOL/Controllers/v1/SkinController.cs +++ b/Sources/APILOL/Controllers/v1/SkinController.cs @@ -42,7 +42,7 @@ namespace APILOL.Controllers.v1 _logger.LogInformation("No skin found."); return NotFound("No skin found."); } - return Ok(items); + return Ok(new { data = items, count = await dataManager.GetNbItems(), offset = request.Offset, limit = request.Limit }); } catch (Exception error) { diff --git a/Sources/APILOL/Controllers/v2/ChampionsController.cs b/Sources/APILOL/Controllers/v2/ChampionsController.cs index 1f4efdd..6e805d9 100644 --- a/Sources/APILOL/Controllers/v2/ChampionsController.cs +++ b/Sources/APILOL/Controllers/v2/ChampionsController.cs @@ -47,7 +47,7 @@ namespace APILOL.Controllers.v2 _logger.LogInformation("No champion found."); return NotFound("No champion found."); } - return Ok(items); + return Ok(new { data = items, count = await dataManager.GetNbItems(), offset = request.Offset, limit = request.Limit }); } catch(Exception error) { diff --git a/Sources/APILOL/Controllers/v2/RuneController.cs b/Sources/APILOL/Controllers/v2/RuneController.cs index 1203c6a..cdbde5c 100644 --- a/Sources/APILOL/Controllers/v2/RuneController.cs +++ b/Sources/APILOL/Controllers/v2/RuneController.cs @@ -44,7 +44,7 @@ namespace APILOL.Controllers.v2 _logger.LogInformation("No rune found."); return NotFound("No rune found."); } - return Ok(items); + return Ok(new { data = items, count = await dataManager.GetNbItems(), offset = request.Offset, limit = request.Limit }); } catch (Exception error) { diff --git a/Sources/APILOL/Controllers/v2/RunePageController.cs b/Sources/APILOL/Controllers/v2/RunePageController.cs index 434b244..64ae8dd 100644 --- a/Sources/APILOL/Controllers/v2/RunePageController.cs +++ b/Sources/APILOL/Controllers/v2/RunePageController.cs @@ -44,7 +44,7 @@ namespace APILOL.Controllers.v2 _logger.LogInformation("No runePage found."); return NotFound("No runePage found."); } - return Ok(items); + return Ok(new { data = items, count = await dataManager.GetNbItems(), offset = request.Offset, limit = request.Limit }); } catch (Exception error) { diff --git a/Sources/APILOL/Controllers/v2/SkinController.cs b/Sources/APILOL/Controllers/v2/SkinController.cs index 022b745..4199383 100644 --- a/Sources/APILOL/Controllers/v2/SkinController.cs +++ b/Sources/APILOL/Controllers/v2/SkinController.cs @@ -42,7 +42,7 @@ namespace APILOL.Controllers.v2 _logger.LogInformation("No skin found."); return NotFound("No skin found."); } - return Ok(items); + return Ok(new { data = items, count = await dataManager.GetNbItems(), offset = request.Offset, limit = request.Limit }); } catch (Exception error) { diff --git a/Sources/TestUnitaire/UnitTestChampion.cs b/Sources/TestUnitaire/UnitTestChampion.cs index f6c318b..ca55a25 100644 --- a/Sources/TestUnitaire/UnitTestChampion.cs +++ b/Sources/TestUnitaire/UnitTestChampion.cs @@ -28,7 +28,7 @@ namespace TestUnitaire public async Task TestGet() { //Act - var champions = await controller.Get(new PageRequest()); + var champions = await controller.Get(new PageResponse()); //Assert var resultObject = champions as OkObjectResult;