using Microsoft.AspNetCore.Mvc; using Model; using StubLib; using System.Xml.Linq; using static StubLib.StubData; // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 namespace apiLOL.Controllers { [ApiController] [Route("api/[controller]")] public class ControllerChampions : Controller { private readonly IDataManager data; private readonly ILogger _logger; public ControllerChampions(IDataManager manager, ILogger log) { data = manager; _logger = log; } // GET: api/ [HttpGet] public async Task Get([FromQuery] string name = "") { //FromQuery permet de filtrer dans la collection de champions en fonction du nom _logger.LogInformation($"methode Get de ControllerChampions appelée"); _logger.LogInformation($"Nombre de champions : {await data.ChampionsMgr.GetNbItems()}"); var champs = (await data.ChampionsMgr.GetItems(0, await data.ChampionsMgr.GetNbItems())).Select(Model => Model.ToDTO()); return Ok(champs); } // GET api//Charle [HttpGet] [Route("{name}")] public async Task GetChampion(string name) { _logger.LogInformation($"methode GetChampion de ControllerChampions appelée avec le paramètre {name}"); var champs = (await data.ChampionsMgr.GetItemsByName(name,0,1)).First(); return Ok(champs.ToDTO()); } // POST api/ [HttpPost] public async Task Post(ChampionDTO champDTO) { _logger.LogInformation($"methode Post de ControllerChampions appelée avec le paramètre {champDTO.Name}"); Champion tmp = champDTO.ToModel(); Champion champion = await data.ChampionsMgr.AddItem(tmp); ChampionDTO dtoChamp = champion.ToDTO(); return CreatedAtAction(nameof(GetChampion), new { name = dtoChamp.Name }, dtoChamp); } // PUT api//5 [HttpPut("{id}")] public void Put(int id, [FromBody] string value) { } // DELETE api//5 [HttpDelete("{name}")] public async void Delete(String name) { var champ = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)).First(); data.ChampionsMgr.DeleteItem(champ); } } }