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<(int nbPages, IEnumerable? questions)> getQuestions(int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById) { List? tmp = new List(); var res = await manager.getQuestions(nb, count, orderCriteria); if (res.questions == null) tmp = null; else { foreach (var item in res.questions) { tmp.Add(item.ToModel()); } } return await Task.FromResult<(int nbPages, IEnumerable? questions)>((res.nbPages, tmp)); } public async Task<(int nbPages, IEnumerable? questions)?> getQuestionsByChapterAndDifficulty(int idChapter, int difficulty, int nb, int count, QuestionOrderCriteria orderCriteria = QuestionOrderCriteria.ById) { List? tmp = new List(); var res = await manager.getQuestionsByChapterAndDifficulty(idChapter, difficulty, nb, count, orderCriteria); if (res == null) return await Task.FromResult<(int nbPages, IEnumerable? questions)?>(null); if (res.Value.questions == null) tmp = null; else { foreach (var item in res.Value.questions) { tmp.Add(item.ToModel()); } } return await Task.FromResult<(int nbPages, IEnumerable? questions)>((res.Value.nbPages, tmp)); } 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(); } } }