public ActionResult Index(int?page, RechercheActiviteViewModel rechercheActivite, int?vientDePagination) { int nbItemsParPages = 5; if (vientDePagination != null && TempData["rechercheActiviteAncienne"] != null) { rechercheActivite = TempData["rechercheActiviteAncienne"] as RechercheActiviteViewModel; } else { page = null; } if (TempData["rechercheActivite"] != null) { rechercheActivite = TempData["rechercheActivite"] as RechercheActiviteViewModel; } if (rechercheActivite == null) { rechercheActivite = new RechercheActiviteViewModel(); } //Par défaut, on met la recherche d'activité aux activités futurs if (rechercheActivite.activiteFuturs == null) { rechercheActivite.activiteFuturs = true; } try { int noMembreCo; verifierSiCookieNoMembreExiste(out noMembreCo); IQueryable <Activite> listActiviteTrouves = Utilitaires.RechercheActiviteAvecCriteres(noMembreCo, rechercheActivite); GestionPagination(page, nbItemsParPages, rechercheActivite.nbActivitesTrouvesTotal); rechercheActivite.resultatsActivite = listActiviteTrouves .Skip((int)(ViewBag.currentPage - 1) * nbItemsParPages) .Take(nbItemsParPages) .Include(a => a.listeAvisActivite) .Include(a => a.listePhotosActivites) .ToList(); TempData["rechercheActiviteAncienne"] = rechercheActivite; if (noMembreCo != -1) { Membre membreCo = db.Membres.Where(m => m.noMembre == noMembreCo).FirstOrDefault(); if (membreCo != null) { //Si le membre est connecté, et qu'il a déjà envoyé un commentaire, on va le rechercher, sinon on en crée un nouveau. foreach (Activite a in rechercheActivite.resultatsActivite) { AvisActivite avisDuMembreCo = a.listeAvisActivite.Where(m => m.noMembreEnvoyeur == membreCo.noMembre && m.noActiviteAssocie == a.noActivite).FirstOrDefault(); if (avisDuMembreCo == null) { AvisActivite nouvelleAvisActivite = new AvisActivite(); nouvelleAvisActivite.membreEnvoyeur = membreCo; nouvelleAvisActivite.noMembreEnvoyeur = membreCo.noMembre; nouvelleAvisActivite.activiteAssocie = a; nouvelleAvisActivite.noActiviteAssocie = a.noActivite; a.listeAvisActivite.Add(nouvelleAvisActivite); } } } } ViewBag.listeThemes = new SelectList(db.Themes, "noTheme", "theme", rechercheActivite.noTheme); return(View("Index", rechercheActivite)); } catch (Exception e) { Dictionary <string, string> parametres = new Dictionary <string, string>() { { "Page", page.ToString() } }; throw Utilitaires.templateException("Index", "Activites", "Requête LINQ pour aller chercher les activites des résultats de recherche n'a pas fonctionnée.", e, parametres, "get"); } }