Ejemplo n.º 1
0
    /// <summary>
    /// Permite la busqueda de las transacciones de un SKU
    /// </summary>
    /// <param name="mP">Cadena XML donde se encuentran los datos de la tabla GNB_TRANSAC</param>
    /// <param name="Busqueda">SKU A Buscar</param>
    /// <returns>TODAS LAS TRANSACCIONES REALIZADAS CON ESE SKU</returns>
    public string BuscarTransacciones(string mP, string Busqueda)
    {
        Transac TransaccionABuscar = new Transac();

        TransaccionABuscar.Sku = Busqueda;

        XmlSerializer     pSerializador             = new XmlSerializer(typeof(TransacCollection));
        StringReader      lector                    = new StringReader(mP);
        TransacCollection pTransaccionesEncontradas = (TransacCollection)pSerializador.Deserialize(lector);

        TransacCollection pTransaccionesCoincidiencias = new TransacCollection();

        NumberFormatInfo proveedorDecimal = new NumberFormatInfo();

        proveedorDecimal.NumberDecimalSeparator = "."; //se asigna el punto como separador

        foreach (Transac indice in pTransaccionesEncontradas)
        {
            Transac iComun = new Transac();
            if (TransaccionABuscar.Sku == indice.Sku)
            {
                iComun.Id_Product = indice.Id_Product;
                iComun.Sku        = indice.Sku;
                iComun.Amount     = Convert.ToDouble(indice.Amount, proveedorDecimal);
                iComun.Currency   = indice.Currency;
                pTransaccionesCoincidiencias.Add(iComun);
            }
        }

        StringWriter escritor = new StringWriter();

        pSerializador.Serialize(escritor, pTransaccionesCoincidiencias);
        return(escritor.ToString());
    }
Ejemplo n.º 2
0
    /// <summary>
    /// se OBTIENEN o RECUPERAN todos los elementos dentro de la tabla GNB_TRANSAC
    /// </summary>
    /// <returns>candena de caracteres XML que contienen los elementos dentro de la tabla</returns>
    public string ObtenerTransacciones()
    {
        ServicioTransacciones pServicioProductos   = new ServicioTransacciones();             //se crea una instancia del servicio
        List <GNB_TRANSAC>    pProductos           = pServicioProductos.ObtenerTransaccion(); //se crea una lista que almacena los elementos dentro de la tabla
        TransacCollection     pProductosCollection = new TransacCollection();                 //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 asigna el punto como separador


        //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_TRANSAC indice in pProductos)
        {
            Transac iComun = new Transac();
            iComun.Id_Product = indice.ID_PRODUCT;
            iComun.Sku        = indice.SKU;
            iComun.Amount     = Convert.ToDouble(indice.AMOUNT, proveedorDecimal);
            iComun.Currency   = indice.CURRENCY;
            pProductosCollection.Add(iComun);
        }

        XmlSerializer pSerializador = new XmlSerializer(typeof(TransacCollection)); //se crea un serializador de tipo colection (lista)
        StringWriter  escritor      = new StringWriter();                           //se instancia un nuevo escritor de cadenas

        pSerializador.Serialize(escritor, pProductosCollection);                    //se serializa la cadena
        return(escritor.ToString());                                                //se retorna el escritor de tipo string
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Consulta a un LINK de HEROKU por los parametros de SKU, AMOUNT y CURRENCY
    /// 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 ConsultaXMLTransac(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

        TransacCollection pTransaccionesCollection = new TransacCollection();

        for (int pNodos = 0; pNodos < Nodos.Count; pNodos++)
        {
            Transac pTransac = new Transac();

            XmlNode      NodoActual = Nodos.Item(pNodos);
            XmlElement   Dato       = (XmlElement)NodoActual;
            XmlAttribute Atributo1  = Dato.GetAttributeNode("sku");
            XmlAttribute Atributo2  = Dato.GetAttributeNode("amount");
            XmlAttribute Atributo3  = Dato.GetAttributeNode("currency");

            pTransac.Id_Product = pNodos + 1;
            pTransac.Sku        = Atributo1.InnerText.ToString();
            pTransac.Amount     = Convert.ToDouble(Atributo2.InnerText.ToString(), proveedorDecimal);
            pTransac.Currency   = Atributo3.InnerText.ToString();

            pTransaccionesCollection.Add(pTransac);
        }

        XmlSerializer pSerializador = new XmlSerializer(typeof(TransacCollection));
        StringWriter  escritor      = new StringWriter();

        pSerializador.Serialize(escritor, pTransaccionesCollection);
        return(escritor.ToString());
    }
Ejemplo n.º 4
0
    /// <summary>
    /// Obtiene una lista de transacciones (SKU) dentro de una cadena XML
    /// </summary>
    /// <param name="mTransaccionesXML">Una cadena XML que almacena datos de Transacciones</param>
    /// <returns>los elementos SKU dentro de la tabla</returns>
    public string ListaTransacciones(string mTransaccionesXML)
    {
        //segmento para deserializar la cadena de caracteres pasada como parametro
        XmlSerializer     pSerializador     = new XmlSerializer(typeof(TransacCollection));
        StringReader      lector            = new StringReader(mTransaccionesXML);
        TransacCollection pTransaccionesXML = (TransacCollection)pSerializador.Deserialize(lector);

        TransacCollection pTransaccionesExtraidas = new TransacCollection(); //elemento buffer de las transacciones solicitadas

        NumberFormatInfo proveedorDecimal = new NumberFormatInfo();

        proveedorDecimal.NumberDecimalSeparator = "."; //se asigna el punto como separador

        //ciclo para recorrer los elementos dentro del XML y crear un buffer con solo un SKU por elemento existente
        for (int index1 = 0; index1 < pTransaccionesXML.Count; index1++)
        {
            Transac Fila = pTransaccionesXML.ElementAt(index1);
            for (int index2 = 0; index2 <= pTransaccionesExtraidas.Count; index2++)
            {
                //si el objeto "pTransaccionesExtraidas esta vacio entonces guarda el primer elemento
                if (pTransaccionesExtraidas.Count == 0)
                {
                    Transac FilaAuxiliar = new Transac();
                    FilaAuxiliar.Id_Product = Fila.Id_Product;
                    FilaAuxiliar.Sku        = Fila.Sku;
                    FilaAuxiliar.Amount     = Fila.Amount;
                    FilaAuxiliar.Currency   = Fila.Currency;
                    pTransaccionesExtraidas.Add(FilaAuxiliar);
                    break;
                }
                else if (index2 == pTransaccionesExtraidas.Count)
                {
                    break;                                               //si el elemento a evaluar es el ultimo se salta (ya que el recorrido debe ser menor al .count del objeto ya que comienza en 0)
                }
                else
                {
                    Transac FilaInterna = new Transac();//objeto que servira de buffer momentaneo

                    //se pregunta con una consulta si el SKU existe dentro del buffer al menos una vez
                    //si no existe entonces se guarda
                    if (pTransaccionesExtraidas.Any(o => o.Sku == Fila.Sku))
                    {
                        break;
                    }
                    else
                    {
                        FilaInterna.Id_Product = Fila.Id_Product;
                        FilaInterna.Sku        = Fila.Sku;
                        FilaInterna.Amount     = Fila.Amount;
                        FilaInterna.Currency   = Fila.Currency;
                        pTransaccionesExtraidas.Add(FilaInterna);
                        break;
                    }
                }
            }
        }

        //segmento para serializar el resultado y enviarlo como cadena de caracteres
        StringWriter escritor = new StringWriter();

        pSerializador.Serialize(escritor, pTransaccionesExtraidas);
        return(escritor.ToString());
    }