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..1a077b8 100644
--- a/Sources/API_LoL/Controllers/ChampionsController.cs
+++ b/Sources/API_LoL/Controllers/ChampionsController.cs
@@ -92,9 +92,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(); }
diff --git a/Sources/API_LoL/Program.cs b/Sources/API_LoL/Program.cs
index c192eac..7c535a4 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;
@@ -37,13 +39,19 @@ builder.Services.AddControllers();
-builder.Services.AddScoped();
-
-
+//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..bea5ebd
Binary files /dev/null and b/Sources/API_LoL/champion.db differ
diff --git a/Sources/API_LoL/champion.db-shm b/Sources/API_LoL/champion.db-shm
new file mode 100644
index 0000000..fe9ac28
Binary files /dev/null and b/Sources/API_LoL/champion.db-shm differ
diff --git a/Sources/API_LoL/champion.db-wal b/Sources/API_LoL/champion.db-wal
new file mode 100644
index 0000000..e69de29
diff --git a/Sources/EF_UT/EFDataManagerChampionTest.cs b/Sources/EF_UT/EFDataManagerChampionTest.cs
index 843a4e5..80f34af 100644
--- a/Sources/EF_UT/EFDataManagerChampionTest.cs
+++ b/Sources/EF_UT/EFDataManagerChampionTest.cs
@@ -1,6 +1,7 @@
using EntityFramework;
using EntityFramework.Manager;
using FluentAssertions;
+using FluentAssertions.Primitives;
using Microsoft.EntityFrameworkCore;
using Model;
using System;
@@ -22,5 +23,17 @@ namespace EF_UT
var champ = championsManager.AddItem(new Champion("test"));
}
+
+ //[TestMethod]
+ //public async Task GetItemsByName_DefaultChamp_One()
+ //{
+ // 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/Manager/EFDataManager.Champions.cs b/Sources/EntityFramework/Manager/EFDataManager.Champions.cs
index c0ecda6..e784096 100644
--- a/Sources/EntityFramework/Manager/EFDataManager.Champions.cs
+++ b/Sources/EntityFramework/Manager/EFDataManager.Champions.cs
@@ -41,9 +41,20 @@ namespace EntityFramework.Manager
throw new NotImplementedException();
}
- public Task> GetItems(int index, int count, string? orderingPropertyName = null, bool descending = false)
+ public async Task> GetItems(int index, int count, string? orderingPropertyName = null, bool descending = false)
{
- throw new NotImplementedException();
+ 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)
@@ -60,11 +71,20 @@ namespace EntityFramework.Manager
{
using (var context = new LoLDBContextWithStub())
{
-
var champ = context.Champions.Where(c => c.Name.Contains(substring)).AsEnumerable();
- return champ.Select(c => c.ToChampion()).ToList();
+ 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);
+
+ }
+
+
-
}
}
@@ -78,9 +98,21 @@ namespace EntityFramework.Manager
throw new NotImplementedException();
}
- public Task> GetItemsBySkill(string skill, int index, int count, string? orderingPropertyName = null, bool descending = false)
+ public async Task> GetItemsBySkill(string skill, int index, int count, string? orderingPropertyName = null, bool descending = false)
{
- throw new NotImplementedException();
+ 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 Task GetNbItems()
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
index 9465809..5c5d677 100644
--- a/Sources/EntityFramework/Manager/EFDataManager.cs
+++ b/Sources/EntityFramework/Manager/EFDataManager.cs
@@ -11,6 +11,7 @@ namespace EntityFramework.Manager
{
public EFDataManager() {
ChampionsMgr = new ChampionsManager(this);
+ SkinsMgr = new SkinsManager(this);
}
public IChampionsManager ChampionsMgr { get; }
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/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();
+
+
+//}