diff --git a/Documentation/Architecture_du_projet.drawio b/Documentation/Architecture_du_projet.drawio
index 69bd778..87ffdf0 100644
--- a/Documentation/Architecture_du_projet.drawio
+++ b/Documentation/Architecture_du_projet.drawio
@@ -1 +1 @@
-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
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/Sources/API/Controllers/ChampionController.cs b/Sources/API/Controllers/ChampionController.cs
index 87816ba..9d55a02 100644
--- a/Sources/API/Controllers/ChampionController.cs
+++ b/Sources/API/Controllers/ChampionController.cs
@@ -1,25 +1,27 @@
using API.Dto;
using API.Mapping;
+using EFManager;
using Microsoft.AspNetCore.Mvc;
using Model;
using StubLib;
+
namespace API.Controllers
{
[ApiController]
[Route("[controller]")]
public class ChampionController : ControllerBase
{
- private readonly StubData data = new StubData();
-
- // Pour plus tard pour le momment c'est avec le stub
- // private readonly IDataManager dataManager;
+ // private readonly ManagerData data;
+ private readonly StubData data;
private readonly ILogger _logger;
- public ChampionController(ILogger logger)
+
+ public ChampionController(StubData manager, ILogger logger)
{
- _logger = logger;
+ data = manager;
+ _logger = logger;
}
/*
@@ -59,52 +61,57 @@ namespace API.Controllers
List DtoChamps = new List();
// Chargement de la liste des champions Dto à partir des champions
- Champs.ToList().ForEach(c => DtoChamps.Add(c.ToDto()));
+ Champs.ToList().ForEach(Champ => DtoChamps.Add(Champ.ToDto()));
return Ok(DtoChamps);
}
- [HttpGet]
- [Route("{Name}")]
- public async Task> GetChampById(int id)
+ [HttpGet("count")]
+ public async Task GetCount()
{
- // Récupération de la liste des champions
- IEnumerable Champs = await data.ChampionsMgr.GetItems(id, 1);
-
- // Récupération du champion correspondant à l'id
- if (id >= 0 && id < data.ChampionsMgr.GetNbItems().Result)
+ try
+ {
+ // Renvoie le nombre de champion
+ return Ok(data.ChampionsMgr.GetNbItems());
+ }
+ catch (Exception e)
{
- return Ok(Champs.First().ToDto());
+ return BadRequest(e.Message);
}
- return BadRequest("404");
}
- [HttpGet("{Name}/Skins")]
- public async Task> GetSkinsChamp(string name)
+
+ [HttpGet("{name}")]
+ public async Task> GetChampByName(string name)
{
- // Récupération de la liste des champions
- IEnumerable Champs = await data.ChampionsMgr.GetItemsByName(name, await data.ChampionsMgr.GetNbItemsByName(name), 1);
+ try
+ {
+ // Récupération de la liste des champions
+ IEnumerable champion = await data.ChampionsMgr.GetItemsByName(name, 0, data.ChampionsMgr.GetNbItems().Result);
+
+ // Enregistrement des log
+ _logger.LogInformation("Executing {Action} with name : {championName}", nameof(GetChampByName), name);
+
+ // Création du champion Dto
+ ChampionDto resultat = champion.First().ToDto();
+
+ // Vérification de sa véraciter
+ if (resultat == null)
+ {
+ _logger.LogWarning("No chamions found with {name}", name); ;
+ return NotFound();
+ }
+ return Ok(resultat);
- // Récupération du champion correspondant à l'id
- //if (await data.ChampionsMgr.GetNbItemsByName(name).Result)
+ }
+ catch (Exception e)
{
- // Converstion en Champion au lieu de champion IEnumerable
- Champion champion = Champs.First();
-
- // Récupération des skin du champion
- IEnumerable Skins = await data.SkinsMgr.GetItemsByChampion(champion, 0, data.SkinsMgr.GetNbItemsByChampion(champion).Result);
+ return BadRequest(e.Message);
+ }
+ }
- // Création de la liste de skin
- List skins = new List();
- // Ajout des skins dans la nouvelle liste
- Skins.ToList().ForEach(Skin => skins.Add(Skin.ToDto()));
- return Ok(skins);
- }
- return BadRequest();
- }
-
/**** Méthodes POST ****/
[HttpPost("Ajouter/{nom}")]
public async Task PostChampName(string nom)
@@ -115,7 +122,7 @@ namespace API.Controllers
// Ajout du champion dans la BD
await data.ChampionsMgr.AddItem(champion);
- return CreatedAtAction(nameof(GetChampById), new { id = data.ChampionsMgr.GetNbItems().Result - 1 }, champion.ToDto());
+ return CreatedAtAction(nameof(GetChampByName), new { Id = data.ChampionsMgr.GetNbItemsByName(nom) }, champion.ToDto());
}
[HttpPost("Ajouter")]
@@ -133,8 +140,7 @@ namespace API.Controllers
[HttpPost]
public async Task post([FromBody] ChampionDto championDto)
{
- return CreatedAtAction(nameof(GetChampById), new { id = 1 },
- await data.ChampionsMgr.AddItem(championDto.ToModel()));
+ return CreatedAtAction(nameof(GetChampByName), new { id = 1 }, await data.ChampionsMgr.AddItem(championDto.ToModel()));
}
/**** Méthodes DELETE ****/
@@ -154,7 +160,7 @@ namespace API.Controllers
}
- /**** Méthodes PUT ****/
+ /**** Méthodes PUT ****
[HttpPut("Modifier/{nom}")]
public async Task PutChampName(string nom)
@@ -166,13 +172,13 @@ namespace API.Controllers
return CreatedAtAction(nameof(GetChampById), new { id = data.ChampionsMgr.GetNbItems().Result - 1 }, champion.ToDto());
}
- /*[HttpPut("Modifier")]
+ [HttpPut("Modifier")]
public async Task PutChamp([FromBody] ChampionDto championDto)
{
Champion champion = championDto.ToModel();
await data.ChampionsMgr.UpdateItem(champion);
return CreatedAtAction(nameof(GetChampById), new { id = data.ChampionsMgr.GetItems(0, data.ChampionsMgr.GetNbItems().Result).Result.ToList().IndexOf(champion) }, champion);
- }*/
-
+ }
+ */
}
}
diff --git a/Sources/API/Controllers/SkinController.cs b/Sources/API/Controllers/SkinController.cs
index 3f7f919..1051bbf 100644
--- a/Sources/API/Controllers/SkinController.cs
+++ b/Sources/API/Controllers/SkinController.cs
@@ -1,6 +1,50 @@
-namespace API.Controllers
+using API.Dto;
+using EFManager;
+using Microsoft.AspNetCore.Mvc;
+using Model;
+
+namespace API.Controllers
{
+ [ApiController]
+ [Route("[controller]")]
public class SkinController
{
+
+ private readonly ManagerData data;
+
+ private readonly ILogger _logger;
+
+ public SkinController(ManagerData manager, ILogger logger)
+ {
+ data = manager;
+ _logger = logger;
+ }
+
+ /*
+ [HttpGet("{Name}/Skins")]
+ public async Task> GetSkinsChamp(string name)
+ {
+ // Récupération de la liste des champions
+ IEnumerable Champs = await data.ChampionsMgr.GetItemsByName(name, await data.ChampionsMgr.GetNbItemsByName(name), 1);
+
+ // Récupération du champion correspondant à l'id
+ //if (await data.ChampionsMgr.GetNbItemsByName(name).Result)
+ {
+ // Converstion en Champion au lieu de champion IEnumerable
+ Champion champion = Champs.First();
+
+ // Récupération des skin du champion
+ IEnumerable Skins = await data.SkinsMgr.GetItemsByChampion(champion, 0, data.SkinsMgr.GetNbItemsByChampion(champion).Result);
+
+ // Création de la liste de skin
+ List skins = new List();
+
+ // Ajout des skins dans la nouvelle liste
+ Skins.ToList().ForEach(Skin => skins.Add(Skin.ToDto()));
+
+ return Ok(skins);
+ }
+ return BadRequest();
+ }*/
}
}
diff --git a/Sources/API/Dto/ChampionDto.cs b/Sources/API/Dto/ChampionDto.cs
index a3068a2..ee59d50 100644
--- a/Sources/API/Dto/ChampionDto.cs
+++ b/Sources/API/Dto/ChampionDto.cs
@@ -17,8 +17,8 @@ namespace API.Dto
public IEnumerable ValueCharac { get; set; }
public ChampionClass Class { get; set; }
- public ReadOnlyCollection Skins { get; set; }
- public ImmutableHashSet Skills { get; set; }
+ public IEnumerable Skins { get; set; }
+ public IEnumerable Skills { get; set; }
public LargeImage Image { get; set; }
}
diff --git a/Sources/API/Dto/SkinDto.cs b/Sources/API/Dto/SkinDto.cs
index f4ebc41..e2df2ed 100644
--- a/Sources/API/Dto/SkinDto.cs
+++ b/Sources/API/Dto/SkinDto.cs
@@ -5,7 +5,7 @@ namespace API.Dto
public class SkinDto
{
public string Name { get; set; }
- public ChampionDto Champion { get; set; }
+ public string ChampionName { get; set; }
public string Description { get; set; }
public float Price { get; set; }
public string Icon { get; set; }
diff --git a/Sources/API/Mapping/ChampionMapper.cs b/Sources/API/Mapping/ChampionMapper.cs
index 99d8fc9..4318234 100644
--- a/Sources/API/Mapping/ChampionMapper.cs
+++ b/Sources/API/Mapping/ChampionMapper.cs
@@ -24,8 +24,8 @@ namespace API.Mapping
ValueCharac = champion.Characteristics.Values,
Class = champion.Class,
- Skins = (ReadOnlyCollection)champion.Skins.Select(skin => skin.ToDto()),
- Skills = (ImmutableHashSet)champion.Skills.Select(skill => skill.ToDto()),
+ Skins = champion.Skins.Select(skin => skin.ToDto()),
+ Skills = champion.Skills.Select(skill => skill.ToDto()),
Image = champion.Image
};
}
diff --git a/Sources/API/Mapping/SkinMapper.cs b/Sources/API/Mapping/SkinMapper.cs
index e8889d2..225d750 100644
--- a/Sources/API/Mapping/SkinMapper.cs
+++ b/Sources/API/Mapping/SkinMapper.cs
@@ -16,7 +16,7 @@ namespace API.Mapping
return new SkinDto()
{
Name = skin.Name,
- Champion = skin.Champion.ToDto(),
+ ChampionName = skin.Champion.Name,
Description = skin.Description,
Price = skin.Price,
Icon = skin.Icon,
@@ -30,7 +30,7 @@ namespace API.Mapping
{
throw new ArgumentNullException("DtoSkin null");
}
- return new Skin(skinDto.Name, skinDto.Champion.ToModel(), skinDto.Price, skinDto.Icon, skinDto.Image.Base64, skinDto.Description);
+ return new Skin(skinDto.Name, new Champion(skinDto.Name), skinDto.Price, skinDto.Icon, skinDto.Image.Base64, skinDto.Description);
}
}
}
diff --git a/Sources/API/Program.cs b/Sources/API/Program.cs
index d98a361..8722358 100644
--- a/Sources/API/Program.cs
+++ b/Sources/API/Program.cs
@@ -2,6 +2,7 @@ using EFlib;
using EFManager;
using Microsoft.EntityFrameworkCore;
using Model;
+using StubLib;
var builder = WebApplication.CreateBuilder(args);
@@ -13,7 +14,10 @@ builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
-builder.Services.AddSingleton();
+builder.Services.AddSingleton();
+
+builder.Services.AddScoped();
+// builder.Services.AddScoped();
var app = builder.Build();
diff --git a/Sources/API/projet.dbloulou.db b/Sources/API/projet.dbloulou.db
new file mode 100644
index 0000000..b31a1b1
Binary files /dev/null and b/Sources/API/projet.dbloulou.db differ
diff --git a/Sources/API/projet.dbloulou.db-shm b/Sources/API/projet.dbloulou.db-shm
new file mode 100644
index 0000000..fe9ac28
Binary files /dev/null and b/Sources/API/projet.dbloulou.db-shm differ
diff --git a/Sources/API/projet.dbloulou.db-wal b/Sources/API/projet.dbloulou.db-wal
new file mode 100644
index 0000000..e69de29
diff --git a/Sources/EntityFramework/EFManager/ManagerChampion.cs b/Sources/EntityFramework/EFManager/ManagerChampion.cs
index fca8154..20ec7ec 100644
--- a/Sources/EntityFramework/EFManager/ManagerChampion.cs
+++ b/Sources/EntityFramework/EFManager/ManagerChampion.cs
@@ -45,6 +45,18 @@ namespace EFManager
}
}
+ public async Task UpdateItem(Champion? oldItem, Champion? newItem)
+ {
+ var toUpdate = parent.DbContext.Champions.Find(oldItem.Name);
+ try
+ {
+ toUpdate = newItem.ToEF(parent.DbContext);
+ parent.DbContext.SaveChanges();
+ }
+ catch(DbUpdateException) { }
+ return newItem;
+ }
+
public async Task> GetItems(int index, int count, string? orderingPropertyName = null, bool descending = false)
{
if (orderingPropertyName != null)
@@ -64,16 +76,9 @@ namespace EFManager
}
}
- public Task> GetItemsByCharacteristic(string charName, int index, int count, string? orderingPropertyName = null, bool descending = false)
- {
- throw new NotImplementedException();
-
- }
-
- public Task> GetItemsByClass(ChampionClass championClass, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ public async Task GetNbItems()
{
- throw new NotImplementedException();
-
+ return parent.DbContext.Champions.Count();
}
public async Task> GetItemsByName(string substring, int index, int count, string? orderingPropertyName = null, bool descending = false)
@@ -97,27 +102,34 @@ namespace EFManager
}
}
- public Task> GetItemsByRunePage(RunePage? runePage, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ public Task> GetItemsByCharacteristic(string charName, int index, int count, string? orderingPropertyName = null, bool descending = false)
{
throw new NotImplementedException();
}
- public Task> GetItemsBySkill(Skill? skill, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ public Task> GetItemsByClass(ChampionClass championClass, int index, int count, string? orderingPropertyName = null, bool descending = false)
{
throw new NotImplementedException();
+
}
- public Task> GetItemsBySkill(string skill, int index, int count, string? orderingPropertyName = null, bool descending = false)
+
+ public Task> GetItemsByRunePage(RunePage? runePage, int index, int count, string? orderingPropertyName = null, bool descending = false)
{
throw new NotImplementedException();
+
}
- public async Task GetNbItems()
+ public Task> GetItemsBySkill(Skill? skill, int index, int count, string? orderingPropertyName = null, bool descending = false)
{
- return parent.DbContext.Champions.Count();
+ throw new NotImplementedException();
}
+ public Task> GetItemsBySkill(string skill, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ {
+ throw new NotImplementedException();
+ }
public async Task GetNbItemsByCharacteristic(string charName)
{
throw new NotImplementedException();
@@ -147,18 +159,6 @@ namespace EFManager
{
throw new NotImplementedException();
}
-
- public async Task UpdateItem(Champion? oldItem, Champion? newItem)
- {
- var toUpdate = parent.DbContext.Champions.Find(oldItem.Name);
- try
- {
- toUpdate = newItem.ToEF(parent.DbContext);
- parent.DbContext.SaveChanges();
- }
- catch(DbUpdateException) { }
- return newItem;
- }
}
}
}
\ No newline at end of file
diff --git a/Sources/EntityFramework/EFManager/ManagerData.cs b/Sources/EntityFramework/EFManager/ManagerData.cs
index 6550534..d6e66c1 100644
--- a/Sources/EntityFramework/EFManager/ManagerData.cs
+++ b/Sources/EntityFramework/EFManager/ManagerData.cs
@@ -11,12 +11,6 @@ namespace EFManager
{
public partial class ManagerData : IDataManager
{
- public ManagerData(SQLiteContext ContextData)
- {
- DbContext = ContextData;
- ChampionsMgr = new ManagerChampion(this);
- SkinsMgr = new ManagerSkin(this);
- }
protected SQLiteContext DbContext { get; }
public IChampionsManager ChampionsMgr { get; }
@@ -26,5 +20,12 @@ namespace EFManager
public IRunesManager RunesMgr { get; }
public IRunePagesManager RunePagesMgr { get; }
+
+ public ManagerData(SQLiteContext ContextData)
+ {
+ DbContext = ContextData;
+ ChampionsMgr = new ManagerChampion(this);
+ SkinsMgr = new ManagerSkin(this);
+ }
}
}
diff --git a/Sources/EntityFramework/EFManager/ManagerSkin.cs b/Sources/EntityFramework/EFManager/ManagerSkin.cs
index ec672c9..b9f4b91 100644
--- a/Sources/EntityFramework/EFManager/ManagerSkin.cs
+++ b/Sources/EntityFramework/EFManager/ManagerSkin.cs
@@ -48,6 +48,19 @@ namespace EFManager
}
}
+ public async Task UpdateItem(Skin? oldItem, Skin? newItem)
+ {
+ var toUpdate = parent.DbContext.Skins.Find(oldItem.Name);
+ try
+ {
+ toUpdate.Champion = parent.DbContext.Champions.Find(newItem.Champion.Name);
+ parent.DbContext.SaveChanges();
+ }
+ catch (DbUpdateException) { }
+ return newItem;
+
+ }
+
public async Task> GetItems(int index, int count, string? orderingPropertyName = null, bool descending = false)
{
if (orderingPropertyName != null)
@@ -67,19 +80,19 @@ namespace EFManager
}
}
- public Task> GetItemsByChampion(Champion? champion, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ public async Task GetNbItems()
{
- throw new NotImplementedException();
+ return parent.DbContext.Skins.Count();
}
- public Task> GetItemsByName(string substring, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ public Task> GetItemsByChampion(Champion? champion, int index, int count, string? orderingPropertyName = null, bool descending = false)
{
throw new NotImplementedException();
}
- public async Task GetNbItems()
+ public Task> GetItemsByName(string substring, int index, int count, string? orderingPropertyName = null, bool descending = false)
{
- return parent.DbContext.Skins.Count();
+ throw new NotImplementedException();
}
public Task GetNbItemsByChampion(Champion? champion)
@@ -91,19 +104,6 @@ namespace EFManager
{
throw new NotImplementedException();
}
-
- public async Task UpdateItem(Skin? oldItem, Skin? newItem)
- {
- var toUpdate = parent.DbContext.Skins.Find(oldItem.Name);
- try
- {
- toUpdate.Champion = parent.DbContext.Champions.Find(newItem.Champion.Name);
- parent.DbContext.SaveChanges();
- }
- catch (DbUpdateException) { }
- return newItem;
-
- }
}
}
}
diff --git a/Sources/EntityFramework/EFlib/EFRune.cs b/Sources/EntityFramework/EFlib/EFRune.cs
index b220906..b7d3f79 100644
--- a/Sources/EntityFramework/EFlib/EFRune.cs
+++ b/Sources/EntityFramework/EFlib/EFRune.cs
@@ -12,6 +12,6 @@ namespace EFlib
{
public class EFRune
{
-
+ // TODO
}
}
diff --git a/Sources/EntityFramework/EFlib/EFRunePage.cs b/Sources/EntityFramework/EFlib/EFRunePage.cs
index 81de5cd..34d9c44 100644
--- a/Sources/EntityFramework/EFlib/EFRunePage.cs
+++ b/Sources/EntityFramework/EFlib/EFRunePage.cs
@@ -13,5 +13,6 @@ namespace EFlib
{
public class EFRunePage
{
+ // TODO
}
}
diff --git a/Sources/Model/IDataManager.cs b/Sources/Model/IDataManager.cs
index a185e15..44f03af 100644
--- a/Sources/Model/IDataManager.cs
+++ b/Sources/Model/IDataManager.cs
@@ -27,7 +27,7 @@ namespace Model
Task GetNbItemsBySkill(string skill);
Task> GetItemsBySkill(string skill, int index, int count, string? orderingPropertyName = null, bool descending = false);
- }
+ }
public interface ISkinsManager : IGenericDataManager
{