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 _logger; private IDataManager dataManager = new StubData(); public RuneController(ILogger logger) { _logger = logger; } [HttpGet("GetRune/{name}")] public async Task>> 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>> GetRunes(int nb = 15) { var runes = await dataManager.RunesMgr.GetItems(0, nb); return Ok(runes.Select(x => x?.ToDto())); } [HttpPost("PostRune")] public async Task> 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>> PostRunes(List runes) { var l = new List(); 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> 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>> PutRunes(List 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> 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> DeleteRunes(List 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); } } }