Ejemplo n.º 1
0
        private static PrixCatalogueArticle ParsePriceCategoryProduct(XElement productElement, LISAEntities entities, Catalogue catalogue, Article article)
        {
            PrixCatalogueArticle result = null;

            long    articleCategorieId                = long.Parse(productElement.Element(XName.Get("id")).Value);
            decimal articleCategoriePrix              = decimal.Parse(productElement.Element(XName.Get("price")).Value);
            decimal articleCategoriePrixAvantCoupon   = decimal.Parse(productElement.Element(XName.Get("price_before_coupon")).Value);
            decimal articleCategoriePrixAvantCroise   = decimal.Parse(productElement.Element(XName.Get("price_crossed")).Value);
            decimal articleCategorieReductionEuro     = decimal.Parse(productElement.Element(XName.Get("Reduction_euro")).Value);
            int     articleCategorieReductionPourcent = int.Parse(productElement.Element(XName.Get("Reduction_percent")).Value);
            decimal articleCategorieAvantageEuro      = decimal.Parse(productElement.Element(XName.Get("Avantage_euro")).Value);
            int     articleCategorieAvantagePourcent  = int.Parse(productElement.Element(XName.Get("Avantage_percent")).Value);
            decimal articleCategorieEcotaxe           = decimal.Parse(productElement.Element(XName.Get("ecotaxe")).Value);


            result = entities.PrixCatalogueArticles.FirstOrDefault(a => a.IdCatalogue == catalogue.Id && a.IdArticle == article.Id);

            if (result == null)
            {
                result = new PrixCatalogueArticle()
                {
                    Article           = article,
                    Catalogue         = catalogue,
                    Prix              = articleCategoriePrix,
                    PrixAvantCoupon   = articleCategoriePrixAvantCoupon,
                    PrixAvantCroise   = articleCategoriePrixAvantCroise,
                    ReductionEuro     = articleCategorieReductionEuro,
                    ReductionPourcent = articleCategorieReductionPourcent,
                    AvantageEuro      = articleCategorieAvantageEuro,
                    AvantagePourcent  = articleCategorieAvantagePourcent,
                    Ecotaxe           = articleCategorieEcotaxe
                };

                entities.PrixCatalogueArticles.Add(result);
            }

            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Importe un #<see cref="PrixCatalogueArticle"/> du fichier XML et l'enregistre dans la base de donnée. Si la PrixCatalogueArticle
        /// importée est déjà en base de données, la supprime et la restaure avec les nouvelles données.
        /// </summary>
        /// <param name="articleElement">XElement article</param>
        /// <param name="entities">Gestionnaire DB</param>
        /// <param name="catalog">Catalogue en liaison avec PrixCatalogueArticle</param>
        /// <param name="article">Article en liaison avec PrixCatalogueArticle</param>
        /// <returns>Retourne le PrixCatalogueArticle importé</returns>
        private static PrixCatalogueArticle ParsePrixCatalogueArticleElement(XElement articleElement, LISAEntities entities, Catalogue catalog, Article article)
        {
            decimal.TryParse(articleElement.Element(XName.Get("price")).Value, out decimal prixCatalogueArticlePrix);
            decimal.TryParse(articleElement.Element(XName.Get("price_before_coupon")).Value, out decimal prixCatalogueArticlePrixAvantCoupon);
            decimal.TryParse(articleElement.Element(XName.Get("price_crossed")).Value, out decimal prixCatalogueArticlePrixAvantCroise);
            decimal.TryParse(articleElement.Element(XName.Get("Reduction_euro")).Value, out decimal prixCatalogueArticleReductionEuro);
            decimal.TryParse(articleElement.Element(XName.Get("Reduction_percent")).Value, out decimal prixCatalogueArticleReductionPourcent);
            decimal.TryParse(articleElement.Element(XName.Get("Avantage_euro")).Value, out decimal prixCatalogueArticleAvantageEuro);
            decimal.TryParse(articleElement.Element(XName.Get("Avantage_percent")).Value, out decimal prixCatalogueArticleAvantagePourcent);
            decimal.TryParse(articleElement.Element(XName.Get("ecotaxe")).Value, out decimal prixCatalogueArticleEcotaxe);

            PrixCatalogueArticle result = entities.PrixCatalogueArticles.FirstOrDefault(p => p.IdArticle == article.Id && p.IdCatalogue == catalog.Id);

            if (result != null)
            {
                entities.PrixCatalogueArticles.Remove(result);
            }

            result = new PrixCatalogueArticle()
            {
                Prix              = prixCatalogueArticlePrix,
                PrixAvantCoupon   = prixCatalogueArticlePrixAvantCoupon,
                PrixAvantCroise   = prixCatalogueArticlePrixAvantCroise,
                ReductionEuro     = prixCatalogueArticleReductionEuro,
                ReductionPourcent = prixCatalogueArticleReductionPourcent,
                AvantageEuro      = prixCatalogueArticleAvantageEuro,
                AvantagePourcent  = prixCatalogueArticleAvantagePourcent,
                Ecotaxe           = prixCatalogueArticleEcotaxe,
                Article           = article,
                Catalogue         = catalog
            };

            entities.PrixCatalogueArticles.Add(result);

            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Importe les données du fichier XML et les enregistre en base de données
        /// </summary>
        /// <param name="filePath">Chemin du fichier XML</param>
        private static void ImportXMLFile(string filePath)
        {
            Console.WriteLine("Import du fichier : " + filePath);
            //Console.WriteLine($"Import du fichier : {filePath}");

            try
            {
                using (LISAEntities entities = new LISAEntities())
                {
                    // Ouvre la connexion vers la base de donnée
                    entities.Database.Connection.Open();
                    XDocument document = XDocument.Load(filePath);

                    ParseTypeMedia(entities);

                    // Boucle sur les opérations du fichier XML
                    foreach (XElement operationElement in document.Descendants(XName.Get("operation")))
                    {
                        Operation operation = ParseOperationElement(operationElement, entities);

                        // Boucle sur les catalogue du fichier XML
                        foreach (XElement catalogElement in operationElement.Elements(XName.Get("catalog")))
                        {
                            Catalogue catalog = ParseCatalogElement(catalogElement, entities, operation);

                            // Boucle sur les magasins du fichier XML
                            foreach (XElement shopElement in catalogElement.Elements(XName.Get("shops")).Elements())
                            {
                                Magasin shop = ParseShopElement(shopElement, entities);
                                ParseShopCatalogElement(shopElement, entities, catalog, shop);
                            }

                            // Boucle sur les pages du fichier XML
                            foreach (XElement pageElement in catalogElement.Elements(XName.Get("pages")).Elements())
                            {
                                Page page = ParsePageElement(pageElement, entities, catalog);

                                foreach (XElement articleElement in pageElement.Elements(XName.Get("products")).Elements())
                                {
                                    Categorie categorie = ParseCategorieElement(articleElement, entities);

                                    Article article = ParseArticleElement(articleElement, entities, pageElement, categorie);

                                    ParseMediumPictoElement(articleElement, entities, article);

                                    //ParseMediumImageElement(articleElement, entities, article);

                                    PageArticle pageArticle = ParsePageArticleElement(articleElement, entities, page, article);

                                    PrixCatalogueArticle prixCatalogueArticle = ParsePrixCatalogueArticleElement(articleElement, entities, catalog, article);
                                }
                            }
                        }
                    }
                    entities.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Impossible d'importer le fichier {filePath + Environment.NewLine + ex.Message}");
            }

            #region Exo : Ajout opération, catalogue, page
            ////Créer la chaine de connexion
            //using (LISAEntities entities = new LISAEntities())
            //{
            //    entities.Operations.ToList().ForEach(o => entities.Operations.Remove(o));
            //    entities.Catalogues.ToList().ForEach(c => entities.Catalogues.Remove(c));
            //    entities.Pages.ToList().ForEach(p => entities.Pages.Remove(p));
            //    //Créer une opération
            //    Operation op = new Operation
            //    {
            //        Code = "Je suis le code de l'opération",
            //        Titre = "Je suis le titre de l'opération",
            //        DateDebut = DateTime.Now,
            //        DateFin = DateTime.Now,
            //        Catalogues = null
            //    };

            //    entities.Operations.Add(op);

            //    //Créer un catalogue
            //    Catalogue cat = new Catalogue
            //    {
            //        Hauteur = 500,
            //        Largeur = 500,
            //        Libelle = "Je suis le libelle du catalogue",
            //        Type = "Je suis le type du catalogue",
            //        Vitesse = "V3",
            //        Operation = op
            //    };

            //    entities.Catalogues.Add(cat);

            //    //Créer trois pages

            //    List<Page> allPages = new List<Page>();
            //    for (int i = 0; i < 10; i++)
            //    {
            //        Page page = new Page()
            //        {
            //            Numero = i,
            //            Catalogue = cat
            //        };
            //        allPages.Add(page);
            //    }

            //    //Page page1 = new Page()
            //    //{
            //    //    Numero = 1,
            //    //    Catalogue = cat
            //    //};

            //    //Page page2 = new Page()
            //    //{
            //    //    Numero = 2,
            //    //    Catalogue = cat
            //    //};

            //    //Page page3 = new Page()
            //    //{
            //    //    Numero = 3,
            //    //    Catalogue = cat
            //    //};

            //    //entities.Pages.Add(page1);
            //    //entities.Pages.Add(page2);
            //    //entities.Pages.Add(page3);

            //    foreach (Page page in allPages)
            //    {
            //        entities.Pages.Add(page);
            //    }
            #endregion
        }