//Metodos, funciones de la 'Persona' por medio de la clase 'GestorCuenta'. /* * Ingresa saldo a la cuenta y lo actualiza. * @Param operaciones, detalles de la persona que permiten ingresar saldo a la cuenta. * @return string con el mensaje de lo que se hizo y muestra el nuevo saldo en la cuenta. */ public string IngresarSaldo(OperacionesCuenta operaciones) { decimal saldoTotal = 0; try { using (dbHomeBank db = new dbHomeBank()) { var oCuenta = db.Cuentas.Where(d => d.idCliente == operaciones.Id).FirstOrDefault(); //var oCbu = oCuenta.cbu; if (operaciones.Monto > 0) { oCuenta.saldoPesos += operaciones.Monto; saldoTotal = (decimal)oCuenta.saldoPesos; var oOperacion = new Operaciones(); oOperacion.idCuenta = operaciones.Id; oOperacion.montoPesos = operaciones.Monto; oOperacion.nombreOperacion = "Depósito"; oOperacion.destino = oCuenta.cbu.ToString(); oOperacion.fecha = System.DateTime.Now; db.Operaciones.Add(oOperacion); db.Entry(oCuenta).State = System.Data.Entity.EntityState.Modified; // db.Entry(Cliente).State = System.Data.Entity.EntityState.Modified; //Es para hacer el update, se le dice al EF // que el objeto tuvo una modificacion. db.SaveChanges(); }// Se guardan los cambios en la BD. } } catch (Exception fail) { Debug.WriteLine(fail.Message); } return(Convert.ToString(saldoTotal)); }
/* * Retira dinero de la cuenta de la persona y actualiza su saldo. * @Param operaciones, detalles de la persona que permiten retirar saldo de su cuenta. * @return string, devuelve el monto que retiró de la persona de su cuenta. * @throw new Excepcion(), en caso de no poder retirar dinero de la cuenta. */ public string RetirarDinero(OperacionesCuenta operaciones) { decimal saldoTotal = 0; if (SaldoIsOk(operaciones.Id)) { try { using (dbHomeBank db = new dbHomeBank()) { // Busco al cliente por medio del Id para realizar la operacion. /* * Cuentas elCLiente = db.Cuentas.Find(id); * elCLiente.saldoPesos -= monto; // Se resta el monto ingresado al saldo del cliente y se lo actualiza. * db.Cuentas.Add(elCLiente); */// Se agrega el cambio a la BD del correspondiente cliente // Lo siguiente es otra forma de hacer, otro camino, quizas mas largo en tiempo. Cuentas oCuenta = db.Cuentas.Where(d => d.idCliente == operaciones.Id).FirstOrDefault(); // Llamo la tabla Cuentas, busco el contexto y lo guardo en una variable. if (operaciones.Monto <= oCuenta.saldoPesos) { Debug.WriteLine("acá guardo los datos modificados"); oCuenta.saldoPesos -= operaciones.Monto; var oOperacion = new Operaciones(); oOperacion.idCuenta = operaciones.Id; oOperacion.montoPesos = operaciones.Monto; oOperacion.nombreOperacion = "Retiro"; oOperacion.destino = oCuenta.cbu.ToString(); oOperacion.fecha = DateTime.Now; db.Operaciones.Add(oOperacion); db.Entry(oCuenta).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); saldoTotal = (decimal)oCuenta.saldoPesos; return(saldoTotal.ToString()); } //foreach (var verSaldo in cuentas) //{ // int suID = verSaldo.idCliente; // if (operaciones.Id == suID) // { // verSaldo.saldoPesos -= operaciones.Monto; // db.Cuentas.Add(verSaldo); // break; // } //} //db.Entry(cuentas).State = System.Data.Entity.EntityState.Modified; //Es para hacer el update, se le dice al EF // que el objeto tuvo una modificacion. } } catch (Exception fail) { Debug.WriteLine(fail.Message); } } else { using (dbHomeBank db = new dbHomeBank()) { Cuentas elCLiente = db.Cuentas.Where(d => d.idCliente == operaciones.Id).FirstOrDefault();; throw new Exception("No se ha podido realizar la transaccion, el monto a retirar es mayor al saldo que ud. tiene.\n" + "Su monto actual es de $" + elCLiente.saldoPesos); } } return(saldoTotal.ToString()); }