Esempio n. 1
0
        // GET: Emoticon
        public ActionResult EnvoyerEmoticon(int noEmoticon, int noMembreReceveur)
        {
            try
            {
                Emoticon lemoticon = db.Emoticons.Where(e => e.noEmoticon == noEmoticon).FirstOrDefault();

                int noMembreCo;

                Membre leMembreConnectee = null;
                Membre leMembreReceveur  = db.Membres.Where(m => m.noMembre == noMembreReceveur).FirstOrDefault();

                if (verifierSiCookieNoMembreExiste(out noMembreCo))
                {
                    leMembreConnectee = db.Membres.Where(m => m.noMembre == noMembreCo).FirstOrDefault();
                }

                if (lemoticon == null)
                {
                    throw new Exception("L'objet Emoticon est null.");
                }
                else if (leMembreConnectee == null)
                {
                    throw new Exception("Le membre connecté est null.");
                }
                else if (leMembreReceveur == null)
                {
                    throw new Exception("Le membre receveur est null.");
                }

                Gift leNouveauCadeau = new Gift();

                leNouveauCadeau.dateEnvoi      = DateTime.Now;
                leNouveauCadeau.emoticonEnvoye = lemoticon;

                leNouveauCadeau.membreReceveur = leMembreReceveur;

                leNouveauCadeau.membreEnvoyeur = leMembreConnectee;
                leNouveauCadeau.vientDePremium = leMembreConnectee.premium;

                leNouveauCadeau.supprimeDeReceveur = false;

                db.Gifts.Add(leNouveauCadeau);

                db.SaveChanges();
            }
            catch (Exception e)
            {
                Dictionary <string, string> parametres = new Dictionary <string, string>()
                {
                    { "noEmoticon", noEmoticon.ToString() },
                    { "noMembreReceveur", noMembreReceveur.ToString() }
                };

                throw LesUtilitaires.Utilitaires.templateException("(AJAX) EnvoyerEmoticon", "Emoticon", "Requête LINQ n'a pas fonctionnée ou update BD n'a pas fonctionnée.",
                                                                   e, parametres);
            }


            return(null);
        }
Esempio n. 2
0
        public ActionResult Edit(CompteAdmin compteAdmin)
        {
            if (ModelState.IsValid)
            {
                if (compteAdmin.noCompteAdmin == 0)
                {
                    db.Entry(compteAdmin).State = EntityState.Added;
                }
                else
                {
                    if (compteAdmin.motDePasseHashe == "" || compteAdmin.motDePasseHashe == null)
                    {
                        compteAdmin.motDePasseHashe = db.CompteAdmins.Where(m => m.noCompteAdmin == compteAdmin.noCompteAdmin).Select(m => m.motDePasseHashe).FirstOrDefault();
                    }

                    db.Entry(compteAdmin).State = EntityState.Modified;
                }

                db.SaveChanges();
            }
            else
            {
                return(View("Edit", compteAdmin));
            }

            return(RedirectToAction("Index", "CompteAdmin"));
        }
Esempio n. 3
0
        public static string AnnulerActivite(int noActivite, int?noMembreCo, out Activite activite)
        {
            ClubContactContext db = new ClubContactContext();

            activite = db.Activites.Where(p => p.noActivite == noActivite).Include(m => m.listeAvisActivite).Include(m => m.listePhotosActivites).Include(m => m.membresParticipants).FirstOrDefault();

            if (activite == null)
            {
                return("Activité non trouvée.");
            }

            if (noMembreCo != null)
            {
                if (activite.noMembreOrganisateur != noMembreCo)
                {
                    return("Interdit");
                }
            }

            try
            {
                activite.annulee = true;

                db.SaveChanges();

                return("Reussi");
            }
            catch (Exception e)
            {
                throw Utilitaires.templateException("annulerActivite", "Objet Utilitaires.cs", "Suppression de l'activité n'as pas fonctionné.", e);
            }
        }
        public ActionResult ToutSupprimerMessagesCorbeille()
        {
            int noMembreCo;

            if (!verifierSiCookieNoMembreExiste(out noMembreCo))
            {
                return(RedirectToAction("Home", "Home"));
            }

            try
            {
                Membre leMembre = db.Membres.Where(m => m.noMembre == noMembreCo).FirstOrDefault();

                List <Message> messagesASupprimerCoteEnvoyeur = db.Messages.Where(m => m.noMembreEnvoyeur == leMembre.noMembre && m.dansCorbeilleCoteEnvoyeur == true).ToList();
                List <Message> messagesASupprimerCoteReceveur = db.Messages.Where(m => m.noMembreReceveur == leMembre.noMembre && m.dansCorbeilleCoteReceveur == true).ToList();
                messagesASupprimerCoteEnvoyeur.AddRange(messagesASupprimerCoteReceveur);

                //List<Message> messagesASupprimerDefinitivement = new List<Message>();

                foreach (Message m in messagesASupprimerCoteEnvoyeur)
                {
                    if (m.noMembreEnvoyeur == leMembre.noMembre)
                    {
                        m.supprimerCoteEnvoyeur = true;
                    }
                    if (m.noMembreReceveur == leMembre.noMembre)
                    {
                        m.supprimerCoteReceveur = true;
                    }

                    //if(m.supprimerCoteEnvoyeur && m.supprimerCoteReceveur)
                    //{
                    //    messagesASupprimerDefinitivement.Add(m);
                    //}
                }

                //db.Messages.RemoveRange(messagesASupprimerDefinitivement);

                db.SaveChanges();
            }
            catch (Exception e)
            {
                throw LesUtilitaires.Utilitaires.templateException("ToutSupprimerMessagesCorbeille", "Messagerie", "La suppression des messages n'a pas fonctionnée ou requête LINQ n'a pas fonctionnée.",
                                                                   e);
            }

            return(RedirectToAction("Inbox", new { categorie = "deleted" }));
        }
Esempio n. 5
0
    public ActionResult ResetMotDePasse(Membre leMembre, string motDePasse1)
    {
        ClubContactContext db = new ClubContactContext();

        Membre leMembreAResetLeMotDePasse = db.Membres.Where(m => m.noMembre == leMembre.noMembre).FirstOrDefault();

        ValiderMotDePasse(motDePasse1, null, leMembre.noMembre, true);


        //Reste validation Coté serveur à faire
        leMembreAResetLeMotDePasse.motDePasse = motDePasse1;

        db.SaveChanges();

        return(RedirectToAction("Login", "Authentification"));
    }
        public ActionResult Index(List <ForfaitPremium> forfaitsPremium, int?test)
        {
            if (ModelState.IsValid)
            {
                foreach (ForfaitPremium fp in forfaitsPremium)
                {
                    db.Entry(fp).State = EntityState.Modified;
                }

                db.SaveChanges();

                TempData["messageReussiteSauvegarde"] = "Sauvegarde réussi!";
                TempData.Keep();
            }

            return(View(forfaitsPremium));
        }
Esempio n. 7
0
        public static string ParticiperActivite(int noActivite, int noMembre)
        {
            try
            {
                ClubContactContext db = new ClubContactContext();

                string etaitDejaParticipant;

                Membre   leMembreCo = db.Membres.Where(m => m.noMembre == noMembre).FirstOrDefault();
                Activite lActivite  = db.Activites.Where(a => a.noActivite == noActivite).Include(a => a.membresParticipants).FirstOrDefault();

                if (lActivite.membresParticipants.Contains(leMembreCo))
                {
                    lActivite.membresParticipants.Remove(leMembreCo);
                    etaitDejaParticipant = "True";
                }
                else
                {
                    lActivite.membresParticipants.Add(leMembreCo);
                    etaitDejaParticipant = "False";
                }

                db.SaveChanges();

                return(etaitDejaParticipant);
            }
            catch (Exception e)
            {
                Dictionary <string, string> parametres = new Dictionary <string, string>()
                {
                    { "noActivite", noActivite.ToString() },
                    { "noMembre", noMembre.ToString() }
                };
                throw Utilitaires.templateException("ParticiperActivite", "Classe Utilitaires.js", "Requête LINQ n'a pas fonctionnée.", e, parametres);
            }
        }
Esempio n. 8
0
        public ActionResult Gestion(int?page, GestionViewModel gestionViewModel, int?tab, int?vientDePagination)
        {
            if (TempData["gestionViewModelPOST"] != null)
            {
                gestionViewModel = TempData["gestionViewModelPOST"] as GestionViewModel;
            }

            if (vientDePagination != null)
            {
                if (TempData["gestionViewModelAncien"] != null)
                {
                    gestionViewModel = TempData["gestionViewModelAncien"] as GestionViewModel;
                }
            }
            //Si on a fait un submit ou une chose autre que la pagination, on remet les pages à 0!
            else
            {
                page = null;
            }

            //On crée le gestion ViewModel s'il n'existe pas
            if (gestionViewModel == null)
            {
                gestionViewModel = new GestionViewModel();
            }

            if (tab != null)
            {
                gestionViewModel.noTabSelected = (int)tab;
            }
            else if (gestionViewModel.noTabSelected == null)
            {
                gestionViewModel.noTabSelected = 1;
            }

            //Membres
            if (gestionViewModel.noTabSelected == 1)
            {
                int nbMembresParPage = 50;

                /*(m.compteSupprimeParAdmin == null && m.dateSuppressionDuCompte == null)*/
                IQueryable <Membre> listeDeMembres = Statistiques.ListeMembres(gestionViewModel.membresPremiumUniquement, gestionViewModel.ageMin, gestionViewModel.ageMax, gestionViewModel.noProvince, gestionViewModel.noVille, gestionViewModel.afficherMembresDesactiver);

                gestionViewModel.nbMembresTotalTrouves = listeDeMembres.Count();

                GestionPagination(page, nbMembresParPage, (int)gestionViewModel.nbMembresTotalTrouves);

                ViewBag.premiumUniquement = new List <SelectListItem>
                {
                    new SelectListItem {
                        Text = "Premium", Value = true.ToString()
                    },
                    new SelectListItem {
                        Text = "Gratuits", Value = false.ToString()
                    },
                };

                if (gestionViewModel.triMembrePar == "age")
                {
                    listeDeMembres = listeDeMembres.OrderByDescending(m => m.dateNaissance).ThenBy(m => m.noMembre);
                }
                else if (gestionViewModel.triMembrePar == "sexe")
                {
                    listeDeMembres = listeDeMembres.OrderByDescending(m => m.homme).ThenBy(m => m.noMembre);
                }
                else if (gestionViewModel.triMembrePar == "dateInscription")
                {
                    listeDeMembres = listeDeMembres.OrderByDescending(m => m.dateInscription).ThenBy(m => m.noMembre);
                }
                else if (gestionViewModel.triMembrePar == "derniereConnexion")
                {
                    listeDeMembres = listeDeMembres.OrderByDescending(m => m.listeConnexions.OrderByDescending(x => x.dateConnexion).Select(x => (DateTime?)x.dateConnexion).FirstOrDefault()

                                                                      ).ThenBy(m => m.noMembre);
                }
                else
                {
                    listeDeMembres = listeDeMembres.OrderBy(m => m.noMembre);
                }

                ViewBag.province = new SelectList(db.Provinces, "noProvince", "nomProvince", gestionViewModel.noProvince);

                gestionViewModel.lesMembres = listeDeMembres
                                              .Skip((int)(ViewBag.currentPage - 1) * nbMembresParPage)
                                              .Take(nbMembresParPage)
                                              .Include(a => a.listeRaisonsSurSite)
                                              .Include(a => a.listeConnexions)
                                              .ToList();
            }
            //Signalement
            else if (gestionViewModel.noTabSelected == 2)
            {
                List <Signalement> signalementsAChangerDEtat = db.Signalements.Where(m => m.etatSignalementActuel.nomEtatSignalement == "En suivi" &&
                                                                                     m.dateSuiviNecessaire <= DateTime.Now).ToList();
                if (signalementsAChangerDEtat.Count > 0)
                {
                    foreach (Signalement s in signalementsAChangerDEtat)
                    {
                        s.etatSignalementActuel = db.EtatSignalements.Where(m => m.nomEtatSignalement == "À traiter").FirstOrDefault();
                    }
                    db.SaveChanges();
                }

                int nbSignalementParPage = 50;

                IQueryable <Signalement> listeSignalement = Statistiques.ListeSignalement(gestionViewModel.noEtatSignalementRecherche);

                gestionViewModel.nbSignalementTotalTrouves = listeSignalement.Count();

                GestionPagination(page, nbSignalementParPage, (int)gestionViewModel.nbSignalementTotalTrouves);

                /*ViewBag.premiumUniquement = new List<SelectListItem>
                 * {
                 *  new SelectListItem { Text = "Premium", Value = true.ToString() },
                 *  new SelectListItem { Text = "Gratuits", Value = false.ToString() },
                 * };*/

                ViewBag.listeEtatSignalementPlainte = db.EtatSignalements;

                gestionViewModel.lesSignalement = listeSignalement.OrderBy(m => m.noEtatSignalementActuel).ThenByDescending(m => m.dateSignalement).ThenBy(m => m.noSignalement)
                                                  .Skip((int)(ViewBag.currentPage - 1) * nbSignalementParPage)
                                                  .Take(nbSignalementParPage)
                                                  .Include(m => m.lesCommentairesSurCeSignalement)
                                                  .ToList();

                foreach (Signalement s in gestionViewModel.lesSignalement)
                {
                    CommentaireSignalement nouveauCommentaire = new CommentaireSignalement();
                    nouveauCommentaire.compteAdminEnvoyeur   = db.CompteAdmins.Where(m => m.nomCompte == User.Identity.Name).FirstOrDefault();
                    nouveauCommentaire.dateCommentaire       = DateTime.MinValue;
                    nouveauCommentaire.noCompteAdminEnvoyeur = nouveauCommentaire.compteAdminEnvoyeur.noCompteAdmin;
                    nouveauCommentaire.signalementLie        = s;
                    nouveauCommentaire.noSignalementLie      = s.noSignalement;

                    s.lesCommentairesSurCeSignalement.Add(nouveauCommentaire);
                }

                gestionViewModel.nbSignalementTotalNouveau  = Statistiques.NbSignalementsRecu(false, true);
                gestionViewModel.nbSignalementTotalRecuSite = Statistiques.NbSignalementsRecu(false, false);
                gestionViewModel.nbSignalementTotalTraites  = Statistiques.NbSignalementsRecu(true, false);
            }
            //Abonnement
            else
            {
                int nbAbonnementsParPage = 25;

                gestionViewModel.nbAbonnements1Mois = Statistiques.NbAbonnement(1, gestionViewModel.anneeDebut, gestionViewModel.moisDebut, gestionViewModel.jourDebut,
                                                                                gestionViewModel.anneeFin, gestionViewModel.moisFin, gestionViewModel.jourFin);
                gestionViewModel.nbAbonnements6Mois = Statistiques.NbAbonnement(6, gestionViewModel.anneeDebut, gestionViewModel.moisDebut, gestionViewModel.jourDebut,
                                                                                gestionViewModel.anneeFin, gestionViewModel.moisFin, gestionViewModel.jourFin);
                gestionViewModel.nbAbonnements12Mois = Statistiques.NbAbonnement(12, gestionViewModel.anneeDebut, gestionViewModel.moisDebut, gestionViewModel.jourDebut,
                                                                                 gestionViewModel.anneeFin, gestionViewModel.moisFin, gestionViewModel.jourFin);

                gestionViewModel.nbDesabonnementTotal = Statistiques.NbDesabonnement(gestionViewModel.anneeDebut, gestionViewModel.moisDebut, gestionViewModel.jourDebut,
                                                                                     gestionViewModel.anneeFin, gestionViewModel.moisFin, gestionViewModel.jourFin);

                gestionViewModel.revenuTotal = Statistiques.Revenu(null, gestionViewModel.anneeDebut, gestionViewModel.moisDebut, gestionViewModel.jourDebut,
                                                                   gestionViewModel.anneeFin, gestionViewModel.moisFin, gestionViewModel.jourFin);

                gestionViewModel.TPSTotal = Statistiques.RevenuTPS(null, gestionViewModel.anneeDebut, gestionViewModel.moisDebut, gestionViewModel.jourDebut,
                                                                   gestionViewModel.anneeFin, gestionViewModel.moisFin, gestionViewModel.jourFin);

                gestionViewModel.TVQTotal = Statistiques.RevenuTVQ(null, gestionViewModel.anneeDebut, gestionViewModel.moisDebut, gestionViewModel.jourDebut,
                                                                   gestionViewModel.anneeFin, gestionViewModel.moisFin, gestionViewModel.jourFin);

                IQueryable <Abonnement> listeDesAbonnementQuery = Statistiques.LesAbonnements(gestionViewModel.anneeDebut, gestionViewModel.moisDebut, gestionViewModel.jourDebut,
                                                                                              gestionViewModel.anneeFin, gestionViewModel.moisFin, gestionViewModel.jourFin);

                GestionPagination(page, nbAbonnementsParPage, listeDesAbonnementQuery.Count());

                gestionViewModel.listeDesAbonnements = listeDesAbonnementQuery.OrderByDescending(m => m.datePaiement).ThenBy(m => m.noAbonnement)
                                                       .Skip((int)(ViewBag.currentPage - 1) * nbAbonnementsParPage)
                                                       .Take(nbAbonnementsParPage)
                                                       .Include(m => m.provinceFacturation)
                                                       .ToList();

                int?anneeLaPlusLoin   = db.Abonnements.OrderBy(m => m.datePaiement).Select(m => m.datePaiement).FirstOrDefault().Year;
                int?anneeLaPlusProche = db.Abonnements.OrderByDescending(m => m.datePaiement).Select(m => m.datePaiement).FirstOrDefault().Year;

                setupViewBagMoisEtAnnee(gestionViewModel.moisDebut, gestionViewModel.moisFin, gestionViewModel.anneeDebut, gestionViewModel.anneeFin, anneeLaPlusLoin, anneeLaPlusProche);
            }

            TempData["gestionViewModelAncien"] = gestionViewModel;

            return(View("Gestion", gestionViewModel));
        }
Esempio n. 9
0
    public ActionResult Login(LoginViewModel model, string returnUrl)
    {
        ClubContactContext db = new ClubContactContext();

        ViewBag.ReturnUrl = returnUrl;

        ViewBag.Title = "Se connecter";
        if (!ModelState.IsValid)
        {
            return(View(model));
        }
        if (!ValidateUser(model.Login, model.Password))
        {
            ModelState.AddModelError(string.Empty, "Le courriel ou le mot de passe est incorrect.");
            return(View(model));
        }

        // L'authentification est réussie,
        // injecter les informations utilisateur dans le cookie d'authentification :
        var userClaims = new List <Claim>();


        if (model.Login.ToLower() != "admin")
        {
            try
            {
                //on trouve le membre
                Membre leMembre = db.Membres
                                  .Where(m => m.courriel.ToLower() == model.Login.ToLower() && m.compteSupprimeParAdmin == null && m.dateSuppressionDuCompte == null)
                                  .FirstOrDefault();

                //Gestion de l'abonnement (vérifie qu'il est encore premium)
                Abonnement abonnementActuel = db.Abonnements
                                              .Where(m => (m.noMembre == leMembre.noMembre) &&
                                                     (m.dateDebut < DateTime.Now) &&
                                                     (m.dateFin > DateTime.Now)
                                                     ).AsNoTracking().FirstOrDefault();
                if (abonnementActuel == null)
                {
                    //Si le membre est premium mais que son abonnement est terminé...
                    if (leMembre.premium)
                    {
                        abonnementActuel.renouveler = false;
                        leMembre.premium            = false;

                        db.SaveChanges();
                    }
                }
                else if ((abonnementActuel.dateFin.Date - DateTime.Now.Date) <= new TimeSpan(1, 0, 0, 0))
                {
                    //Afficher message qu'il reste juste 1 journée à son abonnement
                }

                if (leMembre != null)
                {
                    // Identifiant utilisateur :
                    userClaims.Add(new Claim(ClaimTypes.Name, leMembre.surnom));
                    userClaims.Add(new Claim(ClaimTypes.NameIdentifier, leMembre.surnom));
                }
                else
                {
                    throw new Exception("Erreur: Le membre recherché est égale à null à la suite de la requête LINQ.");
                }

                //-------------------------création du cookie-------------------------------------------
                HttpCookie myCookie = new HttpCookie("SiteDeRencontre");

                myCookie["noMembre"]        = leMembre.noMembre.ToString();
                myCookie["premium"]         = leMembre.premium ? "true" : "false";
                myCookie["seSouvenirDeMoi"] = model.seSouvenirDeMoi ? "true" : "false";

                /*---------pour analytics---------*/
                HttpCookie analytics = new HttpCookie("AnalyticsCC");
                analytics.Expires = DateTime.Now.AddDays(-1);
                Response.Cookies.Add(analytics);
                /*---------pour analytics---------*/

                if (model.seSouvenirDeMoi)
                {
                    myCookie.Expires = new System.DateTime(2020, 1, 1);
                }

                Response.Cookies.Add(myCookie);
            }
            catch (Exception e)
            {
                Exception exc = new Exception("Action: Login (POST), Contrôleur: Authentification ; Erreur potentielle: Requête LINQ n'a pas fonctionnée. ; login Membre : " + model.Login + ".", e);
                Elmah.ErrorSignal.FromCurrentContext().Raise(exc);

                ModelState.AddModelError(string.Empty, "Une erreur s'est produite lors de la connexion, veuillez réessayer.");
                return(View(model));
            }
        }
        else
        {
            // Identifiant utilisateur :
            userClaims.Add(new Claim(ClaimTypes.Name, model.Login));
            userClaims.Add(new Claim(ClaimTypes.NameIdentifier, model.Login));
        }

        // Rôles utilisateur :
        userClaims.AddRange(LoadRoles(model.Login));
        var claimsIdentity        = new ClaimsIdentity(userClaims, DefaultAuthenticationTypes.ApplicationCookie);
        var ctx                   = Request.GetOwinContext();
        var authenticationManager = ctx.Authentication;
        var properties            = new AuthenticationProperties {
            IsPersistent = model.seSouvenirDeMoi
        };

        authenticationManager.SignIn(properties, claimsIdentity);

        //?? à revoir une fois que ça fonctionne, avec la prof
        // Rediriger vers l'url d'origine :
        if (Url.IsLocalUrl(ViewBag.ReturnUrl))
        {
            return(Redirect(ViewBag.ReturnUrl));
        }

        // Par défaut, rediriger vers la page d'accueil :
        return(RedirectToAction("Home", "Home"));
    }
Esempio n. 10
0
        public ActionResult Index(int?page, RechercheActiviteViewModel rechercheActivite, string btnAjoutCommentaire,
                                  List <List <string> > deletePhotos, List <List <HttpPostedFileBase> > fichiersPhotos)
        {
            int noMembreCo;

            verifierSiCookieNoMembreExiste(out noMembreCo);

            if (rechercheActivite.dateRecherche != null)
            {
                if (((DateTime)rechercheActivite.dateRecherche).Date < DateTime.Now.Date)
                {
                    rechercheActivite.activiteFuturs = false;
                }
                else
                {
                    rechercheActivite.activiteFuturs = true;
                }
            }

            int noActiviteModifier;

            if (int.TryParse(btnAjoutCommentaire, out noActiviteModifier))
            {
                int indexActiviteBouton = rechercheActivite.resultatsActivite.FindIndex(a => a.noActivite == noActiviteModifier);

                int indexAvisMembre = rechercheActivite.resultatsActivite[indexActiviteBouton].listeAvisActivite.FindIndex(m => m.noMembreEnvoyeur == noMembreCo);

                if (rechercheActivite.resultatsActivite[indexActiviteBouton].listeAvisActivite[indexAvisMembre].noAvisActivite == 0)
                {
                    db.Entry(rechercheActivite.resultatsActivite[indexActiviteBouton].listeAvisActivite[indexAvisMembre]).State = EntityState.Added;
                }
                else
                {
                    db.Entry(rechercheActivite.resultatsActivite[indexActiviteBouton].listeAvisActivite[indexAvisMembre]).State = EntityState.Modified;
                }

                try
                {
                    db.SaveChanges();
                }
                catch (DbUpdateException e)
                {
                    Elmah.ErrorSignal.FromCurrentContext().Raise(Utilitaires.templateException("Index", "Activites", "Mise à jour de la base de données à la suite de l'ajout d'un commentaire à échoué.", e, null, "post"));
                    TempData["rechercheActivite"] = rechercheActivite;

                    TempData["messageErreur"] = "Une erreur est survenu lors de la sauvegarde de votre commentaire, veuillez réessayer.";
                    TempData.Keep();

                    return(RedirectToAction("Index", "Activites", new { page = page }));
                }
            }
            else if (btnAjoutCommentaire == "recherche")
            {
                page = null;
            }
            else if (btnAjoutCommentaire != null)
            {
                if (btnAjoutCommentaire.Contains("photosActivite"))
                {
                    string iString = btnAjoutCommentaire.Remove(0, 14);
                    int    i;
                    if (!int.TryParse(iString, out i))
                    {
                        Elmah.ErrorSignal.FromCurrentContext().Raise(Utilitaires.templateException("Index", "Activites", "Parse du int lors de la sauvegarde des photos des activités n'a pas fonctionné, nom photosActivite a peut-être été modifié.", null, null, "post"));
                        TempData["rechercheActivite"] = rechercheActivite;

                        TempData["messageErreur"] = "Une erreur est survenu lors de la sauvegarde de vos photos, veuillez réessayer.";
                        TempData.Keep();

                        return(RedirectToAction("Index", "Activites", new { page = page }));
                    }

                    Activite activiteModifier = TrouverInformationsDActiviteEtAjouterPhotos(rechercheActivite.resultatsActivite[i]);

                    List <PhotosActivite> listeActivitesPhotos = activiteModifier.listePhotosActivites;

                    for (int y = 0; y < listeActivitesPhotos.Count; y++)
                    {
                        if (listeActivitesPhotos[y].noPhotoActivite == 0 && fichiersPhotos[i][y] == null)
                        {
                            db.Entry(listeActivitesPhotos[y]).State = EntityState.Detached;

                            listeActivitesPhotos.RemoveAt(y);
                            deletePhotos[i].RemoveAt(y);
                            fichiersPhotos[i].RemoveAt(y);
                            y--;
                        }
                        else if (listeActivitesPhotos[y].noPhotoActivite == 0)
                        {
                            db.Entry(listeActivitesPhotos[y]).State = EntityState.Added;
                        }
                    }

                    db.Entry(activiteModifier).State = EntityState.Modified;

                    //étape 2
                    for (int y = 0; y < listeActivitesPhotos.Count; y++)
                    {
                        //Si on veut supprimer la photo
                        if (deletePhotos[i].Count > y && deletePhotos[i][y] == "true")
                        {
                            if (listeActivitesPhotos[y].noPhotoActivite == 0)
                            {
                                listeActivitesPhotos.RemoveAt(y);
                                deletePhotos[i].RemoveAt(y);
                                fichiersPhotos[i].RemoveAt(y);
                                y--;
                            }
                            else
                            {
                                var path     = Url.Content("~/Upload/PhotosActivites/" + listeActivitesPhotos[y].nomFichierPhoto);
                                var fullPath = Request.MapPath(path);

                                if (System.IO.File.Exists(fullPath))
                                {
                                    try
                                    {
                                        System.IO.File.Delete(fullPath);
                                    }
                                    catch (Exception e)
                                    {
                                        Elmah.ErrorSignal.FromCurrentContext().Raise(Utilitaires.templateException("Index", "Activites", "La suppression de la photo: " + fullPath + " ne s'est pas complété correctement.", e, null, "post"));
                                    }
                                }
                                else
                                {
                                    Elmah.ErrorSignal.FromCurrentContext().Raise(Utilitaires.templateException("Index", "Activites", "La suppression de la photo: " + fullPath + " ne s'est pas complété correctement car le fichier n'existe pas.", null, null, "post"));
                                }

                                //listeActivitesPhotos.Remove(listeActivitesPhotos[y]);
                                db.Entry(listeActivitesPhotos[y]).State = EntityState.Deleted;

                                deletePhotos[i].RemoveAt(y);
                                fichiersPhotos[i].RemoveAt(y);
                                y--;
                            }
                        }
                        else if (listeActivitesPhotos[y].noPhotoActivite == 0)
                        {
                            db.Entry(listeActivitesPhotos[y]).State = EntityState.Added;
                        }
                        else
                        {
                            db.Entry(listeActivitesPhotos[y]).State = EntityState.Modified;
                        }
                    }

                    try
                    {
                        db.SaveChanges();
                    }
                    catch (DbUpdateException e)
                    {
                        Elmah.ErrorSignal.FromCurrentContext().Raise(Utilitaires.templateException("Index", "Activites", "Mise à jour de la base de données au premier SaveChanges() des photos des avisActivites a échoué.", e, null, "post"));
                        TempData["rechercheActivite"] = rechercheActivite;

                        TempData["messageErreur"] = "Une erreur est survenu lors de la sauvegarde de vos photos, veuillez réessayer.";
                        TempData.Keep();

                        return(RedirectToAction("Index", "Activites", new { page = page }));
                    }

                    //Étape Gestion 3
                    for (int y = 0; y < listeActivitesPhotos.Count; y++)
                    {
                        if (fichiersPhotos[i][y] != null && !fichiersPhotos[i][y].FileName.ToString().ToLower().EndsWith(".jpg"))
                        {
                            TempData["messageErreur"] = fichiersPhotos[i][y].FileName.ToString() + " doit être de type jpg";

                            db.Entry(listeActivitesPhotos[y]).State = EntityState.Deleted;

                            deletePhotos[i].RemoveAt(y);
                            fichiersPhotos[i].RemoveAt(y);
                            y--;

                            break;
                        }
                        else if (fichiersPhotos[i][y] != null)
                        {
                            try
                            {
                                Membre membreCo = db.Membres.Where(m => m.noMembre == noMembreCo).FirstOrDefault();

                                string fname = Path.Combine(Server.MapPath("~/Upload/PhotosActivites/") + activiteModifier.noActivite + "$" + noMembreCo + "$" + string.Format("{0:00000}", listeActivitesPhotos[y].noPhotoActivite) + ".jpg");

                                fichiersPhotos[i][y].SaveAs(fname);

                                listeActivitesPhotos[y].nomFichierPhoto = activiteModifier.noActivite + "$" + noMembreCo + "$" + string.Format("{0:00000}", listeActivitesPhotos[y].noPhotoActivite) + ".jpg";
                            }
                            catch (Exception e)
                            {
                                Elmah.ErrorSignal.FromCurrentContext().Raise(Utilitaires.templateException("Index", "Activites", "Impossible de sauvegarder le fichier: " + fichiersPhotos[i][y].FileName.ToString() + ".", e, null, "post"));
                                this.ModelState.AddModelError("nomFichierPhoto", fichiersPhotos[i][y].FileName.ToString() + " incapable de sauvgarder.");
                            }
                        }
                        else
                        {
                            if (listeActivitesPhotos[y].nomFichierPhoto.Equals("00000.jpg"))
                            {
                                TempData["messageErreur"] = "Veuillez définir une photo pour la/les nouvelle(s) photo(s)";
                            }
                        }
                    }

                    try
                    {
                        db.SaveChanges();
                    }
                    catch (DbUpdateException e)
                    {
                        Elmah.ErrorSignal.FromCurrentContext().Raise(Utilitaires.templateException("Index", "Activites", "Mise à jour de la base de données pour la deuxième fois à la suite de l'ajout de photos a échoué.", e, null, "post"));
                        TempData["rechercheActivite"] = rechercheActivite;

                        TempData["messageErreur"] = "Une erreur est survenu lors de la sauvegarde de vos photos, veuillez réessayer.";
                        TempData.Keep();

                        return(RedirectToAction("Index", "Activites", new { page = page }));
                    }
                }
            }

            TempData["rechercheActivite"] = rechercheActivite;

            return(RedirectToAction("Index", "Activites", new { page = page }));
        }