diff --git a/Sources/API_LoL/API_LoL.csproj b/Sources/API_LoL/API_LoL.csproj
index a8c4de7..db2c1c8 100644
--- a/Sources/API_LoL/API_LoL.csproj
+++ b/Sources/API_LoL/API_LoL.csproj
@@ -17,6 +17,7 @@
+
diff --git a/Sources/API_LoL/Controllers/ChampionsController.cs b/Sources/API_LoL/Controllers/ChampionsController.cs
index 1b2b021..96adf52 100644
--- a/Sources/API_LoL/Controllers/ChampionsController.cs
+++ b/Sources/API_LoL/Controllers/ChampionsController.cs
@@ -30,6 +30,12 @@ namespace API_LoL.Controllers
// GET api//5
+ [HttpGet("count")]
+ public async Task GetCount()
+ {
+ return Ok(ChampionsManager.GetNbItems());
+ }
+
[HttpGet]
public async Task Get(string? name = null,String? skill = null, String? characteristic = null,int index = 0,int size =10)
{
@@ -92,9 +98,10 @@ namespace API_LoL.Controllers
var list = await ChampionsManager.GetItemsByName(name, 0, 1);
if (list.Count() == 1)
{
- var skins = await SkinsManager.GetItemsByChampion(list.First(), 0, await SkinsManager.GetNbItemsByChampion(list.First()));
- if (skins.Count() != 0)
+ var nb = await SkinsManager.GetNbItemsByChampion(list.First());
+ if (nb != 0)
{
+ var skins = await SkinsManager.GetItemsByChampion(list.First(), 0, nb);
return Ok(skins.Select(skin => skin?.ToDTO()));
}
else { return NoContent(); }
@@ -102,8 +109,27 @@ namespace API_LoL.Controllers
else { return NoContent(); }
}
- // POST api/
- [HttpPost]
+ //[HttpGet("name/skills")]
+ //public async Task GetSkillsByName(String name)
+ //{
+ // if (string.IsNullOrEmpty(name)) return BadRequest();
+ // var list = await ChampionsManager.GetItemsByName(name, 0, 1);
+ // if (list.Count() == 1)
+ // {
+ // var skins = await SkinsManager.GetItemsByChampion(list.First(), 0, await SkinsManager.GetNbItemsByChampion(list.First()));
+ // if (skins.Count() != 0)
+ // {
+ // return Ok(skins.Select(skin => skin?.ToDTO()));
+ // }
+ // else { return NoContent(); }
+ // }
+ // else { return NoContent(); }
+ //}
+
+
+
+ // POST api/
+ [HttpPost]
public async Task Post(ChampionDTO champion)
{
if (champion == null)
@@ -112,21 +138,43 @@ namespace API_LoL.Controllers
}
else
{
+ var champ = await ChampionsManager.GetItemsByName(champion.Name, 0, 1);
+ if(champ.Count() != 0 && champ.FirstOrDefault().Name == champion.Name)
+ {
+ return Conflict(champion);
+ }
await ChampionsManager.AddItem(champion.ToChampion());
return CreatedAtAction("Post",champion);
+
}
}
// PUT api//5
- [HttpPut("{id}")]
- public void Put(int id, [FromBody] string value)
+ [HttpPut("name")]
+ public async Task Put(string name, ChampionDTO championDTO)
{
+ if(string.IsNullOrEmpty(name))
+ return BadRequest();
+ if(championDTO == null)
+ return UnprocessableEntity();
+ var list = await ChampionsManager.GetItemsByName(name, 0, 1);
+ if (list.Count() == 1)
+ {
+ return Ok(ChampionsManager.UpdateItem(list.First(), championDTO.ToChampion()));
+ }
+ else { return NoContent(); }
}
// DELETE api//5
- [HttpDelete("{id}")]
- public void Delete(int id)
+ [HttpDelete("name")]
+ public async Task Delete(string name)
{
+ if (string.IsNullOrEmpty(name))
+ return BadRequest();
+ var list = await ChampionsManager.GetItemsByName(name, 0, 1);
+ if(list.Count() == 1){
+ return Ok(await ChampionsManager.DeleteItem(list.First()));
+ }else { return NoContent(); }
}
}
}
diff --git a/Sources/API_LoL/Mapper/ChampionMapper.cs b/Sources/API_LoL/Mapper/ChampionMapper.cs
index 3dd6a11..632149e 100644
--- a/Sources/API_LoL/Mapper/ChampionMapper.cs
+++ b/Sources/API_LoL/Mapper/ChampionMapper.cs
@@ -12,19 +12,13 @@ namespace DTO.Mapper
{
public static ChampionDTO ToDTO(this Champion champion)
{
- return new ChampionDTO(champion.Name, champion.Bio, champion.Icon,champion.Class.ToDTO().ToString());
- //return new ChampionDTO(champion.Name, champion.Bio, champion.Icon, champion.Skills);
+ return new ChampionDTO(champion.Name, champion.Bio, champion.Icon, champion.Class.ToDTO(), champion.Image.Base64);
}
public static Champion ToChampion(this ChampionDTO champion)
{
- Champion champ = new Champion(champion.Name, champion.Class.ToChampionClass(), champion.Icon, "", champion.Bio);
+ return new Champion(champion.Name, champClass: champion.Class.ToChampionClass(),icon: champion.Icon,bio: champion.Bio,image :champion.Image);
- //foreach (Skill skill in champion.Skills)
- //{
- // champ.AddSkill(skill);
- //}
- return champ;
}
}
}
diff --git a/Sources/API_LoL/Mapper/SkinMapper.cs b/Sources/API_LoL/Mapper/SkinMapper.cs
index 25ac8f6..5b18c55 100644
--- a/Sources/API_LoL/Mapper/SkinMapper.cs
+++ b/Sources/API_LoL/Mapper/SkinMapper.cs
@@ -7,12 +7,12 @@ namespace API_LoL.Mapper
{
public static SkinDTO ToDTO(this Skin skin)
{
- return new SkinDTO(skin.Name, skin.Description, skin.Icon);
+ return new SkinDTO(skin.Name, skin.Description, skin.Icon,skin.Image.Base64,skin.Price);
}
public static Skin ToSkin(this SkinDTO skin)
{
- return new Skin(skin.Name, null, icon:skin.Icon) ;
+ return new Skin(skin.Name, null,price: skin.Price, icon:skin.Icon,image: skin.Image,description: skin.Description) ;
}
}
}
diff --git a/Sources/API_LoL/Program.cs b/Sources/API_LoL/Program.cs
index a42b38f..f1b44d0 100644
--- a/Sources/API_LoL/Program.cs
+++ b/Sources/API_LoL/Program.cs
@@ -1,4 +1,6 @@
using API_LoL;
+using EntityFramework;
+using EntityFramework.Manager;
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using Microsoft.AspNetCore.Mvc.Versioning;
using Model;
@@ -11,7 +13,7 @@ var builder = WebApplication.CreateBuilder(args);
///NOT WORKING WHEN CHANGING VERSIONS :
/// voir sur https://blog.christian-schou.dk/how-to-use-api-versioning-in-net-core-web-api/ rubrique "Configure SwaggerOptions"
-/// (mais requiere l'injection de dépendance).
+/// (mais requiere l'injection de d�pendance).
/// Sinon, code plus simple disponible par le prof
@@ -37,15 +39,24 @@ builder.Services.AddControllers();
-builder.Services.AddScoped();
+//builder.Services.AddScoped();
builder.Services.AddHttpClient();
+//builder.Services.AddScoped();
+builder.Services.AddScoped();
+builder.Services.AddDbContext();
var app = builder.Build();
+using(var scope = app.Services.CreateScope())
+{
+ var context = scope.ServiceProvider.GetService();
+ context.Database.EnsureCreated();
+}
+
var apiVersionDescriptionProvider = app.Services.GetRequiredService();
diff --git a/Sources/API_LoL/champion.db b/Sources/API_LoL/champion.db
new file mode 100644
index 0000000..cfdeed2
Binary files /dev/null and b/Sources/API_LoL/champion.db differ
diff --git a/Sources/Api_UT/ChampionControllerTest.cs b/Sources/Api_UT/ChampionControllerTest.cs
index a3ca675..09c7875 100644
--- a/Sources/Api_UT/ChampionControllerTest.cs
+++ b/Sources/Api_UT/ChampionControllerTest.cs
@@ -21,7 +21,7 @@ namespace Api_UT
public async Task Get_Default_OkList()
{
- List list = new List {new ChampionDTO("Akali","","","Assassin"), new ChampionDTO("Aatrox", "", "", "Fighter"), new ChampionDTO("Ahri", "", "", "Mage"), new ChampionDTO("Akshan", "", "", "Marksman"), new ChampionDTO("Bard", "", "","Support"), new ChampionDTO("Alistar", "", "","Tank") };
+ List list = new List {new ChampionDTO("Akali","","","Assassin",""), new ChampionDTO("Aatrox", "", "", "Fighter",""), new ChampionDTO("Ahri", "", "", "Mage",""), new ChampionDTO("Akshan", "", "", "Marksman",""), new ChampionDTO("Bard", "", "","Support",""), new ChampionDTO("Alistar", "", "","Tank","") };
IActionResult a = await api.Get();
a.Should().NotBeNull();
var aObject = a as OkObjectResult;
@@ -42,7 +42,7 @@ namespace Api_UT
[TestMethod]
public async Task Get_2First_OkListOf2()
{
- List list = new List { new ChampionDTO("Akali", "", "", "Assassin"), new ChampionDTO("Aatrox", "", "", "Fighter") };
+ List list = new List { new ChampionDTO("Akali", "", "", "Assassin",""), new ChampionDTO("Aatrox", "", "", "Fighter","") };
IActionResult a = await api.Get(index: 0,size: 2);
@@ -57,7 +57,7 @@ namespace Api_UT
[TestMethod]
public async Task Get_FilterAName_OkListOf5()
{
- List list = new List { new ChampionDTO("Akali", "", "", "Assassin"), new ChampionDTO("Akshan", "", "", "Marksman") };
+ List list = new List { new ChampionDTO("Akali", "", "", "Assassin", ""), new ChampionDTO("Akshan", "", "", "Marksman", "") };
IActionResult a = await api.Get(name: "Ak");
@@ -75,10 +75,12 @@ namespace Api_UT
public async Task Post_ValidChampion_Created()
{
ChampionsController api = new ChampionsController(new StubData());
- IActionResult a = await api.Post(new ChampionDTO("nom","bio","icon", "Assassin"));
+ IActionResult a = await api.Post(new ChampionDTO("nom","bio","icon", "Assassin",""));
+ var action = (CreatedAtActionResult)a;
+ var champAction = action.Value as IEnumerable;
Assert.IsNotNull(a);
- ChampionDTO champ = new ChampionDTO("nom", "bio", "icon","Assassin");
- Assert.IsTrue(champ.equals((ChampionDTO)((CreatedAtActionResult)a).Value));
+ ChampionDTO champ = new ChampionDTO("nom", "bio", "icon","Assassin", "");
+ Assert.IsTrue(champ.equals(other: (ChampionDTO)((CreatedAtActionResult)a).Value));
}
}
diff --git a/Sources/DTO/ChampionDTO.cs b/Sources/DTO/ChampionDTO.cs
index 723d7b4..23478dd 100644
--- a/Sources/DTO/ChampionDTO.cs
+++ b/Sources/DTO/ChampionDTO.cs
@@ -5,17 +5,19 @@ namespace DTO
{
public class ChampionDTO
{
- public ChampionDTO(string name, string bio, string icon, string championClassDTO)
+ public ChampionDTO(string name, string bio, string icon, string Class, string image)
{
Name = name;
Bio = bio;
Icon = icon;
- Class = championClassDTO;
+ this.Class = Class;
+ Image = image;
}
public string Name { get; set; }
public string Bio { get; set; }
public string Icon { get; set; }
+ public string Image { get; set; }
public string Class { get; set; }
public bool equals(ChampionDTO other)
diff --git a/Sources/DTO/SkinDTO.cs b/Sources/DTO/SkinDTO.cs
index 32696d6..eb255f6 100644
--- a/Sources/DTO/SkinDTO.cs
+++ b/Sources/DTO/SkinDTO.cs
@@ -13,10 +13,16 @@ namespace DTO
public string Description { get; set; }
public string Icon { get; set; }
- public SkinDTO(string name,string description,string icon) {
+ public string Image { get; set; }
+
+ public float Price { get; set; }
+
+ public SkinDTO(string name,string description,string icon,string image,float price) {
this.Name = name;
this.Description = description;
this.Icon = icon;
+ this.Image = image;
+ this.Price = price;
}
}
diff --git a/Sources/EF_UT/EFDataManagerChampionTest.cs b/Sources/EF_UT/EFDataManagerChampionTest.cs
new file mode 100644
index 0000000..07e3ca2
--- /dev/null
+++ b/Sources/EF_UT/EFDataManagerChampionTest.cs
@@ -0,0 +1,53 @@
+using EntityFramework;
+using EntityFramework.Manager;
+using FluentAssertions;
+using FluentAssertions.Primitives;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EF_UT
+{
+ [TestClass]
+ public class EFDataManagerChampionTest
+ {
+ [TestMethod]
+ public void Add_ValidChampion_Added()
+ {
+ IDataManager dataManager = new EFDataManager();
+ IChampionsManager championsManager = dataManager.ChampionsMgr;
+
+ var champ = championsManager.AddItem(new Champion("test"));
+ }
+
+ [TestMethod]
+ public async Task GetItemsByName_DefaultChamp_One()
+ {
+ var builder = WebApplication.CreateBuilder();
+
+ builder.Services.AddDbContext();
+
+ var app = builder.Build();
+
+ using (var scope = app.Services.CreateScope())
+ {
+ var context = scope.ServiceProvider.GetService();
+ context.Database.EnsureCreated();
+ }
+
+ IDataManager dataManager = new EFDataManager();
+ IChampionsManager championsManager = dataManager.ChampionsMgr;
+
+ var ak = (await championsManager.GetItemsByName("A", 0, 1)).First();
+
+ Assert.IsNotNull(ak);
+ //Assert.AreEqual("Akali", ak.Name);
+ }
+ }
+}
diff --git a/Sources/EntityFramework/EntityFramework.csproj b/Sources/EntityFramework/EntityFramework.csproj
index 2d1f7fc..358fe36 100644
--- a/Sources/EntityFramework/EntityFramework.csproj
+++ b/Sources/EntityFramework/EntityFramework.csproj
@@ -1,4 +1,4 @@
-
+
Exe
@@ -8,6 +8,14 @@
$(MSBuildProjectDirectory)
+
+
+
+
+
+
+
+
@@ -18,6 +26,7 @@
+
diff --git a/Sources/EntityFramework/LoLDbContext.cs b/Sources/EntityFramework/LoLDbContext.cs
index af9be3b..003ff03 100644
--- a/Sources/EntityFramework/LoLDbContext.cs
+++ b/Sources/EntityFramework/LoLDbContext.cs
@@ -35,7 +35,7 @@ namespace EntityFramework
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().HasKey(entity => entity.Name);
- modelBuilder.Entity().ToTable("Champion");
+ modelBuilder.Entity().ToTable("Champions");
//modelBuilder.Entity().Property(entity => entity.Id)
// .ValueGeneratedOnAdd();
diff --git a/Sources/EntityFramework/Manager/EFDataManager.Champions.cs b/Sources/EntityFramework/Manager/EFDataManager.Champions.cs
new file mode 100644
index 0000000..689959b
--- /dev/null
+++ b/Sources/EntityFramework/Manager/EFDataManager.Champions.cs
@@ -0,0 +1,186 @@
+using EntityFramework.Mapper;
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+
+namespace EntityFramework.Manager
+{
+ public partial class EFDataManager
+ {
+ public class ChampionsManager : IChampionsManager
+ {
+ private readonly EFDataManager parent;
+
+ public ChampionsManager(EFDataManager parent)
+ {
+ this.parent = parent;
+ }
+
+ public async Task AddItem(Champion? item)
+ {
+ using(var context = new LoLDBContextWithStub())
+ {
+ if (item != null)
+ {
+
+ context.Add(item.ToEntity());
+ context.SaveChanges();
+ return item;
+ }
+ else
+ {
+ throw new Exception();
+ }
+ }
+ }
+
+ public async Task DeleteItem(Champion? item)
+ {
+ using (var context = new LoLDBContextWithStub())
+ {
+ var champ = context.Champions.Select(c => c == item.ToEntity());
+
+ if(champ.Count()<1)
+ {
+ return false;
+ }
+ context.Champions.Remove(item.ToEntity());
+ context.SaveChanges();
+ return true;
+
+ }
+ }
+
+ public async Task> GetItems(int index, int count, string? orderingPropertyName = null, bool descending = false)
+ {
+ using(var context = new LoLDBContextWithStub() )
+ {
+ var champ = context.Champions.ToArray();
+ if (descending == false)
+ {
+ return champ.ToList().Skip(index * count).Take(count).Select(c => c.ToChampion()).OrderBy(c => c.Name);
+ }
+ else
+ {
+ return champ.ToList().Skip(index * count).Take(count).Select(c => c.ToChampion()).OrderByDescending(c => c.Name);
+ }
+ }
+ }
+
+ public Task> GetItemsByCharacteristic(string charName, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task> GetItemsByClass(Model.ChampionClass championClass, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public async Task> GetItemsByName(string substring, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ {
+ using (var context = new LoLDBContextWithStub())
+ {
+ var champ = context.Champions.Where(c => c.Name.Contains(substring)).AsEnumerable();
+ if (descending == false)
+ {
+ return champ.Select(c => c.ToChampion()).ToList().Skip(index * count).Take(count).OrderBy(c=> c.Name);
+
+ }
+ else
+ {
+ return champ.Select(c => c.ToChampion()).ToList().Skip(index*count).Take(count).OrderByDescending(c => c.Name);
+
+ }
+
+
+
+ }
+ }
+
+ public Task> GetItemsByRunePage(RunePage? runePage, 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)
+ {
+ throw new NotImplementedException();
+ }
+
+ public async Task> GetItemsBySkill(string skill, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ {
+ using(var context = new LoLDBContextWithStub())
+ {
+ var champ = context.Champions.Where(c => c.Skills.Any(c => c.Name.Contains(skill)));
+ if (descending.Equals(false))
+ {
+ return champ.Select(c=> c.ToChampion()).ToList().Skip(index * count).Take(count).OrderBy(c => c.Name);
+
+ }
+ else
+ {
+ return champ.Select(c => c.ToChampion()).ToList().Skip(index * count).Take(count).OrderByDescending(c => c.Name);
+ }
+ }
+ }
+
+ public async Task GetNbItems()
+ {
+ using(var context = new LoLDBContextWithStub())
+ {
+ return context.Champions.Count();
+ }
+ }
+
+ public Task GetNbItemsByCharacteristic(string charName)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task GetNbItemsByClass(Model.ChampionClass championClass)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task GetNbItemsByName(string substring)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task GetNbItemsByRunePage(RunePage? runePage)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task GetNbItemsBySkill(Skill? skill)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task GetNbItemsBySkill(string skill)
+ {
+ throw new NotImplementedException();
+ }
+
+ public async Task UpdateItem(Champion? oldItem, Champion? newItem)
+ {
+ using(var context = new LoLDBContextWithStub())
+ {
+ if (oldItem != null && newItem != null)
+ {
+ var champ = context.Champions.Where(c => c == oldItem.ToEntity()).First();
+ champ = newItem.ToEntity();
+ context.SaveChanges();
+ return newItem;
+ }
+ else { throw new Exception(); }
+ }
+ }
+ }
+ }
+}
diff --git a/Sources/EntityFramework/Manager/EFDataManager.Skins.cs b/Sources/EntityFramework/Manager/EFDataManager.Skins.cs
new file mode 100644
index 0000000..bed5678
--- /dev/null
+++ b/Sources/EntityFramework/Manager/EFDataManager.Skins.cs
@@ -0,0 +1,85 @@
+using EntityFramework.Mapper;
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EntityFramework.Manager
+{
+ public partial class EFDataManager
+ {
+ public class SkinsManager : ISkinsManager
+ {
+ private readonly EFDataManager parent;
+
+ public SkinsManager(EFDataManager parent)
+ {
+ this.parent = parent;
+ }
+
+ public Task AddItem(Skin? item)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task DeleteItem(Skin? item)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task> GetItems(int index, int count, string? orderingPropertyName = null, bool descending = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public async Task> GetItemsByChampion(Champion? champion, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ {
+ using (var context = new LoLDBContextWithStub())
+ {
+ var skins = context.Skins.Where(c => c.Champion.Equals(champion)).ToList();
+
+ if (descending == false)
+ {
+ return skins.Select(c => c.ToSkin()).ToList().Skip(index * count).Take(count).OrderBy(c => c.Name);
+
+ }
+ else
+ {
+ return skins.Select(c => c.ToSkin()).ToList().Skip(index * count).Take(count).OrderByDescending(c => c.Name);
+
+ }
+ }
+ }
+
+ public Task> GetItemsByName(string substring, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task GetNbItems()
+ {
+ throw new NotImplementedException();
+ }
+
+ public async Task GetNbItemsByChampion(Champion? champion)
+ {
+ using(var context = new LoLDBContextWithStub())
+ {
+ return context.Skins.Where(c => c.Champion.Equals(champion.ToEntity())).Count();
+ }
+ }
+
+ public Task GetNbItemsByName(string substring)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task UpdateItem(Skin? oldItem, Skin? newItem)
+ {
+ throw new NotImplementedException();
+ }
+ }
+ }
+}
diff --git a/Sources/EntityFramework/Manager/EFDataManager.cs b/Sources/EntityFramework/Manager/EFDataManager.cs
new file mode 100644
index 0000000..5c5d677
--- /dev/null
+++ b/Sources/EntityFramework/Manager/EFDataManager.cs
@@ -0,0 +1,25 @@
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EntityFramework.Manager
+{
+ public partial class EFDataManager : IDataManager
+ {
+ public EFDataManager() {
+ ChampionsMgr = new ChampionsManager(this);
+ SkinsMgr = new SkinsManager(this);
+ }
+ public IChampionsManager ChampionsMgr { get; }
+
+ public ISkinsManager SkinsMgr { get; }
+
+ public IRunesManager RunesMgr { get; }
+
+ public IRunePagesManager RunePagesMgr { get; }
+
+ }
+}
diff --git a/Sources/EntityFramework/Mapper/ChampionMapper.cs b/Sources/EntityFramework/Mapper/ChampionMapper.cs
index 14942d1..da146b2 100644
--- a/Sources/EntityFramework/Mapper/ChampionMapper.cs
+++ b/Sources/EntityFramework/Mapper/ChampionMapper.cs
@@ -12,5 +12,11 @@ namespace EntityFramework.Mapper
public static ChampionEntity ToEntity(this Champion champion) {
return new ChampionEntity { Name = champion.Name, Bio = champion.Bio, Icon = champion.Icon };
}
+
+ public static Champion ToChampion(this ChampionEntity champion)
+ {
+ return new Champion(champion.Name,bio: champion.Bio,icon: champion.Icon);
+ }
+
}
}
diff --git a/Sources/EntityFramework/Mapper/SkinMapper.cs b/Sources/EntityFramework/Mapper/SkinMapper.cs
new file mode 100644
index 0000000..3ce09ff
--- /dev/null
+++ b/Sources/EntityFramework/Mapper/SkinMapper.cs
@@ -0,0 +1,24 @@
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EntityFramework.Mapper
+{
+ public static class SkinMapper
+ {
+ public static SkinEntity ToEntity(this Skin skin)
+ {
+ return new SkinEntity { Champion = skin.Champion.ToEntity(), Description = skin.Description, Icon = skin.Icon, Image = skin.Image.Base64, Name = skin.Name, Price = skin.Price };
+ }
+
+ public static Skin ToSkin(this SkinEntity entity)
+ {
+ return new Skin(entity.Name,entity.Champion.ToChampion(),price: entity.Price,icon: entity.Icon, image: entity.Image,description: entity.Description);
+ }
+
+
+ }
+}
diff --git a/Sources/EntityFramework/Migrations/20230315145258_myMig.Designer.cs b/Sources/EntityFramework/Migrations/20230319224555_myMig.Designer.cs
similarity index 98%
rename from Sources/EntityFramework/Migrations/20230315145258_myMig.Designer.cs
rename to Sources/EntityFramework/Migrations/20230319224555_myMig.Designer.cs
index 34ce7d8..2a90b9d 100644
--- a/Sources/EntityFramework/Migrations/20230315145258_myMig.Designer.cs
+++ b/Sources/EntityFramework/Migrations/20230319224555_myMig.Designer.cs
@@ -10,7 +10,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace EntityFramework.Migrations
{
[DbContext(typeof(LoLDBContextWithStub))]
- [Migration("20230315145258_myMig")]
+ [Migration("20230319224555_myMig")]
partial class myMig
{
///
@@ -40,7 +40,7 @@ namespace EntityFramework.Migrations
b.HasKey("Name");
- b.ToTable("Champion", (string)null);
+ b.ToTable("Champions", (string)null);
b.HasData(
new
diff --git a/Sources/EntityFramework/Migrations/20230315145258_myMig.cs b/Sources/EntityFramework/Migrations/20230319224555_myMig.cs
similarity index 91%
rename from Sources/EntityFramework/Migrations/20230315145258_myMig.cs
rename to Sources/EntityFramework/Migrations/20230319224555_myMig.cs
index 86b3a87..0e61c80 100644
--- a/Sources/EntityFramework/Migrations/20230315145258_myMig.cs
+++ b/Sources/EntityFramework/Migrations/20230319224555_myMig.cs
@@ -13,7 +13,7 @@ namespace EntityFramework.Migrations
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
- name: "Champion",
+ name: "Champions",
columns: table => new
{
Name = table.Column(type: "TEXT", maxLength: 50, nullable: false),
@@ -23,7 +23,7 @@ namespace EntityFramework.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Champion", x => x.Name);
+ table.PrimaryKey("PK_Champions", x => x.Name);
});
migrationBuilder.CreateTable(
@@ -52,9 +52,9 @@ namespace EntityFramework.Migrations
{
table.PrimaryKey("PK_SkillEntity", x => x.Name);
table.ForeignKey(
- name: "FK_SkillEntity_Champion_ChampionEntityName",
+ name: "FK_SkillEntity_Champions_ChampionEntityName",
column: x => x.ChampionEntityName,
- principalTable: "Champion",
+ principalTable: "Champions",
principalColumn: "Name");
});
@@ -73,14 +73,14 @@ namespace EntityFramework.Migrations
{
table.PrimaryKey("PK_Skins", x => x.Name);
table.ForeignKey(
- name: "FK_Skins_Champion_ChampionEntityForeignKey",
+ name: "FK_Skins_Champions_ChampionEntityForeignKey",
column: x => x.ChampionEntityForeignKey,
- principalTable: "Champion",
+ principalTable: "Champions",
principalColumn: "Name");
});
migrationBuilder.InsertData(
- table: "Champion",
+ table: "Champions",
columns: new[] { "Name", "Bio", "Icon", "Image" },
values: new object[,]
{
@@ -116,7 +116,7 @@ namespace EntityFramework.Migrations
name: "Skins");
migrationBuilder.DropTable(
- name: "Champion");
+ name: "Champions");
}
}
}
diff --git a/Sources/EntityFramework/Migrations/LoLDBContextWithStubModelSnapshot.cs b/Sources/EntityFramework/Migrations/LoLDBContextWithStubModelSnapshot.cs
index 1bbd357..e00a86a 100644
--- a/Sources/EntityFramework/Migrations/LoLDBContextWithStubModelSnapshot.cs
+++ b/Sources/EntityFramework/Migrations/LoLDBContextWithStubModelSnapshot.cs
@@ -37,7 +37,7 @@ namespace EntityFramework.Migrations
b.HasKey("Name");
- b.ToTable("Champion", (string)null);
+ b.ToTable("Champions", (string)null);
b.HasData(
new
diff --git a/Sources/EntityFramework/Program.cs b/Sources/EntityFramework/Program.cs
index 818faa5..8c67f3f 100644
--- a/Sources/EntityFramework/Program.cs
+++ b/Sources/EntityFramework/Program.cs
@@ -1,78 +1,86 @@
// See https://aka.ms/new-console-template for more information
using EntityFramework;
+using EntityFramework.Manager;
using Microsoft.EntityFrameworkCore;
+using Model;
-using ( var context = new LoLDbContext())
-{
- //context.Add(new ChampionEntity{ Name = "test", Bio = "test", Icon = "test" } );
- context.SaveChanges();
+IDataManager dataManager = new EFDataManager();
+IChampionsManager championsManager = dataManager.ChampionsMgr;
+IEnumerable champions = await championsManager.GetItemsByName("A", 0, 1);
+Console.WriteLine(champions.First().Name);
- ChampionEntity champ = context.Find("Akali");
- if( champ != null)
- {
- Console
- .WriteLine(champ.ToString());
+//using ( var context = new LoLDbContext())
+//{
+// //context.Add(new ChampionEntity{ Name = "test", Bio = "test", Icon = "test" } );
+// context.SaveChanges();
- }
- else
- {
- Console.WriteLine("Not Found");
- }
+// ChampionEntity champ = context.Find("Akali");
- //Test BDD Skills
- ChampionEntity champSkill = new ChampionEntity { Name="nomSkill", Bio="bioSkill", Icon="iconSkill" };
+// if( champ != null)
+// {
+// Console
+// .WriteLine(champ.ToString());
- //SkillEntity s1 = new SkillEntity { Name = "Skill1", Description = "desc", Type = SkillType.Unknown };
- SkillEntity s2 = new SkillEntity { Name="Skill2", Description="desc2", Type=SkillType.Ultimate };
- SkillEntity s3 = new SkillEntity { Name = "Skill3", Description = "desc3", Type = SkillType.Passive };
+// }
+// else
+// {
+// Console.WriteLine("Not Found");
+// }
- champSkill.AddSkill(new SkillEntity { Name = "Skill1", Description = "desc", Type = SkillType.Unknown });
- champSkill.AddSkill(s2);
- champSkill.AddSkill(s3);
+// //Test BDD Skills
+// ChampionEntity champSkill = new ChampionEntity { Name="nomSkill", Bio="bioSkill", Icon="iconSkill" };
- context.Add(champSkill);
+// //SkillEntity s1 = new SkillEntity { Name = "Skill1", Description = "desc", Type = SkillType.Unknown };
+// SkillEntity s2 = new SkillEntity { Name="Skill2", Description="desc2", Type=SkillType.Ultimate };
+// SkillEntity s3 = new SkillEntity { Name = "Skill3", Description = "desc3", Type = SkillType.Passive };
- context.SaveChanges();
+// champSkill.AddSkill(new SkillEntity { Name = "Skill1", Description = "desc", Type = SkillType.Unknown });
+// champSkill.AddSkill(s2);
+// champSkill.AddSkill(s3);
+// context.Add(champSkill);
- //OneToMany
- Console.WriteLine("Champions : ");
- foreach (var champi in context.Champions.Include(a => a.skins))
- {
- Console.WriteLine($"\t{champi.Name} : {champi.Bio}");
- foreach (var s in champi.skins)
- {
- Console.WriteLine($"\t\t{s.Name}");
- }
- }
+// context.SaveChanges();
- Console.WriteLine();
- Console.WriteLine("Skin :");
- foreach (var s in context.Skins)
- {
- Console.WriteLine($"\t{s.Name}: {s.Description} (Champion : {s.Champion.Name})");
- }
+// //OneToMany
+// Console.WriteLine("Champions : ");
+// foreach (var champi in context.Champions.Include(a => a.skins))
+// {
+// Console.WriteLine($"\t{champi.Name} : {champi.Bio}");
+// foreach (var s in champi.skins)
+// {
+// Console.WriteLine($"\t\t{s.Name}");
+// }
+// }
+// Console.WriteLine();
- Console.WriteLine("\nAjout d'un Champion et 6 Skins...\n");
+// Console.WriteLine("Skin :");
+// foreach (var s in context.Skins)
+// {
+// Console.WriteLine($"\t{s.Name}: {s.Description} (Champion : {s.Champion.Name})");
+// }
- ChampionEntity captainMarvel = new ChampionEntity { Name = "Captain Marvel", Bio="Mais que fait un avenger ici ??", Icon="Icon.png"};
- SkinEntity[] skins = { new SkinEntity {Name = "La Fiesta", Champion = captainMarvel},
- new SkinEntity { Name = "Five Hundred Miles High", Champion = captainMarvel },
- new SkinEntity { Name = "Captain Marvel", Champion = captainMarvel },
- new SkinEntity { Name = "Time's Lie", Champion = captainMarvel },
- new SkinEntity { Name = "Lush Life", Champion = captainMarvel },
- new SkinEntity { Name = "Day Waves", Champion = captainMarvel }
- };
- foreach (var s in skins)
- {
- captainMarvel.skins.Add(s);
- }
- context.Add(captainMarvel);
- context.SaveChanges();
+// Console.WriteLine("\nAjout d'un Champion et 6 Skins...\n");
+// ChampionEntity captainMarvel = new ChampionEntity { Name = "Captain Marvel", Bio="Mais que fait un avenger ici ??", Icon="Icon.png"};
+// SkinEntity[] skins = { new SkinEntity {Name = "La Fiesta", Champion = captainMarvel},
+// new SkinEntity { Name = "Five Hundred Miles High", Champion = captainMarvel },
+// new SkinEntity { Name = "Captain Marvel", Champion = captainMarvel },
+// new SkinEntity { Name = "Time's Lie", Champion = captainMarvel },
+// new SkinEntity { Name = "Lush Life", Champion = captainMarvel },
+// new SkinEntity { Name = "Day Waves", Champion = captainMarvel }
+// };
+// foreach (var s in skins)
+// {
+// captainMarvel.skins.Add(s);
+// }
-}
+// context.Add(captainMarvel);
+// context.SaveChanges();
+
+
+//}
diff --git a/Sources/EntityFramework/champion.db b/Sources/EntityFramework/champion.db
index d4cefaf..d6b07a7 100644
Binary files a/Sources/EntityFramework/champion.db and b/Sources/EntityFramework/champion.db differ
diff --git a/Sources/StubLib/StubData.Champions.cs b/Sources/StubLib/StubData.Champions.cs
index ad19275..90a33d9 100644
--- a/Sources/StubLib/StubData.Champions.cs
+++ b/Sources/StubLib/StubData.Champions.cs
@@ -8,7 +8,7 @@ namespace StubLib
private List champions = new()
{
new Champion("Akali", ChampionClass.Assassin),
- new Champion("Aatrox", ChampionClass.Fighter),
+ new Champion("Aatrox", ChampionClass.Fighter),
new Champion("Ahri", ChampionClass.Mage),
new Champion("Akshan", ChampionClass.Marksman),
new Champion("Bard", ChampionClass.Support),