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.
LOLProject/Sources/APILOL/Controllers/SkinController.cs

76 lines
2.1 KiB

using APILOL.Mapper;
using DTO;
using Microsoft.AspNetCore.Mvc;
using Model;
namespace APILOL.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SkinController : ControllerBase
{
ISkinsManager dataManager;
public SkinController(IDataManager dataManager)
{
this.dataManager = dataManager.SkinsMgr;
}
// GET: api/<SkinController>
[HttpGet]
public async Task<IActionResult> Get(int index, int count)
{
var skins = await dataManager.GetItems(index, count);
IEnumerable<SkinDTO> items = skins.Select(c => c.ToDto());
return Ok(items);
}
// GET api/<SkinController>/5
[HttpGet("{name}")]
public async Task<IActionResult> Get(string name)
{
var skins = await dataManager.GetItemsByName(name, 0, await dataManager.GetNbItems());
if (skins != null)
{
IEnumerable<SkinDTO> items = skins.Select(c => c.ToDto());
return Ok(items);
}
return NotFound();
}
// POST api/<SkinController>
[HttpPost]
public async Task<IActionResult> Post([FromBody] SkinDTO skinDTO)
{
return CreatedAtAction(nameof(Get), (await dataManager.AddItem(skinDTO.ToModel())).ToDto);
}
// PUT api/<SkinController>/5
[HttpPut("{name}")]
public async Task<IActionResult> PutAsync(string name, [FromBody] SkinDTO skinDTO)
{
var dtos = (await dataManager.GetItemsByName(name, 0, await dataManager.GetNbItems()));
if(dtos != null) {
return Ok(dataManager.UpdateItem(dtos.First(), skinDTO.ToModel()));
}
return NotFound();
}
// DELETE api/<SkinController>/5
[HttpDelete("{name}")]
public async Task<IActionResult> Delete(string name)
{
var dtos = (await dataManager.GetItemsByName(name, 0, await dataManager.GetNbItems()));
return Ok(dataManager.DeleteItem(dtos.First()));
}
}
}