// PUT: api/CompraMetodoDePago /// <summary> /// Dado un ID de una Tarjeta o EasyPay, este sera guardado en la memoria /// como metodo de pago de un producto que se desee comprar. /// </summary> /// <param name="cmp">Objeto CompraMetodoPago el cual guarda el /// ID del metodo de pago a utilizar.</param> /// <returns></returns> public string Put([FromBody] CompraMetodoDePago cmp) { // Establece el metodo de pago que se va a usar en la memoria. Memoria.compraMetodoDePago = new CompraMetodoDePago(cmp.metodoDePagoID); return("OK. ID:" + Memoria.compraMetodoDePago.metodoDePagoID); }
/// <summary> /// Método que realiza la compra una vez las validaciones se hayan hecho y todo /// este correcto. /// </summary> /// <param name="producto"></param> /// <param name="metodoPago"></param> private void efectuarCompra(ProductoCompra producto, CompraMetodoDePago metodoPago) { registrarTransaccion(producto, metodoPago); // Guarda en la base de datos la propiedad del producto. reducirSaldo(producto, metodoPago); // Reduce el saldo del metodo de pago utilizado. compraExitosa(); // Muestra mensaje de compra exitosa. Elimina método de pago y producto de la memoria. // Fin del proceso de compra. }
/// <summary> /// Reduce el saldo del método de pago en haras al producto seleccionado. /// </summary> /// <param name="producto">Producto seleccionado.</param> /// <param name="metodoPago">Método de pago seleccionado.</param> private void reducirSaldo(ProductoCompra producto , CompraMetodoDePago metodoPago) { int montoProducto = producto.obtenerMonto(); int saldoDisponible = metodoPago.obtenerSaldo(); int saldoReducido = saldoDisponible - montoProducto; // Reducción de saldo. metodoPago.actualizarSaldo("" + saldoReducido); }
/// <summary> /// Hace el registro de transacción en la base de datos. En otras palabras, guarda /// el registro de propiedad del producto en la base de datos. /// </summary> /// <param name="producto">Producto seleccionado.</param> /// <param name="metodoPago">Método de pago seleccionado.</param> private void registrarTransaccion(ProductoCompra producto , CompraMetodoDePago metodoPago) { string tarjeta_id = ""; string easypay_id = ""; if (metodoPago.esTarjeta) { tarjeta_id = metodoPago.metodoDePagoID; } if (metodoPago.esEasyPay) { easypay_id = metodoPago.metodoDePagoID; } // Registro espejo del registro requerido guardado en la base de datos. Consecutivo registro_de_consecutivo = new Consecutivo(); registro_de_consecutivo = registro_de_consecutivo .traerConsecutivo_registroReflejadoEnDB("transaccion"); // Se actualiza el id de la transaccion como prefijo+numConsecuvito. // Ejemplo: tra4 . string id_consecutivo = registro_de_consecutivo.prefijo + (int.Parse(registro_de_consecutivo.descripcion) + 1); // Se crea objeto Transacción. Transaccion transaccion = new Transaccion( id_consecutivo , Tareas.obtener_fecha_actual() , "" + producto.obtenerMonto() , Memoria.sesionUsuarioDatos.id , producto.productoCompraId , tarjeta_id , easypay_id); // Se guarda el registro de transaccion. transaccion.crearRegistroTranseccion(transaccion); // Aumentamos el valor "descripcion" del consecutivo en 1. string valorDescripcionAumentadoEn1 = Tareas.aumentarColumnaDeConsecutivoEn1(registro_de_consecutivo); registro_de_consecutivo.descripcion = valorDescripcionAumentadoEn1; // Actualizamos el consecutivo en la base de datos. registro_de_consecutivo .actualizarConsecutivo_baseDeDatos(registro_de_consecutivo); }
/// <summary> /// Valida que el usuario haya elegido un metodo de pago y un producto para comprar. /// </summary> /// <param name="compraProducto">Objeto del producto que se desea comprar.</param> /// <param name="compraMetodoDePago">Objeto del metodo de pago elegido.</param> /// <returns>True si se han especificado metodo de pago y producto.</returns> private bool seHaSeleccionadoProductoYMetodoDePago( ProductoCompra compraProducto , CompraMetodoDePago compraMetodoDePago) { if (compraProducto.seHaSeleccionadoProductoParaComprar() && compraMetodoDePago.seHaSeleccionadoMetodoDePago()) { return(true); } else { establecerContenido_label(false, "Ha ocurrido un error" , "Error interno del sistema." , "El usuario no ha especificado un producto o método de pago para" + " efectuar la compra. Por favor, regrese al ménu principal."); return(false); } }
/// <summary> /// Comprueba si el método de pago elegido contiene los fondos suficientes para realizar la compra. /// </summary> /// <param name="producto"></param> /// <param name="metodoPago"></param> /// <returns>True si se cuenta con fondos suficientes.</returns> private bool fondosSuficientes(ProductoCompra producto, CompraMetodoDePago metodoPago) { int saldoDisponible = metodoPago.obtenerSaldo(); int montoProducto = producto.obtenerMonto(); if (saldoDisponible >= montoProducto) { return(true); } else { establecerContenido_label( false , "Error durante la transacción" , "Saldo insuficiente" , "El método de pago utilizado no " + "posee los fondos suficientes para " + "efectuar la compra. Por favor, vuelva " + "a intentarlo con un método de pago diferente."); return(false); } }