diff --git a/Sources/ApiDePaul/Controllers/ChampionController.cs b/Sources/ApiDePaul/Controllers/ChampionController.cs index 5e1320c..6db0cf4 100644 --- a/Sources/ApiDePaul/Controllers/ChampionController.cs +++ b/Sources/ApiDePaul/Controllers/ChampionController.cs @@ -10,20 +10,20 @@ namespace ApiDePaul.Controllers [Route("[controller]")] public class ChampionController : ControllerBase { + IDataManager donnees = new StubData(); + private readonly ILogger _logger; public ChampionController(ILogger logger) { _logger = logger; } - + [HttpGet] - public async Task> Get() + public async Task> GetChamps() { - StubData stu = new StubData(); + IEnumerable lcha = await donnees.ChampionsMgr.GetItems(0, donnees.ChampionsMgr.GetNbItems().Result); - IEnumerable lcha = await stu.ChampionsMgr.GetItems(0, stu.ChampionsMgr.GetNbItems().Result); - List champs = new List(); lcha.ToList().ForEach(c => champs.Add(c.ChampToDto())); @@ -31,94 +31,91 @@ namespace ApiDePaul.Controllers } [HttpGet("{id}")] - public async Task> Get(int id) + public async Task> GetChampId(int id) { - StubData stu = new StubData(); - + IEnumerable lcha = await donnees.ChampionsMgr.GetItems(id, 1); - IEnumerable lcha = await stu.ChampionsMgr.GetItems(id, 1); - - if (id >= 0 && id < stu.ChampionsMgr.GetNbItems().Result) + if (id >= 0 && id < donnees.ChampionsMgr.GetNbItems().Result) { return Ok(lcha.First().ChampToDto()); } return BadRequest(); } - [HttpPost("{nom}")] - public async Task Post(String nom) + + [HttpGet("{id}/Skins")] + public async Task> GetSkinsChamp(int id) { - StubData stu = new StubData(); + IEnumerable lcha = await donnees.ChampionsMgr.GetItems(id, 1); - Champion ca = new Champion(nom); + if (id >= 0 && id < donnees.ChampionsMgr.GetNbItems().Result) + { + Champion ca = lcha.First(); - stu.ChampionsMgr.AddItem(ca); + IEnumerable lsk = await donnees.SkinsMgr.GetItemsByChampion(ca, 0, donnees.SkinsMgr.GetNbItemsByChampion(ca).Result); - return Ok(); - } - /* + List skins = new List(); + lsk.ToList().ForEach(s => skins.Add(s.SkinToDto())); - // GET: ChampionController/Create - public ActionResult Create() - { - return View(); + return Ok(skins); + } + return BadRequest(); } - // POST: ChampionController/Create - [HttpPost] - [ValidateAntiForgeryToken] - public ActionResult Create(IFormCollection collection) + + [HttpPost("Ajouter/{nom}")] + public async Task PostChampName(string nom) { - try - { - return RedirectToAction(nameof(Index)); - } - catch - { - return View(); - } + Champion ca = new Champion(nom); + + await donnees.ChampionsMgr.AddItem(ca); + + return CreatedAtAction(nameof(GetChampId), new { id = donnees.ChampionsMgr.GetNbItems().Result - 1 }, ca.ChampToDto()); } - // GET: ChampionController/Edit/5 - public ActionResult Edit(int id) + [HttpPost("Ajouter")] + public async Task PostChamp([FromBody] ChampionDto c) { - return View(); + Champion ca = c.DtoToChamp(); + await donnees.ChampionsMgr.AddItem(ca); + return CreatedAtAction(nameof(donnees.ChampionsMgr.GetItemsByName), new { Name = c.Name }, c); } - // POST: ChampionController/Edit/5 - [HttpPost] - [ValidateAntiForgeryToken] - public ActionResult Edit(int id, IFormCollection collection) + + + + [HttpDelete("Supprimer/{id}")] + public async Task DeleteChamp(int id) { - try - { - return RedirectToAction(nameof(Index)); - } - catch + IEnumerable lcha = await donnees.ChampionsMgr.GetItems(id, 1); + + if (id >= 0 && id < donnees.ChampionsMgr.GetNbItems().Result) { - return View(); + Champion ca = lcha.First(); + donnees.ChampionsMgr.DeleteItem(ca); + return Ok(); } + return BadRequest(); } - // GET: ChampionController/Delete/5 - public ActionResult Delete(int id) + + [HttpPut("Modifier/{nom}")]// CA C4EST PAS FINI + public async Task PutChampName(string nom) { - return View(); + Champion ca = new Champion(nom); + + await donnees.ChampionsMgr.AddItem(ca); + + return CreatedAtAction(nameof(GetChampId), new { id = donnees.ChampionsMgr.GetNbItems().Result - 1 }, ca.ChampToDto()); } - // POST: ChampionController/Delete/5 - [HttpPost] - [ValidateAntiForgeryToken] - public ActionResult Delete(int id, IFormCollection collection) + [HttpPut("Modifier")] + public async Task PutChamp([FromBody] ChampionDto c, [FromBody] ChampionDto cNouv) { - try - { - return RedirectToAction(nameof(Index)); - } - catch - { - return View(); - } - }*/ + Champion ca = c.DtoToChamp(); + Champion caNouv = cNouv.DtoToChamp(); + await donnees.ChampionsMgr.UpdateItem(ca,caNouv); + return CreatedAtAction(nameof(GetChampId), new { id = donnees.ChampionsMgr.GetItems(0,donnees.ChampionsMgr.GetNbItems().Result).Result.ToList().IndexOf(ca) }, ca); + } } } diff --git a/Sources/ApiDePaul/Controllers/SkinController.cs b/Sources/ApiDePaul/Controllers/SkinController.cs new file mode 100644 index 0000000..2517ef4 --- /dev/null +++ b/Sources/ApiDePaul/Controllers/SkinController.cs @@ -0,0 +1,45 @@ +using ApiDePaul.DTO; +using Microsoft.AspNetCore.Mvc; +using Model; +using StubLib; +using System.Collections.Generic; + +namespace ApiDePaul.Controllers +{ + [ApiController] + [Route("[controller]")] + public class SkinController : ControllerBase + { + IDataManager donnees = new StubData(); + + private readonly ILogger _logger; + + public SkinController(ILogger logger) + { + _logger = logger; + } + + [HttpGet] + public async Task> GetSkins() + { + IEnumerable lsk = await donnees.SkinsMgr.GetItems(0, donnees.SkinsMgr.GetNbItems().Result); + + List skins = new List(); + + lsk.ToList().ForEach(s => skins.Add(s.SkinToDto())); + return Ok(skins); + } + + [HttpGet("{id}")] + public async Task> GetSkinId(int id) + { + IEnumerable lsk = await donnees.SkinsMgr.GetItems(id, 1); + + if (id >= 0 && id < donnees.SkinsMgr.GetNbItems().Result) + { + return Ok(lsk.First().SkinToDto()); + } + return BadRequest(); + } + } +} diff --git a/Sources/ApiDePaul/Conversion/SkinMapping.cs b/Sources/ApiDePaul/Conversion/SkinMapping.cs new file mode 100644 index 0000000..2bef266 --- /dev/null +++ b/Sources/ApiDePaul/Conversion/SkinMapping.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ApiDePaul.DTO; +using Model; + +namespace ApiDePaul +{ + public static class SkinMapping + { + public static SkinDto SkinToDto(this Skin s) + { + return new SkinDto() + { + Name = s.Name, + Price = s.Price, + Icon = s.Icon, + Image = s.Image, + Description = s.Description + }; + }/* + public static Champion DtoToSkin(this ChampionDto s) => new Skin(s.Name);*/ + } +} \ No newline at end of file diff --git a/Sources/ApiDePaul/DTO/ChampionDto.cs b/Sources/ApiDePaul/DTO/ChampionDto.cs index 3d289c9..3163604 100644 --- a/Sources/ApiDePaul/DTO/ChampionDto.cs +++ b/Sources/ApiDePaul/DTO/ChampionDto.cs @@ -6,11 +6,11 @@ namespace ApiDePaul.DTO { public string Name { get; set; } public string Bio { get; set; } - public String Class { get; set; } + public string Class { get; set; } public string Icon { get; set; } - public String Image { get; set; } + public string Image { get; set; } public List Skins { get; set; } - public Dictionary Characteristics { get; set; } + public Dictionary Characteristics { get; set; } public HashSet Skills { get; set; } } } diff --git a/Sources/ApiDePaul/DTO/SkinDto.cs b/Sources/ApiDePaul/DTO/SkinDto.cs index 6e8a4e4..d74f07b 100644 --- a/Sources/ApiDePaul/DTO/SkinDto.cs +++ b/Sources/ApiDePaul/DTO/SkinDto.cs @@ -1,6 +1,13 @@ -namespace ApiDePaul.DTO +using Model; + +namespace ApiDePaul.DTO { public class SkinDto - { - } + { + public string Name { get; set; } + public string Description { get; set; } + public string Icon { get; set; } + public LargeImage Image { get; set; } + public float Price { get; set; } + } }