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