Beispiel #1
0
 private void LogXmlIntegrityError(string campo, TipoXmlAProcesar tipo, Guid guid)
 {
     LoggingHelper.Instance.AgregarLog(new LogProcesoEntity(guid, OrdenesApplication.Instance.SessionUsuarioProceso.IdUsuario)
     {
         Fecha = DateTime.Now, IdLogCodigoAccion = (byte)LogCodigoAccion.ProcesadoXMLConError, Descripcion = "Importar: " + tipo + $".Msg: El campo {campo} no se encuentra en el archivo XML", IdUsuario = MAEUserSession.Instancia.IdUsuario
     });
 }
Beispiel #2
0
        private bool ReadXmlNodes <T>(XmlNodeList xmlnodes, TipoXmlAProcesar tipo, List <T> entities, Guid guid)
        {
            foreach (XmlNode node in xmlnodes)
            {
                object entity = null;
                switch (tipo)
                {
                case TipoXmlAProcesar.Clientes:
                    entity = MapXmlNodeToClienteXMLEntity(node, guid);
                    break;

                case TipoXmlAProcesar.Productos:
                    entity = MapXmlNodeToProductoXMLEntity(node, guid);
                    break;

                case TipoXmlAProcesar.Saldos:
                    entity = MapXmlNodeToSaldoXMLEntity(node, guid);
                    break;
                }

                if (entity == null)
                {
                    return(true);
                }
                entities.Add((T)(object)entity);
            }
            return(false);
        }
Beispiel #3
0
        private void ProcessXml(TipoXmlAProcesar tipoXml, Guid guid)
        {
            Clock.Stop();
            string subPath    = string.Empty;
            string parentNode = string.Empty;
            string prefix     = string.Empty;


            // Get File Path
            switch (tipoXml)
            {
            case TipoXmlAProcesar.Clientes:
                subPath    = "Clientes";
                parentNode = "BEPersonasParticipantes";
                break;

            case TipoXmlAProcesar.Productos:
                subPath    = "Productos";
                parentNode = "BEProductos";
                break;

            case TipoXmlAProcesar.Saldos:
                subPath    = "Saldos";
                parentNode = "SaldoEntity";
                break;

            default:
                break;
            }

            prefix = parentNode;


            var path = Path.Combine(BasePath, subPath);

            if (!Directory.Exists(path))
            {
                return;
            }

            MAEUserSession.CargarInstancia(OrdenesApplication.Instance.SessionUsuarioProceso);

            var file = Directory.GetFiles(path).FirstOrDefault();

            if (file == null)
            {
                return;
            }

            var         xmldoc = new XmlDocument();
            XmlNodeList xmlnodes;

            var hasErrors = false;
            var filename  = string.Empty;

            try
            {
                using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
                {
                    xmldoc.Load(fs);
                    xmlnodes = xmldoc.GetElementsByTagName(parentNode);

                    if (xmlnodes.Count > 0)
                    {
                        switch (tipoXml)
                        {
                        case TipoXmlAProcesar.Clientes:
                            var clientes = new List <ClienteXMLEntity>();
                            hasErrors = ReadXmlNodes <ClienteXMLEntity>(xmlnodes, TipoXmlAProcesar.Clientes, clientes, guid);
                            if (hasErrors)
                            {
                                break;
                            }
                            SendXmlToDAL(clientes, TipoXmlAProcesar.Clientes);
                            break;

                        case TipoXmlAProcesar.Productos:
                            var productos = new List <ProductoXMLEntity>();
                            hasErrors = ReadXmlNodes <ProductoXMLEntity>(xmlnodes, TipoXmlAProcesar.Productos, productos, guid);
                            if (hasErrors)
                            {
                                break;
                            }
                            SendXmlToDAL(productos, TipoXmlAProcesar.Productos);
                            break;

                        case TipoXmlAProcesar.Saldos:
                            var saldos = new List <SaldoXMLEntity>();
                            hasErrors = ReadXmlNodes <SaldoXMLEntity>(xmlnodes, TipoXmlAProcesar.Saldos, saldos, guid);
                            if (hasErrors)
                            {
                                break;
                            }
                            SendXmlToDAL(saldos, TipoXmlAProcesar.Saldos);
                            break;

                        default:
                            break;
                        }
                    }
                    var date = DateTime.Now;
                    if (hasErrors)
                    {
                        if (!Directory.Exists(Path.Combine(BasePath, subPath, "NoProcesados")))
                        {
                            Directory.CreateDirectory(Path.Combine(BasePath, subPath, "NoProcesados"));
                        }
                        filename = Path.Combine(BasePath, subPath, "NoProcesados", $"{prefix}{date.Year}{date.Month}{date.Day}{date.Hour}{date.Minute}.xml");
                    }
                    else
                    {
                        if (!Directory.Exists(Path.Combine(BasePath, subPath, "Procesados")))
                        {
                            Directory.CreateDirectory(Path.Combine(BasePath, subPath, "Procesados"));
                        }
                        filename = Path.Combine(BasePath, subPath, "Procesados", $"{prefix}{date.Year}{date.Month}{date.Day}{date.Hour}{date.Minute}.xml");
                        LoggingHelper.Instance.AgregarLog(new LogProcesoEntity(guid, OrdenesApplication.Instance.SessionUsuarioProceso.IdUsuario)
                        {
                            Fecha = DateTime.Now, IdLogCodigoAccion = (byte)LogCodigoAccion.ProcesadoXMLCorrectamente, Descripcion = "Importar: " + tipoXml + ".Nombre Archivo: " + filename, IdUsuario = MAEUserSession.Instancia.IdUsuario
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                hasErrors = true;
                var date = DateTime.Now;
                if (!Directory.Exists(Path.Combine(BasePath, subPath, "NoProcesados")))
                {
                    Directory.CreateDirectory(Path.Combine(BasePath, subPath, "NoProcesados"));
                }
                filename = Path.Combine(BasePath, subPath, "NoProcesados", $"{prefix}{date.Year}{date.Month}{date.Day}{date.Hour}{date.Minute}.xml");
                LoggingHelper.Instance.AgregarLog(new LogProcesoEntity(guid, OrdenesApplication.Instance.SessionUsuarioProceso.IdUsuario)
                {
                    Fecha = DateTime.Now, IdLogCodigoAccion = (byte)LogCodigoAccion.ProcesadoXMLConError, Descripcion = "Importar: " + tipoXml + ".Msg: " + ex.Message, Exception = ex, IdUsuario = MAEUserSession.Instancia.IdUsuario
                });
            }
            finally
            {
                var date = DateTime.Now;
                var dest = Path.Combine(BasePath, subPath, filename);
                File.Copy(file, dest);
                File.Delete(file);
            }
        }
Beispiel #4
0
        private void SendXmlToDAL(object entities, TipoXmlAProcesar tipo)
        {
            List <SqlParameter> lista;

            using (var ts = new TransactionScope())
            {
                switch (tipo)
                {
                case TipoXmlAProcesar.Clientes:
                    var clientes = entities as List <ClienteXMLEntity>;

                    foreach (ClienteXMLEntity node in clientes)
                    {
                        lista = new List <SqlParameter>();
                        lista.Add(SqlServerHelper.GetParam("@NroDocumento", node.NroDocumento));
                        lista.Add(SqlServerHelper.GetParam("@NombrePersona", node.NombrePersona));
                        lista.Add(SqlServerHelper.GetParam("@NroCliente", node.NroCliente));
                        lista.Add(SqlServerHelper.GetParam("@TipoPersona", (int)TipoPersonas.CLIENTE));
                        lista.Add(SqlServerHelper.GetParam("@IdPersoneriaJuridica", (byte)PersoneriaJuridica.PERSONA_FISICA));
                        lista.Add(SqlServerHelper.GetParam("@NroIdentificacionTributaria", node.NroIdentificacionTributaria));
                        lista.Add(SqlServerHelper.GetParam("@CodEmpresa", node.CodEmpresa));
                        lista.Add(SqlServerHelper.GetParam("@Telefono", node.Telefono));
                        PersonasDAL.ProcessFromXml(lista);
                    }
                    break;

                case TipoXmlAProcesar.Productos:
                    var productos = entities as List <ProductoXMLEntity>;
                    foreach (ProductoXMLEntity node in productos)
                    {
                        lista = new List <SqlParameter>();
                        lista.Add(SqlServerHelper.GetParam("@Codigo", node.Codigo));
                        lista.Add(SqlServerHelper.GetParam("@Descripcion", node.Descripcion));
                        lista.Add(SqlServerHelper.GetParam("@CodMoneda", node.CodMoneda));
                        lista.Add(SqlServerHelper.GetParam("@CodMercado", node.CodMercado));
                        lista.Add(SqlServerHelper.GetParam("@ISIN", node.ISIN));
                        lista.Add(SqlServerHelper.GetParam("@Habilitado", node.Habilitado));
                        ProductosDAL.ProcessFromXml(lista);
                    }
                    break;

                case TipoXmlAProcesar.Saldos:
                    var saldos = entities as List <SaldoXMLEntity>;
                    foreach (SaldoXMLEntity node in saldos)
                    {
                        lista = new List <SqlParameter>();
                        lista.Add(SqlServerHelper.GetParam("@CodCliente", node.CodCliente));
                        lista.Add(SqlServerHelper.GetParam("@CodEmpresa", node.CodEmpresa));
                        lista.Add(SqlServerHelper.GetParam("@TipoProducto", node.TipoProducto));
                        lista.Add(SqlServerHelper.GetParam("@CodigoProducto", node.CodigoProducto));
                        lista.Add(SqlServerHelper.GetParam("@DescripcionProducto", node.DescripcionProducto));
                        lista.Add(SqlServerHelper.GetParam("@Cantidad", node.Cantidad));
                        lista.Add(SqlServerHelper.GetParam("@Precio", node.Precio));
                        lista.Add(SqlServerHelper.GetParam("@Monto", node.Monto));
                        lista.Add(SqlServerHelper.GetParam("@Moneda", node.Moneda));
                        SaldosDAL.ProcessFromXml(lista);
                    }
                    break;

                default:
                    break;
                }

                ts.Complete();
            }
        }