fix : 💩 réécriture des entity managers de façon assynchrone

API
Damien NORTIER 1 year ago
parent af850e546f
commit c19f389c17

@ -17,22 +17,27 @@ namespace EntityManagers
{ {
private MyDbContext dbContext = dbContext; private MyDbContext dbContext = dbContext;
public Task<AdministratorEntity> addAdmin(AdministratorEntity admin) public async Task<AdministratorEntity> addAdmin(AdministratorEntity admin)
{ {
var tmp = await dbContext.Administrators.Where(a => a.Equals(admin)).FirstOrDefaultAsync();
if (tmp != null) // <=> he already exist
{
return tmp!;
}
dbContext.Administrators.Add(admin); dbContext.Administrators.Add(admin);
dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return dbContext.Administrators.Where(a => a.Equals(admin)).FirstAsync(); return await dbContext.Administrators.Where(a => a.Equals(admin)).FirstAsync(); // to get
} }
public Task<AdministratorEntity?> getAdministratorByUsername(string username) public async Task<AdministratorEntity?> getAdministratorByUsername(string username)
{ {
return dbContext.Administrators.Where(a => a.Username == username).FirstOrDefaultAsync(); return await dbContext.Administrators.Where(a => a.Username == username).FirstOrDefaultAsync();
} }
public Task<(int nbPages, IEnumerable<AdministratorEntity>? administrators)> getAdministrators(int nb, int count, AdministratorOrderCriteria orderCriteria = AdministratorOrderCriteria.ById) public async Task<(int nbPages, IEnumerable<AdministratorEntity>? administrators)> getAdministrators(int nb, int count, AdministratorOrderCriteria orderCriteria = AdministratorOrderCriteria.ById)
{ {
int nbEl = getNbElements(); int nbEl = getNbElements();
if(nb > nbEl/count) return Task.FromResult<(int nbPages, IEnumerable<AdministratorEntity>? administrators)>((nbEl/count, null)); if(nb < 0 || count < 0 || nb > nbEl/count) return await Task.FromResult<(int nbPages, IEnumerable<AdministratorEntity>? administrators)>((nbEl/count, null));
var tmp = dbContext.Administrators; var tmp = dbContext.Administrators;
switch (orderCriteria) switch (orderCriteria)
{ {
@ -43,7 +48,7 @@ namespace EntityManagers
tmp.OrderBy(a => a.Username); tmp.OrderBy(a => a.Username);
break; break;
} }
return Task.FromResult<(int nbPages, IEnumerable<AdministratorEntity>? administrators)>((nbEl/count, tmp.Skip((nb-1)*count).Take(count))); return await Task.FromResult<(int nbPages, IEnumerable<AdministratorEntity>? administrators)>((nbEl/count, tmp.Skip((nb-1)*count).Take(count)));
} }
public int getNbElements() public int getNbElements()
@ -51,31 +56,31 @@ namespace EntityManagers
return dbContext.Administrators.CountAsync().Result; return dbContext.Administrators.CountAsync().Result;
} }
public Task<AdministratorEntity?> removeAdmin(AdministratorEntity admin) public async Task<AdministratorEntity?> removeAdmin(AdministratorEntity admin)
{ {
var tmp = dbContext.Administrators.Where(a => a.Equals(admin)).FirstOrDefaultAsync().Result; var tmp = await dbContext.Administrators.Where(a => a.Equals(admin)).FirstOrDefaultAsync();
if(tmp == null) return Task.FromResult<AdministratorEntity?>(tmp); if(tmp == null) return await Task.FromResult<AdministratorEntity?>(tmp);
dbContext.Administrators.Remove(tmp); dbContext.Administrators.Remove(tmp);
dbContext.SaveChanges(); dbContext.SaveChanges();
return Task.FromResult<AdministratorEntity?>(tmp); return await Task.FromResult<AdministratorEntity?>(tmp);
} }
public Task<AdministratorEntity?> removeAdmin(int id) public async Task<AdministratorEntity?> removeAdmin(int id)
{ {
var tmp = dbContext.Administrators.Where(a => a.Id == id).FirstOrDefaultAsync().Result; var tmp = dbContext.Administrators.Where(a => a.Id == id).FirstOrDefaultAsync().Result;
if (tmp == null) return Task.FromResult<AdministratorEntity?>(tmp); if (tmp == null) return await Task.FromResult<AdministratorEntity?>(tmp);
dbContext.Administrators.Remove(tmp); dbContext.Administrators.Remove(tmp);
dbContext.SaveChanges(); dbContext.SaveChanges();
return Task.FromResult<AdministratorEntity?>(tmp); return await Task.FromResult<AdministratorEntity?>(tmp);
} }
public Task<bool> setPassword(string username, string newHashedPassword) public async Task<bool> setPassword(string username, string newHashedPassword)
{ {
var tmp = getAdministratorByUsername(username).Result; var tmp = await getAdministratorByUsername(username);
if (tmp == null) return Task.FromResult<bool>(false); if (tmp == null) return await Task.FromResult<bool>(false);
tmp.HashedPassword = newHashedPassword; tmp.HashedPassword = newHashedPassword;
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return Task.FromResult<bool>(true); return await Task.FromResult<bool>(true);
} }
} }
} }

@ -16,22 +16,27 @@ namespace EntityManagers
{ {
private MyDbContext dbContext = dbContext; private MyDbContext dbContext = dbContext;
public Task<AnswerEntity> addAnswer(AnswerEntity answer) public async Task<AnswerEntity> addAnswer(AnswerEntity answer)
{ {
dbContext.Answers.Add(answer); var tmp = await dbContext.Answers.Where(a => a.Equals(answer)).FirstOrDefaultAsync();
dbContext.SaveChangesAsync(); if (tmp != null) // <=> he already exist
return dbContext.Answers.Where(a => a.Equals(answer)).FirstAsync(); {
return tmp!;
}
await dbContext.Answers.AddAsync(answer);
await dbContext.SaveChangesAsync();
return await dbContext.Answers.Where(a => a.Equals(answer)).FirstAsync();
} }
public Task<AnswerEntity?> getAnswer(uint id) public async Task<AnswerEntity?> getAnswer(uint id)
{ {
return dbContext.Answers.Where(a => a.Id == id).FirstOrDefaultAsync(); return await dbContext.Answers.Where(a => a.Id == id).FirstOrDefaultAsync();
} }
public Task<(int nbPages, IEnumerable<AnswerEntity>? answers)> getAnswers(int nb, int count, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById) public async Task<(int nbPages, IEnumerable<AnswerEntity>? answers)> getAnswers(int nb, int count, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById)
{ {
int nbEl = getNbElements(); int nbEl = getNbElements();
if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable<AnswerEntity>? answers)>((nbEl / count, null)); if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable<AnswerEntity>? answers)>((nbEl / count, null));
var tmp = dbContext.Answers; var tmp = dbContext.Answers;
switch (orderCriteria) switch (orderCriteria)
{ {
@ -45,16 +50,16 @@ namespace EntityManagers
tmp.OrderBy(a => a.IdQuestion); tmp.OrderBy(a => a.IdQuestion);
break; break;
} }
return Task.FromResult<(int nbPages, IEnumerable<AnswerEntity>? answers)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); return await Task.FromResult<(int nbPages, IEnumerable<AnswerEntity>? answers)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count)));
} }
public Task<IEnumerable<AnswerEntity>?> getAnswersByIdQuestion(uint id) public async Task<IEnumerable<AnswerEntity>?> getAnswersByIdQuestion(uint id)
{ {
if(dbContext.Questions.Where(q => q.Id == id).Any()) if(dbContext.Questions.Where(q => q.Id == id).Any())
{ {
return Task.FromResult<IEnumerable<AnswerEntity>?>(dbContext.Answers.Where(a => a.IdQuestion == id)); return await Task.FromResult<IEnumerable<AnswerEntity>?>(dbContext.Answers.Where(a => a.IdQuestion == id));
} }
return Task.FromResult<IEnumerable<AnswerEntity>?>(null); return await Task.FromResult<IEnumerable<AnswerEntity>?>(null);
} }
public int getNbElements() public int getNbElements()
@ -62,27 +67,36 @@ namespace EntityManagers
return dbContext.Answers.CountAsync().Result; return dbContext.Answers.CountAsync().Result;
} }
public Task<AnswerEntity?> removeAnswer(uint id) public async Task<AnswerEntity?> removeAnswer(uint id)
{ {
var tmp = getAnswer(id).Result; var tmp = getAnswer(id).Result;
if (tmp == null) return Task.FromResult<AnswerEntity?>(tmp); if (tmp == null) return await Task.FromResult<AnswerEntity?>(tmp);
dbContext.Answers.Remove(tmp); dbContext.Answers.Remove(tmp);
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return Task.FromResult<AnswerEntity?>(tmp); return await Task.FromResult<AnswerEntity?>(tmp);
} }
public Task<AnswerEntity?> removeAnswer(AnswerEntity answer) public async Task<AnswerEntity?> removeAnswer(AnswerEntity answer)
{ {
var tmp = dbContext.Answers.Where(a => a.Equals(answer)).FirstOrDefaultAsync().Result; var tmp = dbContext.Answers.Where(a => a.Equals(answer)).FirstOrDefaultAsync().Result;
if (tmp == null) return Task.FromResult<AnswerEntity?>(tmp); if (tmp == null) return await Task.FromResult<AnswerEntity?>(tmp);
dbContext.Answers.Remove(tmp); dbContext.Answers.Remove(tmp);
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return Task.FromResult<AnswerEntity?>(tmp); return await Task.FromResult<AnswerEntity?>(tmp);
} }
public Task<AnswerEntity?> updateAnswer(uint id, AnswerEntity answer) public async Task<AnswerEntity?> updateAnswer(uint id, AnswerEntity answer)
{ {
throw new NotImplementedException(); var tmp = await dbContext.Answers.Where(a => a.Id == id).FirstOrDefaultAsync();
if(tmp == null)
{
return null;
}
tmp.Content = answer.Content;
tmp.Question = answer.Question;
tmp.IdQuestion = answer.IdQuestion;
await dbContext.SaveChangesAsync();
return tmp;
} }
} }
} }

@ -16,22 +16,27 @@ namespace EntityManagers
{ {
MyDbContext dbContext = dbContext; MyDbContext dbContext = dbContext;
public Task<ChapterEntity> addChapter(ChapterEntity chapter) public async Task<ChapterEntity> addChapter(ChapterEntity chapter)
{ {
var tmp = await dbContext.Chapters.Where(c => c.Equals(chapter)).FirstOrDefaultAsync();
if (tmp != null) // <=> he already exist
{
return tmp!;
}
dbContext.Chapters.Add(chapter); dbContext.Chapters.Add(chapter);
dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return dbContext.Chapters.Where(a => a.Equals(chapter)).FirstAsync(); return await dbContext.Chapters.Where(c => c.Equals(chapter)).FirstAsync();
} }
public Task<ChapterEntity?> getChapter(uint id) public async Task<ChapterEntity?> getChapter(uint id)
{ {
return Task.FromResult<ChapterEntity?>(dbContext.Chapters.Where(c => c.Id == id).FirstOrDefault()); return await dbContext.Chapters.Where(c => c.Id == id).FirstOrDefaultAsync();
} }
public Task<(int nbPages, IEnumerable<ChapterEntity>? chapters)> getChapters(int nb, int count, ChapterOrderCriteria orderCriteria = ChapterOrderCriteria.ById) public async Task<(int nbPages, IEnumerable<ChapterEntity>? chapters)> getChapters(int nb, int count, ChapterOrderCriteria orderCriteria = ChapterOrderCriteria.ById)
{ {
int nbEl = getNbElements(); int nbEl = getNbElements();
if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable<ChapterEntity>? chapters)>((nbEl / count, null)); if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable<ChapterEntity>? chapters)>((nbEl / count, null));
var tmp = dbContext.Chapters; var tmp = dbContext.Chapters;
switch (orderCriteria) switch (orderCriteria)
{ {
@ -42,7 +47,7 @@ namespace EntityManagers
tmp.OrderBy(a => a.Name); tmp.OrderBy(a => a.Name);
break; break;
} }
return Task.FromResult<(int nbPages, IEnumerable<ChapterEntity>? chapters)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); return await Task.FromResult<(int nbPages, IEnumerable<ChapterEntity>? chapters)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count)));
} }
public int getNbElements() public int getNbElements()
@ -50,22 +55,22 @@ namespace EntityManagers
return dbContext.Chapters.CountAsync().Result; return dbContext.Chapters.CountAsync().Result;
} }
public Task<ChapterEntity?> removeChapter(ChapterEntity chapter) public async Task<ChapterEntity?> removeChapter(ChapterEntity chapter)
{ {
var tmp = dbContext.Chapters.Where(a => a.Equals(chapter)).FirstOrDefaultAsync().Result; var tmp = dbContext.Chapters.Where(a => a.Equals(chapter)).FirstOrDefaultAsync().Result;
if (tmp == null) return Task.FromResult<ChapterEntity?>(tmp); if (tmp == null) return await Task.FromResult<ChapterEntity?>(tmp);
dbContext.Chapters.Remove(tmp); dbContext.Chapters.Remove(tmp);
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return Task.FromResult<ChapterEntity?>(tmp); return await Task.FromResult<ChapterEntity?>(tmp);
} }
public Task<ChapterEntity?> removeChapter(uint id) public async Task<ChapterEntity?> removeChapter(uint id)
{ {
var tmp = getChapter(id).Result; var tmp = getChapter(id).Result;
if (tmp == null) return Task.FromResult<ChapterEntity?>(tmp); if (tmp == null) return await Task.FromResult<ChapterEntity?>(tmp);
dbContext.Chapters.Remove(tmp); dbContext.Chapters.Remove(tmp);
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return Task.FromResult<ChapterEntity?>(tmp); return await Task.FromResult<ChapterEntity?>(tmp);
} }
} }
} }

@ -16,17 +16,22 @@ namespace EntityManagers
{ {
MyDbContext dbContext = dbContext; MyDbContext dbContext = dbContext;
public Task<LobbyEntity> addLobby(LobbyEntity lobby) public async Task<LobbyEntity> addLobby(LobbyEntity lobby)
{ {
var tmp = await dbContext.Lobbies.Where(l => l.Equals(lobby)).FirstOrDefaultAsync();
if (tmp != null) // <=> he already exist
{
return tmp!;
}
dbContext.Lobbies.Add(lobby); dbContext.Lobbies.Add(lobby);
dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return dbContext.Lobbies.Where(a => a.Equals(lobby)).FirstAsync(); return await dbContext.Lobbies.Where(l => l.Equals(lobby)).FirstAsync();
} }
public 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)
{ {
int nbEl = getNbElements(); int nbEl = getNbElements();
if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable<LobbyEntity>? lobbies)>((nbEl / count, null)); if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable<LobbyEntity>? lobbies)>((nbEl / count, null));
var tmp = dbContext.Lobbies; var tmp = dbContext.Lobbies;
switch (orderCriteria) switch (orderCriteria)
{ {
@ -40,12 +45,12 @@ namespace EntityManagers
tmp.OrderBy(l => l.NbPlayers); tmp.OrderBy(l => l.NbPlayers);
break; break;
} }
return Task.FromResult<(int nbPages, IEnumerable<LobbyEntity>? lobbies)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); return await Task.FromResult<(int nbPages, IEnumerable<LobbyEntity>? lobbies)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count)));
} }
public Task<LobbyEntity?> getLobby(uint id) public async Task<LobbyEntity?> getLobby(uint id)
{ {
return Task.FromResult<LobbyEntity?>(dbContext.Lobbies.Where(l => l.Id == id).FirstOrDefault()); return await Task.FromResult<LobbyEntity?>(dbContext.Lobbies.Where(l => l.Id == id).FirstOrDefault());
} }
public int getNbElements() public int getNbElements()
@ -53,22 +58,22 @@ namespace EntityManagers
return dbContext.Lobbies.CountAsync().Result; return dbContext.Lobbies.CountAsync().Result;
} }
public 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(a => a.Equals(lobby)).FirstOrDefaultAsync().Result;
if (tmp == null) return Task.FromResult<LobbyEntity?>(tmp); if (tmp == null) return await Task.FromResult<LobbyEntity?>(tmp);
dbContext.Lobbies.Remove(tmp); dbContext.Lobbies.Remove(tmp);
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return Task.FromResult<LobbyEntity?>(tmp); return await Task.FromResult<LobbyEntity?>(tmp);
} }
public Task<LobbyEntity?> removeLobby(uint id) public async Task<LobbyEntity?> removeLobby(uint id)
{ {
var tmp = dbContext.Lobbies.Where(a => a.Id == id).FirstOrDefaultAsync().Result; var tmp = dbContext.Lobbies.Where(a => a.Id == id).FirstOrDefaultAsync().Result;
if (tmp == null) return Task.FromResult<LobbyEntity?>(tmp); if (tmp == null) return await Task.FromResult<LobbyEntity?>(tmp);
dbContext.Lobbies.Remove(tmp); dbContext.Lobbies.Remove(tmp);
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return Task.FromResult<LobbyEntity?>(tmp); return await Task.FromResult<LobbyEntity?>(tmp);
} }
} }
} }

@ -16,24 +16,29 @@ namespace EntityManagers
{ {
MyDbContext dbContext = dbContext; MyDbContext dbContext = dbContext;
public Task<PlayerEntity> addPlayer(PlayerEntity player) public async Task<PlayerEntity> addPlayer(PlayerEntity player)
{ {
var tmp = await dbContext.Players.Where(p => p.Equals(player)).FirstOrDefaultAsync();
if (tmp != null) // <=> he already exist
{
return tmp;
}
dbContext.Players.Add(player); dbContext.Players.Add(player);
dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return dbContext.Players.Where(a => a.Equals(player)).FirstAsync(); return await dbContext.Players.Where(p => p.Equals(player)).FirstAsync();
} }
public Task<uint?> getMaxScorePlayer(uint id, uint idChapter) public async Task<uint?> getMaxScorePlayer(uint id, uint idChapter)
{ {
var tmp = dbContext.Play.Where(p => p.IdPlayer == id && p.IdChapter == idChapter).FirstOrDefault(); var tmp = await dbContext.Play.Where(p => p.IdPlayer == id && p.IdChapter == idChapter).FirstOrDefaultAsync();
return Task.FromResult(tmp?.MaxScore); return await Task.FromResult(tmp?.MaxScore);
} }
public Task<uint?> getMaxScorePlayer(uint id) public async Task<uint?> getMaxScorePlayer(uint id)
{ {
var tmp = dbContext.Play.Where(p => p.IdPlayer == id).Select(p => p.MaxScore); var tmp = dbContext.Play.Where(p => p.IdPlayer == id).Select(p => p.MaxScore);
if (!tmp.AnyAsync().Result) return Task.FromResult<uint?>(null); if (!tmp.AnyAsync().Result) return await Task.FromResult<uint?>(null);
return Task.FromResult<uint?>(tmp?.MaxAsync().Result); return await Task.FromResult<uint?>(tmp?.MaxAsync().Result);
} }
public int getNbElements() public int getNbElements()
@ -41,20 +46,20 @@ namespace EntityManagers
return dbContext.Players.CountAsync().Result; return dbContext.Players.CountAsync().Result;
} }
public Task<PlayerEntity?> getPlayer(uint id) public async Task<PlayerEntity?> getPlayer(uint id)
{ {
return dbContext.Players.Where(p => p.Id == id).FirstOrDefaultAsync(); return await dbContext.Players.Where(p => p.Id == id).FirstOrDefaultAsync();
} }
public Task<PlayerEntity?> getPlayer(string nickname) public async Task<PlayerEntity?> getPlayer(string nickname)
{ {
return dbContext.Players.Where(p => p.Nickname == nickname).FirstOrDefaultAsync(); return await dbContext.Players.Where(p => p.Nickname == nickname).FirstOrDefaultAsync();
} }
public Task<(int nbPage, IEnumerable<PlayerEntity>? players)> getPlayers(int nb, int count, PlayerOrderCriteria orderCriteria = PlayerOrderCriteria.ById) public async Task<(int nbPage, IEnumerable<PlayerEntity>? players)> getPlayers(int nb, int count, PlayerOrderCriteria orderCriteria = PlayerOrderCriteria.ById)
{ {
int nbEl = getNbElements(); int nbEl = getNbElements();
if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable<PlayerEntity>? players)>((nbEl / count, null)); if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable<PlayerEntity>? players)>((nbEl / count, null));
var tmp = dbContext.Players; var tmp = dbContext.Players;
switch (orderCriteria) switch (orderCriteria)
{ {
@ -65,32 +70,34 @@ namespace EntityManagers
tmp.OrderBy(p => p.Nickname); tmp.OrderBy(p => p.Nickname);
break; break;
} }
return Task.FromResult<(int nbPages, IEnumerable<PlayerEntity>? players)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); return await Task.FromResult<(int nbPages, IEnumerable<PlayerEntity>? players)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count)));
} }
public Task<IEnumerable<PlayerEntity>?> getPlayersInALobby(uint idLobby) public async Task<IEnumerable<PlayerEntity>?> getPlayersInALobby(uint idLobby)
{ {
return Task.FromResult<IEnumerable<PlayerEntity>?>(dbContext.Use if (!await dbContext.Lobbies.Where(l => l.Id == idLobby).AnyAsync())
return await Task.FromResult<IEnumerable<PlayerEntity>?>(null);
return await Task.FromResult<IEnumerable<PlayerEntity>?>(dbContext.Use
.Where(u => u.IdLobby == idLobby) .Where(u => u.IdLobby == idLobby)
.Select(u => u.Player)); .Select(u => u.Player));
} }
public Task<PlayerEntity?> removePlayer(PlayerEntity player) public async Task<PlayerEntity?> removePlayer(PlayerEntity player)
{ {
var tmp = dbContext.Players.Where(p => p.Equals(player)).FirstOrDefaultAsync().Result; var tmp = dbContext.Players.Where(p => p.Equals(player)).FirstOrDefaultAsync().Result;
if (tmp == null) return Task.FromResult<PlayerEntity?>(tmp); if (tmp == null) return await Task.FromResult<PlayerEntity?>(tmp);
dbContext.Players.Remove(tmp); dbContext.Players.Remove(tmp);
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return Task.FromResult<PlayerEntity?>(tmp); return await Task.FromResult<PlayerEntity?>(tmp);
} }
public Task<PlayerEntity?> removePlayer(uint id) public async Task<PlayerEntity?> removePlayer(uint id)
{ {
var tmp = getPlayer(id).Result; var tmp = getPlayer(id).Result;
if (tmp == null) return Task.FromResult<PlayerEntity?>(tmp); if (tmp == null) return await Task.FromResult<PlayerEntity?>(tmp);
dbContext.Players.Remove(tmp); dbContext.Players.Remove(tmp);
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return Task.FromResult<PlayerEntity?>(tmp); return await Task.FromResult<PlayerEntity?>(tmp);
} }
} }
} }

@ -34,21 +34,26 @@ namespace EntityManagers
return query; return query;
} }
public Task<QuestionEntity> addQuestion(QuestionEntity question) public async Task<QuestionEntity> addQuestion(QuestionEntity question)
{ {
var tmp = await dbContext.Questions.Where(q => q.Equals(question)).FirstOrDefaultAsync();
if (tmp != null) // <=> he already exist
{
return tmp!;
}
dbContext.Questions.Add(question); dbContext.Questions.Add(question);
dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return dbContext.Questions.Where(q => q.Equals(question)).FirstAsync(); return await dbContext.Questions.Where(q => q.Equals(question)).FirstAsync();
} }
public Task<IEnumerable<QuestionEntity>> addQuestions(IEnumerable<QuestionEntity> questions) public async Task<IEnumerable<QuestionEntity>> addQuestions(IEnumerable<QuestionEntity> questions)
{ {
var tmp = new List<QuestionEntity>(); var tmp = new List<QuestionEntity>();
foreach (var q in questions) foreach (var q in questions)
{ {
tmp.Add(addQuestion(q).Result); tmp.Add(addQuestion(q).Result);
} }
return Task.FromResult<IEnumerable<QuestionEntity>>(tmp); return await Task.FromResult<IEnumerable<QuestionEntity>>(tmp);
} }
public int getNbElements() public int getNbElements()
@ -56,35 +61,35 @@ namespace EntityManagers
return dbContext.Questions.CountAsync().Result; return dbContext.Questions.CountAsync().Result;
} }
public Task<QuestionEntity?> getQuestion(uint id) public async Task<QuestionEntity?> getQuestion(uint id)
{ {
return Task.FromResult<QuestionEntity?>(dbContext.Questions.Where(q => q.Id == id).FirstOrDefault()); return await Task.FromResult<QuestionEntity?>(dbContext.Questions.Where(q => q.Id == id).FirstOrDefault());
} }
public Task<(int nbPages, IEnumerable<QuestionEntity>? questions)> getQuestions(int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById) public async Task<(int nbPages, IEnumerable<QuestionEntity>? questions)> getQuestions(int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById)
{ {
int nbEl = getNbElements(); int nbEl = getNbElements();
if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)>((nbEl / count, null)); if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)>((nbEl / count, null));
var tmp = trier(dbContext.Questions, orderCriteria); var tmp = trier(dbContext.Questions, orderCriteria);
return Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); return await Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count)));
} }
public Task<(int nbPages, IEnumerable<QuestionEntity>? questions)?> getQuestionsByChapterAndDifficulty(int idChapter, int difficulty, int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById) public async Task<(int nbPages, IEnumerable<QuestionEntity>? questions)?> getQuestionsByChapterAndDifficulty(int idChapter, int difficulty, int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById)
{ {
if (!dbContext.Chapters.Where(c => c.Id == idChapter).AnyAsync().Result || difficulty < 1 || difficulty > 3) if (nb < 0 || count < 0 || difficulty < 1 || difficulty > 3 || !dbContext.Chapters.Where(c => c.Id == idChapter).AnyAsync().Result)
return Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)?>(null); return await Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)?>(null);
int nbEl = getNbElements(); int nbEl = getNbElements();
if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)?>((nbEl / count, null)); if (nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)?>((nbEl / count, null));
var tmp = trier(dbContext.Questions, orderCriteria); var tmp = trier(dbContext.Questions, orderCriteria);
return Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)?>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); return await Task.FromResult<(int nbPages, IEnumerable<QuestionEntity>? questions)?>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count)));
} }
public Task<QuestionEntity?> removeQuestion(QuestionEntity question) public async Task<QuestionEntity?> removeQuestion(QuestionEntity question)
{ {
var tmp = dbContext.Questions.Where(q => q.Equals(question)).FirstOrDefaultAsync(); var tmp = await dbContext.Questions.Where(q => q.Equals(question)).FirstOrDefaultAsync();
if (tmp.Result == null) return tmp; if (tmp == null) return tmp;
dbContext.Questions.Remove(tmp.Result); dbContext.Questions.Remove(tmp);
dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return tmp; return tmp;
} }
@ -97,29 +102,29 @@ namespace EntityManagers
return tmp; return tmp;
} }
public Task<QuestionEntity?> updateQuestion(uint id, QuestionEntity question) public async Task<QuestionEntity?> updateQuestion(uint id, QuestionEntity question)
{ {
var tmp = getQuestion(id); var tmp = getQuestion(id);
if (tmp.Result == null) return tmp; if (tmp.Result == null) return await tmp;
tmp.Result.Chapter = question.Chapter; tmp.Result.Chapter = question.Chapter;
tmp.Result.Content = question.Content; tmp.Result.Content = question.Content;
tmp.Result.IdChapter = question.IdChapter; tmp.Result.IdChapter = question.IdChapter;
tmp.Result.AnswerGood = question.AnswerGood; tmp.Result.AnswerGood = question.AnswerGood;
tmp.Result.Difficulty = question.Difficulty; tmp.Result.Difficulty = question.Difficulty;
dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return tmp; return await tmp;
} }
public Task<QuestionEntity?> updateQuestionNbFalls(uint id) public async Task<QuestionEntity?> updateQuestionNbFalls(uint id)
{ {
var tmp = getQuestion(id); var tmp = getQuestion(id);
if (tmp.Result == null) return tmp; if (tmp.Result == null) return await tmp;
tmp.Result.NbFalls++; tmp.Result.NbFalls++;
uint nbFalls = tmp.Result.NbFalls; uint nbFalls = tmp.Result.NbFalls;
if (nbFalls == 50) tmp.Result.Difficulty = 2; if (nbFalls == 50) tmp.Result.Difficulty = 2;
if (nbFalls == 150) tmp.Result.Difficulty = 3; if (nbFalls == 150) tmp.Result.Difficulty = 3;
dbContext.SaveChangesAsync(); await dbContext.SaveChangesAsync();
return tmp; return await tmp;
} }
} }
} }

Loading…
Cancel
Save