|
|
|
@ -13,16 +13,26 @@ namespace ApiLol.Controllers
|
|
|
|
|
public class ChampionsController : ControllerBase
|
|
|
|
|
{
|
|
|
|
|
private readonly IDataManager _manager;
|
|
|
|
|
public ChampionsController(IDataManager dataManager)
|
|
|
|
|
public readonly ILogger<ChampionsController> _logger;
|
|
|
|
|
public ChampionsController(IDataManager dataManager, ILogger<ChampionsController> logger)
|
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
this._manager = dataManager;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GET: api/<ValuesController>
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<IActionResult> Get()
|
|
|
|
|
public async Task<IActionResult> Get([FromQuery] PageRequest pageRequest)
|
|
|
|
|
{
|
|
|
|
|
IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(0, await _manager.ChampionsMgr.GetNbItems()))
|
|
|
|
|
int nbTotal = await _manager.ChampionsMgr.GetNbItems();
|
|
|
|
|
if (pageRequest.count + pageRequest.index > nbTotal)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogWarning($"too many, maximum {nbTotal}");
|
|
|
|
|
pageRequest.count = 10;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_logger.LogInformation($"method Get call");
|
|
|
|
|
IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count))
|
|
|
|
|
.Select(x => x.ToDto());
|
|
|
|
|
return Ok(dtos);
|
|
|
|
|
}
|
|
|
|
@ -31,10 +41,12 @@ namespace ApiLol.Controllers
|
|
|
|
|
[HttpGet("{name}")]
|
|
|
|
|
public async Task<IActionResult> Get(string name)
|
|
|
|
|
{
|
|
|
|
|
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name,0, await _manager.ChampionsMgr.GetNbItems()))
|
|
|
|
|
_logger.LogInformation($"method GetByName call with {name}");
|
|
|
|
|
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()))
|
|
|
|
|
.Select(x => x.ToDto());
|
|
|
|
|
if(dtos.IsNullOrEmpty())
|
|
|
|
|
if (dtos.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
_logger.LogWarning($"{name} was not found");
|
|
|
|
|
return NotFound();
|
|
|
|
|
}
|
|
|
|
|
return Ok(dtos);
|
|
|
|
@ -44,6 +56,12 @@ namespace ApiLol.Controllers
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<IActionResult> Post([FromBody] ChampionDto champion)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"method Post call");
|
|
|
|
|
var dtos = (await _manager.ChampionsMgr.GetItemsByName(champion.Name, 0, await _manager.ChampionsMgr.GetNbItems()));
|
|
|
|
|
if (!dtos.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
return BadRequest("Name is already exist");
|
|
|
|
|
}
|
|
|
|
|
return CreatedAtAction(nameof(Get),
|
|
|
|
|
(await _manager.ChampionsMgr.AddItem(champion.ToModel())).ToDto());
|
|
|
|
|
}
|
|
|
|
@ -52,10 +70,20 @@ namespace ApiLol.Controllers
|
|
|
|
|
[HttpPut("{name}")]
|
|
|
|
|
public async Task<IActionResult> Put(string name, [FromBody] ChampionDto champion)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"method Put call with {name}");
|
|
|
|
|
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()));
|
|
|
|
|
if(dtos.IsNullOrEmpty())
|
|
|
|
|
if (dtos.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
return BadRequest();
|
|
|
|
|
return BadRequest("Name not exist");
|
|
|
|
|
}
|
|
|
|
|
// Checks if the new name exists
|
|
|
|
|
if (name != champion.Name)
|
|
|
|
|
{
|
|
|
|
|
var dtos2 = (await _manager.ChampionsMgr.GetItemsByName(champion.Name, 0, await _manager.ChampionsMgr.GetNbItems()));
|
|
|
|
|
if (!dtos.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
return BadRequest("Name is already exist");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return Ok(await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel()));
|
|
|
|
|
}
|
|
|
|
@ -64,9 +92,11 @@ namespace ApiLol.Controllers
|
|
|
|
|
[HttpDelete("{name}")]
|
|
|
|
|
public async Task<IActionResult> Delete(string name)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"method Delete call with {name}");
|
|
|
|
|
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()));
|
|
|
|
|
if (dtos.IsNullOrEmpty())
|
|
|
|
|
{
|
|
|
|
|
_logger.LogWarning($"{name} was not found");
|
|
|
|
|
return BadRequest();
|
|
|
|
|
}
|
|
|
|
|
return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First()));
|
|
|
|
|