diff --git a/WebApi/EntityManagers/AdministratorEntityManager.cs b/WebApi/EntityManagers/AdministratorEntityManager.cs index dee43f4..41ff329 100644 --- a/WebApi/EntityManagers/AdministratorEntityManager.cs +++ b/WebApi/EntityManagers/AdministratorEntityManager.cs @@ -1,81 +1,86 @@ -using DbConnectionLibrairie; -using Entities; -using ManagerInterfaces; -using Microsoft.EntityFrameworkCore; -using OrderCriterias; -using ExtensionsClassLibrairie; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace EntityManagers -{ - public class AdministratorEntityManager(MyDbContext dbContext) : IAdministratorManager - { - private MyDbContext dbContext = dbContext; - - public Task addAdmin(AdministratorEntity admin) - { - dbContext.Administrators.Add(admin); - dbContext.SaveChangesAsync(); - return dbContext.Administrators.Where(a => a.Equals(admin)).FirstAsync(); - } - - public Task getAdministratorByUsername(string username) - { - return dbContext.Administrators.Where(a => a.Username == username).FirstOrDefaultAsync(); - } - - public Task<(int nbPages, IEnumerable? administrators)> getAdministrators(int nb, int count, AdministratorOrderCriteria orderCriteria = AdministratorOrderCriteria.ById) - { - int nbEl = getNbElements(); - if(nb > nbEl/count) return Task.FromResult<(int nbPages, IEnumerable? administrators)>((nbEl/count, null)); - var tmp = dbContext.Administrators; - switch (orderCriteria) - { - case AdministratorOrderCriteria.ById: - tmp.OrderBy(a => a.Id); - break; - case AdministratorOrderCriteria.ByUserName: - tmp.OrderBy(a => a.Username); - break; - } - return Task.FromResult<(int nbPages, IEnumerable? administrators)>((nbEl/count, tmp.Skip((nb-1)*count).Take(count))); - } - - public int getNbElements() - { - return dbContext.Administrators.CountAsync().Result; - } - - public Task removeAdmin(AdministratorEntity admin) - { - var tmp = dbContext.Administrators.Where(a => a.Equals(admin)).FirstOrDefaultAsync().Result; - if(tmp == null) return Task.FromResult(tmp); - dbContext.Administrators.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); - } - - public Task removeAdmin(int id) - { - var tmp = dbContext.Administrators.Where(a => a.Id == id).FirstOrDefaultAsync().Result; - if (tmp == null) return Task.FromResult(tmp); - dbContext.Administrators.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); - } - - public Task setPassword(string username, string newHashedPassword) - { - var tmp = getAdministratorByUsername(username).Result; - if (tmp == null) return Task.FromResult(false); - tmp.HashedPassword = newHashedPassword; - dbContext.SaveChanges(); - return Task.FromResult(true); - } - } -} +using DbConnectionLibrairie; +using Entities; +using ManagerInterfaces; +using Microsoft.EntityFrameworkCore; +using OrderCriterias; +using ExtensionsClassLibrairie; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace EntityManagers +{ + public class AdministratorEntityManager(MyDbContext dbContext) : IAdministratorManager + { + private MyDbContext dbContext = dbContext; + + public async Task 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); + await dbContext.SaveChangesAsync(); + return await dbContext.Administrators.Where(a => a.Equals(admin)).FirstAsync(); // to get + } + + public async Task getAdministratorByUsername(string username) + { + return await dbContext.Administrators.Where(a => a.Username == username).FirstOrDefaultAsync(); + } + + public async Task<(int nbPages, IEnumerable? administrators)> getAdministrators(int nb, int count, AdministratorOrderCriteria orderCriteria = AdministratorOrderCriteria.ById) + { + int nbEl = getNbElements(); + if(nb < 0 || count < 0 || nb > nbEl/count) return await Task.FromResult<(int nbPages, IEnumerable? administrators)>((nbEl/count, null)); + var tmp = dbContext.Administrators; + switch (orderCriteria) + { + case AdministratorOrderCriteria.ById: + tmp.OrderBy(a => a.Id); + break; + case AdministratorOrderCriteria.ByUserName: + tmp.OrderBy(a => a.Username); + break; + } + return await Task.FromResult<(int nbPages, IEnumerable? administrators)>((nbEl/count, tmp.Skip((nb-1)*count).Take(count))); + } + + public int getNbElements() + { + return dbContext.Administrators.CountAsync().Result; + } + + public async Task removeAdmin(AdministratorEntity admin) + { + var tmp = await dbContext.Administrators.Where(a => a.Equals(admin)).FirstOrDefaultAsync(); + if(tmp == null) return await Task.FromResult(tmp); + dbContext.Administrators.Remove(tmp); + dbContext.SaveChanges(); + return await Task.FromResult(tmp); + } + + public async Task removeAdmin(int id) + { + var tmp = dbContext.Administrators.Where(a => a.Id == id).FirstOrDefaultAsync().Result; + if (tmp == null) return await Task.FromResult(tmp); + dbContext.Administrators.Remove(tmp); + dbContext.SaveChanges(); + return await Task.FromResult(tmp); + } + + public async Task setPassword(string username, string newHashedPassword) + { + var tmp = await getAdministratorByUsername(username); + if (tmp == null) return await Task.FromResult(false); + tmp.HashedPassword = newHashedPassword; + await dbContext.SaveChangesAsync(); + return await Task.FromResult(true); + } + } +} diff --git a/WebApi/EntityManagers/AnswerEntityManager.cs b/WebApi/EntityManagers/AnswerEntityManager.cs index 86a6085..19124cb 100644 --- a/WebApi/EntityManagers/AnswerEntityManager.cs +++ b/WebApi/EntityManagers/AnswerEntityManager.cs @@ -16,22 +16,27 @@ namespace EntityManagers { private MyDbContext dbContext = dbContext; - public Task addAnswer(AnswerEntity answer) + public async Task addAnswer(AnswerEntity answer) { - dbContext.Answers.Add(answer); - dbContext.SaveChangesAsync(); - return dbContext.Answers.Where(a => a.Equals(answer)).FirstAsync(); + var tmp = await dbContext.Answers.Where(a => a.Equals(answer)).FirstOrDefaultAsync(); + if (tmp != null) // <=> he already exist + { + return tmp!; + } + await dbContext.Answers.AddAsync(answer); + await dbContext.SaveChangesAsync(); + return await dbContext.Answers.Where(a => a.Equals(answer)).FirstAsync(); } - public Task getAnswer(uint id) + public async Task 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? answers)> getAnswers(int nb, int count, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById) + public async Task<(int nbPages, IEnumerable? answers)> getAnswers(int nb, int count, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById) { int nbEl = getNbElements(); - if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable? answers)>((nbEl / count, null)); + if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable? answers)>((nbEl / count, null)); var tmp = dbContext.Answers; switch (orderCriteria) { @@ -45,16 +50,16 @@ namespace EntityManagers tmp.OrderBy(a => a.IdQuestion); break; } - return Task.FromResult<(int nbPages, IEnumerable? answers)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); + return await Task.FromResult<(int nbPages, IEnumerable? answers)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); } - public Task?> getAnswersByIdQuestion(uint id) + public async Task?> getAnswersByIdQuestion(uint id) { if(dbContext.Questions.Where(q => q.Id == id).Any()) { - return Task.FromResult?>(dbContext.Answers.Where(a => a.IdQuestion == id)); + return await Task.FromResult?>(dbContext.Answers.Where(a => a.IdQuestion == id)); } - return Task.FromResult?>(null); + return await Task.FromResult?>(null); } public int getNbElements() @@ -62,27 +67,36 @@ namespace EntityManagers return dbContext.Answers.CountAsync().Result; } - public Task removeAnswer(uint id) + public async Task removeAnswer(uint id) { var tmp = getAnswer(id).Result; - if (tmp == null) return Task.FromResult(tmp); + if (tmp == null) return await Task.FromResult(tmp); dbContext.Answers.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); + await dbContext.SaveChangesAsync(); + return await Task.FromResult(tmp); } - public Task removeAnswer(AnswerEntity answer) + public async Task removeAnswer(AnswerEntity answer) { var tmp = dbContext.Answers.Where(a => a.Equals(answer)).FirstOrDefaultAsync().Result; - if (tmp == null) return Task.FromResult(tmp); + if (tmp == null) return await Task.FromResult(tmp); dbContext.Answers.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); + await dbContext.SaveChangesAsync(); + return await Task.FromResult(tmp); } - public Task updateAnswer(uint id, AnswerEntity answer) + public async Task 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; } } } diff --git a/WebApi/EntityManagers/ChapterEntityManager.cs b/WebApi/EntityManagers/ChapterEntityManager.cs index 66a9e44..508ca87 100644 --- a/WebApi/EntityManagers/ChapterEntityManager.cs +++ b/WebApi/EntityManagers/ChapterEntityManager.cs @@ -16,22 +16,27 @@ namespace EntityManagers { MyDbContext dbContext = dbContext; - public Task addChapter(ChapterEntity chapter) + public async Task 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.SaveChangesAsync(); - return dbContext.Chapters.Where(a => a.Equals(chapter)).FirstAsync(); + await dbContext.SaveChangesAsync(); + return await dbContext.Chapters.Where(c => c.Equals(chapter)).FirstAsync(); } - public Task getChapter(uint id) + public async Task getChapter(uint id) { - return Task.FromResult(dbContext.Chapters.Where(c => c.Id == id).FirstOrDefault()); + return await dbContext.Chapters.Where(c => c.Id == id).FirstOrDefaultAsync(); } - public Task<(int nbPages, IEnumerable? chapters)> getChapters(int nb, int count, ChapterOrderCriteria orderCriteria = ChapterOrderCriteria.ById) + public async Task<(int nbPages, IEnumerable? chapters)> getChapters(int nb, int count, ChapterOrderCriteria orderCriteria = ChapterOrderCriteria.ById) { int nbEl = getNbElements(); - if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable? chapters)>((nbEl / count, null)); + if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable? chapters)>((nbEl / count, null)); var tmp = dbContext.Chapters; switch (orderCriteria) { @@ -42,7 +47,7 @@ namespace EntityManagers tmp.OrderBy(a => a.Name); break; } - return Task.FromResult<(int nbPages, IEnumerable? chapters)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); + return await Task.FromResult<(int nbPages, IEnumerable? chapters)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); } public int getNbElements() @@ -50,22 +55,22 @@ namespace EntityManagers return dbContext.Chapters.CountAsync().Result; } - public Task removeChapter(ChapterEntity chapter) + public async Task removeChapter(ChapterEntity chapter) { var tmp = dbContext.Chapters.Where(a => a.Equals(chapter)).FirstOrDefaultAsync().Result; - if (tmp == null) return Task.FromResult(tmp); + if (tmp == null) return await Task.FromResult(tmp); dbContext.Chapters.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); + await dbContext.SaveChangesAsync(); + return await Task.FromResult(tmp); } - public Task removeChapter(uint id) + public async Task removeChapter(uint id) { var tmp = getChapter(id).Result; - if (tmp == null) return Task.FromResult(tmp); + if (tmp == null) return await Task.FromResult(tmp); dbContext.Chapters.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); + await dbContext.SaveChangesAsync(); + return await Task.FromResult(tmp); } } } diff --git a/WebApi/EntityManagers/LobbyEntityManager.cs b/WebApi/EntityManagers/LobbyEntityManager.cs index 2a65850..cfef77a 100644 --- a/WebApi/EntityManagers/LobbyEntityManager.cs +++ b/WebApi/EntityManagers/LobbyEntityManager.cs @@ -16,17 +16,22 @@ namespace EntityManagers { MyDbContext dbContext = dbContext; - public Task addLobby(LobbyEntity lobby) + public async Task 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.SaveChangesAsync(); - return dbContext.Lobbies.Where(a => a.Equals(lobby)).FirstAsync(); + await dbContext.SaveChangesAsync(); + return await dbContext.Lobbies.Where(l => l.Equals(lobby)).FirstAsync(); } - public Task<(int nbPages, IEnumerable? lobbies)> getLobbies(int nb, int count, LobbyOrderCriteria orderCriteria = LobbyOrderCriteria.ById) + public async Task<(int nbPages, IEnumerable? lobbies)> getLobbies(int nb, int count, LobbyOrderCriteria orderCriteria = LobbyOrderCriteria.ById) { int nbEl = getNbElements(); - if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable? lobbies)>((nbEl / count, null)); + if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable? lobbies)>((nbEl / count, null)); var tmp = dbContext.Lobbies; switch (orderCriteria) { @@ -40,12 +45,12 @@ namespace EntityManagers tmp.OrderBy(l => l.NbPlayers); break; } - return Task.FromResult<(int nbPages, IEnumerable? lobbies)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); + return await Task.FromResult<(int nbPages, IEnumerable? lobbies)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); } - public Task getLobby(uint id) + public async Task getLobby(uint id) { - return Task.FromResult(dbContext.Lobbies.Where(l => l.Id == id).FirstOrDefault()); + return await Task.FromResult(dbContext.Lobbies.Where(l => l.Id == id).FirstOrDefault()); } public int getNbElements() @@ -53,22 +58,22 @@ namespace EntityManagers return dbContext.Lobbies.CountAsync().Result; } - public Task removeLobby(LobbyEntity lobby) + public async Task removeLobby(LobbyEntity lobby) { var tmp = dbContext.Lobbies.Where(a => a.Equals(lobby)).FirstOrDefaultAsync().Result; - if (tmp == null) return Task.FromResult(tmp); + if (tmp == null) return await Task.FromResult(tmp); dbContext.Lobbies.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); + await dbContext.SaveChangesAsync(); + return await Task.FromResult(tmp); } - public Task removeLobby(uint id) + public async Task removeLobby(uint id) { var tmp = dbContext.Lobbies.Where(a => a.Id == id).FirstOrDefaultAsync().Result; - if (tmp == null) return Task.FromResult(tmp); + if (tmp == null) return await Task.FromResult(tmp); dbContext.Lobbies.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); + await dbContext.SaveChangesAsync(); + return await Task.FromResult(tmp); } } } diff --git a/WebApi/EntityManagers/PlayerEntityManager.cs b/WebApi/EntityManagers/PlayerEntityManager.cs index 50c20c3..7f9538c 100644 --- a/WebApi/EntityManagers/PlayerEntityManager.cs +++ b/WebApi/EntityManagers/PlayerEntityManager.cs @@ -16,24 +16,29 @@ namespace EntityManagers { MyDbContext dbContext = dbContext; - public Task addPlayer(PlayerEntity player) + public async Task 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.SaveChangesAsync(); - return dbContext.Players.Where(a => a.Equals(player)).FirstAsync(); + await dbContext.SaveChangesAsync(); + return await dbContext.Players.Where(p => p.Equals(player)).FirstAsync(); } - public Task getMaxScorePlayer(uint id, uint idChapter) + public async Task getMaxScorePlayer(uint id, uint idChapter) { - var tmp = dbContext.Play.Where(p => p.IdPlayer == id && p.IdChapter == idChapter).FirstOrDefault(); - return Task.FromResult(tmp?.MaxScore); + var tmp = await dbContext.Play.Where(p => p.IdPlayer == id && p.IdChapter == idChapter).FirstOrDefaultAsync(); + return await Task.FromResult(tmp?.MaxScore); } - public Task getMaxScorePlayer(uint id) + public async Task getMaxScorePlayer(uint id) { var tmp = dbContext.Play.Where(p => p.IdPlayer == id).Select(p => p.MaxScore); - if (!tmp.AnyAsync().Result) return Task.FromResult(null); - return Task.FromResult(tmp?.MaxAsync().Result); + if (!tmp.AnyAsync().Result) return await Task.FromResult(null); + return await Task.FromResult(tmp?.MaxAsync().Result); } public int getNbElements() @@ -41,20 +46,20 @@ namespace EntityManagers return dbContext.Players.CountAsync().Result; } - public Task getPlayer(uint id) + public async Task getPlayer(uint id) { - return dbContext.Players.Where(p => p.Id == id).FirstOrDefaultAsync(); + return await dbContext.Players.Where(p => p.Id == id).FirstOrDefaultAsync(); } - public Task getPlayer(string nickname) + public async Task 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? players)> getPlayers(int nb, int count, PlayerOrderCriteria orderCriteria = PlayerOrderCriteria.ById) + public async Task<(int nbPage, IEnumerable? players)> getPlayers(int nb, int count, PlayerOrderCriteria orderCriteria = PlayerOrderCriteria.ById) { int nbEl = getNbElements(); - if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable? players)>((nbEl / count, null)); + if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable? players)>((nbEl / count, null)); var tmp = dbContext.Players; switch (orderCriteria) { @@ -65,32 +70,34 @@ namespace EntityManagers tmp.OrderBy(p => p.Nickname); break; } - return Task.FromResult<(int nbPages, IEnumerable? players)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); + return await Task.FromResult<(int nbPages, IEnumerable? players)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); } - public Task?> getPlayersInALobby(uint idLobby) + public async Task?> getPlayersInALobby(uint idLobby) { - return Task.FromResult?>(dbContext.Use + if (!await dbContext.Lobbies.Where(l => l.Id == idLobby).AnyAsync()) + return await Task.FromResult?>(null); + return await Task.FromResult?>(dbContext.Use .Where(u => u.IdLobby == idLobby) .Select(u => u.Player)); } - public Task removePlayer(PlayerEntity player) + public async Task removePlayer(PlayerEntity player) { var tmp = dbContext.Players.Where(p => p.Equals(player)).FirstOrDefaultAsync().Result; - if (tmp == null) return Task.FromResult(tmp); + if (tmp == null) return await Task.FromResult(tmp); dbContext.Players.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); + await dbContext.SaveChangesAsync(); + return await Task.FromResult(tmp); } - public Task removePlayer(uint id) + public async Task removePlayer(uint id) { var tmp = getPlayer(id).Result; - if (tmp == null) return Task.FromResult(tmp); + if (tmp == null) return await Task.FromResult(tmp); dbContext.Players.Remove(tmp); - dbContext.SaveChanges(); - return Task.FromResult(tmp); + await dbContext.SaveChangesAsync(); + return await Task.FromResult(tmp); } } } diff --git a/WebApi/EntityManagers/QuestionEntityManager.cs b/WebApi/EntityManagers/QuestionEntityManager.cs index 3a32056..ad0a73f 100644 --- a/WebApi/EntityManagers/QuestionEntityManager.cs +++ b/WebApi/EntityManagers/QuestionEntityManager.cs @@ -34,21 +34,26 @@ namespace EntityManagers return query; } - public Task addQuestion(QuestionEntity question) + public async Task 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.SaveChangesAsync(); - return dbContext.Questions.Where(q => q.Equals(question)).FirstAsync(); + await dbContext.SaveChangesAsync(); + return await dbContext.Questions.Where(q => q.Equals(question)).FirstAsync(); } - public Task> addQuestions(IEnumerable questions) + public async Task> addQuestions(IEnumerable questions) { var tmp = new List(); foreach (var q in questions) { tmp.Add(addQuestion(q).Result); } - return Task.FromResult>(tmp); + return await Task.FromResult>(tmp); } public int getNbElements() @@ -56,35 +61,35 @@ namespace EntityManagers return dbContext.Questions.CountAsync().Result; } - public Task getQuestion(uint id) + public async Task getQuestion(uint id) { - return Task.FromResult(dbContext.Questions.Where(q => q.Id == id).FirstOrDefault()); + return await Task.FromResult(dbContext.Questions.Where(q => q.Id == id).FirstOrDefault()); } - public Task<(int nbPages, IEnumerable? questions)> getQuestions(int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById) + public async Task<(int nbPages, IEnumerable? questions)> getQuestions(int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById) { int nbEl = getNbElements(); - if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable? questions)>((nbEl / count, null)); + if (nb < 0 || count < 0 || nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable? questions)>((nbEl / count, null)); var tmp = trier(dbContext.Questions, orderCriteria); - return Task.FromResult<(int nbPages, IEnumerable? questions)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); + return await Task.FromResult<(int nbPages, IEnumerable? questions)>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); } - public Task<(int nbPages, IEnumerable? questions)?> getQuestionsByChapterAndDifficulty(int idChapter, int difficulty, int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById) + public async Task<(int nbPages, IEnumerable? 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) - return Task.FromResult<(int nbPages, IEnumerable? questions)?>(null); + if (nb < 0 || count < 0 || difficulty < 1 || difficulty > 3 || !dbContext.Chapters.Where(c => c.Id == idChapter).AnyAsync().Result) + return await Task.FromResult<(int nbPages, IEnumerable? questions)?>(null); int nbEl = getNbElements(); - if (nb > nbEl / count) return Task.FromResult<(int nbPages, IEnumerable? questions)?>((nbEl / count, null)); + if (nb > nbEl / count) return await Task.FromResult<(int nbPages, IEnumerable? questions)?>((nbEl / count, null)); var tmp = trier(dbContext.Questions, orderCriteria); - return Task.FromResult<(int nbPages, IEnumerable? questions)?>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); + return await Task.FromResult<(int nbPages, IEnumerable? questions)?>((nbEl / count, tmp.Skip((nb - 1) * count).Take(count))); } - public Task removeQuestion(QuestionEntity question) + public async Task removeQuestion(QuestionEntity question) { - var tmp = dbContext.Questions.Where(q => q.Equals(question)).FirstOrDefaultAsync(); - if (tmp.Result == null) return tmp; - dbContext.Questions.Remove(tmp.Result); - dbContext.SaveChangesAsync(); + var tmp = await dbContext.Questions.Where(q => q.Equals(question)).FirstOrDefaultAsync(); + if (tmp == null) return tmp; + dbContext.Questions.Remove(tmp); + await dbContext.SaveChangesAsync(); return tmp; } @@ -97,29 +102,29 @@ namespace EntityManagers return tmp; } - public Task updateQuestion(uint id, QuestionEntity question) + public async Task updateQuestion(uint id, QuestionEntity question) { var tmp = getQuestion(id); - if (tmp.Result == null) return tmp; + if (tmp.Result == null) return await tmp; tmp.Result.Chapter = question.Chapter; tmp.Result.Content = question.Content; tmp.Result.IdChapter = question.IdChapter; tmp.Result.AnswerGood = question.AnswerGood; tmp.Result.Difficulty = question.Difficulty; - dbContext.SaveChangesAsync(); - return tmp; + await dbContext.SaveChangesAsync(); + return await tmp; } - public Task updateQuestionNbFalls(uint id) + public async Task updateQuestionNbFalls(uint id) { var tmp = getQuestion(id); - if (tmp.Result == null) return tmp; + if (tmp.Result == null) return await tmp; tmp.Result.NbFalls++; uint nbFalls = tmp.Result.NbFalls; if (nbFalls == 50) tmp.Result.Difficulty = 2; if (nbFalls == 150) tmp.Result.Difficulty = 3; - dbContext.SaveChangesAsync(); - return tmp; + await dbContext.SaveChangesAsync(); + return await tmp; } } }