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 })); }
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)); }