//<YH> 23/08/2012 private void ExecLocalToDistant(Model.Local.Article Article) { try { Model.Prestashop.PsAttachmentRepository PsAttachmentRepository = new Model.Prestashop.PsAttachmentRepository(); Model.Prestashop.PsAttachment PsAttachment; Model.Prestashop.PsAttachmentLangRepository PsAttachmentLangRepository = new Model.Prestashop.PsAttachmentLangRepository(); Model.Prestashop.PsAttachmentLang PsAttachmentLang; Model.Prestashop.PsProductAttachmentRepository PsProductAttachmentRepository = new Model.Prestashop.PsProductAttachmentRepository(); Model.Prestashop.PsProductAttachment PsProductAttachment; Boolean isAttachmentLang = false; String FTP = Core.Global.GetConfig().ConfigFTPIP; String User = Core.Global.GetConfig().ConfigFTPUser; String Password = Core.Global.GetConfig().ConfigFTPPassword; Model.Local.AttachmentRepository AttachmentRepository = new Model.Local.AttachmentRepository(); List <Model.Local.Attachment> ListAttachment = AttachmentRepository.ListArticle(Article.Art_Id); foreach (Model.Local.Attachment Attachment in ListAttachment) { try { if (Attachment.Pre_Id == null) { String PathAttachment = Path.Combine(Global.GetConfig().Folders.RootAttachment, Attachment.Att_File); if (System.IO.File.Exists(PathAttachment)) { #region infos document joint PsAttachment = new Model.Prestashop.PsAttachment(); PsAttachment.File = Attachment.Att_File; PsAttachment.FileName = Attachment.Att_FileName; PsAttachment.Mime = Attachment.Att_Mime; PsAttachmentRepository.Add(PsAttachment); isAttachmentLang = false; PsAttachmentLang = new Model.Prestashop.PsAttachmentLang(); if (PsAttachmentLangRepository.ExistAttachmentLang(PsAttachment.IDAttachment, Core.Global.Lang)) { PsAttachmentLang = PsAttachmentLangRepository.ReadAttachmentLang(PsAttachment.IDAttachment, Core.Global.Lang); isAttachmentLang = true; } PsAttachmentLang.Name = Attachment.Att_Name; PsAttachmentLang.Description = Attachment.Att_Description; if (isAttachmentLang == true) { PsAttachmentLangRepository.Save(); } else { PsAttachmentLang.IDAttachment = PsAttachment.IDAttachment; PsAttachmentLang.IDLang = Core.Global.Lang; PsAttachmentLangRepository.Add(PsAttachmentLang); } #endregion // <JG> 24/05/2013 ajout insertion autres langues actives si non renseignées #region Multi-langues try { Model.Prestashop.PsLangRepository PsLangRepository = new Model.Prestashop.PsLangRepository(); foreach (Model.Prestashop.PsLang PsLang in PsLangRepository.ListActive(1, Global.CurrentShop.IDShop)) { if (!PsAttachmentLangRepository.ExistAttachmentLang(PsAttachment.IDAttachment, PsLang.IDLang)) { PsAttachmentLang = new Model.Prestashop.PsAttachmentLang() { IDAttachment = PsAttachment.IDAttachment, IDLang = PsLang.IDLang, Name = Attachment.Att_Name, Description = Attachment.Att_Description }; PsAttachmentLangRepository.Add(PsAttachmentLang); } } } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); } #endregion // affectation au produit PsProductAttachment = new Model.Prestashop.PsProductAttachment(); if (PsProductAttachmentRepository.ExistProductAttachment(Convert.ToUInt32(Article.Pre_Id), PsAttachment.IDAttachment) == false) { PsProductAttachment.IDProduct = Convert.ToUInt32(Article.Pre_Id); PsProductAttachment.IDAttachment = PsAttachment.IDAttachment; PsProductAttachmentRepository.Add(PsProductAttachment); } try { #region upload string ftpfullpath = FTP + "/download/" + Attachment.Att_File; 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.Method = System.Net.WebRequestMethods.Ftp.UploadFile; System.IO.FileStream fs = System.IO.File.OpenRead(PathAttachment); 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 #region update Product field cache_as_attachements Model.Prestashop.PsProductRepository PsProductRepository = new Model.Prestashop.PsProductRepository(); Model.Prestashop.PsProduct PsProduct = PsProductRepository.ReadId(PsProductAttachment.IDProduct); if (PsProduct.CacheHasAttachments == 0) { PsProduct.CacheHasAttachments = (sbyte)1; PsProductRepository.Save(); } #endregion Attachment.Pre_Id = Convert.ToInt32(PsAttachment.IDAttachment); AttachmentRepository.Save(); } catch (Exception ex) { Core.Error.SendMailError("[UPLOAD FTP DOCUMENT]<br />" + ex.ToString()); PsProductAttachmentRepository.Delete(PsProductAttachmentRepository.ListAttachment(PsAttachment.IDAttachment)); PsAttachmentLangRepository.Delete(PsAttachmentLangRepository.ListAttachment(PsAttachment.IDAttachment)); PsAttachmentRepository.Delete(PsAttachment); } } } } catch (Exception ex) { Core.Error.SendMailError("[SYNCHRO DOCUMENT ARTICLE]<br />" + ex.ToString()); } } } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); } }
private void ExecLocalDistant(Model.Local.Catalog Catalog, Model.Prestashop.PsCategory Category, Model.Local.CatalogRepository CatalogRepository, Model.Prestashop.PsCategoryRepository CategoryRepository, Boolean isCategory, uint IdParent) { try { bool flag_move = (Category.IDParent != IdParent); Core.Temp.SyncCatalogue_ClearSmartyCache = true; Core.Temp.SyncCatalogue_RegenerateTree = true; // Assign data from Catalog to Category //Category.Position = (uint)Catalog.Cat_Position; Category.Active = Convert.ToByte(Catalog.Cat_Active); Category.LevelDepth = (Byte)Catalog.Cat_Level; Category.IDParent = IdParent; Category.DateUpd = Catalog.Cat_Date; // use cron for function "regenerateEntireNtree" //Category.NLeft = CategoryRepository.ReadId(IdParent).NLeft; //Category.NRight = CategoryRepository.ReadId(IdParent).NRight; Category.IDShopDefault = Global.CurrentShop.IDShop; if (isCategory == false) { Category.DateAdd = Category.DateUpd; Category.IsRootCategory = Convert.ToSByte(false); Category.Position = 0; CategoryRepository.Add(Category, Global.CurrentShop.IDShop); // We assign the CategoryId to Catalog Catalog.Pre_Id = (Int32)Category.IDCategory; CatalogRepository.Save(); } else { CategoryRepository.Save(); if (flag_move) { Model.Prestashop.PsCategoryShopRepository PsCategoryShopRepository = new Model.Prestashop.PsCategoryShopRepository(); if (PsCategoryShopRepository.ExistCategoryShop(Category.IDCategory, Core.Global.CurrentShop.IDShop)) { Model.Prestashop.PsCategoryShop PsCategoryShop = PsCategoryShopRepository.ReadCategoryShop(Category.IDCategory, Core.Global.CurrentShop.IDShop); PsCategoryShop.Position = new Model.Prestashop.PsCategoryRepository().ReadNextPosition(1, Category, (uint)Core.Global.CurrentShop.IDShop); PsCategoryShopRepository.Save(); Category.Position = PsCategoryShop.Position; CategoryRepository.Save(); } } } // We need to update CategoryLang too Boolean isCategoryLang = false; Model.Prestashop.PsCategoryLangRepository CategoryLangRepository = new Model.Prestashop.PsCategoryLangRepository(); Model.Prestashop.PsCategoryLang CategoryLang = new Model.Prestashop.PsCategoryLang(); if (CategoryLangRepository.ExistCategoryLang((Int32)Category.IDCategory, Core.Global.Lang, Global.CurrentShop.IDShop)) { CategoryLang = CategoryLangRepository.ReadCategoryLang((Int32)Category.IDCategory, Core.Global.Lang, Global.CurrentShop.IDShop); isCategoryLang = true; } CategoryLang.Name = Core.Global.RemovePurge(Catalog.Cat_Name, 128); CategoryLang.Description = Catalog.Cat_Description; CategoryLang.LinkRewrite = Core.Global.ReadLinkRewrite(Catalog.Cat_LinkRewrite); CategoryLang.MetaTitle = Core.Global.RemovePurge(Catalog.Cat_MetaTitle, 70); CategoryLang.MetaDescription = Core.Global.RemovePurge(Catalog.Cat_MetaDescription, 160); CategoryLang.MetaKeywords = Core.Global.RemovePurgeMeta(Catalog.Cat_MetaKeyword, 255); if (isCategoryLang == false) { CategoryLang.IDShop = Global.CurrentShop.IDShop; CategoryLang.IDLang = (uint)Core.Global.Lang; CategoryLang.IDCategory = Category.IDCategory; CategoryLangRepository.Add(CategoryLang); } else { CategoryLangRepository.Save(); } // <JG> 26/12/2012 ajout insertion autres langues actives si non renseignées try { Model.Prestashop.PsLangRepository PsLangRepository = new Model.Prestashop.PsLangRepository(); foreach (Model.Prestashop.PsLang PsLang in PsLangRepository.ListActive(1, Global.CurrentShop.IDShop)) { if (!CategoryLangRepository.ExistCategoryLang((int)Category.IDCategory, PsLang.IDLang, Global.CurrentShop.IDShop)) { CategoryLang = new Model.Prestashop.PsCategoryLang(); CategoryLang.IDShop = Global.CurrentShop.IDShop; CategoryLang.IDCategory = Category.IDCategory; CategoryLang.IDLang = PsLang.IDLang; CategoryLang.Name = Core.Global.RemovePurge(Catalog.Cat_Name, 128); CategoryLang.Description = Catalog.Cat_Description; CategoryLang.LinkRewrite = Core.Global.ReadLinkRewrite(Catalog.Cat_LinkRewrite); CategoryLang.MetaTitle = Core.Global.RemovePurge(Catalog.Cat_MetaTitle, 70); CategoryLang.MetaDescription = Core.Global.RemovePurge(Catalog.Cat_MetaDescription, 160); CategoryLang.MetaKeywords = Core.Global.RemovePurgeMeta(Catalog.Cat_MetaKeyword, 255); CategoryLangRepository.Add(CategoryLang); } } } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); } this.ExecGroupsLocalDistant(Category); // We need to send pictures this.ExecLocalDistantImage(Catalog, Category); } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); } }
private void ExecImage(string FTP, string User, string Password, Model.Local.Article Article, Model.Local.ArticleImage ArticleImage, Model.Local.ArticleImageRepository ArticleImageRepository) { Model.Prestashop.PsImageRepository PsImageRepository = new Model.Prestashop.PsImageRepository(); Model.Prestashop.PsImage PsImage = null; Model.Prestashop.PsImageLangRepository PsImageLangRepository = new Model.Prestashop.PsImageLangRepository(); Model.Prestashop.PsImageLang PsImageLang; Boolean isImageLang = false; Model.Prestashop.PsImageTypeRepository PsImageTypeRepository = new Model.Prestashop.PsImageTypeRepository(); List <Model.Prestashop.PsImageType> ListPsImageType = PsImageTypeRepository.ListProduct(1); try { if (ArticleImage.Pre_Id == null) { PsImage = new Model.Prestashop.PsImage(); PsImage.IDProduct = Convert.ToUInt32(Article.Pre_Id); PsImage.Position = (ushort)ExecPosition((uint)Article.Pre_Id.Value, (uint)ArticleImage.ImaArt_Position, PsImageRepository, PsImage); PsImage.Cover = ExecCover((uint)Article.Pre_Id.Value, ArticleImage.ImaArt_Default, PsImageRepository, PsImage); PsImageRepository.Add(PsImage, Global.CurrentShop.IDShop); #region lang isImageLang = false; PsImageLang = new Model.Prestashop.PsImageLang(); if (PsImageLangRepository.ExistImageLang(PsImage.IDImage, Core.Global.Lang)) { PsImageLang = PsImageLangRepository.ReadImageLang(PsImage.IDImage, Core.Global.Lang); isImageLang = true; } PsImageLang.Legend = ArticleImage.ImaArt_Name; if (isImageLang == true) { PsImageLangRepository.Save(); } else { PsImageLang.IDImage = PsImage.IDImage; PsImageLang.IDLang = Core.Global.Lang; PsImageLangRepository.Add(PsImageLang); } // <JG> 26/12/2012 ajout insertion autres langues actives si non renseignées try { Model.Prestashop.PsLangRepository PsLangRepository = new Model.Prestashop.PsLangRepository(); foreach (Model.Prestashop.PsLang PsLang in PsLangRepository.ListActive(1, Global.CurrentShop.IDShop)) { if (!PsImageLangRepository.ExistImageLang(PsImage.IDImage, PsLang.IDLang)) { PsImageLang = new Model.Prestashop.PsImageLang() { IDImage = PsImage.IDImage, IDLang = PsLang.IDLang, Legend = ArticleImage.ImaArt_Name }; PsImageLangRepository.Add(PsImageLang); } } } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); } #endregion try { // <JG> 10/04/2013 gestion système d'images 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 { FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(FTP + ftpPath); request.Credentials = new NetworkCredential(User, Password); request.UsePassive = true; request.UseBinary = true; request.KeepAlive = false; request.EnableSsl = Core.Global.GetConfig().ConfigFTPSSL; request.Method = WebRequestMethods.Ftp.MakeDirectory; FtpWebResponse makeDirectoryResponse = (FtpWebResponse)request.GetResponse(); } catch //Exception ex { //System.Windows.MessageBox.Show(ex.ToString()); } #endregion //try //{ // ftp_folder = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(FTP + ftpPath); // ftp_folder.Credentials = new System.Net.NetworkCredential(User, Password); // ftp_folder.UseBinary = true; // ftp_folder.UsePassive = true; // ftp_folder.KeepAlive = false; // ftp_folder.Method = System.Net.WebRequestMethods.Ftp.MakeDirectory; // System.Net.FtpWebResponse response = (System.Net.FtpWebResponse)ftp_folder.GetResponse(); // System.IO.Stream ftpStream = response.GetResponseStream(); // ftpStream.Close(); // response.Close(); //} //catch(Exception ex) //{ // System.Windows.MessageBox.Show(ex.ToString()); //} } break; #endregion } #region Upload des images String 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 PathImg = ArticleImage.FileName(PsImageType.Name); if (System.IO.File.Exists(PathImg)) { 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(PathImg); 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.Pre_Id = Convert.ToInt32(PsImage.IDImage); ArticleImageRepository.Save(); } catch (Exception ex) { Core.Error.SendMailError("[UPLOAD FTP IMAGE ARTICLE]<br />" + ex.ToString()); PsImageLangRepository.DeleteAll(PsImageLangRepository.ListImage(PsImage.IDImage)); PsImageRepository.Delete(PsImage); } } // option car si PAS GADA écrase infos PS else if (Core.Global.GetConfig().ConfigImageSynchroPositionLegende) { PsImage = new Model.Prestashop.PsImage(); if (PsImageRepository.ExistImage((uint)ArticleImage.Pre_Id)) { PsImage = PsImageRepository.ReadImage((uint)ArticleImage.Pre_Id); if (PsImage.Position != (UInt16)ArticleImage.ImaArt_Position || PsImage.Cover != #if (PRESTASHOP_VERSION_172 || PRESTASHOP_VERSION_161) ((ArticleImage.ImaArt_Default) ? Convert.ToByte(ArticleImage.ImaArt_Default) : (byte?)null)) #else Convert.ToByte(ArticleImage.ImaArt_Default)) #endif { PsImage.Position = (ushort)ExecPosition((uint)Article.Pre_Id, (uint)ArticleImage.ImaArt_Position, PsImageRepository, PsImage); PsImage.Cover = ExecCover((uint)Article.Pre_Id, ArticleImage.ImaArt_Default, PsImageRepository, PsImage); PsImageRepository.Save(); Model.Prestashop.PsImageShopRepository PsImageShopRepository = new Model.Prestashop.PsImageShopRepository(); Model.Prestashop.PsImageShop PsImageShop = PsImageShopRepository.ReadImage(PsImage.IDImage); if (PsImageShop != null && PsImageShop.Cover != #if (PRESTASHOP_VERSION_160) (sbyte)PsImage.Cover #else PsImage.Cover #endif ) { #if (PRESTASHOP_VERSION_160) PsImageShop.Cover = (sbyte)PsImage.Cover; #else PsImageShop.Cover = PsImage.Cover; #endif PsImageShopRepository.Save(); } } #region lang PsImageLang = new Model.Prestashop.PsImageLang(); isImageLang = false; if (PsImageLangRepository.ExistImageLang(PsImage.IDImage, Core.Global.Lang)) { PsImageLang = PsImageLangRepository.ReadImageLang(PsImage.IDImage, Core.Global.Lang); isImageLang = true; } PsImageLang.Legend = ArticleImage.ImaArt_Name; if (isImageLang == true) { PsImageLangRepository.Save(); } else { PsImageLang.IDImage = PsImage.IDImage; PsImageLang.IDLang = Core.Global.Lang; PsImageLangRepository.Add(PsImageLang); } // <JG> 26/12/2012 ajout insertion autres langues actives si non renseignées try { Model.Prestashop.PsLangRepository PsLangRepository = new Model.Prestashop.PsLangRepository(); foreach (Model.Prestashop.PsLang PsLang in PsLangRepository.ListActive(1, Global.CurrentShop.IDShop)) { if (!PsImageLangRepository.ExistImageLang(PsImage.IDImage, PsLang.IDLang)) { PsImageLang = new Model.Prestashop.PsImageLang() { IDImage = PsImage.IDImage, IDLang = PsLang.IDLang, Legend = ArticleImage.ImaArt_Name }; PsImageLangRepository.Add(PsImageLang); } } } catch (Exception ex) { Core.Error.SendMailError(ex.ToString()); } #endregion } } } catch (Exception ex) { Core.Error.SendMailError("[SYNCHRO IMAGE ARTICLE]<br />" + ex.ToString()); if (PsImage != null) { PsImageLangRepository.DeleteAll(PsImageLangRepository.ListImage(PsImage.IDImage)); PsImageRepository.Delete(PsImage); } } }