diff --git a/Sources/apiLOL/ChampionMapper.cs b/Sources/apiLOL/ChampionMapper.cs index 4a27adf..a7009ab 100644 --- a/Sources/apiLOL/ChampionMapper.cs +++ b/Sources/apiLOL/ChampionMapper.cs @@ -4,10 +4,8 @@ namespace apiLOL { public static class ChampionMapper { - public static ChampionDTO ToDTO(this Champion champion) - { - return new ChampionDTO(champion.Name, champion.Bio); - } + public static ChampionDTO ToDTO(this Champion champion) => new ChampionDTO(champion.Name, champion.Bio); + public static Champion ToModel(this ChampionDTO championDTO) { diff --git a/Sources/apiLOL/Controllers/ControllerChampions.cs b/Sources/apiLOL/Controllers/ControllerChampions.cs index b511731..18bb600 100644 --- a/Sources/apiLOL/Controllers/ControllerChampions.cs +++ b/Sources/apiLOL/Controllers/ControllerChampions.cs @@ -22,7 +22,7 @@ namespace apiLOL.Controllers // GET: api/ [HttpGet] - public async Task Get([FromQuery] int index = 0, int count = 10, string name = "") + public async Task Get([FromQuery]int index = 0, int count = 10) { //FromQuery permet de filtrer dans la collection de champions en fonction du nom // Possible de faire une classe PageRequest pour gérer les paramètres index et count @@ -49,8 +49,15 @@ namespace apiLOL.Controllers 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()); + try + { + var champs = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)); + return Ok(champs.First().ToDTO()); + } + catch + { + return BadRequest("erreur de nom de champion"); + } } @@ -59,10 +66,19 @@ namespace apiLOL.Controllers 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); + + + try + { + Champion tmp = champDTO.ToModel(); + Champion champion = await data.ChampionsMgr.AddItem(tmp); + ChampionDTO dtoChamp = champion.ToDTO(); + return CreatedAtAction(nameof(GetChampion), new { name = dtoChamp.Name }, dtoChamp); + } + catch + { + return BadRequest("le champion existe deja"); + } } // PUT api//5 @@ -71,17 +87,32 @@ namespace apiLOL.Controllers { _logger.LogInformation($"methode Put de ControllerChampions appelée avec le paramètre name: {name} et bio: {bio}"); - var champs = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)).First(); - champs.Bio = bio; - return Ok(champs.ToDTO()); + try + { + var champs = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)).First(); + champs.Bio = bio; + return Ok(champs.ToDTO()); + } + catch + { + return BadRequest("erreur de nom de champion"); + } } // DELETE api//5 [HttpDelete("{name}")] - public async void Delete(String name) + public async Task Delete(String name) { - var champ = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)).First(); - data.ChampionsMgr.DeleteItem(champ); + try + { + var champ = (await data.ChampionsMgr.GetItemsByName(name, 0, 1)).First(); + data.ChampionsMgr.DeleteItem(champ); + return Ok(champ.ToDTO()); + } + catch + { + return BadRequest("erreur de nom de champion"); + } } }