ajout d'un RuneController (et donc de RuneMapper et RuneDTO) 📦
continuous-integration/drone/push Build is passing Details

pull/36/head
Pierre Ferreira 2 years ago
parent 3da8ab952a
commit 41de783e44

@ -0,0 +1,186 @@
using API_LoL.Mapper;
using DTO;
using EntityFramework;
using Microsoft.AspNetCore.Mvc;
using Model;
namespace API_LoL.Controllers
{
[Route("api/v{version:apiVersion}/[controller]")]
[ApiController]
public class RunesController : ControllerBase
{
public RunesController(IDataManager Manager)
{
this.RunesManager = Manager.RunesMgr;
}
private IRunesManager RunesManager;
// GET api/<ChampionController>/5
[HttpGet("count")]
public async Task<IActionResult> GetCount()
{
return Ok(RunesManager.GetNbItems());
}
[HttpGet]
public async Task<IActionResult> Get(string? name = null, string desc = null, EnumRuneFamily Family = EnumRuneFamily.Unknown, LargeImage Image = null, int index = 0, int size = 10)
{
if (size - index > 10)
{
return BadRequest();
}
if (!string.IsNullOrEmpty(name))
{
var list = await RunesManager.GetItemsByName(name, index, size);
if (list.Count() != 0)
{
return Ok(list.Select(rune => rune?.ToDTO()));
}
else { return NoContent(); }
}
///else if peu important : on ne cherche pas des runes par famille ou description
//else if (!string.IsNullOrEmpty(desc))
//{
// var list = await RunesManager.GetItemsBySkill(desc, index, size);
// if (list.Count() != 0)
// {
// return Ok(list.Select(champion => champion?.ToDTO()));
// }
// else { return NoContent(); }
//}
//else if (!string.IsNullOrEmpty(Family))
//{
// var list = await RunesManager.GetItems(index, size);
// if (list.Count() != 0)
// {
// return Ok(list.Select(champion => champion?.ToDTO()));
// }
// else { return NoContent(); }
//}
//else if (!string.IsNullOrEmpty(Image))
//{
// var list = await RunesManager.GetItems(index, size);
// if (list.Count() != 0)
// {
// return Ok(list.Select(champion => champion?.ToDTO()));
// }
// else { return NoContent(); }
//}
else
{
var list = await RunesManager.GetItems(index, size);
if (list.Count() != 0)
{
return Ok(list.Select(champion => champion?.ToDTO()));
}
else { return NoContent(); }
}
}
[HttpGet("name")]
public async Task<IActionResult> GetByName(String name)
{
if (string.IsNullOrEmpty(name)) return BadRequest();
var list = await RunesManager.GetItemsByName(name, 0, 1);
if (list.Count() == 1)
{
return Ok(list.Select(rune => rune?.ToDTO()).First());
}
else { return NoContent(); }
}
//[HttpGet("name/skins")]
//public async Task<IActionResult> GetSkinsByName(String name)
//{
// if (string.IsNullOrEmpty(name)) return BadRequest();
// var list = await RunesManager.GetItemsByName(name, 0, 1);
// if (list.Count() == 1)
// {
// var nb = await SkinsManager.GetNbItemsByChampion(list.First());
// if (nb != 0)
// {
// var skins = await SkinsManager.GetItemsByChampion(list.First(), 0, nb);
// return Ok(skins.Select(skin => skin?.ToDTO()));
// }
// else { return NoContent(); }
// }
// else { return NoContent(); }
//}
//[HttpGet("name/skills")]
//public async Task<IActionResult> GetSkillsByName(String name)
//{
// if (string.IsNullOrEmpty(name)) return BadRequest();
// var list = await RunesManager.GetItemsByName(name, 0, 1);
// if (list.Count() == 1)
// {
// var skins = await SkinsManager.GetItemsByChampion(list.First(), 0, await SkinsManager.GetNbItemsByChampion(list.First()));
// if (skins.Count() != 0)
// {
// return Ok(skins.Select(skin => skin?.ToDTO()));
// }
// else { return NoContent(); }
// }
// else { return NoContent(); }
//}
// POST api/<ChampionController>
[HttpPost]
public async Task<IActionResult> Post(RuneDTO rune)
{
if (rune == null)
{
return UnprocessableEntity();
}
else
{
var champ = await RunesManager.GetItemsByName(rune.Name, 0, 1);
if (champ.Count() != 0 && champ.FirstOrDefault().Name == rune.Name)
{
return Conflict(rune);
}
await RunesManager.AddItem(rune.ToRune());
return CreatedAtAction("Post", rune);
}
}
// PUT api/<ChampionController>/5
[HttpPut("name")]
public async Task<IActionResult> Put(string name, RuneDTO rune)
{
if (string.IsNullOrEmpty(name))
return BadRequest();
if (rune == null)
return UnprocessableEntity();
var list = await RunesManager.GetItemsByName(name, 0, 1);
if (list.Count() == 1)
{
return Ok(RunesManager.UpdateItem(list.First(), rune.ToRune()));
}
else { return NoContent(); }
}
// DELETE api/<ChampionController>/5
[HttpDelete("name")]
public async Task<IActionResult> Delete(string name)
{
if (string.IsNullOrEmpty(name))
return BadRequest();
var list = await RunesManager.GetItemsByName(name, 0, 1);
if (list.Count() == 1)
{
return Ok(await RunesManager.DeleteItem(list.First()));
}
else { return NoContent(); }
}
}
}

@ -0,0 +1,19 @@
using DTO;
using Model;
namespace API_LoL.Mapper
{
public static class RuneMapper
{
public static RuneDTO ToDTO(this Rune rune)
{
return new RuneDTO(rune.Name, rune.Description, rune.Family, rune.Image, rune.Icon);
}
public static Rune ToRune(this RuneDTO rune)
{
return new Rune(rune.Name, rune.Family, rune.Icon, rune.Image.Base64, rune.Description);
}
}
}

@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\EntityFramework\EntityFramework.csproj" />
<ProjectReference Include="..\Model\Model.csproj" />
<ProjectReference Include="..\StubLib\StubLib.csproj" />
</ItemGroup>

@ -0,0 +1,43 @@
using EntityFramework;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DTO
{
public class RuneDTO
{
public RuneDTO(string name, string desc, RuneFamily family, LargeImage image, string icon)
{
Name = name;
Description = desc;
Family = family;
Image = image;
Icon = icon;
}
public string Name { get; set; }
public string Description { get; set; }
public RuneFamily Family { get; set; }
public string Icon { get; set; }
public LargeImage Image { get; set; }
public bool equals(RuneDTO other)
{
return other.Name == Name
&& other.Description == Description
&& other.Family == Family
&& other.Image == Image
&& other.Icon == Icon;
}
public string toString()
{
return Name + Description + Family.ToString();
}
}
}
Loading…
Cancel
Save