/// <summary> /// Cette methode permet d'ajout ou de modifier un article après avoir cliqué sur le bouton ajouter / modifier /// </summary> /// <param name="sender">object qui envoie l'action </param> /// <param name="e">Evenement envoyé </param> /// <remarks> /// Cette methode vérifie que tous les champs sont saisie par l'utilisateur /// et choisie en fonction de l'attribut <see cref="RefArticle"/> si on ajoute ou modifie l'article /// puis on ferme la fenetre /// </remarks> private void Button_Ajouter_Modifier_Click(object sender, EventArgs e) { if (String.IsNullOrEmpty(TextBox_RefArticle.Text) || String.IsNullOrEmpty(ComboBox_SousFamille.Text) || String.IsNullOrEmpty(ComboBox_Marque.Text) || String.IsNullOrEmpty(TextBox_Description.Text)) { MessageBox.Show(this, "Veillez remplir tous les champs !!!", "Erreur Insertion ", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); } else { InterfaceDB_Articles inter = new InterfaceDB_Articles(); InterfaceDB_Sous_Famille intersousfam = new InterfaceDB_Sous_Famille(); InterfaceDB_Marque intermarque = new InterfaceDB_Marque(); string resultat; SousFamille sousfamille = intersousfam.GetSousFamille(ComboBox_SousFamille.Text); Marque marque = intermarque.GetMarque(ComboBox_Marque.Text); if (RefArticle == null) //on ajoute { Article article = new Article(TextBox_RefArticle.Text, TextBox_Description.Text, sousfamille, marque, double.Parse(NumericUpDown_PrixHT.Value.ToString()), Int32.Parse(NumericUpDown_Quantite.Value.ToString())); resultat = inter.InsererArticle(article); } else // on modifie { resultat = inter.ModifierArticle(RefArticle, TextBox_Description.Text, sousfamille.RefSousFamille, marque.RefMarque, double.Parse(NumericUpDown_PrixHT.Value.ToString()), Int32.Parse(NumericUpDown_Quantite.Value.ToString())); } MessageBox.Show(this, resultat, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); Reussi_ = true; this.Close(); } }
/// <summary> /// Cette méthode permet de supprimer un article dans la base de données /// </summary> /// <remarks> /// la suppression est faite que si une ligne est sélectionnée , et un message box est affiché pour demander à l'utilisateur de confirmer la suppression /// on met à jour la liste view des articles <see cref="ListView_Articles"/> , on change le status de l'application si la suppression à reussi /// </remarks> private void SupprimerArticle() { int count = ListView_Articles.Items.Count; if (ListView_Articles.SelectedItems.Count > 0) { DialogResult reponse = MessageBox.Show("Voulez-vous supprimer cet article ? ", "Information", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (reponse == DialogResult.OK) { ListViewItem item = ListView_Articles.SelectedItems[0]; string refarticle = item.SubItems[0].Text; InterfaceDB_Articles inter = new InterfaceDB_Articles(); inter.SupprimerArticle(refarticle); MettreJourArticles(); if (count > ListView_Articles.Items.Count) { ChangementStatus("Un article a été supprimé "); } } } }
/// <summary> /// Cette méthode permet d'initialiser l'interface graphique /// </summary> public void Init() { if (RefArticle == null) { RemplirComboMarque(); RemplirComboSousfamille(); } else { // Initialise les champs correspondant à la reférence de l'article ( cas d'une modification) InterfaceDB_Articles inter = new InterfaceDB_Articles(); Article article = inter.GetArticle(RefArticle); TextBox_RefArticle.Text = RefArticle; TextBox_Description.Text = article.Description; NumericUpDown_PrixHT.Value = Decimal.Parse(article.PrixHT.ToString()); NumericUpDown_Quantite.Value = Int32.Parse(article.Quantite.ToString()); Button_Ajouter_Modifier.Text = "Modifier"; RemplirComboMarque(); RemplirComboSousfamille(); this.ComboBox_Marque.SelectedIndex = this.ComboBox_Marque.FindString(article.Marque.NomMarque); this.ComboBox_SousFamille.SelectedIndex = this.ComboBox_SousFamille.FindString(article.SousFamille.NomSousFamille); } }
/// <summary> /// Cette methode permet de lire le contenu du fichier xml et mettre à jour les informations des articles dans la base de données /// </summary> /// <remarks> /// Elle permet de : /// - Ouvre et lit le fichier XML avec <see cref="XmlDocument"/> /// - Pour chaque noeud lu , elle met à jour un article avec les nouveaux éléments d'un fichier /// - si la marque , la famille et la sous famille existent alors l'action est faite directement /// - sinon on cree l'objet puis on met à jour l'article /// - Si l'article n'existe pas avant dans la base de données alors il est crée /// </remarks> private void FileMisejour() { Article articleMisejour; Marque marqueMisejour; Famille familleMisejour; SousFamille sousfamilleMisejour; InterfaceDB_Articles interArticle = new InterfaceDB_Articles(); InterfaceDB_Marque interMarque = new InterfaceDB_Marque(); InterfaceDB_Famille interfamille = new InterfaceDB_Famille(); InterfaceDB_Sous_Famille interSousfamille = new InterfaceDB_Sous_Famille(); int increment = 0; XmlDocument documentXml = new XmlDocument(); this.NomFicherXML = this.Ouvrir_XML_Fichier.FileName; documentXml.Load(this.NomFicherXML); foreach (XmlNode enregistrement in documentXml.DocumentElement) { string descriptionActicle = enregistrement.SelectSingleNode("description").InnerText; string refArticle = enregistrement.SelectSingleNode("refArticle").InnerText; double prixArticle = Double.Parse(enregistrement.SelectSingleNode("prixHT").InnerText); int quantiteArticle = 1; string nomSousfamille = enregistrement.SelectSingleNode("sousFamille").InnerText; string nomfamille = enregistrement.SelectSingleNode("famille").InnerText; string nomMarque = enregistrement.SelectSingleNode("marque").InnerText; /** * La marque * */ marqueMisejour = interMarque.GetMarque(nomMarque); if (marqueMisejour == null) { ResultatErreur = interMarque.InsererMarque(nomMarque); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); marqueMisejour = interMarque.GetMarque(nomMarque); } /** * La famille */ familleMisejour = interfamille.GetFamille(nomfamille); if (familleMisejour == null) { ResultatErreur = interfamille.InsererFamille(nomfamille); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); familleMisejour = interfamille.GetFamille(nomfamille); } /** * La sous famille * */ sousfamilleMisejour = interSousfamille.GetSousFamille(nomSousfamille); if (sousfamilleMisejour == null) { ResultatErreur = interSousfamille.InsererSousFamille(nomfamille, nomSousfamille); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); sousfamilleMisejour = interSousfamille.GetSousFamille(nomSousfamille); } else { if (sousfamilleMisejour.MaFamille.RefFamille != familleMisejour.RefFamille) { ResultatErreur = interSousfamille.ModifierSousFamille(sousfamilleMisejour.RefSousFamille, familleMisejour.RefFamille, sousfamilleMisejour.NomSousFamille); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); } } /** * L'article * */ articleMisejour = interArticle.GetArticle(refArticle); if (articleMisejour == null) { ResultatErreur = interArticle.InsererArticle(refArticle, descriptionActicle, sousfamilleMisejour.RefSousFamille, marqueMisejour.RefMarque, prixArticle, quantiteArticle); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); } else { ResultatErreur = interArticle.ModifierArticle(refArticle, descriptionActicle, sousfamilleMisejour.RefSousFamille, marqueMisejour.RefMarque, prixArticle, quantiteArticle); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); } increment++; Travail_En_Arriere_Plan.ReportProgress(increment); } Reussi_ = 2; // Mise à jour reussie }
/// <summary> /// Cette methode permet de lire le contenu du fichier xml et inserer dans la base de données /// </summary> /// <remarks> /// - Elle supprime en premier lieu , toutes les tuples qui se trouvent dans les différents tables de la base de données /// - Puis ouvre et lit le fichier XML avec <see cref="XmlDocument"/> /// - Pour chaque noeud lu , elle cree une marque , une famille , une sous famille puis un article si ils existent pas déjà /// </remarks> private void FileIntegration() { int increment = 0; XmlDocument documentXml = new XmlDocument(); /** * Suppression des tables de la base de données * */ ResultatErreur = InterfaceDB.SupprimerToutTable("Articles"); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); ResultatErreur = InterfaceDB.SupprimerToutTable("Familles"); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); ResultatErreur = InterfaceDB.SupprimerToutTable("SousFamilles"); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); ResultatErreur = InterfaceDB.SupprimerToutTable("Marques"); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); /** * Lecture des Elements dans le fichier xml choisie * */ this.NomFicherXML = this.Ouvrir_XML_Fichier.FileName; documentXml.Load(this.NomFicherXML); foreach (XmlNode enregistrement in documentXml.DocumentElement) { /** * Pour chaque noeud je recupère les élements d'un article * En creer la marque , la famille , la sous famille puis l'article */ string descriptionActicle = enregistrement.SelectSingleNode("description").InnerText; string refArticle = enregistrement.SelectSingleNode("refArticle").InnerText; double prixArticle = Double.Parse(enregistrement.SelectSingleNode("prixHT").InnerText); int quantiteArticle = 1; string nomSousfamille = enregistrement.SelectSingleNode("sousFamille").InnerText; string nomfamille = enregistrement.SelectSingleNode("famille").InnerText; string nomMarque = enregistrement.SelectSingleNode("marque").InnerText; /** * L'ordre d'insertion est importante */ InterfaceDB_Marque marque = new InterfaceDB_Marque(); ResultatErreur = marque.InsererMarque(nomMarque); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); InterfaceDB_Famille famille = new InterfaceDB_Famille(); ResultatErreur = famille.InsererFamille(nomfamille); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); InterfaceDB_Sous_Famille sousfamille = new InterfaceDB_Sous_Famille(); ResultatErreur = sousfamille.InsererSousFamille(nomfamille, nomSousfamille); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); Marque marqueArticle = marque.GetMarque(nomMarque); SousFamille sousFamilleArticle = sousfamille.GetSousFamille(nomSousfamille); if (marqueArticle != null && sousFamilleArticle != null) { InterfaceDB_Articles article = new InterfaceDB_Articles(); ResultatErreur = article.InsererArticle(refArticle, descriptionActicle, sousFamilleArticle.RefSousFamille, marqueArticle.RefMarque, prixArticle, quantiteArticle); TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur); } increment++; Travail_En_Arriere_Plan.ReportProgress(increment); } Reussi_ = 1; // Integration reussie }
/// <summary> /// Cette methode permet d'aller chercher dans la base de données Tous les articles et remplir la liste View de ces articles /// , en indiquant les noms de colonne /// </summary> private void RemplirListeArticle() { InterfaceDB_Articles interArticle = new InterfaceDB_Articles(); int indice = 0; ColumnHeader Crefarcticle = new ColumnHeader(); Crefarcticle.Text = "RefArticle"; Crefarcticle.Width = 80; ColumnHeader Cdescription = new ColumnHeader(); Cdescription.Text = "Description"; Cdescription.Width = 300; ColumnHeader Cfamille = new ColumnHeader(); Cfamille.Text = "Famille"; Cfamille.Width = 120; ColumnHeader Csousfamille = new ColumnHeader(); Csousfamille.Text = "Sous Famille"; Csousfamille.Width = 120; ColumnHeader Cmarque = new ColumnHeader(); Cmarque.Text = "Marque"; Cmarque.Width = 100; ColumnHeader Cprix = new ColumnHeader(); Cprix.Text = "Prix HT"; Cprix.Width = 60; ColumnHeader Cquantite = new ColumnHeader(); Cquantite.Text = "Quantite"; Cquantite.Width = 60; ListView_Articles.Columns.AddRange(new ColumnHeader[] { Crefarcticle, Cdescription, Cfamille, Csousfamille, Cmarque, Cprix, Cquantite }); List <Article> listeArticle = interArticle.GetToutesArticle(); ListViewItem[] listeItemArticle = new ListViewItem[listeArticle.Count]; if (listeArticle != null) { foreach (Article article in listeArticle) { string[] chaineArticle = new string[] { article.RefArticle, article.Description, article.SousFamille.MaFamille.NomFamille, article.SousFamille.NomSousFamille, article.Marque.NomMarque, article.PrixHT.ToString(), article.Quantite.ToString() }; ListViewItem itemArticle = new ListViewItem(chaineArticle); listeItemArticle[indice] = itemArticle; indice++; } } this.ListView_Articles.Items.AddRange(listeItemArticle); }