viernes, 10 de julio de 2020

C# - Convertir string en XML



--
.Bc
--

  private XmlDocument ConvierteStringToXml(string xmlString)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.PreserveWhitespace = false;
            xmlDoc.LoadXml(xmlString);

            return xmlDoc;
        }

C# - Convertir Clase en xml (string)


--
.Bc
--
  public string ConvierteListaDeClaseContablidadToXmlString(List<DiarioContabilidad> contabilidadList)
        {
            XmlSerializer xsSubmit = new XmlSerializer(typeof(List<DiarioContabilidad>));
            var xml = "";

            using (var sww = new StringWriter())
            {
                using (XmlWriter writer = XmlWriter.Create(sww))
                {
                    xsSubmit.Serialize(writer, contabilidadList);
                    var a = sww;
                    xml = sww.ToString(); // TU XML STRING
                }
            }
            xml = ReemplazarTagRepetidosContabilidad(xml);
            return xml;
        }

C# - Servicio Web (.asmx ) Asyncrono


--
Framework 4.6.1
--
.asmx
--
[WebMethod]
        public string IntegracionContabilidad(DateTime fecha)
        {
            var dateTimeNow = DateTime.Now.ToString().Replace(" ", "").Replace("-", "").Replace("/", "").Replace(":", "");
            var filePath = "C://IntegracionesContables//IntegracionContabilidad_" + dateTimeNow + ".xml";
            var filePathReturn = "IntegracionContabilidad_" + dateTimeNow + ".xml";

            new IntegracionesContabilidasBc().GetIntegracionContabilidad(fecha, filePath, filePathReturn);
           //este retorno es inmediato (async)
            return filePathReturn;
        }
--
.BC
--
 //Async indica que se hará una llamada asincrona
        public async void GetIntegracionContabilidad(DateTime fecha, string filePath, string filePathReturn)
        {
            //inicializo, e indico que tarea(s) se va(n) a realizar
            var task = GetIc(fecha, filePath, filePathReturn);
            //Inicio la Tarea
            task.Start();
            //Activo el await para retornar control a método que nos invocó (IntegracionContabilidad), con un Delay de un milisegundo para que vuelva de inmediato       
            await Task.Delay(1);
        }

//declarado como Task.
  public Task<string> GetIc(DateTime fecha, string filePath, string filePathReturn)
        {
            return new Task<string>(() =>
            {
                var dt = new IntegracionesContabilidadDac().GetIntegracionContabilidad(fecha);
                var structListClass = MapeoContabilidadDataTableToListClass(dt);

                var xmlString = ConvierteListaDeClaseContablidadToXmlString(structListClass);
                var xmlDoc = ConvierteStringToXml(xmlString);
                xmlDoc.Save(filePath);
                return "OK";
            });
        }

SQL - Eliminar registros duplicados en una tabla SQL



--

WITH FUENTE AS (
SELECT ROW_NUMBER() OVER(PARTITION BY Col1,Col2,Col3 ORDER BY (SELECT NULL)) AS R_ID,Col1,Col2,Col3
  FROM MyTable) DELETE FROM FUENTE WHERE R_ID > 1;


--

ejemplo práctico:


WITH FUENTE AS (
SELECT ROW_NUMBER() OVER(PARTITION BY tipo, num_factura ORDER BY (SELECT NULL)) AS R_ID,tipo, num_factura
  FROM leaseoper..t_facturas_joel_borrar) DELETE FROM FUENTE WHERE R_ID > 1;