Ejemplo n.º 1
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));
        }
Ejemplo n.º 2
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 }));
        }