You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.3 KiB

using Api_lol.Factories;
using DTO;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Model;
using System.Xml.Linq;
namespace Api_lol.Controllers
{
[ApiController]
[Route("/Skins")]
public class Skins : Controller
{
private readonly IDataManager data;
private readonly ILogger<Champions> logger;
public Skins(ILogger<Champions> logger, IDataManager manager)
{
this.logger = logger;
data = manager;
}
[HttpGet]
public async Task<IActionResult> Get()
{
var champs = (await data.SkinsMgr.GetItems(0, await data.ChampionsMgr.GetNbItems())).Select(Model => Model.ModelToDto());
return Ok(champs);
}
[HttpGet]
[Route("{name}")]
public async Task<IActionResult> 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<IActionResult> GetSkinsByChampionName(string name)
{
Champion champ = (await data.ChampionsMgr.GetItems(0, await data.ChampionsMgr.GetNbItems())).First(i => i.Name == name);
List<Skin> skinsModele = new List<Skin>(champ.Skins);
List<DtoSkins> skins = new List<DtoSkins>(skinsModele.Select(Model=> Model.ModelToDto()));
if (skins == null)
{
return BadRequest();
}
return Ok(skins);
}
[HttpPost]
[Route("AddSkinByChampion/{skin}/For/{nameChampion}")]
public async Task<IActionResult> 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();
}
}
}