Пример #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());
    }
Пример #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
    }
Пример #3
0
    /// <summary>
    /// Servicio que permite AGREGAR la tabla GNB_TRANSAC con elementos dentro de un String de tipo XML
    /// </summary>
    /// <param name="mC">Cadena de caracteres de tipo XML</param>
    public void AgregarTransacciones(string mP)
    {
        ServicioTransacciones pServicioProductos = new ServicioTransacciones();                  //servicio que permite comunicar con BD

        XmlSerializer     pSerializador  = new XmlSerializer(typeof(TransacCollection));         //objeto que recibira los elementos serializados
        StringReader      lector         = new StringReader(mP);                                 //se crea un lector el cual recibira los datos des-serializados
        TransacCollection pTransacciones = (TransacCollection)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 < pTransacciones.Count; indice++)
        {
            GNB_TRANSAC pDatos       = new GNB_TRANSAC(); //se instancea la tabla que contiene los campos a modificar
            Transac     pTransaccion = pTransacciones.ElementAt(indice);

            //ALMACENAMIENTO DE VARIABLES DESERIALIZADAS
            pDatos.ID_PRODUCT = indice + 1;
            pDatos.SKU        = pTransaccion.Sku;
            pDatos.AMOUNT     = Convert.ToDecimal(pTransaccion.Amount, proveedorDecimal);
            pDatos.CURRENCY   = pTransaccion.Currency;

            //se agregan los productos al servicio
            pServicioProductos.AgregarTransaccion(pDatos);
        }
    }
Пример #4
0
        public async Task <IActionResult> OnPostAsync()
        {
            await Task.Run(async() =>
            {
                string username = userManager.GetUserName(User);
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        IEnumerable <Cart> cartitem = cartdb.GetByCartId(username);
                        var transactionOrder        = new Transac
                        {
                            Username  = username,
                            OrderDate = DateTime.Now
                        };
                        transactiondb.Add(transactionOrder);
                        await transactiondb.CommitAsync();
                        foreach (var r in cartitem)
                        {
                            var orderdetail = new OrderDetail
                            {
                                OrderId    = transactionOrder.OrderId,
                                GameId     = r.GameId,
                                PlatformId = r.PlatformId,
                                Quantity   = r.Quantity,
                            };
                            orderdetaildb.Add(orderdetail);
                            await orderdetaildb.CommitAsync();

                            //Generate code
                            for (var i = 0; i < orderdetail.Quantity; i++)
                            {
                                var codeidgenerated = Guid.NewGuid().ToString();
                                var code            = new Code
                                {
                                    CodeId     = codeidgenerated,
                                    OrderId    = orderdetail.OrderId,
                                    GameId     = orderdetail.GameId,
                                    PlatformId = orderdetail.PlatformId
                                };
                                codedb.Add(code);
                                await codedb.CommitAsync();
                            }
                        }

                        cartdb.DeleteItemInCart(username);
                        await cartdb.CommitAsync();

                        await transaction.CommitAsync();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        await transaction.RollbackAsync();
                    }
                }
            });

            return(RedirectToPage("../u/Library"));
        }
Пример #5
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());
    }
Пример #6
0
    /// <summary>
    /// Servicio que permite ACTUALIZAR la tabla GNB_TRANSAC con elementos dentro de un String de tipo XML
    /// </summary>
    /// <param name="mC">Cadena de caracteres de tipo XML</param>
    public void ActualizarTransacciones(string mP)
    {
        XmlSerializer         pSerializador      = new XmlSerializer(typeof(Transac));         //objeto que recibira los elementos serializados
        StringReader          lector             = new StringReader(mP);                       //se crea un lector el cual recibira los datos des-serializados
        Transac               pTransac           = (Transac)pSerializador.Deserialize(lector); //se castea el des-serializador y se obtienen los elementos
        ServicioTransacciones pServicioProductos = new ServicioTransacciones();                //se crea un objeto de clase ServicioProductos
        GNB_TRANSAC           pDatos             = new GNB_TRANSAC();                          //se instancea la tabla que contiene los campos a modificar


        //PROVEEDOR DE SIGNO DECIMAL
        NumberFormatInfo proveedorDecimal = new NumberFormatInfo();

        proveedorDecimal.NumberDecimalSeparator = ".";

        //ALMACENAMIENTO DE VARIABLES DESERIALIZADAS
        pDatos.ID_PRODUCT = pTransac.Id_Product;
        pDatos.SKU        = pTransac.Sku;
        pDatos.AMOUNT     = Convert.ToDecimal(pTransac.Amount, proveedorDecimal);
        pDatos.CURRENCY   = pTransac.Currency;

        //se ACTUALIZAN los productos al servicio
        pServicioProductos.ActualizarTransaccion(pDatos);
    }
 public void Delete(Transac deleteTransaction)
 {
     db.Remove(deleteTransaction);
 }
 public Transac Add(Transac newTransaction)
 {
     db.Add(newTransaction);
     return(newTransaction);
 }
 public static Transac CreateTransac(int id, int amount, int status, int type)
 {
     Transac transac = new Transac();
     transac.id = id;
     transac.amount = amount;
     transac.status = status;
     transac.type = type;
     return transac;
 }
 public void AddToTransacs(Transac transac)
 {
     base.AddObject("Transacs", transac);
 }
Пример #11
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());
    }
Пример #12
0
 //[Consumes("application/x-www-form-urlencoded")]
 public Task <string> GetConsultas([FromBody] Transac trans)
 {
     return(_repository.GetTransac(trans));
 }
Пример #13
0
        public async Task <string> GetTransac(Transac trans)
        {
            string valor = "";

            DataTable  de     = new DataTable();
            DataColumn column = new DataColumn();

            column.ColumnName = "error";

            de.Columns.Add(column);
            column            = new DataColumn();
            column.ColumnName = "mensaje";
            de.Columns.Add(column);
            try
            {
                string       sp         = trans.sp;
                string       parameters = trans.parameters;
                string       connection = trans.connection;
                SqlDbType    typeParam;
                SqlParameter parameter;
                //sp;Id:3:Int|Codigo:45:NVarchar|;con
                //SqlDatabase db = new SqlDatabase(_connectionString);
                //DbCommand sql = db.GetStoredProcCommand(sp);

                using (SqlConnection sql = new SqlConnection(getConexion(connection)))
                {
                    using (SqlCommand cmd = new SqlCommand(sp, sql))
                    {
                        cmd.CommandType = System.Data.CommandType.StoredProcedure;
                        var split2 = parameters.ToString().Split('|');
                        if (split2.Count() > 0)
                        {
                            for (int i = 0; i < split2.Count(); i++)
                            {
                                if (split2[i].ToString().Trim() != "")
                                {
                                    var split3 = split2[i].ToString().Split(':');
                                    if (split3.Count() > 0)
                                    {
                                        typeParam = (SqlDbType)Enum.Parse(typeof(SqlDbType), split3[2].ToString(), true);
                                        //db.AddInParameter(sql, split3[0].ToString(), typeParam, split3[1].ToString());
                                        parameter       = new SqlParameter(split3[0].ToString(), typeParam);
                                        parameter.Value = split3[1].ToString();
                                        cmd.Parameters.Add(parameter);
                                    }
                                }
                            }
                        }
                        await sql.OpenAsync();

                        await cmd.ExecuteNonQueryAsync();

                        de.Rows.Add("false", "");

                        valor = JsonConvert.SerializeObject(de, Formatting.Indented);
                    }
                }
            }
            //catch (Exception exs)
            //{
            //    de.Rows.Add("true", exs.Message.ToString());
            //    valor = JsonConvert.SerializeObject(de, Formatting.Indented);
            //}
            catch (SqlException ex)
            {
                de.Rows.Add("true", ex.Message.ToString());
                valor = JsonConvert.SerializeObject(de, Formatting.Indented);
            }

            return(valor);
        }