Esempio n. 1
0
        public WooCommerceNET.WooCommerce.v3.Product GetProdWeb(ArticoloBase artDb, out bool newProd)
        {
            var artWeb = new WooCommerceNET.WooCommerce.v3.Product();

            newProd = false;
            if (!string.IsNullOrEmpty(artDb.Aggiornamento.CodiceArticoloEcommerce))
            {
                var tsk = _wc.Product.Get(int.Parse(artDb.Aggiornamento.CodiceArticoloEcommerce), null);
                tsk.Wait();
                artWeb = tsk.Result;
            }
            else
            {
                var parms = new Dictionary <string, string>();
                parms.Add("sku", artDb.ArticoloID.ToString());

                var tsk = _wc.Product.GetAll(parms);
                tsk.Wait();
                artWeb = tsk.Result.FirstOrDefault();
                if (artWeb == null)
                {
                    artWeb  = new WooCommerceNET.WooCommerce.v3.Product();
                    newProd = true;
                }
            }
            return(artWeb);
        }
Esempio n. 2
0
        private void UpdateProduct(ArticoloBase artDb, DateTime dataLettura)
        {
            using (var uof = new UnitOfWork())
            {
                product artWeb = new product();
                if (!string.IsNullOrEmpty(artDb.Aggiornamento.CodiceArticoloEcommerce))
                {
                    artWeb = _productFactory.Get(long.Parse(artDb.Aggiornamento.CodiceArticoloEcommerce));
                }
                ManagerLog.Logger.Info("Caricamento in corso dell'articolo '" + artDb.ArticoloDb.Titolo + "' ID=" + artDb.ArticoloID + "  nel web");
                SetDataItemWeb(artDb, uof, artWeb);

                try
                {
                    if (!artWeb.id.HasValue)
                    {
                        artWeb = _productFactory.Add(artWeb);
                    }
                    else
                    {
                        _productFactory.Update(artWeb);
                    }
                    artDb.Aggiornamento.DataUltimoAggiornamentoWeb = dataLettura;
                    artDb.Aggiornamento.CodiceArticoloEcommerce    = artWeb.id.Value.ToString();
                    artDb.Aggiornamento.Link = artWeb.link_rewrite.First().Value.ToString();

                    uof.AggiornamentoWebArticoloRepository.Update(artDb.Aggiornamento);
                    uof.Commit();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Esempio n. 3
0
        private void UpdateProduct(ArticoloBase artDb, DateTime dataLettura)
        {
            using (var uof = new UnitOfWork())
            {
                bool newProd;

                var artWeb = GetProdWeb(artDb, out newProd);

                ManagerLog.Logger.Info("Caricamento in corso dell'articolo '" + artDb.ArticoloDb.Titolo + "' ID=" + artDb.ArticoloID + "  nel web");
                SetDataItemWeb(artDb, uof, artWeb, newProd);

                try
                {
                    artWeb = UpdateProdWeb(artWeb);
                    artDb.Aggiornamento.DataUltimoAggiornamentoWeb = dataLettura;
                    artDb.Aggiornamento.CodiceArticoloEcommerce    = artWeb.id.Value.ToString();
                    artDb.Aggiornamento.Link = artWeb.permalink;

                    uof.AggiornamentoWebArticoloRepository.Update(artDb.Aggiornamento);
                    uof.Commit();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
Esempio n. 4
0
        private void UpdateImage(ArticoloBase artDb, product artWeb, UnitOfWork uof)
        {
            DateTime date = DateTime.Now;

            /*cancello le immagini e le sovrascrivo*/
            foreach (var item in artWeb.associations.images)
            {
                _syncroBasePresta._imageFactory.DeleteProductImage(artWeb.id.Value, item.id);
            }
            var settingSito = SettingSitoValidator.ReadSetting();

            var imageList = uof.FotoArticoloRepository.Find(a => a.ArticoloID == artDb.ArticoloID).OrderBy(a => a.Ordine).ToList();

            var listFotoArticolo = imageList.Select(a => new ImmaginiFile <FotoArticolo>(Path.Combine(
                                                                                             settingSito.CartellaLocaleImmagini, a.UrlFoto)
                                                                                         , a.UrlFoto, a)).ToList();

            foreach (var item in listFotoArticolo)
            {
                _syncroBasePresta._imageFactory.AddProductImage(artWeb.id.Value, item.File);
            }
            var aggiornamento = artDb.Aggiornamento;

            aggiornamento.DataUltimoAggFoto    = date;
            aggiornamento.DataUltimoAggFotoWeb = date;
            SalvaAggiornamento(uof, aggiornamento);
        }
Esempio n. 5
0
        private void UpdateImage(ArticoloBase artDb, WooCommerceNET.WooCommerce.v3.Product artWeb, UnitOfWork uof)
        {
            //DateTime date = DateTime.Now;
            /*cancello le immagini e le sovrascrivo*/
            artWeb.images.Clear();
            foreach (var item in artWeb.images)
            {
            }
            var settingSito = SettingSitoValidator.ReadSetting();

            var imageList = uof.FotoArticoloRepository.Find(a => a.ArticoloID == artDb.ArticoloID).OrderBy(a => a.Ordine).ToList();

            var listFotoArticolo = imageList.Select(a => new ImmaginiFile <FotoArticolo>(Path.Combine(
                                                                                             settingSito.CartellaLocaleImmagini, a.UrlFoto)
                                                                                         , a.UrlFoto, a)).ToList();

            int ord = 0;

            foreach (var item in listFotoArticolo)
            {
                ///provaale.atwebpages.com/wp-content/uploads/2021/03
                artWeb.images.Add(new ProductImage()
                {
                    src = item.File, position = ord, name = item.Name, alt = artDb.ArticoloDb.Titolo
                });
                ord++;
            }
            //var aggiornamento = artDb.Aggiornamento;

            //aggiornamento.DataUltimoAggFoto = date;
            //aggiornamento.DataUltimoAggFotoWeb = date;
            //SalvaAggiornamento(uof, aggiornamento);
        }
Esempio n. 6
0
        public override bool UpdateStockArt(ArticoloBase artDb, UnitOfWork uof)
        {
            if (!string.IsNullOrEmpty(artDb.CodiceArticoloEcommerce))
            {
                product artWeb = _syncroBasePresta.GetProdWebFromCodartEcommerce(artDb);

                return(UpdateStockArt(artWeb, artDb, uof));
            }
            return(false);
        }
Esempio n. 7
0
        public override bool UpdateStockArt(ArticoloBase artDb, UnitOfWork uof)
        {
            if (!string.IsNullOrEmpty(artDb.CodiceArticoloEcommerce))
            {
                var boolNew = false;
                var artWeb  = _syncroBaseWooCommerce.GetProdWeb(artDb, out boolNew);

                return(UpdateStockArt(artWeb, artDb, uof));
            }
            return(false);
        }
Esempio n. 8
0
        /// <summary>
        /// Aggiorna il magazzino del articolo nel web
        /// </summary>
        /// <param name="newArtWeb"></param>
        /// <param name="artDb"></param>
        public bool UpdateStockArt(WooCommerceNET.WooCommerce.v3.Product newArtWeb, ArticoloBase artDb, UnitOfWork uof, bool forzaUpdate = false)
        {
            var qta = newArtWeb.stock_quantity.Value;

            var updated = UpdateStockArt(ref qta, artDb, uof, forzaUpdate);

            if (updated && newArtWeb.stock_quantity != qta)
            {
                newArtWeb.stock_quantity = qta;

                _syncroBaseWooCommerce.UpdateProdWeb(newArtWeb);
                return(true);
            }
            return(false);
        }
Esempio n. 9
0
        /// <summary>
        /// Aggiorna il magazzino del articolo nel web
        /// </summary>
        /// <param name="newArtWeb"></param>
        /// <param name="artDb"></param>
        public bool UpdateStockArt(product newArtWeb, ArticoloBase artDb, UnitOfWork uof, bool forzaUpdate = false)
        {
            var stock   = _syncroBasePresta._StockAvailableFactory.Get(newArtWeb.associations.stock_availables.First().id);
            var qta     = stock.quantity;
            var updated = UpdateStockArt(ref qta, artDb, uof, forzaUpdate);

            if (updated && stock.quantity != qta)
            {
                stock.quantity = qta;

                _syncroBasePresta._StockAvailableFactory.Update(stock);
                return(true);
            }
            return(false);
        }
Esempio n. 10
0
        private void SetDataItemWeb(ArticoloBase artDb, UnitOfWork uof, WooCommerceNET.WooCommerce.v3.Product artWeb, bool newProd)
        {
            artWeb.regular_price = Math.Round(artDb.ArticoloDb.ArticoloWeb.PrezzoWeb * 100 / (100 + artDb.ArticoloDb.Iva), 6, MidpointRounding.ToEven);
            //artWeb.sale_price = Math.Round(artDb.ArticoloDb.ArticoloWeb.PrezzoWeb * 100 / (100 + artDb.ArticoloDb.ArticoloWeb.Iva), 6, MidpointRounding.ToEven);
            artWeb.name = artDb.ArticoloDb.Titolo;


            //*iva al 22%*//
            artWeb.tax_class = artDb.ArticoloDb.Iva.ToString();

            ImpostaCategoria(artDb, uof, artWeb);

            if (string.IsNullOrEmpty(artDb.ArticoloDb.ArticoloWeb.DescrizioneHtml))
            {
                artWeb.description             = "";
                artWeb.enable_html_description = false;
            }
            else
            {
                artWeb.description             = artDb.ArticoloDb.ArticoloWeb.DescrizioneHtml;
                artWeb.enable_html_description = true;
            }
            artWeb.short_description =
                artDb.ArticoloDb.ArticoloWeb.DescrizioneBreveHtml;
            artWeb.enable_html_short_description = "true";


            if (artDb.ArticoloDb.Condizione != enCondizioneArticolo.Nuovo)
            {
                artWeb.name        = "USATO " + artWeb.name;
                artWeb.description = "USATO " + artWeb.description;
            }

            artWeb.manage_stock = true;

            if (newProd)
            {
                artWeb.stock_quantity = StockProductsBase.CalcolaStock(new ArticoloBase()
                {
                    ArticoloID = artDb.ArticoloID
                });
            }


            artWeb.sku = artDb.ArticoloID.ToString();

            UpdateImage(artDb, artWeb, uof);
        }
Esempio n. 11
0
        private static void ImpostaCategoria(ArticoloBase artDb, UnitOfWork uof, Product artWeb)
        {
            string reparto = "";

            artWeb.categories = new List <WooCommerceNET.WooCommerce.v3.ProductCategoryLine>();
            artWeb.categories.Clear();

            if (
                artDb.ArticoloDb.Condizione == enCondizioneArticolo.ExDemo ||
                artDb.ArticoloDb.Condizione == enCondizioneArticolo.UsatoGarantito)
            {
                if (artDb.ArticoloDb.Condizione == enCondizioneArticolo.ExDemo)
                {
                    reparto = CategorySync.ExDemo;
                }
                else if (artDb.ArticoloDb.Condizione == enCondizioneArticolo.UsatoGarantito)
                {
                    reparto = CategorySync.Usato;
                }
                artWeb.categories.Add(new WooCommerceNET.WooCommerce.v3.ProductCategoryLine()
                {
                    id = (int)uof.RepartoWebRepository.Find(a =>
                                                            a.Reparto == reparto).FirstOrDefault().CodiceWeb
                });
            }
            else
            {
                var categDb = uof.CategorieRepository.Find(a => a.ID == artDb.ArticoloDb.CategoriaID).First();

                var listaCateg = uof.CategorieWebRepository.Find(a => a.Categoria.Nome == categDb.Nome).Select(a => a.CodiceWeb).ToList();
                foreach (var item in listaCateg)
                {
                    artWeb.categories.Add(new WooCommerceNET.WooCommerce.v3.ProductCategoryLine()
                    {
                        id = (int)item
                    });
                }
            }
        }
Esempio n. 12
0
        private void SetDataItemWeb(ArticoloBase artDb, UnitOfWork uof, product artWeb)
        {
            artWeb.price = Math.Round(artDb.ArticoloDb.ArticoloWeb.PrezzoWeb * 100 / (100 + artDb.ArticoloDb.Iva), 6, MidpointRounding.ToEven);
            artWeb.name.Clear();
            artWeb.AddName(new Bukimedia.PrestaSharp.Entities.AuxEntities.language(1, artDb.ArticoloDb.Titolo));
            artWeb.link_rewrite.Clear();
            artWeb.AddLinkRewrite(new Bukimedia.PrestaSharp.Entities.AuxEntities.language(1, artDb.ArticoloDb.Titolo));
            artWeb.active         = 1;
            artWeb.condition      = "new";
            artWeb.show_condition = 1;
            //*iva al 22%*//
            artWeb.id_tax_rules_group = 1;
            switch (artDb.ArticoloDb.Condizione)
            {
            case enCondizioneArticolo.Nuovo:
                artWeb.condition = "new";
                break;

            case enCondizioneArticolo.ExDemo:
                artWeb.condition = "used";     //refurbished
                break;

            case enCondizioneArticolo.UsatoGarantito:
                artWeb.condition = "used";
                break;

            case enCondizioneArticolo.NonSpecificato:
                break;

            default:
                break;
            }
            artWeb.show_price = 1;
            string reparto = "";

            if (
                artDb.ArticoloDb.Condizione == enCondizioneArticolo.ExDemo ||
                artDb.ArticoloDb.Condizione == enCondizioneArticolo.UsatoGarantito)
            {
                if (artDb.ArticoloDb.Condizione == enCondizioneArticolo.ExDemo)
                {
                    reparto = CategorySync.ExDemo;
                }
                else if (artDb.ArticoloDb.Condizione == enCondizioneArticolo.UsatoGarantito)
                {
                    reparto = CategorySync.Usato;
                }
                artWeb.id_category_default = uof.RepartoWebRepository.Find(a =>
                                                                           a.Reparto == reparto).FirstOrDefault().CodiceWeb;

                artWeb.associations.categories.Clear();

                artWeb.associations.categories.Add(
                    new Bukimedia.PrestaSharp.Entities.AuxEntities.category(
                        artWeb.id_category_default.Value));
            }
            else
            {
                artWeb.id_category_default = uof.CategorieWebRepository.Find(a => a.CategoriaID == artDb.ArticoloDb.CategoriaID).FirstOrDefault().CodiceWeb;

                var categDb = uof.CategorieRepository.Find(a => a.ID == artDb.ArticoloDb.CategoriaID).First();

                var listaCateg = uof.CategorieWebRepository.Find(a => a.Categoria.Nome == categDb.Nome).Select(a => a.CodiceWeb).ToList();

                artWeb.associations.categories.Clear();
                foreach (var item in listaCateg)
                {
                    artWeb.associations.categories.Add(new Bukimedia.PrestaSharp.Entities.AuxEntities.category(item));
                }
            }
            if (string.IsNullOrEmpty(artDb.ArticoloDb.ArticoloWeb.DescrizioneHtml))
            {
                artDb.ArticoloDb.ArticoloWeb.DescrizioneHtml = "";
            }
            artWeb.description.Clear();
            artWeb.description.Add(new Bukimedia.PrestaSharp.Entities.AuxEntities.language(1,
                                                                                           artDb.ArticoloDb.ArticoloWeb.DescrizioneHtml));

            if (string.IsNullOrEmpty(artDb.ArticoloDb.ArticoloWeb.DescrizioneBreveHtml))
            {
                artDb.ArticoloDb.ArticoloWeb.DescrizioneBreveHtml = "";
            }
            artWeb.description_short.Clear();
            artWeb.description_short.Add(new Bukimedia.PrestaSharp.Entities.AuxEntities.language(1,
                                                                                                 artDb.ArticoloDb.ArticoloWeb.DescrizioneBreveHtml));
            artWeb.available_for_order = 1;
            artWeb.New              = 0;
            artWeb.state            = 1;
            artWeb.visibility       = "both";
            artWeb.minimal_quantity = 1;
            artWeb.reference        = artDb.ArticoloID.ToString();
        }
Esempio n. 13
0
 internal product GetProdWebFromCodartEcommerce(ArticoloBase artDb)
 {
     return(_productFactory.Get(long.Parse(artDb.CodiceArticoloEcommerce)));
 }