//operaciones //redefine el metodo de la clase base public override void Ejecutar() //realiza una transaccion { bool efectivoDispensado = false; //el efectivo no se ha dispensado aun //la transaccion no se ha cancelado aun bool transaccionCancelada = false; //itera hasta que se dispense efectivo o el usuario cancele do { //obtiene el monto elegido por el usuario int seleccion = MostrarMenuDeMontos(); //comprueba si el usuario eligio un monto de retiro o cancelo if (seleccion != CANCELO) { //establece monto al monto seleccionado en dolares monto = seleccion; //obtiene el saldo disponible en la cuenta involucrada decimal saldoDisponible = BaseDatos.ObtenerSaldoDisponible(NumeroCuenta); //comprueba si el usuario tiene suficiente dinero if (monto <= saldoDisponible) { //comprueba si el dispensador de efectivo tiene suficiente dinero if (dispensadorEfectivo.HaySuficienteEfectivoDisponible(monto)) { //carga a la cuenta para reflejar el retiro BaseDatos.Cargar(NumeroCuenta, monto); dispensadorEfectivo.DispensarEfectivo(monto); //dispensa efectivo efectivoDispensado = true; //se dispenso efectivo //instruye al usuario para que tome el efectivo PantallaUsuario.MostrarLineaMensaje("\nPor favor tome su efectivo " + "del dispensador."); } else //el dispensador no tiene suficiente efectivo { PantallaUsuario.MostrarLineaMensaje("\nNo hay suficiente dinero " + "disponible en el ATM\n\nPor favor elija un monto mas pequeño."); } } else //no hay suficiente dinero disponible en la cuenta del usuario { PantallaUsuario.MostrarLineaMensaje("\nNo hay suficiente dinero disponible" + "en su cuenta\n\nPor favor elija un monto mas pequeño."); } } else { PantallaUsuario.MostrarLineaMensaje("\nCancelando la transaccion..."); transaccionCancelada = true; //el usuario cancelo la transaccion } } while ((!efectivoDispensado) && (!transaccionCancelada)); }
public override void Ejecutar() { bool efectivoDispensado = false; bool transaccionCancelada = false; do { int seleccion = MostrarMenuDeMontos(); if (seleccion != CANCELO) { monto = seleccion; decimal saldoDisponible = BaseDatos.GetSaldoDisponible(NumeroCuenta); if (monto <= saldoDisponible) { if (dispensadorEfectivo.HayEfectivoDisponible(monto)) { BaseDatos.Cargar(NumeroCuenta, monto); dispensadorEfectivo.DispensarEfectivo(monto); efectivoDispensado = true; PantallaUsuario.MostrarLineaMensaje( "\nPor favor agarre su efectivo."); } else { PantallaUsuario.MostrarLineaMensaje( "\nNo hay suficiente efectivo disponible en el Cajero." + "\n\nPor favor elija un monto valido."); } } else { PantallaUsuario.MostrarLineaMensaje( "\nNo hay suficiente efectivo disponible en su cuenta." + "\n\nPor favor elija otro monto."); } } else { PantallaUsuario.MostrarLineaMensaje("\nCancelando la transacción..."); transaccionCancelada = true; } } while ((!efectivoDispensado) && (!transaccionCancelada)); }