using Api_lol.Factories; using DTO; using DTO.DtoControlleur.Skins; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Model; using System.Xml.Linq; namespace Api_lol.Controllers { [ApiController] [Route("[controller]")] public class Skins : Controller { private readonly IDataManager data; private readonly ILogger logger; public Skins(ILogger logger, IDataManager manager) { this.logger = logger; data = manager; } [HttpGet] public async Task Get(int index = 0,int count = 0,float price = 0) { IEnumerable skins = new List(); try { if (count == 0) { count = await data.SkinsMgr.GetNbItems(); } if ( price != 0 ) { skins = (await data.SkinsMgr.GetItems(index, count)).Where(e => e.Price == price).Select(Model => Model.ModelToDto()); } else { skins = (await data.SkinsMgr.GetItems(index, count)).Select(Model => Model.ModelToDto()); } } catch(Exception ex) { return BadRequest(ex.Message); } GetSkins dto = new GetSkins(skins.ToList(),index,count,await data.SkinsMgr.GetNbItems()); return Ok(dto); } [HttpGet] [Route("{name}")] public async Task GetSkinsByName(string name) { Skin skin = (await data.SkinsMgr.GetItems(0, await data.ChampionsMgr.GetNbItems())).First(i => i.Name == name); if (skin == null) { return BadRequest(); } DtoSkins result = skin.ModelToDto(); return Ok(result); } [HttpGet] [Route("GetSkinsByChampionName/{name}")] public async Task GetSkinsByChampionName(string name) { Champion champ = (await data.ChampionsMgr.GetItems(0, await data.ChampionsMgr.GetNbItems())).First(i => i.Name == name); List skinsModele = new List(champ.Skins); List skins = new List(skinsModele.Select(Model=> Model.ModelToDto())); if (skins == null) { return BadRequest(); } return Ok(skins); } [HttpPost] [Route("/{skin}/For/{nameChampion}")] public async Task Post(DtoSkins skin,string nameChampion) { Champion champion = (await data.ChampionsMgr.GetItems(0, await data.ChampionsMgr.GetNbItems())).First(i => i.Name == nameChampion); if (champion == null) { return BadRequest("Le champion n'existe pas !"); } Skin skinModele = skin.DtoToModel(champion); await data.SkinsMgr.AddItem(skinModele); return Ok(); } } }