Example #1
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);
        }
Example #2
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));;
        }
Example #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
        }