Détails REST FULL
continuous-integration/drone/push Build is passing Details

API2
Nathan BOILEAU 2 years ago
parent d476aff59f
commit 6f8ec9fa20

@ -12,38 +12,32 @@ namespace apiLOL.Controllers
public class ControllerChampions : Controller public class ControllerChampions : Controller
{ {
private readonly IDataManager data; private readonly IDataManager _data;
// EFdata manager qui implémente l'interface IDataManager
// coté client : Refaire un APIdata manager qui implémente l'interface IDataManager
private readonly ILogger _logger; private readonly ILogger _logger;
public ControllerChampions(IDataManager manager, ILogger<ControllerChampions> log) public ControllerChampions(IDataManager manager, ILogger<ControllerChampions> log)
{ {
data = manager; _data = manager;
_logger = log; _logger = log;
} }
// GET: api/<ControllerLol>
[HttpGet] [HttpGet]
[ProducesResponseType(typeof(ChampionPageDTO), 200)]
public async Task<IActionResult> Get([FromQuery] int index = 0, int count = 10, string? name = "") public async Task<IActionResult> Get([FromQuery] int index = 0, int count = 10, string? name = "")
{ {
//FromQuery permet de filtrer dans la collection de champions en fonction du nom
_logger.LogInformation( _logger.LogInformation($"methode Get de ControllerChampions appelée index:{index}, count: {count} et name:{name}");
$"methode Get de ControllerChampions appelée index:{index}, count: {count} et name:{name}"); int nbChampions = await _data.ChampionsMgr.GetNbItems();
int nbChampions = await data.ChampionsMgr.GetNbItems();
_logger.LogInformation($"Nombre de champions : {nbChampions}"); _logger.LogInformation($"Nombre de champions : {nbChampions}");
//var champs = (await data.ChampionsMgr.GetItems(index, count)).Where(Model => Model.Name.Contains(name)).Select(Model => Model.ToDTO()); var champions = await _data.ChampionsMgr.GetItems(index, nbChampions);
var champs = (await data.ChampionsMgr.GetItems(index, await data.ChampionsMgr.GetNbItems())) var filteredChampions = champions.Where(Model => Model.Name.Contains(name)).Skip(index * count).Take(count);
.Where(Model => Model.Name.Contains(name)).Skip(index * count).Take(count) var championDTO = filteredChampions.Select(Model => Model.ToDTO());
.Select(Model => Model.ToDTO());
var page = new ChampionPageDTO var page = new ChampionPageDTO
{ {
Data = (IEnumerable<ChampionDTO>) champs, Data = championDTO,
Index = index, Index = index,
Count = count, Count = count,
TotalCount = nbChampions TotalCount = nbChampions
@ -52,15 +46,15 @@ namespace apiLOL.Controllers
} }
// GET api/<ControllerLol>/Charle
[HttpGet] [HttpGet]
[Route("{name}")] [Route("{name}")]
[ProducesResponseType(typeof(ChampionDTO), 200)]
public async Task<IActionResult> GetChampion(string name) public async Task<IActionResult> GetChampion(string name)
{ {
_logger.LogInformation($"methode GetChampion de ControllerChampions appelée avec le paramètre {name}"); _logger.LogInformation($"methode GetChampion de ControllerChampions appelée avec le paramètre {name}");
try try
{ {
var champs = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)); var champs = (await _data.ChampionsMgr.GetItemsByName(name, 0, 1));
return Ok(champs.First().ToDTO()); return Ok(champs.First().ToDTO());
} }
catch (Exception ex) catch (Exception ex)
@ -71,7 +65,6 @@ namespace apiLOL.Controllers
} }
// POST api/<ControllerLol>
[HttpPost] [HttpPost]
public async Task<IActionResult> Post(ChampionDTO champDTO) public async Task<IActionResult> Post(ChampionDTO champDTO)
{ {
@ -79,7 +72,7 @@ namespace apiLOL.Controllers
try try
{ {
Champion tmp = champDTO.ToModel(); Champion tmp = champDTO.ToModel();
Champion champion = await data.ChampionsMgr.AddItem(tmp); Champion champion = await _data.ChampionsMgr.AddItem(tmp);
ChampionDTO dtoChamp = champion.ToDTO(); ChampionDTO dtoChamp = champion.ToDTO();
return CreatedAtAction(nameof(GetChampion), new {name = dtoChamp.Name}, dtoChamp); return CreatedAtAction(nameof(GetChampion), new {name = dtoChamp.Name}, dtoChamp);
} }
@ -90,7 +83,6 @@ namespace apiLOL.Controllers
} }
} }
// PUT api/<ControllerLol>/5
[HttpPut("{name}")] [HttpPut("{name}")]
public async Task<IActionResult> Put(string name, string bio) public async Task<IActionResult> Put(string name, string bio)
{ {
@ -99,7 +91,7 @@ namespace apiLOL.Controllers
try try
{ {
var champs = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)).First(); var champs = (await _data.ChampionsMgr.GetItemsByName(name, 0, 1)).First();
champs.Bio = bio; champs.Bio = bio;
return Ok(champs.ToDTO()); return Ok(champs.ToDTO());
} }
@ -110,7 +102,6 @@ namespace apiLOL.Controllers
} }
} }
// DELETE api/<ControllerLol>/5
[HttpDelete("{name}")] [HttpDelete("{name}")]
public async Task<IActionResult> Delete(string name) public async Task<IActionResult> Delete(string name)
{ {
@ -118,8 +109,8 @@ namespace apiLOL.Controllers
try try
{ {
var champ = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)).First(); var champ = (await _data.ChampionsMgr.GetItemsByName(name, 0, 1)).First();
await data.ChampionsMgr.DeleteItem(champ); await _data.ChampionsMgr.DeleteItem(champ);
return Ok(champ.ToDTO()); return Ok(champ.ToDTO());
} }
catch (Exception ex) catch (Exception ex)
@ -145,26 +136,22 @@ namespace apiLOL.Controllers
} }
// GET api/<ControllerSkins>/5
[HttpGet()] [HttpGet()]
public string Get(int id) public string Get(int id)
{ {
return "Version 2 of GET"; return "Version 2 of GET";
} }
// POST api/<ControllerSkins>
[HttpPost] [HttpPost]
public void Post([FromBody] string value) public void Post([FromBody] string value)
{ {
} }
// PUT api/<ControllerSkins>/5
[HttpPut("{id}")] [HttpPut("{id}")]
public void Put(int id, [FromBody] string value) public void Put(int id, [FromBody] string value)
{ {
} }
// DELETE api/<ControllerSkins>/5
[HttpDelete("{id}")] [HttpDelete("{id}")]
public void Delete(int id) public void Delete(int id)
{ {

Loading…
Cancel
Save