private void SynchronizeProductImages(ProductEntity product, PsProductEntity psProduct)
        {
            try
            {
                if (psProduct != null)
                {
                    foreach (var psImage in psProduct.associations.images.ToList())
                    {
                        if (!product.Images.Any(x => x.WebId.HasValue && x.WebId == psImage.id))
                        {
                            prestaShopClient.ImageFactory.DeleteProductImage(psProduct.id.Value, psImage.id);
                            psProduct.associations.images.Remove(psImage);
                        }
                    }

                    foreach (var image in product.Images.Where(x => x.IsDeleted == false))
                    {
                        SynchronizeImage(product, psProduct, image);
                    }

                    SaveOrUpdatePsProduct(psProduct, product);
                }
            }
            catch (Exception ex)
            {
                logger.LogError($"Synchronize product Id: {product.Id} error.{Environment.NewLine}{ex}");
            }
        }
 private void DeleteImage(ImageEntity localImage, PsProductEntity psProduct)
 {
     if (psProduct.associations.images.Any(x => x.id == localImage.WebId))
     {
         DeletePsImage(psProduct.id.Value, localImage.WebId.Value);
     }
     localImage.Synchronize = Framework.SynchronizeType.Synchronized;
     localImage.IsDeleted   = true;
 }
 private void UpdateImage(ImageEntity localImage, PsProductEntity psProduct)
 {
     try
     {
         var image = prestaShopClient.ImageFactory.GetProductImage((long)psProduct.id, localImage.WebId.Value);
     }
     catch
     {
         UpdatePsImage(localImage, psProduct);
     }
 }
Пример #4
0
        public IActionResult UpdateOrInsertProduct([FromBody] List <Bukimedia.PrestaSharp.Entities.product> mikroProductList)
        {
            Boolean degisiklikVarMi = false;

            var filter = new Dictionary <string, string>
            {
                { "isbn", null }
            };

            List <Bukimedia.PrestaSharp.Entities.product> prestaProductList;

            foreach (var mikroProduct in mikroProductList)
            {
                degisiklikVarMi = false;

                filter["isbn"] = mikroProduct.isbn;
                // isbn'si ortusen productlar geliyor, unic oldugu icin 1 tane gelecek eger tabloda varsa
                prestaProductList = productFactory.GetByFilter(filter, null, null);

                Bukimedia.PrestaSharp.Entities.product prestaProduct = null;
                // getByFilter'dan dizi donuyor, eger bossa mikroProduct mikroya yeni eklenmis bir urundur
                if (prestaProductList.Count != 0)
                {
                    // dizi bos degil, isbn de unic oldugu icin ilk elemani aliyoruz
                    prestaProduct = prestaProductList[0];

                    // urunun isminde degisiklik varsa guncelliyoruz
                    if (prestaProduct.name[0].Value != mikroProduct.name[0].Value)
                    {
                        prestaProduct.name[0].Value = mikroProduct.name[0].Value;
                        degisiklikVarMi             = true;
                    }

                    // yine urunun fiyatinda degisiklik varsa guncelliyoruz
                    if (prestaProduct.price != mikroProduct.price)
                    {
                        prestaProduct.price = mikroProduct.price;
                        degisiklikVarMi     = true;
                    }

                    if (degisiklikVarMi)
                    {
                        productFactory.Update(prestaProduct);
                    }
                }

                // eger buraya girerse bu urun mikroya yeni eklenmis bir urun, o halde prestashop'a ekliyoruz
                else
                {
                    productFactory.Add(mikroProduct);
                }
            }
            return(Ok());
        }
Пример #5
0
        public void CargarArticulo(string reference, string titulo = "")
        {
            var PF = new ProductFactory(_BaseUrl, _Account, _Password);

            product = prestashop.CargarProductoPrestashopReferencia(reference);
            if (product != null)
            {
                textEditReferencia.Text         = product.reference;
                textEditTitulo.Text             = product.name[0].Value;
                memoEditDescripction.Text       = product.description[0].Value;
                memoEditDescripction_short.Text = product.description_short[0].Value;
                simpleButtonGrabar.Text         = "Grabar";
            }
            else
            {
                Bukimedia.PrestaSharp.Entities.AuxEntities.language Lenguaje = new Bukimedia.PrestaSharp.Entities.AuxEntities.language();
                Lenguaje.id             = 1;
                product                 = new Bukimedia.PrestaSharp.Entities.product();
                product.reference       = reference;
                textEditTitulo.Text     = "";
                simpleButtonGrabar.Text = "Crear";
            }

            //model = RajoteroDbcontext.ps_product.Where(w => w.reference == reference).FirstOrDefault();
            //var model_lang = RajoteroDbcontext.ps_lang.ToList();
            //repositoryItemLookUpEdit1.DataSource = model_lang;
            //textEditReferencia.Text = reference;
            //if (model != null)
            //{
            //    gridControl.DataSource = model.ps_product_lang;
            //}
            //else
            //{
            //    model = new ps_product();
            //    var model_pd_product_lang = new ps_product_lang();
            //    model_pd_product_lang.id_lang = RajoteroDbcontext.ps_lang.FirstOrDefault().id_lang;
            //    model_pd_product_lang.name = titulo;
            //    model.ps_product_lang = new List<ps_product_lang>();
            //    model.ps_product_lang.Add(model_pd_product_lang);
            //    gridControl.DataSource = model.ps_product_lang;
            //}
        }
        private void SynchronizeImage(ProductEntity localProduct, PsProductEntity psProduct, ImageEntity localImage)
        {
            if (localImage.WebId.HasValue && psProduct.associations.images.All(x => x.id != localImage.WebId))
            {
                localImage.WebId = null;
            }

            if (localImage.WebId.HasValue && localImage.WebId > 0)
            {
                if (localImage.IsArchived)
                {
                    DeleteImage(localImage, psProduct);
                }
                else if (localImage.IsSynchronizable)
                {
                    UpdateImage(localImage, psProduct);
                }
            }
            else if (localImage.IsSynchronizable)
            {
                localImage.WebId = AddImage(localImage, psProduct);
            }
        }
 private int AddImage(ImageEntity localImage, PsProductEntity psProduct)
 {
     return((int)prestaShopClient.ImageFactory.AddProductImage((long)psProduct.id, localImage.ImageBytes));
 }
 private void UpdatePsImage(ImageEntity localImage, PsProductEntity psProduct)
 {
     DeletePsImage((long)psProduct.id, localImage.WebId.Value);
     localImage.WebId = AddImage(localImage, psProduct);
 }
Пример #9
0
 public IActionResult Product([FromBody] Bukimedia.PrestaSharp.Entities.product product)
 {
     productFactory.Add(product);
     return(Ok(product));
 }