/// <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()); }
/// <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 }
/// <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); } }
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")); }
/// <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()); }
/// <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); }
/// <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()); }
//[Consumes("application/x-www-form-urlencoded")] public Task <string> GetConsultas([FromBody] Transac trans) { return(_repository.GetTransac(trans)); }
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); }