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); }
/// <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); }
/// <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 }