feat + perf : ajout d'une méthode pour les lobbies + modifications des constructeurs permettant une meilleure injection de dépendance
continuous-integration/drone/push Build is passing Details

API
Damien NORTIER 1 year ago
parent 9ccf950f7c
commit 5b7f683bff

@ -1,4 +1,5 @@
using DbConnectionLibrairie; using DbConnectionLibrairie;
using Entities;
using EntityManagers; using EntityManagers;
using ExtensionsClassLibrairie; using ExtensionsClassLibrairie;
using ManagerInterfaces; using ManagerInterfaces;
@ -7,10 +8,15 @@ using OrderCriterias;
namespace DataManagers namespace DataManagers
{ {
public class AdministratorDataManager(MyDbContext dbContext) : IAdministratorManager<Administrator> public class AdministratorDataManager : IAdministratorManager<Administrator>
{ {
private AdministratorEntityManager manager = new AdministratorEntityManager(dbContext); private IAdministratorManager<AdministratorEntity> manager;
public AdministratorDataManager(IAdministratorManager<AdministratorEntity> manager)
{
this.manager = manager;
}
public async Task<Administrator> addAdmin(Administrator admin) public async Task<Administrator> addAdmin(Administrator admin)
{ {

@ -1,4 +1,5 @@
using DbConnectionLibrairie; using DbConnectionLibrairie;
using Entities;
using EntityManagers; using EntityManagers;
using ExtensionsClassLibrairie; using ExtensionsClassLibrairie;
using ManagerInterfaces; using ManagerInterfaces;
@ -12,10 +13,15 @@ using System.Threading.Tasks;
namespace DataManagers namespace DataManagers
{ {
public class AnswerDataManager(MyDbContext dbContext) : IAnswerManager<Answer> public class AnswerDataManager : IAnswerManager<Answer>
{ {
private AnswerEntityManager manager = new AnswerEntityManager(dbContext); private IAnswerManager<AnswerEntity> manager;
public AnswerDataManager(IAnswerManager<AnswerEntity> manager)
{
this.manager = manager;
}
public async Task<Answer> addAnswer(Answer answer) public async Task<Answer> addAnswer(Answer answer)
{ {

@ -1,4 +1,5 @@
using DbConnectionLibrairie; using DbConnectionLibrairie;
using Entities;
using EntityManagers; using EntityManagers;
using ExtensionsClassLibrairie; using ExtensionsClassLibrairie;
using ManagerInterfaces; using ManagerInterfaces;
@ -12,10 +13,15 @@ using System.Threading.Tasks;
namespace DataManagers namespace DataManagers
{ {
public class ChapterDataManager(MyDbContext dbContext) : IChapterManager<Chapter> public class ChapterDataManager : IChapterManager<Chapter>
{ {
private ChapterEntityManager manager = new ChapterEntityManager(dbContext); private IChapterManager<ChapterEntity> manager;
public ChapterDataManager(IChapterManager<ChapterEntity> manager)
{
this.manager = manager;
}
public async Task<Chapter> addChapter(Chapter chapter) public async Task<Chapter> addChapter(Chapter chapter)
{ {
return await Task.FromResult<Chapter>((await manager.addChapter(chapter.ToEntity())).ToModel()); return await Task.FromResult<Chapter>((await manager.addChapter(chapter.ToEntity())).ToModel());

@ -1,4 +1,5 @@
using DbConnectionLibrairie; using DbConnectionLibrairie;
using Entities;
using EntityManagers; using EntityManagers;
using ExtensionsClassLibrairie; using ExtensionsClassLibrairie;
using ManagerInterfaces; using ManagerInterfaces;
@ -12,9 +13,14 @@ using System.Threading.Tasks;
namespace DataManagers namespace DataManagers
{ {
public class LobbyDataManager(MyDbContext dbContext) : ILobbyManager<Lobby> public class LobbyDataManager : ILobbyManager<Lobby>
{ {
private LobbyEntityManager manager = new LobbyEntityManager(dbContext); private ILobbyManager<LobbyEntity> manager;
public LobbyDataManager(ILobbyManager<LobbyEntity> manager)
{
this.manager = manager;
}
public async Task<Lobby> addLobby(Lobby lobby) public async Task<Lobby> addLobby(Lobby lobby)
{ {
@ -41,6 +47,11 @@ namespace DataManagers
return await Task.FromResult<Lobby?>((await manager.getLobby(id))?.ToModel()); return await Task.FromResult<Lobby?>((await manager.getLobby(id))?.ToModel());
} }
public async Task<Lobby?> getLobby(string name, int? idCreator)
{
return (await manager.getLobby(name, idCreator))?.ToModel();
}
public int getNbLobbies() public int getNbLobbies()
{ {
return manager.getNbLobbies(); return manager.getNbLobbies();

@ -1,4 +1,5 @@
using DbConnectionLibrairie; using DbConnectionLibrairie;
using Entities;
using EntityManagers; using EntityManagers;
using ExtensionsClassLibrairie; using ExtensionsClassLibrairie;
using ManagerInterfaces; using ManagerInterfaces;
@ -12,9 +13,14 @@ using System.Threading.Tasks;
namespace DataManagers namespace DataManagers
{ {
public class PlayerDataManager(MyDbContext dbContext) : IPlayerManager<Player> public class PlayerDataManager : IPlayerManager<Player>
{ {
private PlayerEntityManager manager = new PlayerEntityManager(dbContext); private IPlayerManager<PlayerEntity> manager;
public PlayerDataManager(IPlayerManager<PlayerEntity> manager)
{
this.manager = manager;
}
public async Task<Player> addPlayer(Player player) public async Task<Player> addPlayer(Player player)
{ {

@ -13,10 +13,15 @@ using System.Threading.Tasks;
namespace DataManagers namespace DataManagers
{ {
public class QuestionDataManager(MyDbContext dbContext) : IQuestionManager<Question> public class QuestionDataManager : IQuestionManager<Question>
{ {
private QuestionEntityManager manager = new QuestionEntityManager(dbContext); private IQuestionManager<QuestionEntity> manager;
public QuestionDataManager(IQuestionManager<QuestionEntity> manager)
{
this.manager = manager;
}
public async Task<Question> addQuestion(Question question) public async Task<Question> addQuestion(Question question)
{ {

@ -18,14 +18,14 @@ namespace EntityManagers
public async Task<LobbyEntity> addLobby(LobbyEntity lobby) public async Task<LobbyEntity> addLobby(LobbyEntity lobby)
{ {
var tmp = await dbContext.Lobbies.Where(l => l.Equals(lobby)).FirstOrDefaultAsync(); var tmp = await dbContext.Lobbies.Where(l => l.IdCreator == lobby.IdCreator && l.Name == lobby.Name).FirstOrDefaultAsync();
if (tmp != null) // <=> he already exist if (tmp != null) // <=> he already exist
{ {
return tmp!; return tmp!;
} }
dbContext.Lobbies.Add(lobby); dbContext.Lobbies.Add(lobby);
await dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return await dbContext.Lobbies.Where(l => l.Equals(lobby)).FirstAsync(); return await dbContext.Lobbies.Where(l => l.IdCreator == lobby.IdCreator && l.Name == lobby.Name).FirstAsync();
} }
public async Task<(int nbPages, IEnumerable<LobbyEntity>? lobbies)> getLobbies(int nb, int count, LobbyOrderCriteria orderCriteria = LobbyOrderCriteria.ById) public async Task<(int nbPages, IEnumerable<LobbyEntity>? lobbies)> getLobbies(int nb, int count, LobbyOrderCriteria orderCriteria = LobbyOrderCriteria.ById)
@ -50,7 +50,19 @@ namespace EntityManagers
public async Task<LobbyEntity?> getLobby(int id) public async Task<LobbyEntity?> getLobby(int id)
{ {
return await Task.FromResult<LobbyEntity?>(dbContext.Lobbies.Where(l => l.Id == id).FirstOrDefault()); return await dbContext.Lobbies.SingleOrDefaultAsync(l => l.Id == id);
}
public async Task<LobbyEntity?> getLobby(string name, int? idCreator)
{
if(name == null)
{
var tmp = dbContext.Lobbies.Where(l => l.Name == name && l.IdCreator != null);
if (tmp.Count() == 0) return null;
else if (tmp.Count() == 1) return tmp.First();
else throw new Exception("too much lobbies");
}
return await dbContext.Lobbies.SingleOrDefaultAsync(l => l.Name == name && l.IdCreator == idCreator);
} }
public int getNbLobbies() public int getNbLobbies()
@ -60,7 +72,7 @@ namespace EntityManagers
public async Task<LobbyEntity?> removeLobby(LobbyEntity lobby) public async Task<LobbyEntity?> removeLobby(LobbyEntity lobby)
{ {
var tmp = dbContext.Lobbies.Where(a => a.Equals(lobby)).FirstOrDefaultAsync().Result; var tmp = dbContext.Lobbies.Where(l => l.IdCreator == lobby.IdCreator && l.Name == lobby.Name).FirstOrDefaultAsync().Result;
if (tmp == null) return await Task.FromResult<LobbyEntity?>(tmp); if (tmp == null) return await Task.FromResult<LobbyEntity?>(tmp);
dbContext.Lobbies.Remove(tmp); dbContext.Lobbies.Remove(tmp);
await dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();

@ -67,5 +67,15 @@ namespace ManagerInterfaces
/// to the id or null if there isn't any /// to the id or null if there isn't any
/// </returns> /// </returns>
public Task<T?> getLobby(int id); public Task<T?> getLobby(int id);
/// <summary>
/// get a lobby with a name and a creator id
/// </summary>
/// <param name="name">name of the lobby</param>
/// <param name="idCreator">the id of the creator of the lobby</param>
/// <returns>
/// the lobby that corresponde
/// to the id or null if there isn't any
/// </returns>
public Task<T?> getLobby(string name, int? idCreator);
} }
} }

@ -13,10 +13,10 @@ using DTOs;
namespace ServiceManagers namespace ServiceManagers
{ {
public class AdministratorServiceManager(MyDbContext dbContext) : IAdministratorManager<AdministratorDto> public class AdministratorServiceManager(IAdministratorManager<Administrator> administratorManager) : IAdministratorManager<AdministratorDto>
{ {
private AdministratorDataManager manager = new AdministratorDataManager(dbContext); private IAdministratorManager<Administrator> manager = administratorManager;
public async Task<AdministratorDto> addAdmin(AdministratorDto admin) public async Task<AdministratorDto> addAdmin(AdministratorDto admin)
{ {

@ -10,13 +10,14 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using DTOs; using DTOs;
using Entities;
namespace ServiceManagers namespace ServiceManagers
{ {
public class AnswerServiceManager(MyDbContext dbContext) : IAnswerManager<AnswerDto> public class AnswerServiceManager(IAnswerManager<Answer> manager) : IAnswerManager<AnswerDto>
{ {
private AnswerDataManager manager = new AnswerDataManager(dbContext); private IAnswerManager<Answer> manager = manager;
public async Task<AnswerDto> addAnswer(AnswerDto answerdto) public async Task<AnswerDto> addAnswer(AnswerDto answerdto)
{ {

@ -13,9 +13,9 @@ using DTOs;
namespace ServiceManagers namespace ServiceManagers
{ {
public class ChapterServiceManager(MyDbContext dbContext) : IChapterManager<ChapterDto> public class ChapterServiceManager(IChapterManager<Chapter> manager) : IChapterManager<ChapterDto>
{ {
private ChapterDataManager manager = new ChapterDataManager(dbContext); private IChapterManager<Chapter> manager = manager;
public async Task<ChapterDto> addChapter(ChapterDto chapterdto) public async Task<ChapterDto> addChapter(ChapterDto chapterdto)
{ {

@ -13,9 +13,9 @@ using DTOs;
namespace ServiceManagers namespace ServiceManagers
{ {
public class LobbyServiceManager(MyDbContext dbContext) : ILobbyManager<LobbyDto> public class LobbyServiceManager(ILobbyManager<Lobby> manager) : ILobbyManager<LobbyDto>
{ {
private LobbyDataManager manager = new LobbyDataManager(dbContext); private ILobbyManager<Lobby> manager = manager;
public async Task<LobbyDto> addLobby(LobbyDto lobbydto) public async Task<LobbyDto> addLobby(LobbyDto lobbydto)
{ {
@ -39,7 +39,12 @@ namespace ServiceManagers
public async Task<LobbyDto?> getLobby(int id) public async Task<LobbyDto?> getLobby(int id)
{ {
return await Task.FromResult<LobbyDto?>((await manager.getLobby(id))?.ToDto()); return (await manager.getLobby(id))?.ToDto();
}
public async Task<LobbyDto?> getLobby(string name, int? idCreator)
{
return (await manager.getLobby(name, idCreator))?.ToDto();
} }
public int getNbLobbies() public int getNbLobbies()

@ -13,9 +13,9 @@ using DTOs;
namespace ServiceManagers namespace ServiceManagers
{ {
public class PlayerServiceManager(MyDbContext dbContext) : IPlayerManager<PlayerDto> public class PlayerServiceManager(IPlayerManager<Player> manager) : IPlayerManager<PlayerDto>
{ {
private PlayerDataManager manager = new PlayerDataManager(dbContext); private IPlayerManager<Player> manager = manager;
public async Task<PlayerDto> addPlayer(PlayerDto playerdto) public async Task<PlayerDto> addPlayer(PlayerDto playerdto)
{ {

@ -15,10 +15,10 @@ using System.Threading.Tasks;
namespace ServiceManagers namespace ServiceManagers
{ {
public class QuestionServiceManager(MyDbContext dbContext) : IQuestionManager<QuestionDto> public class QuestionServiceManager(IQuestionManager<Question> manager) : IQuestionManager<QuestionDto>
{ {
private QuestionDataManager manager = new QuestionDataManager(dbContext); private IQuestionManager<Question> manager = manager;
public async Task<QuestionDto> addQuestion(QuestionDto question) public async Task<QuestionDto> addQuestion(QuestionDto question)
{ {

Loading…
Cancel
Save