public byte ExecCover(uint pdt, bool cov, Model.Prestashop.PsImageRepository PsImageRepository, Model.Prestashop.PsImage PsImageCurrent)
 {
     if (cov)
     {
         if (PsImageRepository.ExistProductCover(pdt, Convert.ToByte(cov)))
         {
             Model.Prestashop.PsImageShopRepository PsImageShopRepository = new Model.Prestashop.PsImageShopRepository();
             Model.Prestashop.PsImageShop           PsImageShop;
             foreach (Model.Prestashop.PsImage PsImage in PsImageRepository.ListProduct(pdt))
             {
                 if (PsImage.IDImage != PsImageCurrent.IDImage)
                 {
                     PsImage.Cover = Convert.ToByte(false);
                     if (PsImageShopRepository.ExistImage(PsImage.IDImage))
                     {
                         PsImageShop = PsImageShopRepository.ReadImage(PsImage.IDImage);
                                                         #if (PRESTASHOP_VERSION_160)
                         PsImageShop.Cover = (sbyte)PsImage.Cover;
                                                         #else
                         PsImageShop.Cover = PsImage.Cover;
                                                         #endif
                     }
                 }
             }
             PsImageShopRepository.Save();
             PsImageRepository.Save();
         }
     }
     return(Convert.ToByte(cov));
 }
 public byte?ExecCover(uint pdt, bool cov, Model.Prestashop.PsImageRepository PsImageRepository, Model.Prestashop.PsImage PsImageCurrent)
 {
     if (cov)
     {
         if (PsImageRepository.ExistProductCover(pdt, Convert.ToByte(cov)))
         {
             Model.Prestashop.PsImageShopRepository PsImageShopRepository = new Model.Prestashop.PsImageShopRepository();
             Model.Prestashop.PsImageShop           PsImageShop;
             foreach (Model.Prestashop.PsImage PsImage in PsImageRepository.ListProduct(pdt))
             {
                 if (PsImage.IDImage != PsImageCurrent.IDImage)
                 {
                     PsImage.Cover = (byte?)null;
                     if (PsImageShopRepository.ExistImage(PsImage.IDImage))
                     {
                         PsImageShop       = PsImageShopRepository.ReadImage(PsImage.IDImage);
                         PsImageShop.Cover = PsImage.Cover;
                     }
                 }
             }
             PsImageShopRepository.Save();
             PsImageRepository.Save();
         }
     }
     return((cov) ? Convert.ToByte(cov) : (byte?)null);
 }
        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);
                }
            }
        }