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.
153 lines
5.4 KiB
153 lines
5.4 KiB
using ApiLol.DTO;
|
|
using ApiLol.Mapping;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Model;
|
|
using StubLib;
|
|
using System.Data;
|
|
using System.Text;
|
|
|
|
namespace API.Controllers
|
|
{
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
public class RuneController : Controller
|
|
{
|
|
private readonly ILogger<RuneController> _logger;
|
|
|
|
private IDataManager dataManager = new StubData();
|
|
|
|
|
|
public RuneController(ILogger<RuneController> logger)
|
|
{
|
|
_logger = logger;
|
|
}
|
|
|
|
[HttpGet("GetRune/{name}")]
|
|
public async Task<ActionResult<IEnumerable<RuneDTO>>> GetRune(string name, int nb=3, int index = 0)
|
|
{
|
|
var runes = await dataManager.RunesMgr.GetItemsByName(name, index, nb);
|
|
if (!runes.Any())
|
|
{
|
|
_logger.Log(LogLevel.Warning, $"La rune {name} n'existe pas");
|
|
return BadRequest(name);
|
|
}
|
|
else
|
|
{
|
|
_logger.Log(LogLevel.Information, $"Les runes avec {name} ont été envoyées");
|
|
return Ok(runes.Select(x => x?.ToDto()));
|
|
}
|
|
|
|
}
|
|
|
|
[HttpGet("GetRunes")]
|
|
public async Task<ActionResult<IEnumerable<RuneDTO>>> GetRunes(int nb = 15)
|
|
{
|
|
var runes = await dataManager.RunesMgr.GetItems(0, nb);
|
|
return Ok(runes.Select(x => x?.ToDto()));
|
|
}
|
|
|
|
[HttpPost("PostRune")]
|
|
public async Task<ActionResult<RuneDTO?>> PostRune(RuneDTO rune)
|
|
{
|
|
var r = await dataManager.RunesMgr.AddItem(rune.ToPoco());
|
|
if (r != null)
|
|
{
|
|
_logger.Log(LogLevel.Information, $"La Rune {rune.Name} a été ajouté à la base");
|
|
return Ok(r.ToDto());
|
|
|
|
}
|
|
return BadRequest(r);
|
|
}
|
|
|
|
[HttpPost("PostRunes")]
|
|
public async Task<ActionResult<IEnumerable<RuneDTO>>> PostRunes(List<RuneDTO> runes)
|
|
{
|
|
var l = new List<RuneDTO>();
|
|
foreach (RuneDTO rune in runes)
|
|
{
|
|
var r = await dataManager.RunesMgr.AddItem(rune.ToPoco());
|
|
if (r != null)
|
|
{
|
|
l.Add(r.ToDto());
|
|
_logger.Log(LogLevel.Information, $"La Rune {rune.Name} a été ajoutée à la base");
|
|
}
|
|
else
|
|
{
|
|
_logger.Log(LogLevel.Warning, $"La Rune {rune.Name} recherchée n'existe pas ou il y en a plusieurs avec ce nom");
|
|
}
|
|
}
|
|
return Ok(l);
|
|
}
|
|
|
|
[HttpPut("PutRune")]
|
|
public async Task<ActionResult<RuneDTO>> PutRune(RuneDTO rune)
|
|
{
|
|
var ancienne = await dataManager.RunesMgr.GetItemsByName(rune.Name, 0, 1);
|
|
if (ancienne.Count() != 1)
|
|
{
|
|
_logger.Log(LogLevel.Warning, $"La Rune {rune.Name} recherchée n'existe pas ou il y en a plusieurs avec ce nom");
|
|
return BadRequest(rune);
|
|
}
|
|
else
|
|
{
|
|
await dataManager.RunesMgr.UpdateItem(ancienne.FirstOrDefault(), rune.ToPoco());
|
|
_logger.Log(LogLevel.Information, $"La Rune {rune.Name} a été modifiée de la base");
|
|
var r = await dataManager.RunesMgr.GetItemsByName(rune.Name, 0, 1);
|
|
return Ok(r.First());
|
|
}
|
|
}
|
|
|
|
[HttpPut("PutRunes")]
|
|
public async Task<ActionResult<IEnumerable<RuneDTO>>> PutRunes(List<RuneDTO> runes, int nb = 10)
|
|
{
|
|
foreach (RuneDTO run in runes)
|
|
{
|
|
var rune = await dataManager.RunesMgr.GetItemsByName(run.Name, 0, 1);
|
|
if (!rune.Any())
|
|
{
|
|
_logger.Log(LogLevel.Warning, $"La Rune {run.Name} recherchée n'existe pas");
|
|
BadRequest(run);
|
|
}
|
|
else
|
|
{
|
|
await dataManager.RunesMgr.UpdateItem(rune.FirstOrDefault(), run.ToPoco());
|
|
_logger.Log(LogLevel.Information, $"La Rune {run.Name} a été modifiée de la base");
|
|
|
|
}
|
|
}
|
|
var Runes = await dataManager.RunesMgr.GetItems(0, nb);
|
|
return Ok(Runes.Select(x => x?.ToDto()));
|
|
}
|
|
|
|
[HttpDelete("DeleteRune")]
|
|
public async Task<ActionResult<Boolean>> DeleteRune(RuneDTO rune)
|
|
{
|
|
var retour = await dataManager.RunesMgr.DeleteItem(rune.ToPoco());
|
|
if (retour) {
|
|
_logger.Log(LogLevel.Information, $"La Rune {rune.Name} a été supprimée de la base");
|
|
return Ok(retour);
|
|
}
|
|
_logger.Log(LogLevel.Warning, $"La Rune {rune.Name} recherchée n'existe pas");
|
|
return BadRequest(retour);
|
|
}
|
|
|
|
[HttpDelete("DeleteRunes")]
|
|
public async Task<ActionResult<Boolean>> DeleteRunes(List<RuneDTO> runes)
|
|
{
|
|
foreach (RuneDTO run in runes)
|
|
{
|
|
var retour = await dataManager.RunesMgr.DeleteItem(run.ToPoco());
|
|
if (!retour)
|
|
{
|
|
_logger.Log(LogLevel.Warning, $"La Rune {run.Name} recherchée n'existe pas");
|
|
BadRequest(run);
|
|
}
|
|
else
|
|
{
|
|
_logger.Log(LogLevel.Information, $"La Rune {run.Name} a été supprimée de la base");
|
|
}
|
|
}
|
|
return Ok(true);
|
|
}
|
|
}
|
|
} |