Beispiel #1
0
        private static void ParseShopElement(XElement shopElement, LISAEntities entities, Catalogue catalogue)
        {
            MagasinCatalogue result  = null;
            Magasin          magasin = null;

            DateTime shopStartDateTime = UnixTimeStampToDateTime(double.Parse(shopElement.Element(XName.Get("displayStartDate")).Value));
            DateTime shopEndDateTime   = UnixTimeStampToDateTime(double.Parse(shopElement.Element(XName.Get("displayEndDate")).Value));

            magasin = ParseShopElement_Magasin(shopElement, entities);

            result = entities.MagasinCatalogues.FirstOrDefault(mc => mc.IdMagasin == magasin.Id && mc.IdCatalogue == catalogue.Id);

            if (result == null)
            {
                result = new MagasinCatalogue()
                {
                    Magasin   = magasin,
                    Catalogue = catalogue,
                    DateDebut = shopStartDateTime,
                    DateFin   = shopEndDateTime
                };

                entities.MagasinCatalogues.Add(result);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Importe une #<see cref="PageArticle"/> du fichier XML et l'enregistre dans la base de donnée. Si la PageArticle 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 de article</param>
        /// <param name="entities">Gestionnaire DB</param>
        /// <param name="page">Page en liaison avec la PageArticle</param>
        /// <param name="article">Article en liaison avec la PageArticle</param>
        /// <returns>Retourne la PageArticle importée</returns>
        private static PageArticle ParsePageArticleElement(XElement articleElement, LISAEntities entities, Page page, Article article)
        {
            int pageArticleCoordX = int.Parse(articleElement.Element(XName.Get("zones")).Element(XName.Get("zone")).Element(XName.Get("coordx")).Value);
            int pageArticleCoordY = int.Parse(articleElement.Element(XName.Get("zones")).Element(XName.Get("zone")).Element(XName.Get("coordy")).Value);
            int pageArticleWidth  = int.Parse(articleElement.Element(XName.Get("zones")).Element(XName.Get("zone")).Element(XName.Get("width")).Value);
            int pageArticleHeight = int.Parse(articleElement.Element(XName.Get("zones")).Element(XName.Get("zone")).Element(XName.Get("height")).Value);

            PageArticle result = entities.PageArticles.FirstOrDefault(p => p.IdPage == page.Id && p.IdArticle == article.Id);

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

            result = new PageArticle()
            {
                Article          = article,
                Page             = page,
                ZoneCoordonnéesX = pageArticleCoordX,
                ZoneCoordonnéesY = pageArticleCoordY,
                ZoneHauteur      = pageArticleHeight,
                ZoneLargeur      = pageArticleWidth
            };

            entities.PageArticles.Add(result);

            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// Importe une #<see cref="Article"/> du fichier XML et l'enregistre dans la base de donnée. Si l'article importé est déjà en base de données,
        /// le supprime et le restaure avec les nouvelles données.
        /// </summary>
        /// <param name="articleElement">Element de article</param>
        /// <param name="entities">Gestionnaire DB</param>
        /// <param name="pageElement">Element de page</param>
        /// <returns>Retourne l'article importé</returns>
        private static Article ParseArticleElement(XElement articleElement, LISAEntities entities, XElement pageElement, Categorie categorie)
        {
            int    articleId          = int.Parse(articleElement.Attribute(XName.Get("id")).Value);
            string articleCode        = articleElement.Element(XName.Get("code")).Value;
            string articleLibelle     = articleElement.Element(XName.Get("label")).Value;
            string articleDescription = articleElement.Element(XName.Get("description")).Value;
            short  articleQuantite    = 1;
            string articleUnite       = articleElement.Element(XName.Get("packaging")).Value;

            Article result = entities.Articles.FirstOrDefault(p => p.ImportId == articleId);

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

            result = new Article()
            {
                ImportId    = articleId,
                Code        = articleCode,
                Libelle     = articleLibelle,
                Description = articleDescription,
                Quantite    = articleQuantite,
                Unite       = articleUnite,
                Categorie   = categorie
            };

            entities.Articles.Add(result);

            return(result);
        }
Beispiel #4
0
        private static Article ParseArticleElement(XElement productElement, LISAEntities entities)
        {
            Article result = new Article();

            long   articleId          = long.Parse(productElement.Attribute(XName.Get("id")).Value);
            string articleCode        = productElement.Element(XName.Get("code")).Value;
            string articleLabel       = productElement.Element(XName.Get("label")).Value;
            string articleDescription = productElement.Element(XName.Get("description")).Value;
            string articleUnite       = productElement.Element(XName.Get("packaging")).Value;

            result = entities.Articles.FirstOrDefault(c => c.ImportId == articleId);

            if (result == null)
            {
                result = new Article()
                {
                    ImportId    = articleId,
                    Code        = articleCode,
                    Libelle     = articleLabel,
                    Description = articleDescription,
                    Unite       = articleUnite
                };

                entities.Articles.Add(result);
            }
            else
            {
                entities.Articles.Remove(result);
            }

            return(result);
        }
Beispiel #5
0
        /// <summary>
        /// Importe une #<see cref="Categorie"/> du fichier XML et l'enregistre dans la base de donnée.
        /// Vérifie si la categorie n'a pas déjà été ajoutée dans le ChangeTracker.
        /// </summary>
        /// <param name="articleElement">XElement de article</param>
        /// <param name="entities">Gestionnaire DB</param>
        /// <returns>Renvois la catégorie</returns>
        private static Categorie ParseCategorieElement(XElement articleElement, LISAEntities entities)
        {
            string libelleCategorie = articleElement.Element(XName.Get("category")).Value;

            Categorie categorieInDB = entities.Categories.FirstOrDefault(p => p.Libelle == libelleCategorie);

            Categorie result = null;

            if (categorieInDB == null)
            {
                var categorieChangeTracker = entities.ChangeTracker.Entries <Categorie>().ToList().FirstOrDefault(c => c.State == EntityState.Added && c.Entity.Libelle == libelleCategorie);

                if (categorieChangeTracker == null)
                {
                    if (result == null)
                    {
                        result = new Categorie()
                        {
                            Libelle = libelleCategorie
                        };

                        entities.Categories.Add(result);
                    }
                }
                else
                {
                    result = categorieChangeTracker.Entity;
                }
            }

            return(result);
        }
Beispiel #6
0
        /// <summary>
        /// Créer les deux types médias picto et image si ils ne sont pas en DB
        /// </summary>
        /// <param name="entities">Gestionnaire DB</param>
        private static void ParseTypeMedia(LISAEntities entities)
        {
            TypeMedia picto = entities.TypeMedias.FirstOrDefault(p => p.Libelle == "picto");

            if (picto == null)
            {
                picto = new TypeMedia()
                {
                    Libelle = "picto"
                };

                entities.TypeMedias.Add(picto);
            }

            TypeMedia image = entities.TypeMedias.FirstOrDefault(p => p.Libelle == "image");

            if (image == null)
            {
                image = new TypeMedia()
                {
                    Libelle = "image"
                };

                entities.TypeMedias.Add(image);
            }
        }
Beispiel #7
0
        private static Operation ParseOperationElement(XElement operationElement, LISAEntities entities)
        {
            Operation result = null;

            //Récupérer les données de l'opération dans le fichier XML
            long     operationId            = long.Parse(operationElement.Attribute(XName.Get("id")).Value);
            string   operationCode          = operationElement.Element(XName.Get("code")).Value;
            string   operationTitle         = operationElement.Element(XName.Get("title")).Value;
            DateTime operationStartDateTime = UnixTimeStampToDateTime(double.Parse(operationElement.Element(XName.Get("startDate")).Value));
            DateTime operationEndDateTime   = UnixTimeStampToDateTime(double.Parse(operationElement.Element(XName.Get("endDate")).Value));

            //Vérifier si l'opération n'existe pas déjà en base
            result = entities.Operations.FirstOrDefault(o => o.ImportId == operationId);

            //Créer l'opération si elle n'existe pas
            if (result == null)
            {
                result = new Operation()
                {
                    ImportId  = operationId,
                    Code      = operationCode,
                    Titre     = operationTitle,
                    DateDebut = operationStartDateTime,
                    DateFin   = operationEndDateTime
                };

                entities.Operations.Add(result);
            }
            else
            {
                //A vous de voir ce que l'on fait si elle existe déjà.
            }

            return(result);
        }
Beispiel #8
0
        private static Catalogue ParseCatalogElement(XElement catalogElement, LISAEntities entities, Operation operation)
        {
            Catalogue result = new Catalogue();

            long   catalogueId     = long.Parse(catalogElement.Attribute(XName.Get("id")).Value);
            string catalogueType   = catalogElement.Element(XName.Get("type")).Value;
            string catalogueLabel  = catalogElement.Element(XName.Get("label")).Value;
            string catalogueSpeed  = catalogElement.Element(XName.Get("speed")).Value;
            int    catalogueWidth  = int.Parse(catalogElement.Element(XName.Get("catalogWidth")).Value);
            int    catalogueHeight = int.Parse(catalogElement.Element(XName.Get("catalogHeight")).Value);

            result = entities.Catalogues.FirstOrDefault(c => c.ImportId == catalogueId);

            if (result == null)
            {
                result = new Catalogue()
                {
                    ImportId  = catalogueId,
                    Type      = catalogueType,
                    Libelle   = catalogueLabel,
                    Vitesse   = catalogueSpeed,
                    Largeur   = catalogueWidth,
                    Hauteur   = catalogueHeight,
                    Operation = operation
                };

                entities.Catalogues.Add(result);
            }
            else
            {
                entities.Catalogues.Remove(result);
            }

            return(result);
        }
Beispiel #9
0
        private static void ImportXMLFile(string filePath)
        {
            //Console.WriteLine("Import du fichier : " + filePath);
            //Console.WriteLine(string.Format("Import du fichier : {0} {1:00}", filePath, 5));
            Console.WriteLine($"Import du fichier : {filePath}"); //Nouvelle syntaxe pour string.format depuis C# 6

            try
            {
                using (LISAEntities entities = new LISAEntities())
                {
                    entities.Database.Connection.Open();

                    XDocument document = XDocument.Load(filePath);

                    foreach (XElement operationElement in document.Descendants(XName.Get("operation")))
                    {
                        Operation operation = ParseOperationElement(operationElement, entities);

                        foreach (XElement catalogElement in operationElement.Elements(XName.Get("catalog")))
                        {
                            Catalogue catalogue = ParseCatalogElement(catalogElement, entities, operation);

                            XElement pagesElement = catalogElement.Element(XName.Get("pages"));
                            //XElement shopsElement = catalogElement.Element(XName.Get("shops"));

                            foreach (XElement pageElement in pagesElement.Elements())
                            {
                                Page page = ParsePageElement(pageElement, entities, catalogue);

                                XElement productsElement = pageElement.Element(XName.Get("products"));

                                foreach (XElement productElement in productsElement.Elements())
                                {
                                    Article article = ParseArticleElement(productElement, entities);
                                }
                            }

                            foreach (XElement shopElement in catalogElement.Descendants(XName.Get("shop")))
                            {
                                ParseShopElement(shopElement, entities, catalogue);
                            }
                        }
                    }

                    entities.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                //TODO : Voir comment gérer les erreurs d'import.
                Console.WriteLine($"Impossible d'importer le fichier {filePath + Environment.NewLine + ex.ToString()}");
            }
        }
Beispiel #10
0
        private static Categorie ParseCategoryElement(XElement categoryElement, LISAEntities entities)
        {
            Categorie result = new Categorie();

            long   categoryId    = long.Parse(categoryElement.Attribute(XName.Get("id")).Value);
            string categoryLabel = categoryElement.Element(XName.Get("label")).Value;

            result = new Categorie()
            {
                Libelle = categoryLabel
            };
            entities.Categories.Add(result);

            return(result);
        }
Beispiel #11
0
        private static Attribut ParseAttributElement(XElement attributeElement, LISAEntities entities)
        {
            Attribut result = new Attribut();

            long   attributeId    = long.Parse(attributeElement.Attribute(XName.Get("id")).Value);
            string attributeLabel = attributeElement.Element(XName.Get("label")).Value;

            result = new Attribut()
            {
                Libelle = attributeLabel
            };
            entities.Attributs.Add(result);

            return(result);
        }
Beispiel #12
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            try
            {
                _Entities = new LISAEntities();
                _Entities.Database.Connection.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erreur", "Impossible de joindre la base de données" + Environment.NewLine +
                                ex.ToString());
                this.Shutdown();
            }
        }
Beispiel #13
0
        private static Page ParsePageElement(XElement pageElement, LISAEntities entities, Catalogue catalogue)
        {
            Page result = new Page();

            long pageId = long.Parse(pageElement.Attribute(XName.Get("id")).Value);
            int  number = int.Parse(pageElement.Element(XName.Get("number")).Value);

            result = entities.Pages.FirstOrDefault(p => p.ImportId == pageId);

            if (result == null)
            {
                result = new Page()
                {
                    ImportId  = pageId,
                    Numero    = number,
                    Catalogue = catalogue
                };
                entities.Pages.Add(result);
            }
            return(result);
        }
Beispiel #14
0
        private static Magasin ParseShopElement_Magasin(XElement shopElement, LISAEntities entities)
        {
            Magasin result = null;

            long shopId = long.Parse(shopElement.Attribute(XName.Get("id")).Value);

            result = entities.Magasins.FirstOrDefault(m => m.ImportId == shopId);

            if (result == null)
            {
                result = new Magasin()
                {
                    ImportId = shopId,
                    Libelle  = shopId.ToString()
                };

                entities.Magasins.Add(result);
            }

            return(result);
        }
Beispiel #15
0
        private static void ParseMediumPictoElement(XElement articleElement, LISAEntities entities, Article article)
        {
            string cheminMedium = articleElement.Element(XName.Get("picto")).Value;

            TypeMedia typeMedia = entities.TypeMedias.FirstOrDefault(p => p.Libelle == "picto");

            Media result = entities.Medias.FirstOrDefault(p => p.IdArticle == article.Id && p.IdTypeMedia == typeMedia.Id);

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

            result = new Media()
            {
                Article   = article,
                TypeMedia = typeMedia,
                Chemin    = cheminMedium
            };

            entities.Medias.Add(result);
        }
Beispiel #16
0
        /// <summary>
        /// Importe une #<see cref="Page"/> du fichier XML et l'enregistre dans la base de donnée. Si la page importée est déjà en base de données,
        /// la supprime et la restaure avec les nouvelles données.
        /// </summary>
        /// <param name="pageElement">XElement de page</param>
        /// <param name="entities">Gestionnaire DB</param>
        /// <param name="catalog">Catalogue en liaison avec la page</param>
        /// <returns>Retourne la page importée</returns>
        private static Page ParsePageElement(XElement pageElement, LISAEntities entities, Catalogue catalog)
        {
            int pageId  = int.Parse(pageElement.Attribute(XName.Get("id")).Value);
            int pageNum = int.Parse(pageElement.Element(XName.Get("number")).Value);

            Page result = entities.Pages.FirstOrDefault(p => p.ImportId == pageId);

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

            result = new Page()
            {
                ImportId  = pageId,
                Numero    = pageNum,
                Catalogue = catalog,
            };

            entities.Pages.Add(result);

            return(result);
        }
Beispiel #17
0
        private static ArticleAttribut ParseArticleAttributElement(XElement articleAttributElement, Article article, Attribut attribut, LISAEntities entities)
        {
            ArticleAttribut result = null;

            string articleAttributValue = articleAttributElement.Element(XName.Get("value")).Value;

            result = entities.ArticleAttributs.FirstOrDefault(aa => aa.Article.ImportId == article.ImportId && result.Attribut.Id == attribut.Id);

            result = new ArticleAttribut()
            {
                Article  = article,
                Attribut = attribut,
                Valeur   = articleAttributValue
            };


            return(entities.ArticleAttributs.Add(result));;
        }
Beispiel #18
0
        private static PageArticle ParsePageArticleElement(XElement pageArticleElement, Page page, Article article, LISAEntities entities)
        {
            PageArticle result = null;

            int coordX = short.Parse(pageArticleElement.Element(XName.Get("")).Value);
            int coordY = short.Parse(pageArticleElement.Element(XName.Get("")).Value);
            int width  = short.Parse(pageArticleElement.Element(XName.Get("")).Value);
            int height = short.Parse(pageArticleElement.Element(XName.Get("")).Value);

            result = entities.PageArticles.FirstOrDefault(pa => pa.Article.ImportId == article.ImportId && result.Page.ImportId == page.ImportId);

            result = new PageArticle()
            {
                Article          = article,
                Page             = page,
                ZoneCoordonnéesX = coordX,
                ZoneCoordonnéesY = coordY,
                ZoneLargeur      = width,
                ZoneHauteur      = height
            };


            return(entities.PageArticles.Add(result));;
        }
Beispiel #19
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);
        }
Beispiel #20
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);
        }
Beispiel #21
0
        /// <summary>
        /// Importe un #<see cref="MagasinCatalogue"/> du fichier XML. Si le MagasinCatalogue est déjà en base de données,
        /// le supprime et le restaure avec les nouvelles données.
        /// </summary>
        /// <param name="shopElement">Element de magasin</param>
        /// <param name="entities">Gestionnaire DB</param>
        /// <param name="catalog">Catalogue en liaison avec la table MagasinCatalogue</param>
        /// <param name="shop">Magasin en liaison avec la table MagasinCatalogue</param>
        private static MagasinCatalogue ParseShopCatalogElement(XElement shopElement, LISAEntities entities, Catalogue catalog, Magasin shop)
        {
            DateTime shopStartdate        = UnixTimeStampToDateTime(double.Parse(shopElement.Element(XName.Get("startDate")).Value));
            DateTime shopDisplaystartdate = UnixTimeStampToDateTime(double.Parse(shopElement.Element(XName.Get("displayStartDate")).Value));
            DateTime shopDisplayenddate   = UnixTimeStampToDateTime(double.Parse(shopElement.Element(XName.Get("displayEndDate")).Value));


            MagasinCatalogue result = entities.MagasinCatalogues.FirstOrDefault(c => c.IdCatalogue == catalog.ImportId && c.IdMagasin == shop.Id);

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

            result = new MagasinCatalogue()
            {
                DateDebut = shopDisplaystartdate,
                DateFin   = shopDisplayenddate,
                Catalogue = catalog,
                Magasin   = shop
            };

            entities.MagasinCatalogues.Add(result);

            return(result);
        }
Beispiel #22
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
        }