Beispiel #1
0
        public ProductoQuery verProductoPorSKU(string sku)
        {
            ProductoQuery productoQ = null;

            try
            {
                Producto producto = _ufwProductos.Repository <Producto>().Find(new ProductoSKUSpecification(sku)).FirstOrDefault();

                if (producto != null)
                {
                    productoQ = this._utils.Convert_Producto_To_Query(producto);

                    if (producto.IndExterno)
                    {
                        Producto p = this._ufwProductos.IIntegrationProveedores().consultarProducto(sku);

                        if (p != null)
                        {
                            productoQ = this._utils.Convert_Producto_To_Query(p);
                        }
                    }
                }
                else
                {
                    throw new Exception("No se ha encontrado el Producto");
                }
            }
            catch (Exception e)
            {
                _AuditoriaCatalogos log = new _AuditoriaCatalogos("INTEGRACIÓN REQUEST EXCEPTION", "", true, "", "", this.ToString(), e.Message, e.StackTrace, "", "");
                _log.Repository <_AuditoriaCatalogos>().InsertOne(log);
            }

            return(productoQ);
        }
Beispiel #2
0
        public void ProcesarEstadoProducto(EventBase <EstadoProductoCmd> EventoEstado)
        {
            bool EsError = true;
            var  jrq     = JsonConvert.SerializeObject(EventoEstado);
            var  jrp     = "";

            if (!(_ufwLog.Repository <_AuditoriaCatalogos>().Contains(new LogCatalogosSpecification(EventoEstado.Data.SKU, jrq))))
            {
                try
                {
                    Producto producto = _ufwProductos.Repository <Producto>().Find(new ProductoSKUSpecification(EventoEstado.Data.SKU)).FirstOrDefault();

                    if ((producto != null))
                    {
                        producto.Estado          = EventoEstado.Data.Estado;
                        producto.EnAlmacen       = EventoEstado.Data.EnAlmacen;
                        producto.NivelInventario = EventoEstado.Data.NivelInventario;

                        //Persistencia
                        _ufwProductos.Repository <Producto>().ReplaceOne(producto);
                        EsError = false;

                        jrp = JsonConvert.SerializeObject(producto);
                    }
                    else
                    {
                        throw new Exception("No se ha encontrado el producto");
                    }
                }
                catch (Exception e)
                {
                    jrp = JsonConvert.SerializeObject(e);
                }


                //Auditoría


                _AuditoriaCatalogos log = new _AuditoriaCatalogos("EstadoActualizado", EventoEstado.Data.SKU, EsError, EventoEstado.Usuario, MethodInfo.GetCurrentMethod().Name, this.ToString(), jrq, jrp, "", "SKU: " + EventoEstado.Data.SKU + "   NivelInventario: " + EventoEstado.Data.NivelInventario.ToString() + "");

                _ufwLog.Repository <_AuditoriaCatalogos>().InsertOne(log);
            }
            else
            {
                //Ya fue ejecutada
            }
        }
Beispiel #3
0
        public IEnumerable <ProductoQuery> verRankingCatalogo(string codigoCatalogo, int skip, int take)
        {
            if (take <= 0)
            {
                throw new Exception("La variable take debe tener valor positivo");
            }

            IEnumerable <ProductoQuery> productosQ = new List <ProductoQuery>();

            try
            {
                IEnumerable <Producto> productos = _ufwProductos.Repository <Producto>().Find(new ProductoSpecification(codigoCatalogo, true)).AsEnumerable();

                productos = productos.OrderByDescending(p => p.Calificacion).Skip(skip).Take(take);

                productosQ = this._utils.ConvertList_Producto_To_Query(productos);

                Catalogo catalogo = _ufwCatalogos.Repository <Catalogo>().Find(new CatalogoSpecification(codigoCatalogo)).FirstOrDefault();


                if ((catalogo != null) && (catalogo.IndExterno) && (catalogo.Proveedor != null))
                {
                    List <Producto> ps = this._ufwProductos.IIntegrationProveedores().consultarProductosProveedor(catalogo.Proveedor.IdProveedor).ToList();

                    if (ps != null)
                    {
                        productosQ = this._utils.ConvertList_Producto_To_Query(ps);
                    }
                }
            }
            catch (Exception e)
            {
                _AuditoriaCatalogos log = new _AuditoriaCatalogos("INTEGRACIÓN REQUEST EXCEPTION", "", true, "", "", this.ToString(), e.Message, e.StackTrace, "", "");
                _log.Repository <_AuditoriaCatalogos>().InsertOne(log);
            }

            return(productosQ);
        }
Beispiel #4
0
        private void Start(CancellationToken stoppingToken)
        {
            try
            {
                CancellationTokenSource cts = new CancellationTokenSource();
                Console.CancelKeyPress += (_, e) =>
                { e.Cancel = true;
                  cts.Cancel(); };

                using (var c = new ConsumerBuilder <string, string>(this._consumerConfig).Build())
                {
                    c.Subscribe("TP_Inventario");

                    while (!stoppingToken.IsCancellationRequested)
                    {
                        _AuditoriaCatalogos log = null;

                        using (var scope = this._serviceProvider.CreateScope())
                        {
                            _productosServiceCmd = (IProductosServiceCmd)scope.ServiceProvider.GetRequiredService(typeof(IProductosServiceCmd));
                            _log = (IUnitOfWork <_AuditoriaCatalogos>)scope.ServiceProvider.GetRequiredService(typeof(IUnitOfWork <_AuditoriaCatalogos>));

                            try
                            {
                                var cr = c.Consume(cts.Token);

                                _logger.LogInformation($"\n\n");
                                _logger.LogInformation($"--------------------------------------------------{DateTime.Now}\n");
                                _logger.LogInformation($"TOPIC:  '{cr.Topic}'  EVENTO: '{cr.Key}'   MENSAJE CONSUMIDO:  '{cr.Value}'  \n");

                                //log = new _AuditoriaInventarios("TOPIC", "", false, "", "sad", this.ToString(), $"TOPIC:  '{cr.Topic}'  EVENTO: '{cr.Key}'   MENSAJE CONSUMIDO:  '{cr.Value}' ", "", "", "");
                                //_log.Repository<_AuditoriaInventarios>().InsertOne(log);


                                switch (cr.Topic)
                                {
                                case "TP_Inventario":


                                    switch (cr.Key)
                                    {
                                    case "EstadoActualizado":

                                        EventBase <EstadoProductoCmd> eventoEstado = JsonConvert.DeserializeObject <EventBase <EstadoProductoCmd> >(cr.Value);
                                        this._productosServiceCmd.ProcesarEstadoProducto(eventoEstado);

                                        break;

                                    default:
                                        throw new Exception("Evento no identificado");
                                    }

                                    break;

                                default:

                                    break;
                                }
                            }

                            catch (Exception e)
                            {
                                log = new _AuditoriaCatalogos("TOPIC PROCESO EXCEPTION", "", true, "", "", this.ToString(), e.Message, e.StackTrace, "", "");
                                _log.Repository <_AuditoriaCatalogos>().InsertOne(log);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                _logger.LogError($"MENSAJE:  '{e.Message}'  STACKTRACE:  '{e.StackTrace}' \n\n\n");
            }
        }