Beispiel #1
0
        public void ProcesoProductos()
        {
            OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Inicio de Proceso");
            OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Instanciando Helper AWS");
            OAwsHelper = new AWSHelper("AKIAIHQ53NFR6EGNA75Q", "MKph/aGOqSBvIT+VtCHpR0NHYgs1DEvmBJY4Opym", "ibushak03-20", "AKIAIHQ53NFR6EGNA75Q");
            try
            {
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Obteniendo productos a analizar");
                var productos = ProductosAdapter.ObtenerProductos();
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Productos asin en la base actual");
                foreach (var item in productos.asins)
                {
                    OBitacora.GuardarLinea(item.Id);
                }
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Productos upc en la base actual");
                foreach (var item in productos.upcs)
                {
                    OBitacora.GuardarLinea(item.Id);
                }
                if (productos.upcs.Any())
                {
                    ProcesarUpc(productos.upcs);
                }

                if (productos.asins.Any())
                {
                    ProcesarAsin(productos.asins);
                }

                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Generando Archivo Excel");
                var oArchvios = new Archivos();
                oArchvios.GenerarProductosActualizados();

                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Reportando a NetSuite");
                var changeProds = ProductosAdapter.ObtenerProductosTodos().Where(x => x.IsUpdated);
                var oBuyBox     = new BuyBox();
                foreach (var item in changeProds)
                {
                    try
                    {
                        oBuyBox.ReportarNetSuiteInicial(item.BuyBox, item.ASIN);
                        oBuyBox.ReportarNetSuiteComplete(item.ASIN);
                        item.IsUpdated = false;
                        ProductosAdapter.Actualizar(item);
                    }
                    catch (Exception ex)
                    {
                        OBitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{GetMessageError(ex)}/{ex.StackTrace}");
                    }
                }

                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Fin de Proceso");
            }
            catch (Exception ex)
            {
                OBitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{GetMessageError(ex)}/{ex.StackTrace}");
            }
        }
Beispiel #2
0
        private void ProcesarItems(Items items)
        {
            var oItemLookupParseo = new ItemLookupParseo();
            var oBuyBox           = new BuyBox();
            var oDatos            = new Datos();

            try
            {
                if (items.Item == null)
                {
                    return;
                }
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Comienza iteracion de elementos");
                foreach (var producto in items.Item)
                {
                    if (producto.Errors != null)
                    {
                        foreach (var error in producto.Errors)
                        {
                            OBitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error respuesta amazon producto|{error.Message}|");
                            try
                            {
                                if (ProductosAdapter.Existe(error.Message.Split(' ').First()))
                                {
                                    ProductosAdapter.Actualizar(new Producto
                                    {
                                        ASIN   = error.Message.Split(' ').First(),
                                        Offers = $"{error.Code}|{error.Message}"
                                    });
                                }
                                else
                                {
                                    ProductosAdapter.Insertar(new Producto
                                    {
                                        ASIN               = error.Message.Split(' ').First(),
                                        Offers             = $"{error.Code}|{error.Message}",
                                        UPC                = "",
                                        Label              = "",
                                        Actualizacion      = false,
                                        Amount             = "",
                                        Binding            = "",
                                        Brand              = "",
                                        BuyBox             = null,
                                        Caracteristicas    = null,
                                        ClothingSize       = "",
                                        Color              = "",
                                        Comentarios        = null,
                                        CurrencyCode       = "",
                                        Department         = "",
                                        Dimensiones        = null,
                                        DimensionesPaquete = null,
                                        EAN                = "",
                                        FormattedPrice     = "",
                                        LargeImage         = "",
                                        LegalDisclaimer    = "",
                                        MPN                = "",
                                        Manufacture        = "",
                                        MediumImage        = "",
                                        Model              = "",
                                        NumberItems        = 0,
                                        PackageQuantity    = 0,
                                        PartNumber         = "",
                                        ProdcutTypeName    = "",
                                        ProductGroup       = "",
                                        Publisher          = "",
                                        ReleaseDate        = "",
                                        Resumen            = null,
                                        SalesRank          = 0,
                                        Similares          = null,
                                        Size               = "",
                                        SmallImage         = "",
                                        Studio             = "",
                                        Title              = "",
                                        UPCs               = null,
                                        isAdultProduct     = false,
                                        isAutographed      = false,
                                        isMemorabilia      = false
                                    });
                                }
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("Error guardar errores amazon: " + GetMessageError(ex));
                                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Guardar amazon error|{ GetMessageError(ex) }");
                            }
                        }
                    }
                    try
                    {
                        OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Parseando item a producto { producto.ASIN }");
                        var prod = oItemLookupParseo.Parser(producto);
                        OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Validando si existe el producto");
                        if (!ProductosAdapter.Existe(prod.ASIN))
                        {
                            OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Insertando producto a la base de datos");
                            ProductosAdapter.Insertar(prod);
                            oBuyBox.ReportarNetSuiteInicial(prod.BuyBox, prod.ASIN);
                        }
                        else
                        {
                            OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Validando datos");
                            oDatos.ValidacionDatos(prod);

                            OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Actualizando datos");
                            oDatos.ActualizarDatos(prod);

                            OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Validando BuyBox");
                            oBuyBox.ValidarCambios(prod.BuyBox);

                            OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Actualizando BuyBox");
                            oBuyBox.ActualizarBuyBox(prod.BuyBox);
                        }
                        if (oBuyBox.Cambio)
                        {
                            prod.IsUpdated = true;
                            ProductosAdapter.Actualizar(prod);
                            //OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Reportando a NetSuite");
                            //oBuyBox.ReportarNetSuiteComplete(prod.ASIN);
                        }
                    }
                    catch (DbEntityValidationException ex)
                    {
                        var resultErrors = ex.EntityValidationErrors.Aggregate("",
                                                                               (current1, validationErrors) => validationErrors.ValidationErrors.Aggregate(current1,
                                                                                                                                                           (current, validationError) =>
                                                                                                                                                           current + $"NValid.{validationErrors.Entry.Entity}:{validationError.ErrorMessage}"));
                        OBitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{producto.ASIN} {resultErrors} /{GetMessageError(ex)}|");
                    }
                    catch (Exception ex)
                    {
                        OBitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{producto.ASIN} {GetMessageError(ex)}/{ex.StackTrace}|");
                    }
                }
                //OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Reportando a NetSuite");
                //oBuyBox.ReportarNetSuiteComplete();
                //if (oBuyBox.cambio)
                //{
                //    OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Reportando a NetSuite");
                //    //oBuyBox.ReportarNetSuite();
                //    oBuyBox.ReportarNetSuiteComplete(ProductosAdapter.);
                //}
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Termina iteracion de elementos");
            }
            catch (DbEntityValidationException ex)
            {
                var resultErrors = ex.EntityValidationErrors.Aggregate("",
                                                                       (current1, validationErrors) => validationErrors.ValidationErrors.Aggregate(current1,
                                                                                                                                                   (current, validationError) =>
                                                                                                                                                   current + $"NValid.{validationErrors.Entry.Entity}:{validationError.ErrorMessage}"));
                OBitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{resultErrors} /{GetMessageError(ex)}|");
            }
            catch (Exception ex)
            {
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{GetMessageError(ex)}/{ex.StackTrace}");
            }
        }