/// <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);
                    }
                }
            }
        }