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 ExecCompositionArticle(Model.Local.Article Article, Model.Prestashop.PsProduct Product) { Model.Sage.F_ARTICLERepository F_ARTICLERepository = new Model.Sage.F_ARTICLERepository(); Model.Local.CompositionArticleRepository CompositionArticleRepository = new Model.Local.CompositionArticleRepository(); List <Model.Local.CompositionArticle> ListCompositionArticle = CompositionArticleRepository.ListArticle(Article.Art_Id); foreach (var item in ListCompositionArticle) { try { Model.Sage.F_ARTICLE_Composition F_ARTICLE_Composition = F_ARTICLERepository.ReadComposition(item.ComArt_F_ARTICLE_SagId, item.ComArt_F_ARTENUMREF_SagId, item.ComArt_F_CONDITION_SagId); if (F_ARTICLE_Composition != null) { Model.Sage.F_ARTICLE F_ARTICLE = F_ARTICLERepository.ReadArticle(item.ComArt_F_ARTICLE_SagId); Model.Prestashop.PsProductAttributeRepository PsProductAttributeRepository = new Model.Prestashop.PsProductAttributeRepository(); Model.Prestashop.PsProductAttribute PsProductAttributeComposition = new Model.Prestashop.PsProductAttribute(); Boolean isProductAttribute = false; if (item.Pre_Id != null && PsProductAttributeRepository.ExistProductAttribute((uint)item.Pre_Id)) { PsProductAttributeComposition = PsProductAttributeRepository.ReadProductAttribute((uint)item.Pre_Id); if (PsProductAttributeComposition != null) { isProductAttribute = true; } } if (isProductAttribute == true) { int CatComptaArticle = Core.Global.GetConfig().ConfigArticleCatComptable; Model.Sage.F_TAXE TaxeTVA = SynchronisationArticle.ReadTaxe(F_ARTICLE, Product, CatComptaArticle); Model.Prestashop.PsProduct temp_product = new Model.Prestashop.PsProduct(); temp_product.taxe_famillesage = Product.taxe_famillesage; // temp_product sert pour conserver l'information "ecoraxeht_sage" pour la fonction SpecificPrice Model.Sage.F_TAXE TaxeEco = SynchronisationArticle.ReadEcoTaxe(F_ARTICLE, temp_product, TaxeTVA, CatComptaArticle); PsProductAttributeComposition.EcOtAx = temp_product.EcOtAx; if (F_ARTICLE_Composition.F_CONDITION_SagId == null && F_ARTICLE_Composition.F_ARTENUMREF_SagId == null) { if (Core.Global.GetConfig().MajPoidsSynchroStock) { SynchronisationArticle.ReadWeight(F_ARTICLE, PsProductAttributeComposition); } SynchronisationArticle.ReadQuantity(F_ARTICLE, PsProductAttributeComposition); // <JG> 03/06/2016 if (Article.Art_SyncPrice) { SynchronisationArticle.ReadPrice(F_ARTICLE, PsProductAttributeComposition, TaxeTVA); } //List<string> log; //this.ExecSpecificPrice(F_ARTICLE, Product, Article.Art_Id, TaxeTVA, TaxeEco, out log); //if (log != null && log.Count > 0) // log_chrono.AddRange(log); } else if (F_ARTICLE_Composition.F_ARTENUMREF_SagId != null) { Model.Prestashop.PsProduct temp_product_f_artenumref = new Model.Prestashop.PsProduct(); // lecture des valeurs pour F_ARTICLE if (Core.Global.GetConfig().MajPoidsSynchroStock) { SynchronisationArticle.ReadWeight(F_ARTICLE, temp_product_f_artenumref); } SynchronisationArticle.ReadQuantity(F_ARTICLE, temp_product_f_artenumref); // <JG> 03/06/2016 if (Article.Art_SyncPrice) { SynchronisationArticle.ReadPrice(F_ARTICLE, temp_product_f_artenumref, TaxeTVA); } // transformation en fonction de f_artenumref if (Core.Global.GetConfig().MajPoidsSynchroStock) { SynchronisationArticle.ReadWeightAttribute(temp_product_f_artenumref, PsProductAttributeComposition, F_ARTICLE, item.EnumereGamme1); PsProductAttributeComposition.Weight += temp_product_f_artenumref.Weight; } SynchronisationArticle.ReadQuantityAttribute(PsProductAttributeComposition, F_ARTICLE, item.EnumereGamme1, item.EnumereGamme2); //SynchronisationArticle.ReadRefEANAttribute(PsProductAttributeComposition, F_ARTICLE, item.EnumereGamme1, item.EnumereGamme2); // <JG> 03/06/2016 if (Article.Art_SyncPrice) { SynchronisationArticle.ReadPriceAttribute(temp_product_f_artenumref, PsProductAttributeComposition, F_ARTICLE, item.EnumereGamme1, item.EnumereGamme2, TaxeTVA); } PsProductAttributeComposition.Price += temp_product_f_artenumref.Price; } else if (F_ARTICLE_Composition.F_CONDITION_SagId != null) { Model.Prestashop.PsProduct temp_product_f_condition = new Model.Prestashop.PsProduct(); // lecture des valeurs pour F_ARTICLE if (Core.Global.GetConfig().MajPoidsSynchroStock) { SynchronisationArticle.ReadWeight(F_ARTICLE, temp_product_f_condition); } SynchronisationArticle.ReadQuantity(F_ARTICLE, temp_product_f_condition); // <JG> 03/06/2016 if (Article.Art_SyncPrice) { SynchronisationArticle.ReadPrice(F_ARTICLE, temp_product_f_condition, TaxeTVA); } // transformation en fonction de F_CONDITION if (Core.Global.GetConfig().MajPoidsSynchroStock) { SynchronisationArticle.ReadWeightConditioning(temp_product_f_condition, PsProductAttributeComposition, item.EnumereF_CONDITION); PsProductAttributeComposition.Weight += temp_product_f_condition.Weight; } SynchronisationArticle.ReadQuantityConditioning(PsProductAttributeComposition, F_ARTICLE, item.EnumereF_CONDITION); // <JG> 03/06/2016 if (Article.Art_SyncPrice) { SynchronisationArticle.ReadPriceConditioning(temp_product_f_condition, PsProductAttributeComposition, F_ARTICLE, item.EnumereF_CONDITION, TaxeTVA); } PsProductAttributeComposition.Price += temp_product_f_condition.Price; } //PsProductAttributeComposition.DefaultOn = (item.ComArt_Default) ? (byte)1 : (byte)0; PsProductAttributeRepository.Save(); SynchronisationArticle.ExecShopProductAttribute(PsProductAttributeComposition); SynchronisationArticle.WriteStockAvailableComposition(Product, PsProductAttributeComposition); // <JG> 03/06/2016 if (Article.Art_SyncPrice) { // prix spécifiques temp_product.Price = PsProductAttributeComposition.Price; temp_product.IDProduct = Product.IDProduct; List <string> log; SynchronisationArticle.ExecSpecificPrice(F_ARTICLE, temp_product, Article, item, TaxeTVA, TaxeEco, out log); if (log != null && log.Count > 0) { SynchronisationArticle.log_chrono.AddRange(log); } } } } } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); } } }
public void SearchArticleComposition() { if (SelectedF_TAXE == null) { MessageBox.Show("Veuillez sélectionner une taxe !", "Recherche article", MessageBoxButton.OK, MessageBoxImage.Error); } else { List <Model.Sage.F_ARTICLE_Composition> temp = new Model.Sage.F_ARTICLERepository().ListComposition(); // Filtres sommeil et publié bool sommeil = Core.Global.GetConfig().ArticleEnSommeil; bool nonpublie = Core.Global.GetConfig().ArticleNonPublieSurLeWeb; // <JG> 19/12/2016 ajout filtre gammes temp = temp.Where(ar => (sommeil || ar.AR_Sommeil == 0) && (nonpublie || ar.AR_Publie == 1) && (sommeil || ar.AE_Sommeil != 1)).ToList(); Model.Local.CompositionArticleRepository CompositionArticleRepository = new Model.Local.CompositionArticleRepository(); Model.Local.ArticleRepository ArticleRepository = new Model.Local.ArticleRepository(); // FILTRE TAXE OBLIGATOIRE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #region Taxes switch (Core.Global.GetConfig().TaxSageTVA) { case PRESTACONNECT.Core.Parametres.TaxSage.CodeTaxe1: temp = temp.Where(a => a.TA_Code1 == SelectedF_TAXE.TA_Code || (string.IsNullOrEmpty(a.TA_Code1) && a.TA_CodeFamille1 == SelectedF_TAXE.TA_Code)).ToList(); break; case PRESTACONNECT.Core.Parametres.TaxSage.CodeTaxe2: temp = temp.Where(a => a.TA_Code2 == SelectedF_TAXE.TA_Code || (string.IsNullOrEmpty(a.TA_Code2) && a.TA_CodeFamille2 == SelectedF_TAXE.TA_Code)).ToList(); break; case PRESTACONNECT.Core.Parametres.TaxSage.CodeTaxe3: temp = temp.Where(a => a.TA_Code3 == SelectedF_TAXE.TA_Code || (string.IsNullOrEmpty(a.TA_Code3) && a.TA_CodeFamille3 == SelectedF_TAXE.TA_Code)).ToList(); break; case PRESTACONNECT.Core.Parametres.TaxSage.Empty: default: temp = new List <Model.Sage.F_ARTICLE_Composition>(); break; } #endregion if (temp.Count == 0) { MessageBox.Show("Aucun résultat pour la taxe sélectionnée !", "Recherche article", MessageBoxButton.OK, MessageBoxImage.Error); } else { // filtres if (SelectedF_FAMILLE != null) { temp = temp.Where(ar => ar.FA_CodeFamille == SelectedF_FAMILLE.FA_CodeFamille).ToList(); } if (SelectedP_GAMME1 != null) { temp = temp.Where(ar => ar.AR_Gamme1 == SelectedP_GAMME1.cbMarq).ToList(); } if (SelectedP_GAMME2 != null) { temp = temp.Where(ar => ar.AR_Gamme2 == SelectedP_GAMME1.cbMarq).ToList(); } if (SelectedP_CONDITIONNEMENT != null) { temp = temp.Where(ar => ar.AR_Condition == SelectedP_CONDITIONNEMENT.cbMarq).ToList(); } if (!string.IsNullOrWhiteSpace(FilterReferenceValue)) { if (FilterReferenceContains) { temp = temp.Where(ar => ar.AR_Ref.Contains(FilterReferenceValue)).ToList(); } if (FilterReferenceStartWith) { temp = temp.Where(ar => ar.AR_Ref.StartsWith(FilterReferenceValue)).ToList(); } } if (!string.IsNullOrWhiteSpace(FilterDesignationValue)) { if (FilterDesignationContains) { temp = temp.Where(ar => ar.AR_Design.ToLower().Contains(FilterDesignationValue.ToLower())).ToList(); } if (FilterDesignationStartWith) { temp = temp.Where(ar => ar.AR_Design.ToLower().StartsWith(FilterDesignationValue.ToLower())).ToList(); } } List <Int32> ListF_ARTICLE_SagId = null; List <Int32> ListF_ARTENUMREF_SagId = null; List <Int32> ListF_CONDITION_SagId = null; if (FilterComposition) { ListF_ARTICLE_SagId = CompositionArticleRepository.ListSageF_ARTICLE(); ListF_ARTENUMREF_SagId = CompositionArticleRepository.ListSageF_ARTENUMREF(); ListF_CONDITION_SagId = CompositionArticleRepository.ListSageF_CONDITION(); } if (FilterArticle) { if (ListF_ARTICLE_SagId != null) { ListF_ARTICLE_SagId.AddRange(ArticleRepository.ListSageId()); } else { ListF_ARTICLE_SagId = ArticleRepository.ListSageId(); } } if (ListF_ARTICLE_SagId != null) { temp = temp.Where(ar => !ListF_ARTICLE_SagId.Contains(ar.cbMarq)).ToList(); } if (ListF_ARTENUMREF_SagId != null) { temp = temp.Where(ar => ar.F_ARTENUMREF_SagId == null || (ar.F_ARTENUMREF_SagId != null && !ListF_ARTENUMREF_SagId.Contains(ar.F_ARTENUMREF_SagId.Value))).ToList(); } if (ListF_CONDITION_SagId != null) { temp = temp.Where(ar => ar.F_CONDITION_SagId == null || (ar.F_CONDITION_SagId != null && !ListF_CONDITION_SagId.Contains(ar.F_CONDITION_SagId.Value))).ToList(); } // filtres exclusion int count = temp.Count; List <Model.Sage.F_ARTICLE_Composition> results = Core.Tools.FiltreImportSage.ImportSageFilter(temp); StrCompositionFilteredProducts = (results.Count < count) ? ((count - results.Count) + " résultats dans les filtres d'exclusion") : string.Empty; if (!ShowResultInImportSageFilter) { temp = results; } ListResultSearchCompositionArticle = new ObservableCollection <Model.Sage.F_ARTICLE_Composition>(temp); } } }
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, }); } } } }
public Boolean Exec(String PathImg, Int32 ArticleSend, int position, int Declination) { Boolean result = false; Int32 IdArticleImage = 0; try { String extension = Path.GetExtension(PathImg); String FileName = Path.GetFileName(PathImg); Model.Local.ArticleImageRepository ArticleImageRepository = new Model.Local.ArticleImageRepository(); if (!ArticleImageRepository.ExistArticleFile(ArticleSend, FileName)) { Model.Local.ArticleRepository ArticleRepository = new Model.Local.ArticleRepository(); Model.Local.Article Article = ArticleRepository.ReadArticle(ArticleSend); Model.Local.ArticleImage ArticleImage = new Model.Local.ArticleImage() { Art_Id = Article.Art_Id, ImaArt_Name = Article.Art_Name, ImaArt_Image = "", ImaArt_DateAdd = DateTime.Now, ImaArt_SourceFile = FileName }; ArticleImage.ImaArt_Position = this.ReadNextPosition(Article, position); ArticleImage.ImaArt_Default = !(new Model.Local.ArticleImageRepository().ExistArticleDefault(Article.Art_Id, true)); ArticleImageRepository.Add(ArticleImage); ArticleImage.ImaArt_Image = String.Format("{0}" + extension, ArticleImage.ImaArt_Id); ArticleImageRepository.Save(); IdArticleImage = ArticleImage.ImaArt_Id; string uri = PathImg.Replace("File:///", "").Replace("file:///", "").Replace("File://", "\\\\").Replace("file://", "\\\\").Replace("/", "\\"); System.IO.File.Copy(uri, ArticleImage.TempFileName); Model.Prestashop.PsImageTypeRepository PsImageTypeRepository = new Model.Prestashop.PsImageTypeRepository(); List <Model.Prestashop.PsImageType> ListPsImageType = PsImageTypeRepository.ListProduct(1); System.Drawing.Image img = System.Drawing.Image.FromFile(ArticleImage.TempFileName); foreach (Model.Prestashop.PsImageType PsImageType in ListPsImageType) { Core.Img.resizeImage(img, Convert.ToInt32(PsImageType.Width), Convert.ToInt32(PsImageType.Height), ArticleImage.FileName(PsImageType.Name)); } Core.Img.resizeImage(img, Core.Global.GetConfig().ConfigImageMiniatureWidth, Core.Global.GetConfig().ConfigImageMiniatureHeight, ArticleImage.SmallFileName); img.Dispose(); // <JG> 28/10/2015 ajout attribution gamme/images if (Declination != 0) { if (ArticleImage.Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleMonoGamme || ArticleImage.Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleMultiGammes) { Model.Local.AttributeArticleRepository AttributeArticleRepository = new Model.Local.AttributeArticleRepository(); if (AttributeArticleRepository.Exist(Declination)) { Model.Local.AttributeArticleImageRepository AttributeArticleImageRepository = new Model.Local.AttributeArticleImageRepository(); if (!AttributeArticleImageRepository.ExistAttributeArticleImage(Declination, ArticleImage.ImaArt_Id)) { AttributeArticleImageRepository.Add(new Model.Local.AttributeArticleImage() { AttArt_Id = Declination, ImaArt_Id = ArticleImage.ImaArt_Id, }); } } } else if (ArticleImage.Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleComposition) { Model.Local.CompositionArticleRepository CompositionArticleRepository = new Model.Local.CompositionArticleRepository(); if (CompositionArticleRepository.Exist(Declination)) { Model.Local.CompositionArticleImageRepository CompositionArticleImageRepository = new Model.Local.CompositionArticleImageRepository(); if (!CompositionArticleImageRepository.ExistCompositionArticleImage(Declination, ArticleImage.ImaArt_Id)) { CompositionArticleImageRepository.Add(new Model.Local.CompositionArticleImage() { ComArt_Id = Declination, ImaArt_Id = ArticleImage.ImaArt_Id, }); } } } } result = true; } else if (Core.Global.GetConfig().ImportImageReplaceFiles) { FileInfo importfile = new FileInfo(PathImg); Model.Local.ArticleImage ArticleImage = ArticleImageRepository.ReadArticleFile(ArticleSend, FileName); FileInfo existfile = new FileInfo(ArticleImage.TempFileName); if ((ArticleImage.ImaArt_DateAdd == null || importfile.LastWriteTime > ArticleImage.ImaArt_DateAdd) || importfile.Length != existfile.Length) { try { // import nouveau fichier string uri = PathImg.Replace("File:///", "").Replace("file:///", "").Replace("File://", "\\\\").Replace("file://", "\\\\").Replace("/", "\\"); System.IO.File.Copy(uri, ArticleImage.TempFileName, true); Model.Prestashop.PsImageTypeRepository PsImageTypeRepository = new Model.Prestashop.PsImageTypeRepository(); List <Model.Prestashop.PsImageType> ListPsImageType = PsImageTypeRepository.ListProduct(1); System.Drawing.Image img = System.Drawing.Image.FromFile(ArticleImage.TempFileName); foreach (Model.Prestashop.PsImageType PsImageType in ListPsImageType) { Core.Img.resizeImage(img, Convert.ToInt32(PsImageType.Width), Convert.ToInt32(PsImageType.Height), ArticleImage.FileName(PsImageType.Name)); } Core.Img.resizeImage(img, Core.Global.GetConfig().ConfigImageMiniatureWidth, Core.Global.GetConfig().ConfigImageMiniatureHeight, ArticleImage.SmallFileName); Model.Prestashop.PsImageRepository PsImageRepository = new Model.Prestashop.PsImageRepository(); if (ArticleImage.Pre_Id != null && PsImageRepository.ExistImage((uint)ArticleImage.Pre_Id)) { String FTP = Core.Global.GetConfig().ConfigFTPIP; String User = Core.Global.GetConfig().ConfigFTPUser; String Password = Core.Global.GetConfig().ConfigFTPPassword; Model.Prestashop.PsImage PsImage = PsImageRepository.ReadImage((uint)ArticleImage.Pre_Id); string ftpPath = "/img/p/"; switch (Core.Global.GetConfig().ConfigImageStorageMode) { case Core.Parametres.ImageStorageMode.old_system: #region old_system // no action on path break; #endregion case Core.Parametres.ImageStorageMode.new_system: default: #region new_system //System.Net.FtpWebRequest ftp_folder = null; foreach (char directory in PsImage.IDImage.ToString()) { ftpPath += directory + "/"; #region MyRegion try { System.Net.FtpWebRequest request = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(FTP + ftpPath); request.Credentials = new System.Net.NetworkCredential(User, Password); request.UsePassive = true; request.UseBinary = true; request.KeepAlive = false; request.Method = System.Net.WebRequestMethods.Ftp.MakeDirectory; System.Net.FtpWebResponse makeDirectoryResponse = (System.Net.FtpWebResponse)request.GetResponse(); } catch //Exception ex { //System.Windows.MessageBox.Show(ex.ToString()); } #endregion } break; #endregion } #region Upload des images extension = ArticleImage.GetExtension; if (System.IO.File.Exists(ArticleImage.TempFileName)) { string ftpfullpath = (Core.Global.GetConfig().ConfigImageStorageMode == Core.Parametres.ImageStorageMode.old_system) ? FTP + ftpPath + PsImage.IDProduct + "-" + PsImage.IDImage + ".jpg" : FTP + ftpPath + PsImage.IDImage + ".jpg"; System.Net.FtpWebRequest ftp = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(ftpfullpath); ftp.Credentials = new System.Net.NetworkCredential(User, Password); //userid and password for the ftp server to given ftp.UseBinary = true; ftp.UsePassive = true; ftp.EnableSsl = Core.Global.GetConfig().ConfigFTPSSL; ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; System.IO.FileStream fs = System.IO.File.OpenRead(ArticleImage.TempFileName); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fs.Close(); System.IO.Stream ftpstream = ftp.GetRequestStream(); ftpstream.Write(buffer, 0, buffer.Length); ftpstream.Close(); ftp.Abort(); } foreach (Model.Prestashop.PsImageType PsImageType in ListPsImageType) { String localfile = ArticleImage.FileName(PsImageType.Name); if (System.IO.File.Exists(localfile)) { string ftpfullpath = (Core.Global.GetConfig().ConfigImageStorageMode == Core.Parametres.ImageStorageMode.old_system) ? FTP + ftpPath + PsImage.IDProduct + "-" + PsImage.IDImage + "-" + PsImageType.Name + ".jpg" : FTP + ftpPath + PsImage.IDImage + "-" + PsImageType.Name + ".jpg"; System.Net.FtpWebRequest ftp = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(ftpfullpath); ftp.Credentials = new System.Net.NetworkCredential(User, Password); //userid and password for the ftp server to given ftp.UseBinary = true; ftp.UsePassive = true; ftp.EnableSsl = Core.Global.GetConfig().ConfigFTPSSL; ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; System.IO.FileStream fs = System.IO.File.OpenRead(localfile); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fs.Close(); System.IO.Stream ftpstream = ftp.GetRequestStream(); ftpstream.Write(buffer, 0, buffer.Length); ftpstream.Close(); ftp.Abort(); } } #endregion } ArticleImage.ImaArt_DateAdd = DateTime.Now; ArticleImageRepository.Save(); // <JG> 28/10/2015 ajout attribution gamme/images if (Declination != 0) { if (ArticleImage.Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleMonoGamme || ArticleImage.Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleMultiGammes) { Model.Local.AttributeArticleRepository AttributeArticleRepository = new Model.Local.AttributeArticleRepository(); if (AttributeArticleRepository.Exist(Declination)) { Model.Local.AttributeArticleImageRepository AttributeArticleImageRepository = new Model.Local.AttributeArticleImageRepository(); if (!AttributeArticleImageRepository.ExistAttributeArticleImage(Declination, ArticleImage.ImaArt_Id)) { AttributeArticleImageRepository.Add(new Model.Local.AttributeArticleImage() { AttArt_Id = Declination, ImaArt_Id = ArticleImage.ImaArt_Id, }); } // réaffectation côté PrestaShop Model.Local.AttributeArticle AttributeArticle = AttributeArticleRepository.Read(Declination); if (AttributeArticle.Pre_Id != null && AttributeArticle.Pre_Id != 0) { Model.Prestashop.PsProductAttributeImageRepository PsProductAttributeImageRepository = new Model.Prestashop.PsProductAttributeImageRepository(); if (PsProductAttributeImageRepository.ExistProductAttributeImage((UInt32)AttributeArticle.Pre_Id, (UInt32)ArticleImage.Pre_Id) == false) { PsProductAttributeImageRepository.Add(new Model.Prestashop.PsProductAttributeImage() { IDImage = (UInt32)ArticleImage.Pre_Id, IDProductAttribute = (UInt32)AttributeArticle.Pre_Id, }); } } } } else if (ArticleImage.Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleComposition) { Model.Local.CompositionArticleRepository CompositionArticleRepository = new Model.Local.CompositionArticleRepository(); if (CompositionArticleRepository.Exist(Declination)) { Model.Local.CompositionArticleImageRepository CompositionArticleImageRepository = new Model.Local.CompositionArticleImageRepository(); if (!CompositionArticleImageRepository.ExistCompositionArticleImage(Declination, ArticleImage.ImaArt_Id)) { CompositionArticleImageRepository.Add(new Model.Local.CompositionArticleImage() { ComArt_Id = Declination, ImaArt_Id = ArticleImage.ImaArt_Id, }); } // réaffectation côté PrestaShop Model.Local.CompositionArticle CompositionArticle = CompositionArticleRepository.Read(Declination); if (CompositionArticle.Pre_Id != null && CompositionArticle.Pre_Id != 0) { Model.Prestashop.PsProductAttributeImageRepository PsProductAttributeImageRepository = new Model.Prestashop.PsProductAttributeImageRepository(); if (PsProductAttributeImageRepository.ExistProductAttributeImage((UInt32)CompositionArticle.Pre_Id, (UInt32)ArticleImage.Pre_Id) == false) { PsProductAttributeImageRepository.Add(new Model.Prestashop.PsProductAttributeImage() { IDImage = (UInt32)ArticleImage.Pre_Id, IDProductAttribute = (UInt32)CompositionArticle.Pre_Id, }); } } } } } result = true; logs.Add("II30- Remplacement de l'image " + ArticleImage.ImaArt_SourceFile + " en position " + ArticleImage.ImaArt_Position + " pour l'article " + ArticleImage.Article.Art_Ref); } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); logs.Add("II39- Erreur lors du remplacement de l'image " + ArticleImage.ImaArt_SourceFile + " en position " + ArticleImage.ImaArt_Position + " pour l'article " + ArticleImage.Article.Art_Ref); logs.Add(ex.ToString()); } } } } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); if (ex.ToString().Contains("System.UnauthorizedAccessException") && IdArticleImage != 0) { Model.Local.ArticleImageRepository ArticleImageRepository = new Model.Local.ArticleImageRepository(); ArticleImageRepository.Delete(ArticleImageRepository.ReadArticleImage(IdArticleImage)); } } return(result); }
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)); } } } }