Add new functions for ChampionsController and create Skill Dto with mapper
continuous-integration/drone/push Build is passing Details

Logs_Version_Filtrage_Pagination
Emre KARTAL 2 years ago
parent afbd78428b
commit c88eac1354

@ -24,82 +24,156 @@ namespace ApiLol.Controllers
[HttpGet]
public async Task<IActionResult> Get([FromQuery] PageRequest pageRequest)
{
int nbTotal = await _manager.ChampionsMgr.GetNbItems();
if (pageRequest.count + pageRequest.index > nbTotal)
try
{
_logger.LogWarning($"too many, maximum {nbTotal}");
return BadRequest("Champion limit exceed");
int nbTotal = await _manager.ChampionsMgr.GetNbItems();
if (pageRequest.count + pageRequest.index > nbTotal)
{
_logger.LogWarning($"too many, maximum {nbTotal}");
return BadRequest($"Champion limit exceed, max {nbTotal}");
}
_logger.LogInformation($"method Get call");
IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count))
.Select(x => x.ToDto());
return Ok(dtos);
}
catch (Exception e)
{
return BadRequest(e.Message);
_logger.LogInformation($"method Get call");
IEnumerable<ChampionDto> dtos = (await _manager.ChampionsMgr.GetItems(pageRequest.index, pageRequest.count))
.Select(x => x.ToDto());
return Ok(dtos);
}
}
// GET api/<ValuesController>/5
[HttpGet("{name}")]
public async Task<IActionResult> Get(string name)
{
_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())
try
{
_logger.LogWarning($"{name} was not found");
return NotFound();
_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())
{
_logger.LogWarning($"{name} was not found");
return NotFound();
}
return Ok(dtos);
}
catch (Exception e)
{
return BadRequest(e.Message);
}
return Ok(dtos);
}
// POST api/<ValuesController>
[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())
try
{
return BadRequest("Name is already exist");
_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());
}
catch (Exception e)
{
return BadRequest(e.Message);
}
return CreatedAtAction(nameof(Get),
(await _manager.ChampionsMgr.AddItem(champion.ToModel())).ToDto());
}
// PUT api/<ValuesController>/5
[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())
try
{
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())
_logger.LogInformation($"method Put call with {name}");
var dtos = (await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems()));
if (dtos.IsNullOrEmpty())
{
return BadRequest("Name is already exist");
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()));
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
[HttpGet("/{name}/skins")]
public async Task<ActionResult<Skin>> GetChampionsSkins(string name)
{
try
{
var champions = await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems());
//skinsDTO
IEnumerable<SkinDto> res = champions.First().Skins.Select(e => e.ToDto());
return Ok(res);
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
[HttpGet("/{name}/skills")]
public async Task<ActionResult<Skin>> GetChampionsSkills(string name)
{
try
{
var champions = await _manager.ChampionsMgr.GetItemsByName(name, 0, await _manager.ChampionsMgr.GetNbItems());
//SkillDTO
IEnumerable<SkillDto> res = champions.First().Skills.Select(e => e.ToDto());
return Ok(res);
}
catch (Exception e)
{
return BadRequest(e.Message);
}
return Ok(await _manager.ChampionsMgr.UpdateItem(dtos.First(), champion.ToModel()));
}
// DELETE api/<ValuesController>/5
[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())
try
{
_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()));
}
catch (Exception e)
{
_logger.LogWarning($"{name} was not found");
return BadRequest();
return BadRequest(e.Message);
}
return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First()));
}
}
}

@ -14,13 +14,14 @@ namespace ApiLol.Mapper
Class = champion.Class.ToDto(),
Icon = champion.Icon,
Image = champion.Image.ToDto(),
Skins = champion.Skins.Select(e => e.ToDto())
Skins = champion.Skins.Select(e => e.ToDto()),
Skills = champion.Skills.Select(e => e.ToDto())
};
}
public static Champion ToModel(this ChampionDto championDto)
{
return new Champion(championDto.Name, championDto.Class.ToModel(), championDto.Icon, championDto.Image.Base64,championDto.Bio);
return new Champion(championDto.Name, championDto.Class.ToModel(), championDto.Icon, championDto.Image.Base64, championDto.Bio);
}
}

@ -11,15 +11,13 @@ namespace ApiLol.Mapper
{
Name = skill.Name,
Description = skill.Description,
Type = skill.Type.ToDto()
};
}
/* public static Skill ToModel(this SkillDto skillDto)
public static Skill ToModel(this SkillDto skillDto)
{
return new Skill(skill.Name)
{
Description = skill.Description
};
}*/
return new Skill(skillDto.Name, skillDto.Type.ToModel(), skillDto.Description);
}
}
}

@ -1,8 +1,7 @@
using DTO;
using DTO.enums;
using Model;
namespace ApiLol.Mapper.enums
namespace ApiLol.Mapper
{
public static class SkillTypeMapper
{

@ -18,10 +18,10 @@ namespace Client
httpClient.BaseAddress = new Uri("https://localhost:7252;http://localhost:5252");
}
public async Task<IEnumerable<ChampionDto>> GetChampion()
public async Task<IEnumerable<ChampionDto>> GetChampion(int index, int count)
{
var champions = await _httpClient.GetFromJsonAsync<IEnumerable<ChampionDto>>(ApiChampions);
return champions;
var url = $"{ApiChampions}?index={index}&count={count}";
return await _httpClient.GetFromJsonAsync<IEnumerable<ChampionDto>>(url);
}
public async void Add(ChampionDto champion)
{

@ -1,2 +1,38 @@
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
using Client;
using DTO;
Console.WriteLine("Hello, World!");
var championClient = new ChampionHttpClient(new HttpClient());
// Get all champions
var champions = await championClient.GetChampion(0,6);
Console.WriteLine("All champions:");
foreach (var champion in champions)
{
Console.WriteLine($"{champion.Name} ({champion.Bio})");
}
/*// Add a new champion
var newChampion = new ChampionDto { Name = "Akali", Role = "Assassin" };
championClient.Add(newChampion);
// Delete a champion
var championToDelete = champions.FirstOrDefault(c => c.Name == "Riven");
if (championToDelete != null)
{
championClient.Delete(championToDelete);
Console.WriteLine($"{championToDelete.Name} deleted.");
}
// Update a champion
var championToUpdate = champions.FirstOrDefault(c => c.Name == "Ashe");
if (championToUpdate != null)
{
championToUpdate.Role = "Marksman";
championClient.Update(championToUpdate);
Console.WriteLine($"{championToUpdate.Name} updated.");
}
*/

@ -8,6 +8,7 @@
public string Icon { get; set; }
public LargeImageDto Image { get; set; }
public IEnumerable<SkinDto> Skins { get; set; }
public IEnumerable<SkillDto> Skills { get; set; }
}
}

@ -10,5 +10,6 @@ namespace DTO
{
public string Name { get; set; }
public string Description { get; set; }
public SkillTypeDto Type { get; set; }
}
}

@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DTO.enums
namespace DTO
{
public enum SkillTypeDto
{

Loading…
Cancel
Save