///////////////////////////////////////////////////////////////
        //  Gestion de l'affichage de la ListView (affichage logique)
        ///////////////////////////////////////////////////////////////

        public void ChargementListView()
        {
            //on initialise l'accès à la base de donnée (Projet3Entities est le nom de la classe porteuse du dbcontxt dans Projet3BDD.Context.cs)
            using (ProgetEntities pg = new ProgetEntities())
            {
                // on place immédiatement le résultat de la requête dans une liste (on n'affiche que les Codes dont la propriété est différente de 0)
                List <CodeRegime> ListeCode = pg.CodeRegimes.Where(a => a.SUPPRIMER_CodeRegime == false).ToList();;

                // récupérons la liste générée par WPFCodeRegime
                ObservableCollection <CodeRegime> ListViewListeRecup = new ObservableCollection <CodeRegime>(ListeCode);

                // on instancie la listViewList
                ListViewListe = new ObservableCollection <CodeRegimeObservable>();

                // parcourons la liste pour en extraire les éléments
                foreach (CodeRegime item in ListViewListeRecup)
                {
                    //on passe les données à la ListView
                    ListViewListe.Add(new CodeRegimeObservable(item.IDCodeRegime, item.LIBELLE_CodeRegime, item.COULEUR_CodeRegime, item.SUPPRIMER_CodeRegime));
                }
                if (CbxChecked == true)
                {
                    CbxChecked = false;
                }
            }
        }
Exemple #2
0
        private bool RecoupePeriode()
        {
            if (ListeDemande_Absence.Any(d => d.IsSelected && d.Etat == "REF"))
            {
                using (ProgetEntities pg = new ProgetEntities(Model.GenerateEFConnectionString(ParamGlobaux.ConnectionString)))
                {
                    bool existe2;

                    foreach (DemandeAbsenceNP demandeAbsence in ListeDemande_Absence.Where(d => d.IsSelected))
                    {
                        existe2 = pg.Demande_Absence.Any(a => a.Matricule == demandeAbsence.Matricule && a.Etat != "REF" &&
                                                         ((demandeAbsence.Date_debut >= a.Date_debut && demandeAbsence.Date_debut <= a.Date_fin) ||
                                                          (demandeAbsence.Date_fin <= a.Date_fin && demandeAbsence.Date_fin >= a.Date_debut) ||
                                                          (demandeAbsence.Date_debut <a.Date_debut && demandeAbsence.Date_fin> a.Date_fin)));

                        Debug.WriteLine("existe2 : " + existe2);

                        if (existe2 == false)
                        {
                            return(false);
                        }
                        else
                        {
                            break;
                        }
                    }

                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
        //////////////////////////////
        //  ACCES A LA BASE DE DONNEE
        //////////////////////////////

        /// <summary>
        /// méthode récupérant tous les établissements dans la BDD (grace à entity)
        /// </summary>
        /// <returns></returns>
        private static List <Etablissement> SelectTousEtablissements()
        {
            //on initialise l'accès à la base de donnée (Projet3Entities est le nom de la classe porteuse du dbcontxt dans Projet3BDD.Context.cs)
            using (ProgetEntities pg = new ProgetEntities())
            {
                // on place immédiatement le résultat de la requête dans une liste
                List <Etablissement> ListeEtab = pg.Etablissements.ToList();

                // on retourne le résultat de la requête
                return(ListeEtab);
            }
        }
        //////////////////////////////////////
        //  Gestion de l'affichage de l'aide
        //////////////////////////////////////

        private void AffichageAide(string AideAAfficher)
        {
            string NomServeur;

            using (ProgetEntities pg = new ProgetEntities())
            {
                NomServeur    = pg.ParamApplis.SingleOrDefault().serveur_Name;
                AideAAfficher = @"\\" + NomServeur + @"\Proget\Get-MS\pdf\" + AideAAfficher;

                if (File.Exists(AideAAfficher))
                {
                    ProcessStartInfo psi = new ProcessStartInfo(AideAAfficher, "");
                    Process.Start(psi);
                }
                else
                {
                    System.Windows.MessageBox.Show("Le fichier d'aide n'existe pas");
                }
            }
        }
        /// <summary>
        /// constructeur
        /// </summary>
        public WPFCodeRegimeViewModel(IDialogService dialogService)
        {
            //déclaration du Dialog dans le constructeur
            _dialogService = dialogService;

            //*******************************************************************************************************************************************
            // GESTION DE LA PAGE WPFCodeRegime
            //*******************************************************************************************************************************************

            LoadedPage = new RelayCommand(() =>
            {
                ////////////////////////
                //  Gestion des Droits
                ////////////////////////
                CbxChecked = false;
                // vérification des droits
                using (ProgetEntities pg = new ProgetEntities())
                {
                    Droit droitUtilisateur = pg.Droits.Where(a => a.Matricule == ParamGlobaux.Matricule && a.IDEtablissement == ParamGlobaux.IDEtablissement &&
                                                             a.Fonctions == "Gestion des codes Régime").SingleOrDefault();
                    //On s'assure de ne pas avoir de "Null Pointer Exception"
                    if (droitUtilisateur != null && droitUtilisateur.Droit1 == "CT")
                    {
                        ControleDroit = true;
                    }
                    else
                    {
                        ControleDroit = false;
                    }
                }
                ChargementListView();
            });

            ////////////////////////////////////
            //  Gestion des boutons de WPFCaisse
            ////////////////////////////////////

            //------------------
            //  Bouton Quitter
            //------------------

            CodeRegimeQuitter = new RelayCommand <Window>(FermetureFenetre);

            //-----------------
            //  Bouton Ajouter
            //-----------------

            Ajouter = new RelayCommand(() =>
            {
                // instanciation d'un objet vide pour repartir de 0 pour le nouvel ajout
                ObsCodeRegime = new CodeRegimeObservable();
                checkCode     = true;
                // on met la couleur de fond du colorpicker à blanc
                couleurSelectionnee = Color.FromRgb(255, 255, 255);

                //on envoit vers la fenetre
                _dialogService.ShowDialog <WPFCodeRegimeAjouter>(this, this);
            });

            //------------------
            //  Evenement Modifier
            //------------------

            Modifier = new RelayCommand <CodeRegimeObservable>((item) =>
            {
                if (item != null)
                {
                    checkCode = false;
                    //on envoit vers la fenetre
                    _dialogService.ShowDialog <WPFCodeRegimeAjouter>(this, this);
                }
                else
                {
                    System.Windows.MessageBox.Show("aucune ligne selectionnée");
                }
            });

            //------------------
            //  Bouton Aide
            //------------------

            Aide = new RelayCommand(() =>
            {
                AffichageAide("AideAjouterGrandRegime.pdf");
            });



            //---------------------
            //  CheckBox Supprimer
            //---------------------

            CbxSupprimerListView = new RelayCommand <CodeRegimeObservable>((item) =>
            {
                // connexion à la base
                using (ProgetEntities pg = new ProgetEntities())
                {
                    // création d'un nouveau Code regime avec les données recueillies
                    CodeRegime codeRegime = pg.CodeRegimes.Where(a => a.IDCodeRegime == item.id).SingleOrDefault();

                    // recherche si ce Code est utilisée dans la table Usager
                    List <Usager> pu = pg.Usagers.Where(a => a.IDCodeRegime == codeRegime.IDCodeRegime).ToList();



                    if (pu.Count == 0)
                    {
                        // dans ce cas, ce Code n'existe pas dans la table PlanningUsager, il est dont totalement inutile et va donc être supprimé définitivement
                        pg.CodeRegimes.Remove(codeRegime);
                        pg.SaveChanges();
                    }
                    else
                    {
                        //on met à Code Régime la valeur de item.supprimer (objet porteur de la valeur changée)
                        codeRegime.SUPPRIMER_CodeRegime = item.supprimer;

                        //on sauvegarde les changements
                        pg.SaveChanges();
                    }
                    ChargementListView();
                }
            });


            //----------------------------
            //  CheckBox "Tous les Grands Régimes"
            //----------------------------

            CbkCodeRegime = new RelayCommand(() =>
            {
                using (ProgetEntities pg = new ProgetEntities())
                {
                    //création de la liste de Caisse qui va recevoir toutes les données de la requête Entity
                    List <CodeRegime> ListeCodes = pg.CodeRegimes.ToList();

                    // récupérons la liste générée par WPFCodeRegime
                    ObservableCollection <CodeRegime> ListViewListeRecup = new ObservableCollection <CodeRegime>(ListeCodes);

                    // on instancie la listViewList
                    ListViewListe = new ObservableCollection <CodeRegimeObservable>();

                    // parcourons la liste pour en extraire les éléments
                    foreach (CodeRegime item in ListViewListeRecup)
                    {
                        //on passe les données à la ListView
                        ListViewListe.Add(new CodeRegimeObservable(item.IDCodeRegime, item.LIBELLE_CodeRegime, item.COULEUR_CodeRegime, item.SUPPRIMER_CodeRegime));
                    }
                }
            });

            //gestion du Unchecked de la CheckBox "tous les codes régimes"
            CbkCodeRegimeUnchecked = new RelayCommand(() =>
            {
                ChargementListView();
            });


            //---------------------
            //  Bouton Supprimer
            //---------------------

            CMSupprimerListView = new RelayCommand <CodeRegimeObservable>((item) =>
            {
                if (item != null)
                {
                    // connexion à la base
                    using (ProgetEntities pg = new ProgetEntities())
                    {
                        // création d'un nouveau Code regime avec les données recueillies
                        CodeRegime codeRegime = pg.CodeRegimes.Where(a => a.IDCodeRegime == item.id).SingleOrDefault();

                        // recherche si ce Code est utilisée dans la table Usager
                        List <Usager> pu = pg.Usagers.Where(a => a.IDCodeRegime == codeRegime.IDCodeRegime).ToList();

                        if (pu.Count == 0)
                        {
                            // dans ce cas, ce Code n'existe pas dans la table PlanningUsager, il est dont totalement inutile et va donc être supprimé définitivement
                            pg.CodeRegimes.Remove(codeRegime);
                            pg.SaveChanges();
                        }
                        else
                        {
                            //on met à Code Régime la valeur de item.supprimer (objet porteur de la valeur changée)
                            codeRegime.SUPPRIMER_CodeRegime = !item.supprimer;

                            //on sauvegarde les changements
                            pg.SaveChanges();
                        }
                        ChargementListView();
                    }
                }
                else
                {
                    System.Windows.MessageBox.Show("aucune ligne selectionnée");
                }
            });

            //*******************************************************************************************************************************************
            // GESTION DE LA PAGE WPFCodeRegimeuAjouter
            //*******************************************************************************************************************************************

            ////////////////////////////////////////////////
            //  Gestion des boutons de WPFCodeRegimeAjouter
            ////////////////////////////////////////////////

            //------------------
            //  Bouton Quitter
            //------------------
            //Si aucune modification n'est en cours, ou on vient de valider notre ajout, on quitte directement
            //Autrement on affiche un message d'avertissement
            CodeRegimeAjouterQuitter = new RelayCommand <Window>((WPFCodeRegimeAjouter) =>
            {
                if (ObsCodeRegime.AllowExit)
                {
                    //Si notre booleen est vrai, pas de modif en attente
                    FermetureFenetre(WPFCodeRegimeAjouter);
                    //On ferme la page
                }
                else
                {
                    //Si notre booleen est faux, nous avons des nouvelles modifications
                    if (MessageBox.Show("Vous allez perdre vos modifications en cours", "Attention", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
                    {
                        //Si l'utilisateur appuie sur "OK" la page est fermée
                        ObsCodeRegime.AllowExit = true;
                        FermetureFenetre(WPFCodeRegimeAjouter);

                        //Lorsque l'ont ferme la page on passe notre booleen a vrai
                    }
                }
            });



            //------------------------
            //  Bouton BtnCodeRegimeAjouter
            //------------------------

            CodeRegimeAjouterValider = new RelayCommand(() =>
            {
                try
                {
                    //on initialise l'accès à la base de donnée (Projet3Entities est le nom de la classe porteuse du dbcontxt dans Projet3BDD.Context.cs)
                    using (ProgetEntities pg = new ProgetEntities())
                    {
                        // recherche dans la BDD s'il existe déja une Caisse identique
                        CodeRegime existe = pg.CodeRegimes.Where(a => a.IDCodeRegime == ObsCodeRegime.id).SingleOrDefault();

                        // nous sommes en "Ajouter"
                        if (checkCode == true)
                        {
                            //Verification caractères spéciaux del'id
                            if (!Regex.IsMatch(ObsCodeRegime.id.ToString(), @"^[0-9]+$") == false)
                            {
                                //s'il n'existe pas d'objet en bas ayant la même id
                                if (existe == null)
                                {
                                    if (ObsCodeRegime.id == "" || ObsCodeRegime.libelle == "" || ObsCodeRegime.couleur == 0)
                                    {
                                        System.Windows.MessageBox.Show("Veuillez remplir l'ensemble des champs avec une étoile * ");
                                    }
                                    else if (!Regex.IsMatch(ObsCodeRegime.id.ToString(), @"^[a-zA-Z 0-9]+$") == true || !Regex.IsMatch(ObsCodeRegime.libelle.ToString(), @"^[a-zA-Z 0-9]+$") == true)
                                    {
                                        System.Windows.MessageBox.Show("caractère spéciaux interdits (lettres et chiffres uniquement)");
                                    }
                                    // on insère la Caisse dans la BDD
                                    else if (ObsCodeRegime.id != "" && ObsCodeRegime.libelle != "" && ObsCodeRegime.couleur != 0 && !Regex.IsMatch(ObsCodeRegime.libelle.ToString(), @"^[a-zA-Z 0-9]+$") == false)
                                    {
                                        pg.CodeRegimes.Add(CodeRegimeObservable.ConversionEnCodeRegime(ObsCodeRegime));

                                        // on sauvegarde les changements dans la BDD
                                        pg.SaveChanges();
                                        val = false;

                                        //on met à jour la listeView
                                        ListViewListe.Add(ObsCodeRegime);
                                        System.Windows.MessageBox.Show("Nouveau Grand Regime Ajouté");
                                        ObsCodeRegime.AllowExit = true;
                                    }
                                }
                                else
                                {
                                    System.Windows.MessageBox.Show("Il existe déja une Caisse portant ce code");
                                }
                            }
                            else
                            {
                                System.Windows.MessageBox.Show("Chiffres uniquement");
                            }
                        }

                        // nous sommes en "Modifier"
                        if (checkCode == false)
                        {
                            //Debug.WriteLine( ObsCodeRegime.libelle.ToString() );
                            //Debug.WriteLine( !Regex.IsMatch( ObsCodeRegime.libelle.ToString(), @"^[a-zA-Z 0-9]+$" ) );

                            // si libellé n'est pas vide et que couleur n'est pas égale à 0
                            if (ObsCodeRegime.libelle == "" || ObsCodeRegime.couleur == 0)
                            {
                                System.Windows.MessageBox.Show("Veuillez remplir l'ensemble des champs avec une étoile * ");
                            }
                            else if (!Regex.IsMatch(ObsCodeRegime.libelle.ToString(), @"^[a-zA-Z 0-9]+$") == true)
                            {
                                System.Windows.MessageBox.Show("caractère spéciaux interdits (lettres et chiffres uniquement)");
                            }
                            else if (ObsCodeRegime.libelle != "" && ObsCodeRegime.couleur != 0 && !Regex.IsMatch(ObsCodeRegime.libelle.ToString(), @"^[a-zA-Z 0-9]+$") == false)
                            {
                                existe.LIBELLE_CodeRegime = ObsCodeRegime.libelle;
                                existe.COULEUR_CodeRegime = ObsCodeRegime.couleur;

                                pg.SaveChanges();
                                ObsCodeRegime.AllowExit = true;
                                val = false;

                                System.Windows.MessageBox.Show("Modifications enregistrées");
                            }
                        }
                    }
                }
                catch (DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Debug.WriteLine("DEBUG :Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                        eve.Entry.Entity.GetType().Name, eve.Entry.State);
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Debug.WriteLine(" DEBUG:- Property: \"{0}\", Error: \"{1}\"",
                                            ve.PropertyName, ve.ErrorMessage);
                        }
                    }
                }
            });

            // commande gérant la reception du changement de couleur de WPFCodeRegimeAjouter
            couleurChange = new RelayCommand(() =>
            {
                ObsCodeRegime.couleur = ColorToBase(couleurSelectionnee);
            });
        }
Exemple #6
0
        private void ExecuteSupprimer()
        {
            if (ListeDemande_Absence.Any(d => d.IsSelected))
            {
                if (ListeDemande_Absence.Any(d => d.IsSelected && d.Etat == "REF"))
                {
                    if (ListeDemande_Absence.Where(d => d.IsSelected).Count() < 2)
                    {
                        //IsValid = true;

                        try
                        {
                            using (ProgetEntities pg = new ProgetEntities(Model.GenerateEFConnectionString(ParamGlobaux.ConnectionString)))
                            {
                                foreach (DemandeAbsenceNP demandeAbsence in ListeDemande_Absence.Where(d => d.IsSelected))
                                {
                                    // recherche dans la BDD s'il existe déja une Demande identique
                                    Demande_Absence existe = pg.Demande_Absence.Where(a => a.Matricule == demandeAbsence.Matricule && a.Date_debut == demandeAbsence.Date_debut && a.Date_fin == demandeAbsence.Date_fin).SingleOrDefault();


                                    //si la demande existe bien en base
                                    if (existe != null)
                                    {
                                        pg.Demande_Absence.Remove(existe);

                                        // on sauvegarde les changements dans la BDD
                                        pg.SaveChanges();



                                        MessageBoxResult _dialogResult2 = _dialogService.ShowMessageBox(this,
                                                                                                        "Demande supprimée",
                                                                                                        "Validation",
                                                                                                        MessageBoxButton.OK);


                                        //on actualise la liste des demandes
                                        Actualisation();
                                    }
                                    else
                                    {
                                        MessageBoxResult _dialogResult2 = _dialogService.ShowMessageBox(this,
                                                                                                        "Cette demande est inexistante",
                                                                                                        "Erreur",
                                                                                                        MessageBoxButton.OK,
                                                                                                        MessageBoxImage.Exclamation);
                                    }
                                }
                            }
                        }
                        catch (DbEntityValidationException e)
                        {
                            foreach (var eve in e.EntityValidationErrors)
                            {
                                Debug.WriteLine("DEBUG :Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                                eve.Entry.Entity.GetType().Name, eve.Entry.State);
                                foreach (var ve in eve.ValidationErrors)
                                {
                                    Debug.WriteLine(" DEBUG:- Property: \"{0}\", Error: \"{1}\"",
                                                    ve.PropertyName, ve.ErrorMessage);
                                }
                            }
                        }
                    }
                    else
                    {
                        MessageBoxResult _dialogResult3 = _dialogService.ShowMessageBox(this,
                                                                                        "Une seule demande refusée ne peut être supprimée à la fois",
                                                                                        "Erreur",
                                                                                        MessageBoxButton.OK,
                                                                                        MessageBoxImage.Exclamation);
                    }
                }
                else
                {
                    MessageBoxResult _dialogResult3 = _dialogService.ShowMessageBox(this,
                                                                                    "Seul les demandes refusées peuvent être supprimées",
                                                                                    "Erreur",
                                                                                    MessageBoxButton.OK,
                                                                                    MessageBoxImage.Exclamation);
                }
            }

            else
            {
                MessageBoxResult _dialogResult = _dialogService.ShowMessageBox(this,
                                                                               "veuillez selectionner une demande d'absence",
                                                                               "Erreur",
                                                                               MessageBoxButton.OK,
                                                                               MessageBoxImage.Exclamation);
            }
        }