Exemple #1
0
        public ActionResult Gestion(int?page, GestionViewModel gestionViewModel, int?tab, int?vientDePagination, int?noMembreDesactiver, int?noSignalementLie, string btnSubmit)
        {
            if (noMembreDesactiver != null)
            {
                return(RedirectToAction("DesactiverCompte", new { noMembreDesactiver = noMembreDesactiver, noSignalement = noSignalementLie }));
            }
            else if (btnSubmit != null)
            {
                if (btnSubmit.Contains("ChangerEtatPlainte"))
                {
                    int noSignalement    = int.Parse(btnSubmit.Remove(0, 18));
                    int indexSignalement = gestionViewModel.lesSignalement.FindIndex(a => a.noSignalement == noSignalement);

                    CompteAdmin adminQuiTraite = db.CompteAdmins.Where(a => a.nomCompte == User.Identity.Name.ToString()).FirstOrDefault();

                    int noSignalementActuel = gestionViewModel.lesSignalement[indexSignalement].noEtatSignalementActuel;

                    if (db.EtatSignalements.Where(m => m.noEtatSignalement == noSignalementActuel).FirstOrDefault().nomEtatSignalement == "Assigné")
                    {
                        gestionViewModel.lesSignalement[indexSignalement].adminQuiTraite = adminQuiTraite;
                        gestionViewModel.lesSignalement[indexSignalement].noCompteAdmin  = adminQuiTraite.noCompteAdmin;
                    }
                    else if (db.EtatSignalements.Where(m => m.noEtatSignalement == noSignalementActuel).FirstOrDefault().nomEtatSignalement == "Traité")
                    {
                        int    noMembreContreQuiEstPlainte = gestionViewModel.lesSignalement[indexSignalement].noMembreContreQuiEstPlainte;
                        int    noMembreQuiSePlaint         = gestionViewModel.lesSignalement[indexSignalement].noMembreFaisantPlainte;
                        Membre leMembreContreQuiEstPlainte = db.Membres.Where(m => m.noMembre == noMembreContreQuiEstPlainte).FirstOrDefault();
                        Membre leMembreQuiSePlaint         = db.Membres.Where(m => m.noMembre == noMembreQuiSePlaint).FirstOrDefault();

                        //Envoie d'un message automatisé de traitement
                        Message messageAccuseApresTraitement = new Message();
                        messageAccuseApresTraitement.dateEnvoi      = DateTime.Now;
                        messageAccuseApresTraitement.sujetMessage   = "Votre signalement contre " + leMembreContreQuiEstPlainte.surnom + " a été traité.";
                        messageAccuseApresTraitement.contenuMessage = "Votre signalement contre " + leMembreContreQuiEstPlainte.surnom + " a bien été traité, et une action a eu lieu afin que le comportement" +
                                                                      " fautif ne se reproduise plus. Merci d'aider à rendre Club Contact un environnement sécuritaire!" + Environment.NewLine + Environment.NewLine + "- Le service d'administration de Club Contact";
                        messageAccuseApresTraitement.lu               = false;
                        messageAccuseApresTraitement.membreReceveur   = leMembreQuiSePlaint;
                        messageAccuseApresTraitement.noMembreReceveur = leMembreQuiSePlaint.noMembre;

                        db.Messages.Add(messageAccuseApresTraitement);
                        db.SaveChanges();
                    }
                    int              noEtatSignalementActuel      = gestionViewModel.lesSignalement[indexSignalement].noEtatSignalementActuel;
                    string           nomEtatSignalementActuel     = db.EtatSignalements.Where(m => m.noEtatSignalement == noEtatSignalementActuel).Select(m => m.nomEtatSignalement).FirstOrDefault();
                    ActionTraitement actionTraitementEtatModifier = db.ActionTraitements.Where(m => m.nomActionTraitement == "État de la plainte modifié à: " + nomEtatSignalementActuel).FirstOrDefault();

                    TraitementSignalement leTraitementEffectuer = new TraitementSignalement();
                    leTraitementEffectuer.compteAdminTraiteur       = adminQuiTraite;
                    leTraitementEffectuer.noCompteAdminTraiteur     = adminQuiTraite.noCompteAdmin;
                    leTraitementEffectuer.actionTraitement          = actionTraitementEtatModifier;
                    leTraitementEffectuer.noActionTraitement        = actionTraitementEtatModifier.noActionTraitement;
                    leTraitementEffectuer.dateTraitementSignalement = DateTime.Now;
                    leTraitementEffectuer.noSignalementLie          = gestionViewModel.lesSignalement[indexSignalement].noSignalement;
                    leTraitementEffectuer.signalementLie            = gestionViewModel.lesSignalement[indexSignalement];

                    db.TraitementSignalements.Add(leTraitementEffectuer);

                    //Retrait du nouveau signalement
                    CommentaireSignalement leNouveauCommentaire = gestionViewModel.lesSignalement[indexSignalement].lesCommentairesSurCeSignalement.Last();
                    gestionViewModel.lesSignalement[indexSignalement].lesCommentairesSurCeSignalement.Remove(leNouveauCommentaire);
                    db.Entry(leNouveauCommentaire).State = EntityState.Detached;

                    foreach (CommentaireSignalement c in gestionViewModel.lesSignalement[indexSignalement].lesCommentairesSurCeSignalement)
                    {
                        db.Entry(c).State = EntityState.Unchanged;
                    }

                    db.Entry(gestionViewModel.lesSignalement[indexSignalement]).State = EntityState.Modified;

                    try
                    {
                        db.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        Elmah.ErrorSignal.FromCurrentContext().Raise(Utilitaires.templateException("Gestion", "Admin", "Mise à jour de la base de données à la suite de la modification de l'état d'un signalement à échoué.", e, null, "post"));
                        TempData["gestionViewModelPOST"] = gestionViewModel;

                        TempData["Erreur"] = "Une erreur est survenu lors du changement de l'état de la plainte, veuillez réessayer.";
                        TempData.Keep();

                        return(RedirectToAction("Gestion", new { page = page, tab = tab, vientDePagination = vientDePagination }));
                    }
                }
                else if (btnSubmit.Contains("commentaireSignalement"))
                {
                    int index;
                    if (int.TryParse(btnSubmit.Substring(22), out index))
                    {
                        CommentaireSignalement leNouveauCommentaire = gestionViewModel.lesSignalement[index].lesCommentairesSurCeSignalement.Last();

                        if (leNouveauCommentaire.noCommentaireSignalement == 0 && leNouveauCommentaire.commentaireSignalement != "" && leNouveauCommentaire.commentaireSignalement != null)
                        {
                            leNouveauCommentaire.dateCommentaire = DateTime.Now;

                            db.CommentaireSignalements.Add(leNouveauCommentaire);
                            //db.Entry(leNouveauCommentaire).State = EntityState.Added;

                            db.SaveChanges();
                        }
                    }
                }
            }

            TempData["gestionViewModelPOST"] = gestionViewModel;

            return(RedirectToAction("Gestion", new { page = page, tab = tab, vientDePagination = vientDePagination }));
        }
Exemple #2
0
        public ActionResult DesactiverCompte(int noMembreDesactiver, int noSignalement)
        {
            Membre mem = db.Membres.Where(m => m.noMembre == noMembreDesactiver).Include(p => p.listePhotosMembres).Include(a => a.listeActivitesOrganises)
                         .Include(a => a.listeHobbies).Include(a => a.listeRaisonsSurSite).Include(a => a.listeDeVisitesDeMonProfil)
                         .FirstOrDefault();
            List <Activite> activites = db.Activites.Where(a => a.noMembreOrganisateur == mem.noMembre).ToList();
            List <Photo>    photos    = db.Photos.Where(p => p.noMembre == mem.noMembre).ToList();

            List <Visite> visites = db.Visites.Where(p => p.noMembreVisite == mem.noMembre || p.noMembreVisiteur == mem.noMembre).ToList();

            if (mem == null)
            {
                return(HttpNotFound());
            }
            else
            {
                mem.dateSuppressionDuCompte = DateTime.Now;
                mem.compteSupprimeParAdmin  = true;

                //On annule chacune de ses activites FUTURES.
                foreach (Activite a in mem.listeActivitesOrganises)
                {
                    if (a.date > DateTime.Now)
                    {
                        Activite acti;
                        Utilitaires.AnnulerActivite(a.noActivite, null, out acti);
                    }
                }

                //On retire sa participation à tous les activités FUTURES.
                foreach (Activite a in mem.listeActivites)
                {
                    if (a.date > DateTime.Now)
                    {
                        Utilitaires.ParticiperActivite(a.noActivite, noMembreDesactiver);
                    }
                }

                db.SaveChanges();
            }

            CompteAdmin      compteAdminTraiteur = db.CompteAdmins.Where(m => m.nomCompte == User.Identity.Name).FirstOrDefault();
            ActionTraitement actionCompteBloque  = db.ActionTraitements.Where(m => m.nomActionTraitement == "Compte bloqué").FirstOrDefault();


            Signalement leSignalement = db.Signalements.Where(m => m.noSignalement == noSignalement).FirstOrDefault();

            leSignalement.dateSuiviNecessaire   = null;
            leSignalement.etatSignalementActuel = db.EtatSignalements.Where(m => m.nomEtatSignalement == "Traité").FirstOrDefault();
            leSignalement.adminQuiTraite        = compteAdminTraiteur;


            //Envoie d'un message automatisé de traitement
            Message messageAccuseApresTraitement = new Message();

            messageAccuseApresTraitement.dateEnvoi      = DateTime.Now;
            messageAccuseApresTraitement.sujetMessage   = "Votre signalement contre " + leSignalement.membreContreQuiEstPlainte.surnom + " a été traité.";
            messageAccuseApresTraitement.contenuMessage = "Votre signalement contre " + leSignalement.membreContreQuiEstPlainte.surnom + " a bien été traité, et une action a eu lieu afin que le comportement" +
                                                          " fautif ne se reproduise plus. Merci d'aider à rendre Club Contact un environnement sécuritaire!" + Environment.NewLine + Environment.NewLine + "- Le service d'administration de Club Contact";
            messageAccuseApresTraitement.lu               = false;
            messageAccuseApresTraitement.membreReceveur   = leSignalement.membreFaisantPlainte;
            messageAccuseApresTraitement.noMembreReceveur = leSignalement.membreFaisantPlainte.noMembre;

            db.Messages.Add(messageAccuseApresTraitement);
            db.SaveChanges();
            //Fin envoie d'un message automatisé de traitement

            TraitementSignalement leTraitementEffectuer = new TraitementSignalement();

            leTraitementEffectuer.compteAdminTraiteur       = compteAdminTraiteur;
            leTraitementEffectuer.noCompteAdminTraiteur     = compteAdminTraiteur.noCompteAdmin;
            leTraitementEffectuer.actionTraitement          = actionCompteBloque;
            leTraitementEffectuer.noActionTraitement        = actionCompteBloque.noActionTraitement;
            leTraitementEffectuer.dateTraitementSignalement = DateTime.Now;
            leTraitementEffectuer.noSignalementLie          = leSignalement.noSignalement;
            leTraitementEffectuer.signalementLie            = leSignalement;

            db.TraitementSignalements.Add(leTraitementEffectuer);

            List <Signalement> lesSignalementDuMembreQuiSeraDesactiver = db.Signalements.Where(m => m.noMembreContreQuiEstPlainte == noMembreDesactiver && m.noSignalement != leSignalement.noSignalement).ToList();

            foreach (Signalement s in lesSignalementDuMembreQuiSeraDesactiver)
            {
                s.dateSuiviNecessaire   = null;
                s.etatSignalementActuel = db.EtatSignalements.Where(m => m.nomEtatSignalement == "Traité").FirstOrDefault();
                if (s.adminQuiTraite == null && s.noCompteAdmin == null)
                {
                    s.adminQuiTraite = compteAdminTraiteur;
                    s.noCompteAdmin  = compteAdminTraiteur.noCompteAdmin;
                }

                TraitementSignalement traitementEffectureSurAutre = new TraitementSignalement();
                traitementEffectureSurAutre.compteAdminTraiteur       = compteAdminTraiteur;
                traitementEffectureSurAutre.noCompteAdminTraiteur     = compteAdminTraiteur.noCompteAdmin;
                traitementEffectureSurAutre.actionTraitement          = actionCompteBloque;
                traitementEffectureSurAutre.noActionTraitement        = actionCompteBloque.noActionTraitement;
                traitementEffectureSurAutre.dateTraitementSignalement = DateTime.Now;
                traitementEffectureSurAutre.noSignalementLie          = s.noSignalement;
                traitementEffectureSurAutre.signalementLie            = s;

                db.TraitementSignalements.Add(traitementEffectureSurAutre);
            }



            db.SaveChanges();

            return(RedirectToAction("Gestion", "Admin", new { tab = 2 }));
        }
        public ActionResult Send(Message message, int?noSignalementLie)
        {
            message.dateEnvoi = DateTime.Now;
            message.lu        = false;

            message.dansCorbeilleCoteEnvoyeur = false;
            message.dansCorbeilleCoteReceveur = false;

            message.supprimerCoteEnvoyeur = false;
            message.supprimerCoteReceveur = false;

            bool messageVientDeAdmin = true;

            //Si c'est pas l'admin qui l'envoie, on s'en fout du principe de liste noire
            if (message.noMembreEnvoyeur != null)
            {
                messageVientDeAdmin = false;

                message.membreEnvoyeur = db.Membres.Where(m => m.noMembre == message.noMembreEnvoyeur).FirstOrDefault();
                message.membreReceveur = db.Membres.Where(m => m.noMembre == message.noMembreReceveur).FirstOrDefault();

                //Si le membre qui va recevoir le message a le membres qui l'a envoyé dans sa liste noire, alors le message sera automatiquement supprimé de son côté
                //Du côté envoyeur, il va voir comme s'il l'a envoyé
                if (message.membreReceveur.listeNoire.Contains(message.membreEnvoyeur))
                {
                    message.dansCorbeilleCoteReceveur = true;
                    message.supprimerCoteReceveur     = true;
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    db.Messages.Add(message);

                    db.SaveChanges();

                    if (!messageVientDeAdmin)
                    {
                        return(RedirectToAction("Inbox", "Messagerie"));
                    }
                    else
                    {
                        if (noSignalementLie != null)
                        {
                            CompteAdmin adminConnectee = db.CompteAdmins.Where(m => m.nomCompte == User.Identity.Name).FirstOrDefault();

                            ActionTraitement actionTraitement = db.ActionTraitements.Where(m => m.nomActionTraitement == "Avertissement envoyé").FirstOrDefault();

                            Signalement leSignalement = db.Signalements.Where(m => m.noSignalement == noSignalementLie).FirstOrDefault();
                            leSignalement.dateSuiviNecessaire   = DateTime.Now.AddDays(7);
                            leSignalement.etatSignalementActuel = db.EtatSignalements.Where(m => m.nomEtatSignalement == "En suivi").FirstOrDefault();
                            leSignalement.adminQuiTraite        = adminConnectee;

                            TraitementSignalement nouveauTraitementFait = new TraitementSignalement();
                            nouveauTraitementFait.dateTraitementSignalement = DateTime.Now;
                            nouveauTraitementFait.noSignalementLie          = leSignalement.noSignalement;
                            nouveauTraitementFait.signalementLie            = leSignalement;
                            nouveauTraitementFait.compteAdminTraiteur       = adminConnectee;
                            nouveauTraitementFait.noCompteAdminTraiteur     = adminConnectee.noCompteAdmin;
                            nouveauTraitementFait.messageLie = message;
                            //nouveauTraitementFait.noMessageLie = message.noMessage;
                            nouveauTraitementFait.actionTraitement   = actionTraitement;
                            nouveauTraitementFait.noActionTraitement = actionTraitement.noActionTraitement;

                            db.TraitementSignalements.Add(nouveauTraitementFait);

                            db.SaveChanges();
                        }

                        return(RedirectToAction("Gestion", "Admin", new { tab = 2 }));
                    }
                }
                catch (Exception e)
                {
                    Dictionary <string, string> parametres = new Dictionary <string, string>()
                    {
                        { "messageContenu", message.contenuMessage.ToString() },
                        { "sujetMessage", message.sujetMessage.ToString() }
                    };
                    throw LesUtilitaires.Utilitaires.templateException("Send", "Messagerie", "Ajout d'un message à la BD n'a pas fonctionné.",
                                                                       e, parametres, "post");
                }
            }

            if (!messageVientDeAdmin)
            {
                int noMembreCo;
                verifierSiCookieNoMembreExiste(out noMembreCo);

                SetterViewDataListeContact(noMembreCo);
            }
            return(View("Send", message));
        }