/// <summary>
 /// Constructeur spécifique
 /// </summary>
 /// <param name="Connexion">Connexion au serveur MySQL</param>
 /// <param name="Enregistrement">Enregistrement d'où extraire les valeurs de champs</param>
 public VehiculeCaracteristique(PDSGBD.MyDB Connexion, PDSGBD.MyDB.IEnregistrement Enregistrement)
     : this()
 {
     DefinirId(Enregistrement.ValeurChampComplet <int>(NomDeLaTablePrincipale, "id_vehicule_caracteristique"));
     this.Valeur          = Enregistrement.ValeurChampComplet <string>(NomDeLaTablePrincipale, "valeur");
     this.Caracteristique = new Caracteristique(Connexion, Enregistrement);
 }
 /// <summary>
 /// Constructeur par défaut
 /// </summary>
 public VehiculeCaracteristique()
     : base()
 {
     m_Valeur          = null;
     m_Vehicule        = null;
     m_Caracteristique = null;
 }
 /// <summary>
 /// Constructeur spécifique
 /// </summary>
 /// <param name="Valeur">Valeur de cette caractéristique</param>
 /// <param name="Vehicule">Véhicule lié à cette caractéristique</param>
 /// <param name="Caracteristique">Caractéritique correspondant à cet enregistrement</param>
 public VehiculeCaracteristique(int Quantite, Vehicule Vehicule, Caracteristique Caracteristique)
     : this()
 {
     DefinirId(Id);
     this.Vehicule        = Vehicule;
     this.Caracteristique = Caracteristique;
 }
        private void listeDeroulanteCaracteristiqueAjouter_SurChangementSelection(object sender, EventArgs e)
        {
            if (listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne != null)
            {
                // Si la caractéristique est déjà référencée sur une facture, sa modification n'est plus possible
                Caracteristique CaracteristiqueExistante = Program.GMBD.EnumererCaracteristique(null, new PDSGBD.MyDB.CodeSql(@"JOIN type ON caracteristique.fk_id_type = type.id_type 
                                                                                                                                JOIN vehicule_caracteristique ON vehicule_caracteristique.fk_id_caracteristique = caracteristique.id_caracteristique 
                                                                                                                                JOIN vehicule ON vehicule_caracteristique.fk_id_vehicule = vehicule.id_vehicule")
                                                                                                , new PDSGBD.MyDB.CodeSql(@"WHERE ((vehicule.id_vehicule IN(SELECT client_vehicule.fk_id_vehicule FROM client_vehicule)) OR (vehicule.id_vehicule IN(SELECT vehicule_vente.fk_id_vehicule FROM vehicule_vente))) AND id_caracteristique = {0}", listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne.Id), null).FirstOrDefault();

                if (CaracteristiqueExistante != null)
                {
                    buttonAjouterCaract.Enabled   = false;
                    buttonModifierCaract.Enabled  = false;
                    buttonSupprimerCaract.Enabled = true;
                }
                else
                {
                    buttonAjouterCaract.Enabled   = false;
                    buttonModifierCaract.Enabled  = true;
                    buttonSupprimerCaract.Enabled = true;
                }
                textBoxNomCaract.Text = listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne.NomCaracteristique;
                listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne = listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne.TypeVehicule;
            }
        }
 private void buttonSupprimerCaract_Click(object sender, EventArgs e)
 {
     errorProvider.Clear();
     ValidationProvider.Clear();
     if (listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne != null)
     {
         VehiculeCaracteristique VehiculeCaractUtilise = Program.GMBD.EnumererVehiculeCaracteristique(null, null, new PDSGBD.MyDB.CodeSql("WHERE fk_id_caracteristique = {0}", listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne.Id), null).FirstOrDefault();
         if (VehiculeCaractUtilise == null)
         {
             if (Program.GMBD.SupprimerCaracteristique(listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne))
             {
                 ClearCaract();
                 errorProvider.Clear();
                 ValidationProvider.Clear();
                 ValidationProvider.SetError(buttonSupprimerCaract, "La caractéristique a bien été supprimée");
                 RefreshNouvelleCaract();
                 RefreshListeCaract();
             }
         }
         else
         {
             errorProvider.Clear();
             ValidationProvider.Clear();
             Caracteristique CaracteristiqueASupprimer = listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne;
             CaracteristiqueASupprimer.Disponible = 0;
             if ((CaracteristiqueASupprimer.EstValide) && (Program.GMBD.ModifierCaracteristique(CaracteristiqueASupprimer)))
             {
                 ValidationProvider.SetError(buttonSupprimerCaract, "La caractéristique a bien été supprimée");
                 RefreshNouvelleCaract();
                 RefreshListeCaract();
             }
         }
     }
 }
        private void NouvelleCaracteristique_SurErreur(Caracteristique Entite, Caracteristique.Champs Champ, string MessageErreur)
        {
            switch (Champ)
            {
            case Caracteristique.Champs.Caracteristique:
                errorProvider.SetError(textBoxNomCaract, MessageErreur);
                break;

            case Caracteristique.Champs.Type:
                errorProvider.SetError(listeDeroulanteTypeVehicule1, MessageErreur);
                break;
            }
        }
 private void NouvelleCaracteristique_AvantChangement(Caracteristique Entite, Caracteristique.Champs Champ, object ValeurActuelle, object NouvelleValeur, AccumulateurErreur AccumulateurErreur)
 {
     switch (Champ)
     {
     case Caracteristique.Champs.Type:
         if (listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne == null)
         {
             ValidationProvider.Clear();
             AccumulateurErreur.NotifierErreur("Veuillez choisir un type pour la caractéristique");
         }
         break;
     }
 }
        private void buttonModifierCaract_Click(object sender, EventArgs e)
        {
            errorProvider.Clear();
            ValidationProvider.Clear();
            if (listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne != null)
            {
                VehiculeCaracteristique CaracteristiqueReferencee = Program.GMBD.EnumererVehiculeCaracteristique(null, null, new PDSGBD.MyDB.CodeSql("WHERE fk_id_caracteristique = {0}", listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne.Id), null).FirstOrDefault();
                Caracteristique         CaracteristiqueExiste     = Program.GMBD.EnumererCaracteristique(null, new PDSGBD.MyDB.CodeSql("JOIN type ON caracteristique.fk_id_type = type.id_type"), new PDSGBD.MyDB.CodeSql("WHERE caracteristique = {0} AND type = {1} AND id_caracteristique != {2}", textBoxNomCaract.Text.Trim(), listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne.NomDuType, listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne.Id), null).FirstOrDefault();

                if ((CaracteristiqueExiste != null) && (CaracteristiqueExiste.Disponible == 1))
                {
                    errorProvider.SetError(buttonModifierCaract, "Cette caractéristique existe déjà");
                    listeDeroulanteCaracteristique1.CaracteristiqueSelectionne = CaracteristiqueExiste;
                }
                else if ((CaracteristiqueExiste != null) && (CaracteristiqueExiste.Disponible == 0) && (CaracteristiqueReferencee == null))
                {
                    CaracteristiqueExiste.SurErreur += NouvelleCaracteristique_SurErreur;
                    CaracteristiqueExiste.Disponible = 1;
                    if ((CaracteristiqueExiste.EstValide) && (Program.GMBD.ModifierCaracteristique(CaracteristiqueExiste)))
                    {
                        ValidationProvider.SetError(buttonModifier, "La caractéristique a bien été modifiée");
                        RefreshListeCaract();
                        listeDeroulanteCaracteristique1.CaracteristiqueSelectionne = CaracteristiqueExiste;
                    }
                }
                else
                {
                    Caracteristique CaracteristiqueAModifier = listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne;
                    CaracteristiqueAModifier.SurErreur         += NouvelleCaracteristique_SurErreur;
                    CaracteristiqueAModifier.NomCaracteristique = textBoxNomCaract.Text;
                    CaracteristiqueAModifier.TypeVehicule       = listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne;
                    if ((CaracteristiqueAModifier.EstValide) && (Program.GMBD.ModifierCaracteristique(CaracteristiqueAModifier)))
                    {
                        errorProvider.Clear();
                        ValidationProvider.SetError(buttonModifierCaract, "Caractéristique correctement modifiée");
                        textBoxNomCaract.Text = "";
                        listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne = null;
                        RefreshFicheTechnique();
                        RefreshListeCaract();
                        listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne = CaracteristiqueAModifier;
                    }
                }
            }
        }
 public Element(Caracteristique Caracteristique)
 {
     this.Caracteristique = Caracteristique;
 }
        /// <summary>
        /// Se produit lors du clic sur le bouton d'ajout d'une caractéristique
        /// </summary>
        private void buttonAjouterCaract_Click(object sender, EventArgs e)
        {
            errorProvider.Clear();
            ValidationProvider.Clear();
            Caracteristique CaracteristiqueExiste = Program.GMBD.EnumererCaracteristique(null, new PDSGBD.MyDB.CodeSql("JOIN type ON caracteristique.fk_id_type = type.id_type"), new PDSGBD.MyDB.CodeSql("WHERE caracteristique = {0}", textBoxNomCaract.Text.Trim()), null).FirstOrDefault();

            if ((CaracteristiqueExiste != null) && (CaracteristiqueExiste.Disponible == 1) && ((CaracteristiqueExiste.TypeVehicule.NomDuType == listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne.NomDuType)))
            {
                errorProvider.SetError(buttonAjouterCaract, "Cette caractéristique existe déjà");
            }
            else if ((CaracteristiqueExiste != null) && (CaracteristiqueExiste.TypeVehicule.NomDuType == ((EstVoiture) ? "Voiture" : "Moto")))
            {
                // Permet de vérifier si l'utilisateur souhaite modifié l'enregistrement existant sous l'autre type de véhicule en générique afin de garder 1 seul enregsitrement pour les 2 véhicules
                if (IndicateurDAjout == 0)
                {
                    errorProvider.SetError(buttonAjouterCaract, "Cette option existe pour les voitures. Pour la passer en générique, veuillez recliquer une deuxième fois sur ajouter. Sinon, cliquez sur annuler");
                    IndicateurDAjout++;
                }
                else if (IndicateurDAjout == 1)
                {
                    CaracteristiqueExiste.TypeVehicule = Program.GMBD.EnumererTypeVehicule(null, null, new PDSGBD.MyDB.CodeSql("WHERE type = \"Générique\""), null).FirstOrDefault();
                    if (CaracteristiqueExiste.Disponible == 0)
                    {
                        CaracteristiqueExiste.Disponible = 1;
                    }
                    if (CaracteristiqueExiste.EstValide && Program.GMBD.ModifierCaracteristique(CaracteristiqueExiste))
                    {
                        RefreshListeCaract();
                        listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne = CaracteristiqueExiste;
                        ValidationProvider.SetError(buttonAjouterCaract, "L'option a bien été modifiée et son type est passé à générique");
                    }
                    IndicateurDAjout = 0;
                }
            }
            else if ((CaracteristiqueExiste != null) && (CaracteristiqueExiste.Disponible == 0) && (listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne.NomDuType == CaracteristiqueExiste.TypeVehicule.NomDuType))
            {
                CaracteristiqueExiste.Disponible = 1;
                if ((CaracteristiqueExiste.EstValide) && (Program.GMBD.ModifierCaracteristique(CaracteristiqueExiste)))
                {
                    RefreshListeCaract();
                    ValidationProvider.SetError(buttonAjouterCaract, "La caractéristique a bien été ajoutée");
                    listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne = CaracteristiqueExiste;
                }
            }
            else if ((CaracteristiqueExiste != null) && (CaracteristiqueExiste.Disponible == 0) && (listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne.NomDuType != CaracteristiqueExiste.TypeVehicule.NomDuType))
            {
                VehiculeCaracteristique CaracteristiqueReferencee = Program.GMBD.EnumererVehiculeCaracteristique(null, null, new PDSGBD.MyDB.CodeSql("WHERE fk_id_caracteristique = {0}", listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne.Id), null).FirstOrDefault();

                if (CaracteristiqueReferencee != null)
                {
                    CaracteristiqueExiste.Disponible   = 1;
                    CaracteristiqueExiste.TypeVehicule = listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne;
                    if ((CaracteristiqueExiste.EstValide) && (Program.GMBD.ModifierCaracteristique(CaracteristiqueExiste)))
                    {
                        RefreshListeCaract();
                        ClearCaract();
                        ValidationProvider.SetError(buttonAjouterCaract, "La caractéristique a bien été ajoutée");
                        listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne = CaracteristiqueExiste;
                    }
                }
                else
                {
                    CaracteristiqueExiste.TypeVehicule = listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne;
                    if ((CaracteristiqueExiste.EstValide) && (Program.GMBD.ModifierCaracteristique(CaracteristiqueExiste)))
                    {
                        RefreshListeCaract();
                        ClearCaract();
                        ValidationProvider.SetError(buttonAjouterCaract, "La caractéristique a bien été ajoutée");
                        listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne = CaracteristiqueExiste;
                    }
                }
            }
            else
            {
                Caracteristique NouvelleCaracteristique = new Caracteristique();
                NouvelleCaracteristique.SurErreur         += NouvelleCaracteristique_SurErreur;
                NouvelleCaracteristique.NomCaracteristique = textBoxNomCaract.Text;
                NouvelleCaracteristique.TypeVehicule       = listeDeroulanteTypeVehicule1.TypeVehiculeSelectionne;
                NouvelleCaracteristique.Disponible         = 1;
                if ((NouvelleCaracteristique.EstValide) && (Program.GMBD.AjouterCaracteristique(NouvelleCaracteristique)))
                {
                    RefreshListeCaract();
                    ValidationProvider.SetError(buttonAjouterCaract, "La caractéristique a bien été ajoutée");
                    listeDeroulanteCaracteristiqueAjouter.CaracteristiqueSelectionne = NouvelleCaracteristique;
                }
            }
        }