コード例 #1
0
        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");
            }
        }