/// <summary> /// Servicio que permite AGREGAR la tabla GNB_CONVERSIONES con elementos dentro de un String de tipo XML /// </summary> /// <param name="mC">Cadena de caracteres de tipo XML</param> public void AgregarConversiones(string mC) { ServicioConversiones pServicioProductos = new ServicioConversiones(); //servicio que permite comunicar con BD XmlSerializer pSerializador = new XmlSerializer(typeof(ConversionesCollection)); //objeto que recibira los elementos serializados StringReader lector = new StringReader(mC); //se crea un lector el cual recibira los datos des-serializados ConversionesCollection pConversiones = (ConversionesCollection)pSerializador.Deserialize(lector); //se castea el des-serializador y se obtienen los elementos //PROVEEDOR DE SIGNO DECIMAL NumberFormatInfo proveedorDecimal = new NumberFormatInfo(); proveedorDecimal.NumberDecimalSeparator = "."; for (int indice = 0; indice < pConversiones.Count; indice++) { GNB_CONVERSIONES pDatos = new GNB_CONVERSIONES(); //se instancea la tabla que contiene los campos a modificar Conversiones pConversion = pConversiones.ElementAt(indice); //ALMACENAMIENTO DE VARIABLES DESERIALIZADAS pDatos.ID_CONVERSION = indice + 1; pDatos.FROM_CURRENCY = pConversion.From_Currency; pDatos.TO_CURRENCY = pConversion.To_Currency; pDatos.RATE = Convert.ToDecimal(pConversion.Rate, proveedorDecimal); //se agregan los productos al servicio pServicioProductos.AgregarConversiones(pDatos); } }
/// <summary> /// se OBTIENEN o RECUPERAN todos los elementos dentro de la tabla GNB_CONVERSIONES /// </summary> /// <returns>candena de caracteres XML que contienen los elementos dentro de la tabla</returns> public string ObtenerConversiones() { ServicioConversiones pServicioConversiones = new ServicioConversiones(); //se crea una instancia del servicio List <GNB_CONVERSIONES> pConversiones = pServicioConversiones.ObtenerConversiones(); //se crea una lista que almacena los elementos dentro de la tabla ConversionesCollection pConversionesCollection = new ConversionesCollection(); //se crea una instancia del la lista donde deberan estar los elementos de la base de datos //PROVEEDOR DE SIGNO DECIMAL NumberFormatInfo proveedorDecimal = new NumberFormatInfo(); proveedorDecimal.NumberDecimalSeparator = "."; //se realiza un ciclo donde cada elemento se traspasara desde la base de datos hasta el objeto que lo contendra //este objeto es la instancia de tipo "collection" foreach (GNB_CONVERSIONES indice in pConversiones) { Conversiones iComun = new Conversiones(); iComun.Id_Conversion = indice.ID_CONVERSION; iComun.From_Currency = indice.FROM_CURRENCY; iComun.To_Currency = indice.TO_CURRENCY; iComun.Rate = Convert.ToDouble(indice.RATE, proveedorDecimal); pConversionesCollection.Add(iComun); } XmlSerializer pSerializador = new XmlSerializer(typeof(ConversionesCollection)); //se crea un serializador de tipo colection (lista) StringWriter escritor = new StringWriter(); //se instancia un nuevo escritor de cadenas pSerializador.Serialize(escritor, pConversionesCollection); //se serializa la cadena return(escritor.ToString()); //se retorna el escritor de tipo string }
/// <summary> /// Consulta a un LINK de HEROKU por los parametros de FROM, TO y RATE /// para luego crear una cadena de datos para trabajar con ella /// </summary> /// <param name="xmlLink">debe ser el link de heroku de las transacciones</param> /// <returns>Cadena de caracteres con el contenido del documento XML serializado</returns> public string ConsultaXMLConver(string xmlLink) { XmlDocument DocumentoXml = new XmlDocument(); //variable para almacenar un link y abrirlo como XML DocumentoXml.Load(xmlLink); //carga el archivo XML XmlElement ElementoRaiz = DocumentoXml.DocumentElement; //elemento raiz principal XmlNodeList Nodos = ElementoRaiz.ChildNodes; //hijos de ese raiz NumberFormatInfo proveedorDecimal = new NumberFormatInfo(); //tipo de decimal proveedorDecimal.NumberDecimalSeparator = "."; //se asigna el punto como separador decimal ConversionesCollection pConversionesCollection = new ConversionesCollection(); //es donde se almacenaran las conversiones encontradas en el XML //ciclo para recorrer los nodos dentro de la consulta XML for (int pNodos = 0; pNodos < Nodos.Count; pNodos++) { Conversiones pConversion = new Conversiones(); XmlNode NodoActual = Nodos.Item(pNodos); XmlElement Dato = (XmlElement)NodoActual; XmlAttribute Atributo1 = Dato.GetAttributeNode("from"); XmlAttribute Atributo2 = Dato.GetAttributeNode("to"); XmlAttribute Atributo3 = Dato.GetAttributeNode("rate"); pConversion.Id_Conversion = pNodos + 1; pConversion.From_Currency = Atributo1.InnerText.ToString(); pConversion.To_Currency = Atributo2.InnerText.ToString(); pConversion.Rate = Convert.ToDouble(Atributo3.InnerText.ToString(), proveedorDecimal); pConversionesCollection.Add(pConversion); } //segmento para seriralizar los resultados y entregar una cadena de caracteres XmlSerializer pSerializador = new XmlSerializer(typeof(ConversionesCollection)); StringWriter escritor = new StringWriter(); pSerializador.Serialize(escritor, pConversionesCollection); return(escritor.ToString()); }