예제 #1
0
        static void Main(string[] args)
        {
            List <Pays> ListePays = new List <Pays>();

            ListePays.Add(new Pays {
                Localisation = EnumLocalisation.France, Nom = "France"
            });
            ListePays.Add(new Pays {
                Localisation = EnumLocalisation.Europe, Nom = "Italie"
            });
            ListePays.Add(new Pays {
                Localisation = EnumLocalisation.Autre, Nom = "USA"
            });
            Commande commande = new Commande()
            {
                Facturation = new Facturation {
                    CodePostal  = 68000,
                    NomDeRue    = "Rue des mésanges",
                    NumeroDeRue = 2,
                    Pays        = ListePays.FirstOrDefault(p => p.Nom == "France"),
                    Ville       = "Colmar",
                    Personne    = new Personne {
                        Nom = "PIERRE", Prenom = "Paul"
                    }
                }, Livraison = new Livraison {
                    CodePostal  = 68000,
                    NomDeRue    = "Rue des mésanges",
                    NumeroDeRue = 2,
                    Pays        = ListePays.FirstOrDefault(p => p.Nom == "USA"),
                    Ville       = "Colmar",
                    Personne    = new Personne {
                        Nom = "JAQUES", Prenom = "Henry"
                    }
                }
            };
            Random random = new Random();

            commande.ListeArticle.Add(new Article {
                Nom = "Article 1", PrixHT = -1
            });
            commande.ListeArticle.Add(new Article {
                Nom = "Article 2", PrixHT = Math.Round(random.NextDouble() * 40, 2)
            });
            commande.ListeArticle.Add(new Article {
                Nom = "Article 3", PrixHT = Math.Round(random.NextDouble() * 40, 2)
            });
            commande.ListeArticle.Add(new Article {
                Nom = "Article 4", PrixHT = Math.Round(random.NextDouble() * 40, 2)
            });
            commande.ListeArticle.Add(new Article {
                Nom = "Article 5", PrixHT = Math.Round(random.NextDouble() * 40, 2)
            });
            commande.ListeArticle.Add(new Article {
                Nom = "Article 6", PrixHT = Math.Round(random.NextDouble() * 40, 2)
            });
            commande.ListeArticle.Add(new Article {
                Nom = "Article 7", PrixHT = Math.Round(random.NextDouble() * 40, 2)
            });
            commande.ListeArticle.Add(new Article {
                Nom = "Article 8", PrixHT = Math.Round(random.NextDouble() * 40, 2)
            });
            commande.ListeArticle.Add(new Article {
                Nom = "Article 9", PrixHT = Math.Round(random.NextDouble() * 40, 2)
            });
            commande.ListeArticle.Add(new Article {
                Nom = "Article 10", PrixHT = Math.Round(random.NextDouble() * 40, 2)
            });
            List <Article> ListeArticleCalculable = commande.ListeArticle.Where(ls => ls.PrixHT > 0).ToList();

            try
            {
                double prixMoyen    = Math.Round(ListeArticleCalculable.Select(ls => ls.PrixHT).Average(), 2);
                double prixTotalHT  = ListeArticleCalculable.Sum(ls => ls.PrixHT);
                double prixTotalTTC = commande.SommeTTC(prixTotalHT);
                int    livraison    = commande.PrixLivraison(commande);
                prixTotalTTC += livraison;

                if (prixTotalHT < 0)
                {
                    Console.WriteLine("Montant impossible négatif");
                    Console.ReadKey();
                }
                else
                {
                    CultureInfo.CurrentCulture = new CultureInfo("fr-FR", false);
                    Console.OutputEncoding     = Encoding.UTF8;
                    commande.ListeArticle.ForEach(a => Console.WriteLine(a.Detail(a)));
                    Console.WriteLine("Quel est votre sexe ? 1-Homme, 2-Femme");
                    commande.Livraison.Personne.EnumSexe   = (EnumSexe)Int32.Parse(Console.ReadLine());
                    commande.Facturation.Personne.EnumSexe = commande.Livraison.Personne.EnumSexe;
                    Console.WriteLine("___________________");
                    Console.WriteLine("Prix total HT : {0:C2}", prixTotalHT);
                    Console.WriteLine("Prix total TTC : {0:C2}", prixTotalTTC);
                    Console.WriteLine("Dont livraison : {0:C2}", livraison);
                    Console.WriteLine("Prix moyen d'un article : {0:C2}", prixMoyen);
                    Console.WriteLine("Date de création : {0}", commande.Date);
                    Console.WriteLine("___________________");
                    Console.WriteLine("Adresse de Facturation : {0}", commande.Livraison.Detail(commande.Livraison.Personne.EnumSexe, commande.Livraison));
                    Console.WriteLine("Adresse de livraison : {0}", commande.Facturation.Detail(commande.Facturation.Personne.EnumSexe, commande.Facturation));
                    Console.WriteLine("Date de livraison estimé : {0}", commande.Livraison.DateLivraison.ToShortDateString());
                    Console.ReadKey();
                }
            }
            catch (EmptyArticleException e)
            {
                e.Exception(ListeArticleCalculable, commande.ListeArticle);
                Console.WriteLine("Impossible de passer une commande qui ne contient aucun article");
                Console.ReadKey();
                throw;
            }
        }