using DataManagers; using DbConnectionLibrairie; using DTOs; 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 ServiceManagers { public class QuestionServiceManager(IQuestionManager manager) : IQuestionManager { private IQuestionManager manager = manager; public async Task addQuestion(QuestionDto question) { return await Task.FromResult((await manager.addQuestion(question.ToModel())).ToDto()); } public async Task> addQuestions(IEnumerable questions) { var tmp = new List(); foreach (var question in questions) { tmp.Add(question.ToModel()); } var res = await manager.addQuestions(tmp); var tmp2 = new List(); foreach (var item in res) { tmp2.Add(item.ToDto()); } return tmp2; } public int getNbQuestions() { return manager.getNbQuestions(); } public async Task getQuestion(int id) { return await Task.FromResult((await manager.getQuestion(id))?.ToDto()); } public async Task getQuestion(string content) { return (await manager.getQuestion(content))?.ToDto(); } 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.ToDto())); } 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.ToDto())); } public async Task removeQuestion(QuestionDto question) { return (await manager.removeQuestion(question.ToModel()))?.ToDto(); } public async Task removeQuestion(int id) { return (await manager.removeQuestion(id))?.ToDto(); } public async Task updateQuestion(int id, QuestionDto question) { return (await manager.updateQuestion(id, question.ToModel()))?.ToDto(); } public async Task updateQuestionNbFalls(int id) { return (await manager.updateQuestionNbFalls(id))?.ToDto(); } } }