using DbConnectionLibrairie; using Entities; using EntityManagers; using ExtensionsClassLibrairie; using ManagerInterfaces; using Model; using OrderCriterias; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DataManagers { public class QuestionDataManager : IQuestionManager { private IQuestionManager manager; public QuestionDataManager(IQuestionManager manager) { this.manager = manager; } public async Task addQuestion(Question question) { return await Task.FromResult((await manager.addQuestion(question.ToEntity())).ToModel()); } public async Task> addQuestions(IEnumerable questions) { var tmp = new List(); foreach (var question in questions) { tmp.Add(question.ToEntity()); } var res = await manager.addQuestions(tmp); var tmp2 = new List(); foreach (var item in res) { tmp2.Add(item.ToModel()); } return tmp2; } public int getNbQuestions() { return manager.getNbQuestions(); } public async Task getQuestion(int id) { return await Task.FromResult((await manager.getQuestion(id))?.ToModel()); } public async Task getQuestion(string content) { return (await manager.getQuestion(content))?.ToModel(); } public async Task<(int nbPages, IEnumerable? questions)> getQuestions(int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById) { var res = await manager.getQuestions(nb, count, orderCriteria); return (res.nbPages, res.questions?.Select(q => q.ToModel())); } public async Task<(int nbPages, IEnumerable? questions)?> getQuestionsByChapterAndDifficulty(int idChapter, int difficulty, int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById) { var res = await manager.getQuestionsByChapterAndDifficulty(idChapter, difficulty, nb, count, orderCriteria); if (res == null) return null; return (res?.nbPages ?? getNbQuestions()/count, res?.questions?.Select(q => q.ToModel())); } public async Task removeQuestion(Question question) { return (await manager.removeQuestion(question.ToEntity()))?.ToModel(); } public async Task removeQuestion(int id) { return (await manager.removeQuestion(id))?.ToModel(); } public async Task updateQuestion(int id, Question question) { return (await manager.updateQuestion(id, question.ToEntity()))?.ToModel(); } public async Task updateQuestionNbFalls(int id) { return (await manager.updateQuestionNbFalls(id))?.ToModel(); } } }