コード例 #1
0
ファイル: Articles.cs プロジェクト: DigitalActivity/Philatel
        public override bool SQLCreerColonnes(OleDbConnection m_bd)
        {
            ArticlePhilatélique Article = null;

            Tuple <string, string>[] colonnes =
            {
                new Tuple <string, string>("type",           "Text(80)"),
                new Tuple <string, string>("numero",         "Integer"),
                new Tuple <string, string>("motif",          "Text(50)"),
                new Tuple <string, string>("date_parution",  "Date"),
                new Tuple <string, string>("prix_payé",      "Double"),
                new Tuple <string, string>("coin",           "Integer"),
                new Tuple <string, string>("valeur_timbre",  "Double"),
                new Tuple <string, string>("nombre_timbres", "Integer"),
                new Tuple <string, string>("taille_forme",   "Text(50)")
            };

            try
            {
                RequeteSQL.InsererColonnesSiNonExistantes("Articles", colonnes);
            }
            catch
            {
                return(false);
            }
            return(true);
        }
コード例 #2
0
ファイル: Articles.cs プロジェクト: DigitalActivity/Philatel
        public override ArticlePhilatélique SQLLireArticle(OleDbConnection m_bd, int p_numero)
        {
            ArticlePhilatélique Article = null;

            try
            {
                using (BdReader bdr = new BdReader(m_bd,
                                                   "SELECT numero, motif, date_parution, prix_payé, " +
                                                   "coin, valeur_timbre, nombre_timbres, taille_forme " +
                                                   "FROM Articles " +
                                                   "WHERE numero=?", p_numero))
                {
                    if (!bdr.Read() && !bdr.IsDBNull(1) && !bdr.IsDBNull(4) && !bdr.IsDBNull(5) &&
                        !bdr.IsDBNull(6) && !bdr.IsDBNull(7))
                    {
                        return(null);
                    }

                    Article = new BlocDeCoin(
                        bdr.GetInt32(0), bdr.GetString(1), bdr.GetDateTimeOuNull(2), bdr.GetDoubleOuNull(3),
                        (Coin)bdr.GetInt32(4), bdr.GetDouble(5), bdr.GetInt32(6), bdr.GetString(7));
                }
            }
            catch { }
            return(Article);
        }
コード例 #3
0
ファイル: Document.cs プロジェクト: DigitalActivity/Philatel
 /// <summary>
 /// Ajoute l'article (les observateurs sont ensuite notifiés).
 /// </summary>
 /// <param name="p_article">l'article à ajouter</param>
 public void Ajouter(ArticlePhilatélique p_article)
 {
     m_articles.Add(p_article);
     m_docModifié = true;
     RequeteSQL.AjouterArticle(p_article);
     Notifier(this);
 }
コード例 #4
0
ファイル: Commandes.cs プロジェクト: DigitalActivity/Philatel
        public bool Exécuter() // Template Method (appelle une Factory Method)
        {
            DlgSaisieArticle d;

            if (m_motif != null)
            {
                d = CréerDlgSaisieAvecDonnées(m_motif, m_dateParution);
            }
            else
            {
                d = CréerDlgSaisie();
            }

            if (d.ShowDialog() == DialogResult.Cancel)
            {
                return(false);
            }

            ArticlePhilatélique article = d.Extraire();

            m_numéroArticleAjouté = article.Numéro;
            m_article             = article;
            Document.Instance.Ajouter(article);
            return(true);
        }
コード例 #5
0
        /// <summary>
        /// Inscrit la nouvelle version de l'article (les observateurs sont ensuite notifiés).
        /// (un article portant le même numéro doit déjà exister)
        /// </summary>
        /// <param name="p_article">l'article pour remplacer l'ancien</param>
        public void Modifier(ArticlePhilatélique p_article)
        {
            Stack <ArticlePhilatélique> tempStack = new Stack <ArticlePhilatélique>();

            foreach (ArticlePhilatélique article in m_articles)
            {
                if (article.Numéro == p_article.Numéro)
                {
                    tempStack.Push(p_article);
                }
                else
                {
                    tempStack.Push(article);
                }
            }

            m_articles.Clear();

            foreach (ArticlePhilatélique article in tempStack)
            {
                m_articles.Push(article);
            }

            m_docModifié = true;
            Notifier(this);
        }
コード例 #6
0
 /// <summary>
 /// Modifier un article dans la base des données
 /// </summary>
 /// <param name="p_article"></param>
 public static void ModifierArticle(ArticlePhilatélique p_article)
 {
     try
     {
         SupprimerArticle(p_article.Numéro);
         AjouterArticle(p_article);
     }
     catch { }
 }
コード例 #7
0
ファイル: Document.cs プロジェクト: DigitalActivity/Philatel
        /// <summary>
        /// Inscrit la nouvelle version de l'article (les observateurs sont ensuite notifiés).
        /// (un article portant le même numéro doit déjà exister)
        /// </summary>
        /// <param name="p_article">l'article pour remplacer l'ancien</param>
        public void Modifier(ArticlePhilatélique p_article)
        {
            int indiceArticle = m_articles.FindIndex(a => a.Numéro == p_article.Numéro);

            Debug.Assert(indiceArticle != -1);
            m_articles[indiceArticle] = p_article;
            m_docModifié = true;
            RequeteSQL.ModifierArticle(p_article);
            Notifier(this);
        }
コード例 #8
0
        public static ArticlePhilatélique ArticleSelonNumero(int p_numero)
        {
            string type = BdScalar.Get <string>(m_bd,
                                                "SELECT type " +
                                                "FROM Articles " +
                                                "WHERE numero=?", p_numero);

            // Obtenir la bonne fabrique
            IFabriqueCommande f = LesFabriques.TrouverFabrique(type);
            // Obtenir la commande sql du type à chercher
            CommandeLireSQL cmdLireArticle = (CommandeLireSQL)f.CréerCommandeSQLPourLireArticle();
            // Obtenir l'article avec la bonne commande sql
            ArticlePhilatélique article = cmdLireArticle.ExecuterSQLLireArticle(m_bd, p_numero);

            return(article);
        }
コード例 #9
0
        private void listViewArticles_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listViewArticles.SelectedItems.Count == 0)
            {
                textBoxDétails.Text = "";
                m_articleCourant    = null;
            }
            else
            {
                int noArticle = (int)listViewArticles.SelectedItems[0].Tag;
                m_articleCourant    = m_doc.ArticleSelonNuméro(noArticle);
                textBoxDétails.Text = m_articleCourant.ToString().Replace("\n", "\r\n");;
            }

            ActiverDésactiverContrôlesPourLaListe();
        }
コード例 #10
0
ファイル: Commandes.cs プロジェクト: SamuelD28/Philatel
        public bool Exécuter()
        {
            DlgSaisieArticle d = CréerDlgSaisie();

            if (d.ShowDialog() == DialogResult.Cancel)
            {
                return(false);
            }

            m_article = d.Extraire();
            GestionCommandes.GetInstance().PousserCommandeAnnulable(this);
            GestionCommandes.GetInstance().ViderCommandeRétablissante();
            Document.Instance.Ajouter(m_article);
            Document.Instance.Enregistrer();
            return(true);
        }
コード例 #11
0
        /// <summary>
        /// Ajouter un Article à la base de donnée
        /// </summary>
        /// <param name="p_article"></param>
        /// <returns>true quand operation reussit, false sinon</returns>
        public static bool AjouterArticle(ArticlePhilatélique p_article)
        {
            // Obtenir la bonne fabrique
            IFabriqueCommande f = LesFabriques.FabriqueDe(p_article.GetType());
            CommandeEcrireSQL cmdEcrireArticle = (CommandeEcrireSQL)f.CréerCommandeSQLPourEcrireArticle();

            // Executer le sql correspondant à l'article
            try
            {
                return(cmdEcrireArticle.ExecuterSQLEnregistrerArticle(m_bd, p_article));
            }
            catch (Exception e)
            {
                MB.AvertirCritique("Article ne peut etre ajouté à la base des données. « {0} ».",
                                   e.Message);
                return(false);
            }
        }
コード例 #12
0
ファイル: Articles.cs プロジェクト: DigitalActivity/Philatel
        public override bool SQLEcrireArticle(OleDbConnection m_bd, ArticlePhilatélique p_article)
        {
            BlocDeCoin Article = p_article as BlocDeCoin;

            try
            {
                BdNonQuery insert = new BdNonQuery(m_bd,
                                                   "INSERT INTO Articles(type, numero, motif, date_parution, prix_payé, " +
                                                   "coin, valeur_timbre, nombre_timbres, taille_forme ) " +
                                                   "VALUES(?,?,?,?,? ,?,?,?,?)",
                                                   Article.GetType().ToString(), Article.Numéro, Article.Motif, Article.Parution.Value.Date, Article.PrixPayé,
                                                   (int)Article.Coin, Article.ValeurTimbre, Article.NbTimbres, Article.TailleEtForme);

                insert.ExecuteNonQuery();
            }
            catch { return(false); }
            return(true);
        }
コード例 #13
0
 /// <summary>
 /// Renvoie tous les artiles.
 /// </summary>
 /// <returns>Toutes les productions.</returns>
 public static IEnumerable <ArticlePhilatélique> ToutesLesArticles()
 {
     using (BdReader bdr = new BdReader(m_bd,
                                        "SELECT type, numero " +
                                        "FROM Articles " +
                                        "ORDER BY type"))
     {
         while (bdr.Read())
         {
             // Obtenir la bonne fabrique
             IFabriqueCommande f = LesFabriques.FabriqueDe(Type.GetType(bdr.GetString(0)));
             // Obtenir la commande sql du type à chercher
             CommandeLireSQL cmdLireArticle = (CommandeLireSQL)f.CréerCommandeSQLPourLireArticle();
             // Obtenir l'article avec la bonne commande sql
             ArticlePhilatélique article = cmdLireArticle.ExecuterSQLLireArticle(m_bd, bdr.GetInt32(1));
             yield return(article);
         }
     }
 }
コード例 #14
0
        /// <summary>
        /// Vrai constructeur à utiliser
        /// </summary>
        /// <param name="p_opération">Le type d'opération désiré</param>
        /// <param name="p_article">L'article à traiter (normalement null pour les ajouts)</param>
        protected DlgSaisieArticle(TypeDeSaisie p_opération, ArticlePhilatélique p_article)
        {
            InitializeComponent();
            CorrecteurDécimal.Corriger(textBoxPrixPayé);

            Article = p_article;

            if (Article != null)
            {
                InitialiserLesChamps();
            }

            if (p_opération != TypeDeSaisie.Ajout && p_opération != TypeDeSaisie.Modification)
            {
                DésactiverLesChamps();
            }

            ChargerComboBoxMotifs();
        }
コード例 #15
0
ファイル: Articles.cs プロジェクト: DigitalActivity/Philatel
        public override bool SQLEcrireArticle(OleDbConnection m_bd, ArticlePhilatélique p_article)
        {
            TimbreSeul Article = p_article as TimbreSeul;

            try
            {
                BdNonQuery insert = new BdNonQuery(m_bd,
                                                   "INSERT INTO Articles(type, numero, motif, date_parution, prix_payé, " +
                                                   "valeur_timbre, obliteration, taille_forme) " +
                                                   "VALUES(?,?,?,?,? ,?,?,?)",
                                                   Article.GetType().ToString(), Article.Numéro, Article.Motif, Article.Parution.Value.Date, Article.PrixPayé,
                                                   Article.ValeurTimbre, (int)Article.Oblitération, Article.TailleEtForme);

                insert.ExecuteNonQuery();
            }
            catch (Exception e) {
                MB.AvertirCritique("Une erreur s'est produite lors de l'insertion d'un nouvel article dans la base de donnée. \n\n" +
                                   "{0}\n\n", e.Message);
                return(false);
            }
            return(true);
        }
コード例 #16
0
        /// <summary>
        /// Vrai constructeur à utiliser
        /// </summary>
        /// <param name="p_opération">Le type d'opération désiré</param>
        /// <param name="p_article">L'article à traiter (normalement null pour les ajouts)</param>
        protected DlgSaisieArticle(TypeDeSaisie p_opération, ArticlePhilatélique p_article)
        {
            InitializeComponent();
            CorrecteurDécimal.Corriger(textBoxPrixPayé);

            Article = p_article;

            comboBoxMotifs.Items.Clear();
            foreach (string motif in Document.Instance.ObtenirTousLesMotifs())
            {
                comboBoxMotifs.Items.Add(motif);
            }

            if (Article != null)
            {
                InitialiserLesChamps();
            }

            if (p_opération != TypeDeSaisie.Ajout && p_opération != TypeDeSaisie.Modification)
            {
                DésactiverLesChamps();
            }
        }
コード例 #17
0
ファイル: Articles.cs プロジェクト: SamuelD28/Philatel
 public override bool ConfirmerSuppression(ArticlePhilatélique p_article)
 {
     return(DialogResult.OK ==
            new DlgSaisieBlocDeCoin(TypeDeSaisie.Suppression, p_article as BlocDeCoin).ShowDialog());
 }
コード例 #18
0
ファイル: Articles.cs プロジェクト: SamuelD28/Philatel
 public CommandeAjoutBC(ArticlePhilatélique p_article = null)
 {
     m_article = p_article;
 }
コード例 #19
0
ファイル: Articles.cs プロジェクト: SamuelD28/Philatel
 public override DlgSaisieArticle CréerDlgSaisie(ArticlePhilatélique p_article)
 => new DlgSaisieBlocDeCoin(TypeDeSaisie.Modification, p_article as BlocDeCoin);
コード例 #20
0
ファイル: Articles.cs プロジェクト: SamuelD28/Philatel
 public ICommande CréerCommandeSupprimer(ArticlePhilatélique p_articleCourant)
 => new CommandeSuppressionBC(p_articleCourant as BlocDeCoin);     // Particulier
コード例 #21
0
ファイル: Articles.cs プロジェクト: SamuelD28/Philatel
 public override DlgSaisieArticle CréerDlgSaisie(ArticlePhilatélique p_article)
 => new DlgSaisieTimbreSeul(TypeDeSaisie.Modification, p_article as TimbreSeul);
コード例 #22
0
ファイル: Articles.cs プロジェクト: SamuelD28/Philatel
 public ICommande CréerCommandeAjouter(ArticlePhilatélique p_article) => new CommandeAjoutBC(p_article);
コード例 #23
0
ファイル: Articles.cs プロジェクト: SamuelD28/Philatel
 public ICommande CréerCommandeModifier(ArticlePhilatélique p_articleCourant)
 => new CommandeModificationBC(p_articleCourant as BlocDeCoin);
コード例 #24
0
ファイル: Articles.cs プロジェクト: SamuelD28/Philatel
 public ICommande CréerCommandeModifier(ArticlePhilatélique p_articleCourant)
 => new CommandeModificationTS(p_articleCourant as TimbreSeul);
コード例 #25
0
ファイル: Articles.cs プロジェクト: SamuelD28/Philatel
 public ICommande CréerCommandeSupprimer(ArticlePhilatélique p_articleCourant)
 => new CommandeSuppression(p_articleCourant);     // Approche générale
コード例 #26
0
 public DlgSaisieBlocDeCoin(TypeDeSaisie ajout, ArticlePhilatélique m_article)
     : base(ajout, m_article)
 {
     InitializeComponent();
     InitialiserTitre(ajout);
 }
コード例 #27
0
ファイル: Commandes.cs プロジェクト: DigitalActivity/Philatel
 public bool ExecuterSQLEnregistrerArticle(OleDbConnection p_bd, ArticlePhilatélique p_article)
 => SQLEcrireArticle(p_bd, p_article);
コード例 #28
0
ファイル: Commandes.cs プロジェクト: DigitalActivity/Philatel
 public abstract bool SQLEcrireArticle(OleDbConnection p_bd, ArticlePhilatélique p_article);
コード例 #29
0
        /*-Opérations CRUD sur les différents articles-*/

        /// <summary>
        /// Ajoute l'article (les observateurs sont ensuite notifiés).
        /// </summary>
        /// <param name="p_article">l'article à ajouter</param>
        public void Ajouter(ArticlePhilatélique p_article)
        {
            m_articles.Push(p_article);
            m_docModifié = true;
            Notifier(this);
        }
コード例 #30
0
 public FabriqueEtArticle(IFabriqueCommande p_fabrique, ArticlePhilatélique p_article)
 {
     Fabrique = p_fabrique;
     Article  = p_article;
 }