Beispiel #1
0
        public void ReportarNetSuiteInicial(List <of.BuyBox> buyBoxes, string asin)
        {
            DicDatosNetSuite = new Dictionary <string, Dictionary <string, string> >();
            if (buyBoxes == null)
            {
                buyBoxes = BuyBoxAdapter.ObtenerBuyBox(asin);
            }
            if (DicDatosNetSuite == null)
            {
                DicDatosNetSuite = new Dictionary <string, Dictionary <string, string> >();
            }
            var prod = ProductosAdapter.ObtenerProducto(asin);
            Dictionary <string, string> campos = new Dictionary <string, string>
            {
                { "custitem_ib_update_buybox_date", DateTime.Now.ToString("dd/MM/yyyy") }
            };

            if (buyBoxes != null && buyBoxes.Any())
            {
                campos.Add(Box, buyBoxes.First().Merchant.Equals("Ibushak") ? "true" : "false");
            }
            campos.Add(Precio, prod.FormattedPrice);
            DicDatosNetSuite.Add(asin, campos);
            Cambio = true;
        }
Beispiel #2
0
        public bool ActualizarDatos(Producto producto)
        {
            OBitacora.GuardarLinea($"{ DateTime.Now :yyyy-MM-dd hh:mm:ss}|Productos|Actualizando datos producto");
            if (CambioProducto)
            {
                ProductosAdapter.Actualizar(producto);
            }

            OBitacora.GuardarLinea($"{ DateTime.Now :yyyy-MM-dd hh:mm:ss}|Productos|Actualizando datos dimensiones");
            if (cambioDimensiones)
            {
                DimensionesAdapter.Actualizar(producto.Dimensiones);
            }

            OBitacora.GuardarLinea($"{ DateTime.Now :yyyy-MM-dd hh:mm:ss}|Productos|Actualizando datos dimensiones paquete");
            if (cambioDimensionesPaquete)
            {
                DimensionesPaqueteAdapter.Actualizar(producto.DimensionesPaquete);
            }

            OBitacora.GuardarLinea($"{ DateTime.Now :yyyy-MM-dd hh:mm:ss}|Productos|Actualizando datos resumen");
            if (cambioResumen)
            {
                ResumenAdapter.Actualizar(producto.Resumen);
            }

            OBitacora.GuardarLinea($"{ DateTime.Now :yyyy-MM-dd hh:mm:ss}|Productos|Actualizando datos simialres");
            if (cambioSimilares)
            {
                SimilaresAdapter.Actualizar(producto.Similares);
            }

            OBitacora.GuardarLinea($"{ DateTime.Now :yyyy-MM-dd hh:mm:ss}|Productos|Actualizando datos caracteristicas");
            if (cambioCaracteristicas)
            {
                CaracteristicasAdapter.Actualizar(producto.Caracteristicas);
            }

            OBitacora.GuardarLinea($"{ DateTime.Now :yyyy-MM-dd hh:mm:ss}|Productos|Actualizando datos upcs");
            if (CambioUpcs)
            {
                UPCsAdapter.Actualizar(producto.UPCs);
            }

            if (!CambioProducto && (cambioDimensiones || cambioDimensionesPaquete || cambioResumen || cambioSimilares || cambioCaracteristicas || CambioUpcs))
            {
                ProductosAdapter.ActualizarBandera(producto.ASIN, true);
            }

            CambioProducto           = false;
            cambioDimensiones        = false;
            cambioDimensionesPaquete = false;
            cambioResumen            = false;
            cambioSimilares          = false;
            cambioCaracteristicas    = false;
            CambioUpcs = false;

            return(true);
        }
Beispiel #3
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 #4
0
 public bool ActualizarBuyBox(List <of.BuyBox> buyBoxes)
 {
     OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Actualizando datos BuyBox");
     if (CambioBuyBox)
     {
         BuyBoxAdapter.ActualizarBuyBox(buyBoxes);
         ProductosAdapter.ActualizarBandera(buyBoxes.First().ASIN, true);
     }
     CambioBuyBox = false;
     return(true);
 }
Beispiel #5
0
        private void ValidacionDatosProducto(Producto productoNuevo)
        {
            Producto productoViejo = ProductosAdapter.ObtenerProducto(productoNuevo.ASIN);
            List <CampoActualizado> lstCamposActualizado = productoNuevo.DetailedCompare(productoViejo);

            if (lstCamposActualizado.Count <= 0)
            {
                return;
            }
            productoActualizado.Campos.AddRange(lstCamposActualizado);
            CambioProducto = true;
            Cambio         = true;
        }
Beispiel #6
0
        public void GenerarProductosActualizados()
        {
            IEnumerable <Producto> lstProductos = ProductosAdapter.ObtenerProductosTodos().ToList();
            IEnumerable <string>   lstAsin      = lstProductos.Select(producto => producto.ASIN).ToList();

            if (!lstAsin.Any())
            {
                return;
            }
            var lstDataTable = new List <DataTable>();
            var oCorreo      = new Correo();

            var dtasins              = ASINAdapter.GetAllAsins().ConvertirADataTable("asin");
            var dtProductos          = lstProductos.ConvertirADataTable(Productos);
            var dtBuyBox             = BuyBoxAdapter.ObtenerCaracteristicasActualizados(lstAsin).ConvertirADataTable(Buybox);
            var dtCaracteristicas    = CaracteristicasAdapter.ObtenerCaracteristicasActualizados(lstAsin).ConvertirADataTable(Caracteristicas);
            var dtDimensiones        = DimensionesAdapter.ObtenerCaracteristicasActualizados(lstAsin).ConvertirADataTable(Dimensiones);
            var dtDimensionesPaquete = DimensionesPaqueteAdapter.ObtenerCaracteristicasActualizados(lstAsin).ConvertirADataTable(Dimensionespaquete);
            var dtResumen            = ResumenAdapter.ObtenerCaracteristicasActualizados(lstAsin).ConvertirADataTable(Resumen);
            var dtSimilares          = SimilaresAdapter.ObtenerCaracteristicasActualizados(lstAsin).ConvertirADataTable(Similares);
            var dtUpCs = UPCsAdapter.ObtenerCaracteristicasActualizados(lstAsin).ConvertirADataTable(Upcs);

            lstDataTable.Add(dtasins);
            lstDataTable.Add(dtProductos);
            lstDataTable.Add(dtBuyBox);
            lstDataTable.Add(dtResumen);
            lstDataTable.Add(dtCaracteristicas);
            lstDataTable.Add(dtDimensiones);
            lstDataTable.Add(dtDimensionesPaquete);
            lstDataTable.Add(dtSimilares);
            lstDataTable.Add(dtUpCs);

            var bytes = GenerarExcel(lstDataTable);

            var nombreArchivo = $"{DateTime.Now:yyyy-MM-dd HHmm} Productos Amazon.xlsx";
            var existoso      = oCorreo.EnviarMensaje(bytes, nombreArchivo);

            if (!existoso)
            {
                return;
            }
            foreach (var asin in lstAsin)
            {
                ProductosAdapter.ActualizarBandera(asin, false);
            }
        }
Beispiel #7
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}");
            }
        }
Beispiel #8
0
        private void ValidacionProductosAsin(ItemLookupResponse reponseAsin)
        {
            try
            {
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Revisando que la lista ASIN no tenga errores");
                if (reponseAsin.Items.First().Request.Errors != null)
                {
                    foreach (var error in reponseAsin.Items.First().Request.Errors)
                    {
                        if (error.Message !=
                            "Este artículo no es accesible mediante la API para publicidad de productos.")
                        {
                            OBitacora.GuardarLinea(
                                $"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error respuesta amazon producto|{error.Message}|");
                            if (!ProductosAdapter.Existe(error.Message.Split(' ').First()))
                            {
                                try
                                {
                                    if (ProductosAdapter.Existe(error.Message.Replace("\n", "").Split(' ').First()))
                                    {
                                        ProductosAdapter.Actualizar(new Producto
                                        {
                                            ASIN               = error.Message.Replace("\n", "").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
                                        });
                                    }
                                    else
                                    {
                                        ProductosAdapter.Insertar(new Producto
                                        {
                                            ASIN               = error.Message.Replace("\n", "").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)}");
                                }
                            }
                        }
                    }
                }
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Obteniendo elemento ASIN");
                var productosAsin = reponseAsin.Items.First();

                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Procesando elementos ASIN");
                ProcesarItems(productosAsin);
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Fin de proceso de elementos 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|{resultErrors} /{GetMessageError(ex)}|");
            }
            catch (Exception ex)
            {
                OBitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{GetMessageError(ex)}/{ex.StackTrace}|");
            }
        }
Beispiel #9
0
        private void ValidacionProductosUpc(ItemLookupResponse responseUpc)
        {
            try
            {
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Revisando que la lista UPC no tenga errores");
                if (responseUpc.Items.First().Request.Errors != null)
                {
                    foreach (var error in responseUpc.Items.First().Request.Errors)
                    {
                        OBitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|{error.Message}|");
                        if (!ProductosAdapter.Existe(error.Message.Split(' ').First()))
                        {
                            try
                            {
                                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) }");
                            }
                        }
                    }
                }
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Obteniendo elementos UPC");
                var productosUpc = responseUpc.Items.First();

                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Procesando elementos UPC");
                ProcesarItems(productosUpc);
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Fin proceso de elementos UPC");
            }
            catch (Exception ex)
            {
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error Productos|{GetMessageError(ex)}/{ex.StackTrace}");
            }
        }
Beispiel #10
0
        private void ProcesarAsin(IEnumerable <ASIN> lstAsins)
        {
            ItemLookupResponse responseAsin;

            OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Generando la lista de ASIN");
            var lstAsin = (from asin in lstAsins select asin.Id).ToList();

            OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Dividiendo la lista de ASIN en sublistas de 10");
            var subLstAsin = lstAsin
                             .Select((x, i) => new { Index = i, Value = x })
                             .GroupBy(x => x.Index / 10)
                             .Select(x => x.Select(v => v.Value.Replace("\r", "").Replace("\n", "")).ToList())
                             .ToList();

            subLstAsin.ForEach(lst =>
            {
                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Obteniendo datos de AWS de la lista ASIN");
                Thread.Sleep(2000);

                responseAsin = OAwsHelper.ItemLookUp(lst, ItemLookupRequestIdType.ASIN);
                if (responseAsin.Items.First().Item == null || responseAsin.Items.First().Item.Length != lst.Count)
                {
                    foreach (var item in lst)
                    {
                        if (responseAsin.Items.First().Item == null)
                        {
                            if (!ProductosAdapter.Existe(item))
                            {
                                ProductosAdapter.Insertar(new Producto
                                {
                                    ASIN   = item.Replace("\r\n", ""),
                                    Offers = "No esta disponible en la api"
                                });
                            }
                            else
                            {
                                ProductosAdapter.Actualizar(new Producto
                                {
                                    ASIN   = item,
                                    Offers = "No esta disponible en la api"
                                });
                            }
                            continue;
                        }
                        var response = responseAsin.Items.First().Item.Select(x => x.ASIN).ToList();
                        if (!response.Contains(item.Replace("\r\n", "")))
                        {
                            if (!ProductosAdapter.Existe(item.Replace("\r\n", "")))
                            {
                                ProductosAdapter.Insertar(new Producto
                                {
                                    ASIN   = item.Replace("\r\n", ""),
                                    Offers = "No esta disponible en la api"
                                });
                            }
                            else
                            {
                                ProductosAdapter.Actualizar(new Producto
                                {
                                    ASIN   = item.Replace("\r\n", ""),
                                    Offers = "No esta disponible en la api"
                                });
                            }
                        }
                    }
                }

                OBitacora.GuardarLinea($"{ DateTime.Now:yyyy-MM-dd hh:mm:ss}|Productos|Validando Productos ASIN");
                ValidacionProductosAsin(responseAsin);
            });
        }
Beispiel #11
0
        public void ActualizarCamposCompleto(string asin)
        {
            var product = ProductosAdapter.ObtenerProducto(asin);

            _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Obteniendo {asin} de netsuite");
            var internalId = ObtenerId(asin);

            if (internalId != null && !internalId.Equals("-1"))
            {
                product.Netsuite = "";
                ProductosAdapter.Actualizar(product);
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Buybox");
                try
                {
                    UpdateBuybox(product, internalId);
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Buybox Info");
                try
                {
                    UpdateBuyboxInfo(product.ASIN, internalId);
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Resumen ofertas");
                try
                {
                    UpdateResumenOfertas(product, internalId);
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Dimensiones");
                try
                {
                    UploadDimensiones(product.ASIN, internalId);
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Dimensiones paquete");
                try
                {
                    UploadDimensionesPaquete(product.ASIN, internalId);
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Similares");
                try
                {
                    UploadSimi(product.ASIN, internalId);
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Caracteristicas");
                try
                {
                    UploadCaracteristicas(product.ASIN, internalId);
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
            }
            else
            {
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Buybox");
                try
                {
                    UpdateBuybox(product, "");
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Buybox Info");
                try
                {
                    UpdateBuyboxInfo(product.ASIN, "");
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Resumen ofertas");
                try
                {
                    UpdateResumenOfertas(product, "");
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Dimensiones");
                try
                {
                    UploadDimensiones(product.ASIN, "");
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Dimensiones paquete");
                try
                {
                    UploadDimensionesPaquete(product.ASIN, "");
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Similares");
                try
                {
                    UploadSimi(product.ASIN, "");
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Reportando Caracteristicas");
                try
                {
                    UploadCaracteristicas(product.ASIN, "");
                }
                catch (Exception ex)
                {
                    _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|Error|{ex.Message}/{ex.StackTrace}");
                }
                var prod = ProductosAdapter.ObtenerProducto(asin);
                prod.Netsuite = "No existe en netsuite";
                ProductosAdapter.Actualizar(prod);
                _bitacora.GuardarLinea($"{DateTime.Now:yyyy-MM-dd hh:mm:ss}|El asin {asin} no existe en netsuite");
            }
        }
Beispiel #12
0
        public bool CargarAsinUpcs(string path)
        {
            try
            {
                ASINAdapter.DeleteTable();
                UPCAdapater.DeleteTable();
                ProductosAdapter.DeleteTable();
                var lstUpc = GenerarListaAsinUpcs(path);

                var lstAsin   = new List <string>();
                var lstUpcs   = new List <string>();
                var countAsin = 0;
                var countUpc  = 0;
                foreach (var upcs in lstUpc.Distinct())
                {
                    var asin = upcs[0];
                    var upc  = upcs[1];
                    if (asin.ToLower().Trim() == "asin" || asin.ToLower().Trim() == "upc")
                    {
                        continue;
                    }

                    if (!asin.Equals(""))
                    {
                        countAsin++;
                        if (!ASINAdapter.Existe(asin))
                        {
                            lstAsin.Add(asin.Trim());
                        }
                    }

                    if (upc.Equals(""))
                    {
                        continue;
                    }
                    countUpc++;
                    if (UPCAdapater.Existe(upc))
                    {
                        continue;
                    }
                    lstUpcs.Add(upc.Trim());
                }

                if (lstAsin.Any())
                {
                    ASINAdapter.AgregarAsiNs(lstAsin.Distinct(StringComparer.CurrentCultureIgnoreCase).Select(x => new ASIN {
                        Id = x
                    }).ToList());
                }
                if (lstUpcs.Any())
                {
                    UPCAdapater.agregarUPCs(lstUpcs.Distinct(StringComparer.CurrentCultureIgnoreCase).Select(x => new UPC {
                        Id = x
                    }).ToList());
                }

                File.Delete(path);
                MessageCount =
                    $"Total ASIN: {countAsin}\nIngresados en base:{lstAsin.Distinct(StringComparer.CurrentCultureIgnoreCase).Count()}\n" +
                    $"Total UPC: {countUpc}\nIngresados en base: {lstUpcs.Distinct(StringComparer.CurrentCultureIgnoreCase).Count()}";
                return(true);
            }
            catch (Exception ex)
            {
                ErrorMensaje = ex.Message;
                return(false);
            }
        }