public ActionResult BrowseBySubjectAndLevel(int idSubject, int idLevel)
        {
            List<Cours> listOfCours = coursRepository.GetCoursBySubjectIDandLevelID(idSubject, idLevel).ToList();
            // Je récupère les valeurs du Theme ici, pour ne pas le faire à chaque passage de Cours vers
            // CoursEspacePersoDisplayer
            string subjectIconUrl = subjectRepository.GetById(idSubject).IconPath;
            string subjectName = subjectRepository.GetById(idSubject).Name;
            string levelName = levelRepository.GetLevelName(idLevel);

            List<CoursEspacePersoDisplayer> listOfCoursDisplayer = new List<CoursEspacePersoDisplayer>();

            // Remplissage des objects CoursEspacePersoDisplayer
            foreach (Cours tempCours in listOfCours)
            {
                CoursEspacePersoDisplayer tempCoursDisplayer = new CoursEspacePersoDisplayer();
                tempCoursDisplayer.id = tempCours.ID;
                tempCoursDisplayer.urlIcon = subjectIconUrl;
                tempCoursDisplayer.theme = subjectName;
                tempCoursDisplayer.niveau = levelName;
                tempCoursDisplayer.droits = tempCours.visibility.ToString();
                tempCoursDisplayer.votesPour = tempCours.vote_positif;
                tempCoursDisplayer.votesContre = tempCours.vote_negatif;

                listOfCoursDisplayer.Add(tempCoursDisplayer);
            }
            ViewBag.listCoursByThemeAndLevel = listOfCoursDisplayer;
            return View();
        }
        /*
         * Affichage de la liste des cours pour un ID_SUBJECT donné
         */
        public ActionResult List(int themeID)
        {
            List<Cours> listOfCours = coursRepository.GetCoursBySubjectID(themeID).ToList();
            // Je récupère les valeurs du Theme ici, pour ne pas le faire à chaque passe de Cours vers
            // CoursEspacePersoDisplayer
            Subject tempSubject = subjectRepository.GetById(themeID);

            ViewBag.iconThemeGeneral = tempSubject.IconPath;

            string subjectIconUrl = tempSubject.IconPath;
            string subjectName = tempSubject.Name;
            //List<Cours> listOfSubject = new List<Cours>();

            List<CoursEspacePersoDisplayer> listOfCoursDisplayer = new List<CoursEspacePersoDisplayer>();

            // Remplissage des objets CoursEspacePersoDisplayer
            foreach (Cours tempCours in listOfCours)
            {
                CoursEspacePersoDisplayer tempCoursDisplayer = new CoursEspacePersoDisplayer();
                tempCoursDisplayer.id = tempCours.ID;
                tempCoursDisplayer.urlIcon = subjectIconUrl;
                tempCoursDisplayer.theme = subjectName;
                tempCoursDisplayer.niveau = levelRepository.GetLevelName(tempCours.idLevel);
                tempCoursDisplayer.droits = tempCours.visibility.ToString();
                tempCoursDisplayer.votesPour = tempCours.vote_positif;
                tempCoursDisplayer.votesContre = tempCours.vote_negatif;
                tempCoursDisplayer.nom = tempCours.titleCours;
                listOfCoursDisplayer.Add(tempCoursDisplayer);
            }
            ViewBag.listCoursByTheme = listOfCoursDisplayer;
            ViewBag.themeid = themeID;
            ViewBag.Theme = subjectRepository.GetById(themeID).Name;
            // On récupère dans la BDD, la liste de tous les Levels
            List<Level> listOfLevel = levelRepository.GetAll().ToList<Level>();

            // On crée une liste des NiveauDisplayer, qui contiendra la liste des NiveauDisplayer
            // retournée
            List<NiveauDisplayer> listOfNiveauDisplayer = new List<NiveauDisplayer>();

            foreach (Level tempLevel in listOfLevel)
            {
                NiveauDisplayer tempNiveauDisplayer = new NiveauDisplayer();
                tempNiveauDisplayer.niveauID = tempLevel.ID;
                tempNiveauDisplayer.niveauName = tempLevel.Name;
                listOfNiveauDisplayer.Add(tempNiveauDisplayer);
            }

            ViewBag.listNiveaux = listOfNiveauDisplayer;

            return View();
        }
        public ActionResult Private()
        {
            if (Session["userID"] != null)
            {
                // Cette fonction n'est pas encore implémentée, il suffira de decommenter lorsqu'elle le sera
                //Ci dessous APPEL RENO
                List<Cours> listOfSubject = coursRepository.GetCoursByUserID((int)Session["userID"]).ToList<Cours>();

                List<CoursEspacePersoDisplayer> listOfCoursDisplayer = new List<CoursEspacePersoDisplayer>();

                // Remplissage des objets CoursEspacePersoDisplayer
                foreach (Cours tempCours in listOfSubject)
                {
                    // On crée aussi un objet Subject pour récuperer le nom + l'icone
                    Subject tempSubject = subjectRepository.GetById(tempCours.idSubject);

                    CoursEspacePersoDisplayer tempCoursDisplayer = new CoursEspacePersoDisplayer();
                    tempCoursDisplayer.id = tempCours.ID;
                    tempCoursDisplayer.nom = tempCours.titleCours;
                    tempCoursDisplayer.urlIcon = tempSubject.IconPath;
                    tempCoursDisplayer.theme = tempSubject.Name;
                    tempCoursDisplayer.niveau = levelRepository.GetLevelName(tempCours.idLevel);
                    tempCoursDisplayer.droits = tempCours.visibility.ToString();
                    tempCoursDisplayer.votesPour = tempCours.vote_positif;
                    tempCoursDisplayer.votesContre = tempCours.vote_negatif;

                    listOfCoursDisplayer.Add(tempCoursDisplayer);
                }
                ViewBag.listPerso = listOfCoursDisplayer;
                return View();
            }
            else
            {
                return HttpNotFound();
             }
        }
        public ActionResult BrowseByTitlePattern(string titlePartial)
        {
            List<Cours> listOfCours = coursRepository.GetCoursByTitlePattern(titlePartial).ToList();

            List<CoursEspacePersoDisplayer> listOfCoursDisplayer = new List<CoursEspacePersoDisplayer>();

            // Remplissage des objets CoursEspacePersoDisplayer
            foreach (Cours tempCours in listOfCours)
            {
                // On récupère les composants des objets Subject et Level dont on a besoin
                Subject tempSubject = subjectRepository.GetById(tempCours.idSubject);
                string levelName = levelRepository.GetLevelName(tempCours.idLevel);

                CoursEspacePersoDisplayer tempCoursDisplayer = new CoursEspacePersoDisplayer();
                tempCoursDisplayer.id = tempCours.ID;
                tempCoursDisplayer.urlIcon = tempSubject.IconPath;
                tempCoursDisplayer.theme = tempSubject.Name;
                tempCoursDisplayer.nom = tempCours.titleCours;
                tempCoursDisplayer.niveau = levelName;
                tempCoursDisplayer.droits = tempCours.visibility.ToString();
                tempCoursDisplayer.votesPour = tempCours.vote_positif;
                tempCoursDisplayer.votesContre = tempCours.vote_negatif;

                listOfCoursDisplayer.Add(tempCoursDisplayer);
            }

            ViewBag.listCoursByTitlePattern = listOfCoursDisplayer;

            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            var output = new
            {
                listCours = listOfCoursDisplayer
            };
            JsonResult jsr = Json(javaScriptSerializer.Serialize(output), JsonRequestBehavior.AllowGet);
            return jsr;
        }