/// <summary> /// Retourne le resultat d'un quizz /// </summary> /// <param name="idQuizz">id du quizz</param> /// <returns>QuizzResultDto</returns> public QuizzResultDto GetQuizzResult(int idQuizz) { FindQuizzDto quizz = this.GetQuizzById(idQuizz); // Dictionnaire, key: nom du niveau (junior,..) et // en valeur le nbre de question total du niveau et le nbre de bonne réponse dans ce niveau Dictionary <string, (int, int)> results = new Dictionary <string, (int, int)>(); results.Add("junior", (0, 0)); results.Add("confirme", (0, 0)); results.Add("expert", (0, 0)); foreach (FindQuizzQuestionsDto question in quizz.Questions) { string key = question.Level; if (results.ContainsKey(key)) { int nbCorrect = results[key].Item2; if ((bool)question.IsCorrectAnswer) { nbCorrect++; } results[key] = (results[key].Item1 + 1, nbCorrect); } } return(CalculResult(results)); }
/// <summary> /// Correction des réponses dans les quizz /// </summary> /// <param name="id"></param> internal void GetGoodAnswersQuizz(int id) { this.quizzRepository.UpdateDateQuizz(id); //Récupération du quizz FindQuizzDto quizz = this.GetQuizzById(id); //Instance d'une liste vide de strings si QCM Multiple et un string vide si QCM List <string> tableauGoodAnswer = new List <string>(); string goodUniqueAnswer = ""; //Correction questions par questions foreach (FindQuizzQuestionsDto question in quizz.Questions) { if (question.Answer.TypeAnswer == "QCM_multiple") { tableauGoodAnswer = correctAnswers(question); // on récupère la list des bonnes réponses List <string> candidatAnswers = question.CandidateAnswer.Split('§').ToList(); // On découpe la réponse du candidat en séparant avec le § if (CompareAnswers(candidatAnswers, tableauGoodAnswer)) { this.quizzQuestionService.AddIsCorrectAnswer(id, (int)question.IdQuestion, 1);//Si la réponse est exacte alors c'est "true" } else { this.quizzQuestionService.AddIsCorrectAnswer(id, (int)question.IdQuestion, 0); } } else if (question.Answer.TypeAnswer == "QCM") { foreach (FindChoiceAnswerDto choiceAnswer in question.Answer.ListChoiceAnswer) { if (choiceAnswer.IsAnswer == true) { goodUniqueAnswer = choiceAnswer.TextAnswer; // On récupère la bonne réponse dans la bdd } } if (CompareUniqueAnswer(question.CandidateAnswer, goodUniqueAnswer)) //On compare les réponses si c'est un QCM choix multiple { this.quizzQuestionService.AddIsCorrectAnswer(id, (int)question.IdQuestion, 1); //Si la réponse est exacte alors c'est "true" } else { this.quizzQuestionService.AddIsCorrectAnswer(id, (int)question.IdQuestion, 0); } } } }