private void ExecAttributeImage(Model.Prestashop.PsImage PsImage, Model.Local.ArticleImage ArticleImage) { Model.Prestashop.PsProductAttributeImageRepository PsProductAttributeImageRepository = new Model.Prestashop.PsProductAttributeImageRepository(); List <Model.Prestashop.PsProductAttributeImage> ListPsProductAttributeImage = PsProductAttributeImageRepository.ListImage(PsImage.IDImage); Model.Local.AttributeArticleImageRepository AttributeArticleImageRepository = new Model.Local.AttributeArticleImageRepository(); Model.Local.CompositionArticleImageRepository CompositionArticleImageRepository = new Model.Local.CompositionArticleImageRepository(); Model.Local.AttributeArticleRepository AttributeArticleRepository = new Model.Local.AttributeArticleRepository(); Model.Local.CompositionArticleRepository CompositionArticleRepository = new Model.Local.CompositionArticleRepository(); #region suppression lien image déclinaison List <Model.Local.AttributeArticleImage> ListAttributeArticleImage = AttributeArticleImageRepository.ListImageArticle(ArticleImage.ImaArt_Id); List <Model.Local.CompositionArticleImage> ListCompositionArticleImage = CompositionArticleImageRepository.ListImageArticle(ArticleImage.ImaArt_Id); Model.Prestashop.PsProductAttributeRepository PsProductAttributeRepository = new Model.Prestashop.PsProductAttributeRepository(); // liste des liens images déclinaisons PrestaConnect foreach (Model.Local.AttributeArticleImage AttributeArticleImage in ListAttributeArticleImage) { // si la déclinaison PrestaConnectexiste dans PrestaConnect if (AttributeArticleRepository.Exist(AttributeArticleImage.AttArt_Id)) { Model.Local.AttributeArticle AttributeArticle = AttributeArticleRepository.Read(AttributeArticleImage.AttArt_Id); if (AttributeArticle.Pre_Id != null && AttributeArticle.Pre_Id != 0) { // si dans PrestaShop la déclinaison n'est pas liée à l'image if (ListPsProductAttributeImage.Count(pai => pai.IDProductAttribute == (uint)AttributeArticle.Pre_Id.Value) == 0) { // suppression du lien dans PrestaConnect AttributeArticleImageRepository.Delete(AttributeArticleImage); } } } } foreach (Model.Local.CompositionArticleImage CompositionArticleImage in ListCompositionArticleImage) { if (CompositionArticleRepository.Exist(CompositionArticleImage.ComArt_Id)) { Model.Local.CompositionArticle CompositionArticle = CompositionArticleRepository.Read(CompositionArticleImage.ComArt_Id); if (CompositionArticle.Pre_Id != null && CompositionArticle.Pre_Id != 0) { // si dans PrestaShop la déclinaison n'est pas liée à l'image if (ListPsProductAttributeImage.Count(pai => pai.IDProductAttribute == (uint)CompositionArticle.Pre_Id.Value) == 0) { // suppression du lien dans PrestaConnect CompositionArticleImageRepository.Delete(CompositionArticleImage); } } } } #endregion foreach (Model.Prestashop.PsProductAttributeImage PsProductAttributeImage in ListPsProductAttributeImage) { if (AttributeArticleRepository.ExistPrestashop((int)PsProductAttributeImage.IDProductAttribute)) { Model.Local.AttributeArticle AttributeArticle = AttributeArticleRepository.ReadPrestashop((int)PsProductAttributeImage.IDProductAttribute); if (!AttributeArticleImageRepository.ExistAttributeArticleImage(AttributeArticle.AttArt_Id, ArticleImage.ImaArt_Id)) { AttributeArticleImageRepository.Add(new Model.Local.AttributeArticleImage() { AttArt_Id = AttributeArticle.AttArt_Id, ImaArt_Id = ArticleImage.ImaArt_Id, }); } } else if (CompositionArticleRepository.ExistPrestaShop((int)PsProductAttributeImage.IDProductAttribute)) { Model.Local.CompositionArticle CompositionArticle = CompositionArticleRepository.ReadPrestaShop((int)PsProductAttributeImage.IDProductAttribute); if (!AttributeArticleImageRepository.ExistAttributeArticleImage(CompositionArticle.ComArt_Id, ArticleImage.ImaArt_Id)) { CompositionArticleImageRepository.Add(new Model.Local.CompositionArticleImage() { ComArt_Id = CompositionArticle.ComArt_Id, ImaArt_Id = ArticleImage.ImaArt_Id, }); } } } }
private void ExecAttributeImage(Model.Local.Article Article) { Model.Local.ArticleImageRepository ArticleImageRepository = new Model.Local.ArticleImageRepository(); List <Model.Local.ArticleImage> ListArticleImage = ArticleImageRepository.ListArticle(Article.Art_Id); Model.Local.AttributeArticleImageRepository AttributeArticleImageRepository = new Model.Local.AttributeArticleImageRepository(); Model.Local.CompositionArticleImageRepository CompositionArticleImageRepository = new Model.Local.CompositionArticleImageRepository(); Model.Prestashop.PsProductAttributeImageRepository PsProductAttributeImageRepository = new Model.Prestashop.PsProductAttributeImageRepository(); Model.Prestashop.PsImageRepository PsImageRepository = new Model.Prestashop.PsImageRepository(); Model.Local.AttributeArticle AttributeArticle = new Model.Local.AttributeArticle(); Model.Local.CompositionArticle CompositionArticle = new Model.Local.CompositionArticle(); foreach (Model.Local.ArticleImage ArticleImage in ListArticleImage) { if (ArticleImage.Pre_Id != null && PsImageRepository.ExistImage((uint)ArticleImage.Pre_Id.Value)) { List <Model.Local.AttributeArticleImage> ListAttributeArticleImage = AttributeArticleImageRepository.ListImageArticle(ArticleImage.ImaArt_Id); List <Model.Local.CompositionArticleImage> ListCompositionArticleImage = CompositionArticleImageRepository.ListImageArticle(ArticleImage.ImaArt_Id); #region suppression lien image déclinaison PrestaShop Model.Local.AttributeArticleRepository AttributeArticleRepository = new Model.Local.AttributeArticleRepository(); Model.Local.CompositionArticleRepository CompositionArticleRepository = new Model.Local.CompositionArticleRepository(); // liste des liens images déclinaisons Prestashop foreach (Model.Prestashop.PsProductAttributeImage PsProductAttributeImage in PsProductAttributeImageRepository.ListImage((uint)ArticleImage.Pre_Id)) { // si la déclinaison existe dans PrestaConnect if (AttributeArticleRepository.ExistPrestashop((int)PsProductAttributeImage.IDProductAttribute)) { AttributeArticle = AttributeArticleRepository.ReadPrestashop((int)PsProductAttributeImage.IDProductAttribute); // si dans prestaconnect la déclinaison n'est pas liée à l'image if (!AttributeArticleImageRepository.ExistAttributeArticleImage(AttributeArticle.AttArt_Id, ArticleImage.ImaArt_Id)) { // suppression du lien dans PrestaShop PsProductAttributeImageRepository.Delete(PsProductAttributeImage); } } else if (CompositionArticleRepository.ExistPrestaShop((int)PsProductAttributeImage.IDProductAttribute)) { CompositionArticle = CompositionArticleRepository.ReadPrestaShop((int)PsProductAttributeImage.IDProductAttribute); // si dans prestaconnect la déclinaison n'est pas liée à l'image if (!CompositionArticleImageRepository.ExistCompositionArticleImage(CompositionArticle.ComArt_Id, ArticleImage.ImaArt_Id)) { // suppression du lien dans PrestaShop PsProductAttributeImageRepository.Delete(PsProductAttributeImage); } } } #endregion // affectation image déclinaison foreach (Model.Local.AttributeArticleImage AttributeArticleImage in ListAttributeArticleImage) { if (AttributeArticleImage.AttributeArticle.Pre_Id != null && AttributeArticleImage.AttributeArticle.Pre_Id != 0) { if (PsProductAttributeImageRepository.ExistProductAttributeImage((UInt32)AttributeArticleImage.AttributeArticle.Pre_Id, (UInt32)AttributeArticleImage.ArticleImage.Pre_Id) == false) { PsProductAttributeImageRepository.Add(new Model.Prestashop.PsProductAttributeImage() { IDImage = (UInt32)AttributeArticleImage.ArticleImage.Pre_Id, IDProductAttribute = (UInt32)AttributeArticleImage.AttributeArticle.Pre_Id, }); } } } foreach (Model.Local.CompositionArticleImage CompositionArticleImage in ListCompositionArticleImage) { if (CompositionArticleImage.CompositionArticle.Pre_Id != null && CompositionArticleImage.CompositionArticle.Pre_Id != 0) { if (PsProductAttributeImageRepository.ExistProductAttributeImage((UInt32)CompositionArticleImage.CompositionArticle.Pre_Id, (UInt32)CompositionArticleImage.ArticleImage.Pre_Id) == false) { PsProductAttributeImageRepository.Add(new Model.Prestashop.PsProductAttributeImage() { IDImage = (UInt32)CompositionArticleImage.ArticleImage.Pre_Id, IDProductAttribute = (UInt32)CompositionArticleImage.CompositionArticle.Pre_Id, }); } } } } } }
private void RecoveryDataProductAttribute(Model.Prestashop.PsProduct Product) { Model.Prestashop.PsProductAttributeRepository PsProductAttributeRepository = new Model.Prestashop.PsProductAttributeRepository(); Model.Prestashop.PsProductAttributeShopRepository PsProductAttributeShopRepository = new Model.Prestashop.PsProductAttributeShopRepository(); Model.Prestashop.PsProductAttributeImageRepository PsProductAttributeImageRepository = new Model.Prestashop.PsProductAttributeImageRepository(); Model.Local.AttributeArticleRepository AttributeArticleRepository = new Model.Local.AttributeArticleRepository(); Model.Local.ConditioningArticleRepository ConditioningArticleRepository = new Model.Local.ConditioningArticleRepository(); Model.Local.CompositionArticleRepository CompositionArticleRepository = new Model.Local.CompositionArticleRepository(); Model.Local.AttributeArticleImageRepository AttributeArticleImageRepository = new Model.Local.AttributeArticleImageRepository(); Model.Local.CompositionArticleImageRepository CompositionArticleImageRepository = new Model.Local.CompositionArticleImageRepository(); Model.Local.ArticleImageRepository ArticleImageRepository = new Model.Local.ArticleImageRepository(); Model.Local.AttributeArticle AttributeArticle; Model.Local.ConditioningArticle ConditioningArticle; Model.Local.CompositionArticle CompositionArticle; Model.Local.ArticleImage ArticleImage; List <Model.Prestashop.PsProductAttribute> ListPsProductAttribute = PsProductAttributeRepository.List(Product.IDProduct); //parcours déclinaisons PrestaShop foreach (Model.Prestashop.PsProductAttribute PsProductAttribute in ListPsProductAttribute) { // test si déclinaison en gamme dans PrestaConnect if (AttributeArticleRepository.ExistPrestashop((int)PsProductAttribute.IDProductAttribute)) { AttributeArticle = AttributeArticleRepository.ReadPrestashop((int)PsProductAttribute.IDProductAttribute); Model.Prestashop.PsProductAttributeShop PsProductAttributeShop = (PsProductAttributeShopRepository.ExistPsProductAttributeShop(PsProductAttribute.IDProductAttribute, Core.Global.CurrentShop.IDShop)) ? PsProductAttributeShopRepository.ReadPsProductAttributeShop(PsProductAttribute.IDProductAttribute, Core.Global.CurrentShop.IDShop) : null; bool defaut = (PsProductAttributeShop != null) ? PsProductAttributeShop.DefaultOn == 1 : PsProductAttribute.DefaultOn == 1; if (AttributeArticle.AttArt_Default != defaut) { AttributeArticle.AttArt_Default = defaut; AttributeArticleRepository.Save(); if (defaut) { List <Model.Local.AttributeArticle> ListAttributeArticle = AttributeArticleRepository.ListArticle(AttributeArticle.Art_Id); if (ListAttributeArticle.Count(i => i.AttArt_Default == true && i.AttArt_Id != AttributeArticle.AttArt_Id) > 0) { foreach (Model.Local.AttributeArticle AttributeArticleDefault in ListAttributeArticle.Where(i => i.AttArt_Default == true && i.AttArt_Id != AttributeArticle.Art_Id)) { AttributeArticleDefault.AttArt_Default = false; AttributeArticleRepository.Save(); } } } } // attribution images gammes if (PsProductAttributeImageRepository.ExistProductAttribute(PsProductAttribute.IDProductAttribute)) { List <Model.Prestashop.PsProductAttributeImage> ListPsProductAttributeImage = PsProductAttributeImageRepository.ListProductAttribute(PsProductAttribute.IDProductAttribute); // étape 1 attachement dans PrestaConnect des images affectées a la déclinaison PrestaShop foreach (Model.Prestashop.PsProductAttributeImage PsProductAttributeImage in ListPsProductAttributeImage) { // si l'image existe dans PrestaConnect if (ArticleImageRepository.ExistPre_Id((int)PsProductAttributeImage.IDImage)) { ArticleImage = ArticleImageRepository.ReadPrestaShop((int)PsProductAttributeImage.IDImage); if (!AttributeArticleImageRepository.ExistAttributeArticleImage(AttributeArticle.AttArt_Id, ArticleImage.ImaArt_Id)) { AttributeArticleImageRepository.Add(new Model.Local.AttributeArticleImage() { AttArt_Id = AttributeArticle.AttArt_Id, ImaArt_Id = ArticleImage.ImaArt_Id, }); } } } // étape 2 détachement List <uint> list_prestashop = ListPsProductAttributeImage.Select(pai => pai.IDImage).ToList(); foreach (Model.Local.AttributeArticleImage AttributeArticleImage in AttributeArticleImageRepository.ListAttributeArticle(AttributeArticle.AttArt_Id)) { if (AttributeArticleImage.ArticleImage.Pre_Id != null && !list_prestashop.Contains((uint)AttributeArticleImage.ArticleImage.Pre_Id.Value)) { AttributeArticleImageRepository.Delete(AttributeArticleImage); } } } else if (AttributeArticleImageRepository.ExistAttributeArticle(AttributeArticle.AttArt_Id)) { // absence de lien gamme déclinaison dans Prestashop donc suppression des liens dans PrestaConnect AttributeArticleImageRepository.DeleteAll(AttributeArticleImageRepository.ListAttributeArticle(AttributeArticle.AttArt_Id)); } } // test si déclinaison en conditionnement dans PrestaConnect else if (ConditioningArticleRepository.ExistPrestashop((int)PsProductAttribute.IDProductAttribute)) { ConditioningArticle = ConditioningArticleRepository.ReadPrestashop((int)PsProductAttribute.IDProductAttribute); Model.Prestashop.PsProductAttributeShop PsProductAttributeShop = (PsProductAttributeShopRepository.ExistPsProductAttributeShop(PsProductAttribute.IDProductAttribute, Core.Global.CurrentShop.IDShop)) ? PsProductAttributeShopRepository.ReadPsProductAttributeShop(PsProductAttribute.IDProductAttribute, Core.Global.CurrentShop.IDShop) : null; bool defaut = (PsProductAttributeShop != null) ? PsProductAttributeShop.DefaultOn == 1 : PsProductAttribute.DefaultOn == 1; if (ConditioningArticle.ConArt_Default != defaut) { ConditioningArticle.ConArt_Default = defaut; ConditioningArticleRepository.Save(); if (defaut) { List <Model.Local.ConditioningArticle> ListConditioningArticle = ConditioningArticleRepository.ListArticle(ConditioningArticle.Art_Id); if (ListConditioningArticle.Count(i => i.ConArt_Default == true && i.ConArt_Id != ConditioningArticle.ConArt_Id) > 0) { foreach (Model.Local.ConditioningArticle ConditioningArticleDefault in ListConditioningArticle.Where(i => i.ConArt_Default == true && i.ConArt_Id != ConditioningArticle.Art_Id)) { ConditioningArticleDefault.ConArt_Default = false; ConditioningArticleRepository.Save(); } } } } } // test si déclinaison composition dans PrestaConnect else if (CompositionArticleRepository.ExistPrestaShop((int)PsProductAttribute.IDProductAttribute)) { CompositionArticle = CompositionArticleRepository.ReadPrestaShop((int)PsProductAttribute.IDProductAttribute); Model.Prestashop.PsProductAttributeShop PsProductAttributeShop = (PsProductAttributeShopRepository.ExistPsProductAttributeShop(PsProductAttribute.IDProductAttribute, Core.Global.CurrentShop.IDShop)) ? PsProductAttributeShopRepository.ReadPsProductAttributeShop(PsProductAttribute.IDProductAttribute, Core.Global.CurrentShop.IDShop) : null; bool defaut = (PsProductAttributeShop != null) ? PsProductAttributeShop.DefaultOn == 1 : PsProductAttribute.DefaultOn == 1; if (CompositionArticle.ComArt_Default != defaut) { CompositionArticle.ComArt_Default = defaut; CompositionArticleRepository.Save(); if (defaut) { List <Model.Local.CompositionArticle> ListCompositionArticle = CompositionArticleRepository.ListArticle(CompositionArticle.ComArt_ArtId); if (ListCompositionArticle.Count(i => i.ComArt_Default == true && i.ComArt_Id != CompositionArticle.ComArt_Id) > 0) { foreach (Model.Local.CompositionArticle CompositionArticleDefault in ListCompositionArticle.Where(i => i.ComArt_Default == true && i.ComArt_Id != CompositionArticle.ComArt_ArtId)) { CompositionArticleDefault.ComArt_Default = false; ConditioningArticleRepository.Save(); } } } } // attribution images gammes if (PsProductAttributeImageRepository.ExistProductAttribute(PsProductAttribute.IDProductAttribute)) { List <Model.Prestashop.PsProductAttributeImage> ListPsProductAttributeImage = PsProductAttributeImageRepository.ListProductAttribute(PsProductAttribute.IDProductAttribute); // étape 1 attachement dans PrestaConnect des images affectées a la déclinaison PrestaShop foreach (Model.Prestashop.PsProductAttributeImage PsProductAttributeImage in ListPsProductAttributeImage) { // si l'image existe dans PrestaConnect if (ArticleImageRepository.ExistPre_Id((int)PsProductAttributeImage.IDImage)) { ArticleImage = ArticleImageRepository.ReadPrestaShop((int)PsProductAttributeImage.IDImage); if (!CompositionArticleImageRepository.ExistCompositionArticleImage(CompositionArticle.ComArt_Id, ArticleImage.ImaArt_Id)) { CompositionArticleImageRepository.Add(new Model.Local.CompositionArticleImage() { ComArt_Id = CompositionArticle.ComArt_Id, ImaArt_Id = ArticleImage.ImaArt_Id, }); } } } // étape 2 détachement List <uint> list_prestashop = ListPsProductAttributeImage.Select(pai => pai.IDImage).ToList(); foreach (Model.Local.CompositionArticleImage CompositionArticleImage in CompositionArticleImageRepository.ListCompositionArticle(CompositionArticle.ComArt_Id)) { if (CompositionArticleImage.ArticleImage.Pre_Id != null && !list_prestashop.Contains((uint)CompositionArticleImage.ArticleImage.Pre_Id.Value)) { CompositionArticleImageRepository.Delete(CompositionArticleImage); } } } else if (CompositionArticleImageRepository.ExistCompositionArticle(CompositionArticle.ComArt_Id)) { // absence de lien gamme déclinaison dans Prestashop donc suppression des liens dans PrestaConnect CompositionArticleImageRepository.DeleteAll(CompositionArticleImageRepository.ListCompositionArticle(CompositionArticle.ComArt_Id)); } } } }