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 Entities;
using EntityManagers;
using ExtensionsClassLibrairie;
using ManagerInterfaces;
@ -7,10 +8,15 @@ using OrderCriterias;
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)
{

@ -1,4 +1,5 @@
using DbConnectionLibrairie;
using Entities;
using EntityManagers;
using ExtensionsClassLibrairie;
using ManagerInterfaces;
@ -12,10 +13,15 @@ using System.Threading.Tasks;
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)
{

@ -1,4 +1,5 @@
using DbConnectionLibrairie;
using Entities;
using EntityManagers;
using ExtensionsClassLibrairie;
using ManagerInterfaces;
@ -12,9 +13,14 @@ using System.Threading.Tasks;
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)
{

@ -1,4 +1,5 @@
using DbConnectionLibrairie;
using Entities;
using EntityManagers;
using ExtensionsClassLibrairie;
using ManagerInterfaces;
@ -12,9 +13,14 @@ using System.Threading.Tasks;
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)
{
@ -41,6 +47,11 @@ namespace DataManagers
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()
{
return manager.getNbLobbies();

@ -1,4 +1,5 @@
using DbConnectionLibrairie;
using Entities;
using EntityManagers;
using ExtensionsClassLibrairie;
using ManagerInterfaces;
@ -12,9 +13,14 @@ using System.Threading.Tasks;
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)
{

@ -13,10 +13,15 @@ using System.Threading.Tasks;
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)
{

@ -18,14 +18,14 @@ namespace EntityManagers
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
{
return tmp!;
}
dbContext.Lobbies.Add(lobby);
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)
@ -50,7 +50,19 @@ namespace EntityManagers
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()
@ -60,7 +72,7 @@ namespace EntityManagers
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);
dbContext.Lobbies.Remove(tmp);
await dbContext.SaveChangesAsync();

@ -67,5 +67,15 @@ namespace ManagerInterfaces
/// to the id or null if there isn't any
/// </returns>
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
{
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)
{

@ -10,13 +10,14 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DTOs;
using Entities;
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)
{

@ -13,9 +13,9 @@ using DTOs;
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)
{

@ -13,9 +13,9 @@ using DTOs;
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)
{
@ -39,7 +39,12 @@ namespace ServiceManagers
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()

@ -13,9 +13,9 @@ using DTOs;
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)
{

@ -15,10 +15,10 @@ using System.Threading.Tasks;
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)
{

Loading…
Cancel
Save