public void ModificarPersona(DatosAModificar modificar) { using (dbHomeBank db = new dbHomeBank()) { var oUser = db.Clientes.Where(d => d.idCliente == modificar.Id).FirstOrDefault(); if (modificar.Localidad != null) { oUser.localidad = modificar.Localidad; db.Entry(oUser).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } if (modificar.Pais != null) { oUser.pais = modificar.Pais; db.Entry(oUser).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } if (modificar.Mail != null) { oUser.mail = modificar.Mail; db.Entry(oUser).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } if (modificar.Telefono != null) { oUser.telefono = modificar.Telefono; db.Entry(oUser).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } } //string StrConn = ConfigurationManager.ConnectionStrings["BDLocal"].ToString(); //using (SqlConnection conn = new SqlConnection(StrConn)) //{ // conn.Open(); // SqlCommand comm = conn.CreateCommand(); // comm.CommandText = "modificar_persona"; // comm.CommandType = System.Data.CommandType.StoredProcedure; // comm.Parameters.Add(new SqlParameter("@Nombre", p.Nombre)); // comm.Parameters.Add(new SqlParameter("@Apellido", p.Apellido)); // comm.Parameters.Add(new SqlParameter("@Id", p.Id)); // comm.ExecuteNonQuery(); //} }
/* * Giro que hace la persona sobre su cuenta. * @Param id, id de la persona que hara el giro sobre su cuenta. * @return decimal, devuelve el saldo mas un 10% del saldo que tenia en su cuenta. Se resta y el saldo en la cuenta es negativo. */ public decimal GirarDinero(int id) { decimal saldoAGirar = 0; try { using (dbHomeBank db = new dbHomeBank()) { Cuentas laCuenta = db.Cuentas.Where(d => d.idCliente == id).FirstOrDefault(); // Llamo la tabla Cuentas, busco el id del objeto y la guardo. saldoAGirar = (decimal)(laCuenta.saldoPesos + ((laCuenta.saldoPesos * 10) / 100)); // Monto que se gira. laCuenta.saldoPesos -= saldoAGirar; // Se resta el monto girado al saldo. Operaciones operGiro = new Operaciones(); operGiro.montoPesos = saldoAGirar; operGiro.idCuenta = id; operGiro.nombreOperacion = "Giro al descubierto"; operGiro.fecha = DateTime.Now; operGiro.destino = laCuenta.cbu.ToString(); db.Operaciones.Add(operGiro); db.Entry(laCuenta).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); // Se guardan los cambios } } catch (Exception fail) { Debug.WriteLine(fail.Message); } return(saldoAGirar); }
public bool Recovery(Models.NewPass newPass) { try { using (dbHomeBank db = new dbHomeBank()) { var oUser = db.Clientes.Where(d => d.token == newPass.Token).FirstOrDefault(); if (oUser != null) { oUser.pass = newPass.Password; oUser.token = null; db.Entry(oUser).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); return(true); } else { return(false); } } } catch (Exception ex) { throw new Exception(ex.Message); } }
public bool StartRecovery(Recovery recovery) { Models.Recovery model = new Models.Recovery(); try { string token = GetSha256(Guid.NewGuid().ToString()); using (dbHomeBank db = new dbHomeBank()) { var oUser = db.Clientes.Where(d => d.mail == recovery.Mail).FirstOrDefault(); if (oUser != null) { oUser.token = token; db.Entry(oUser).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); //enviar el mail SendEmail(oUser.mail, token); return(true); } else { return(false); } } } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { System.Diagnostics.Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } }
//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)); }
/* * Transferencia de saldo entre dos cuentas. * @Param transferencia, detalles de la transferencia a realizar por la persona en su cuenta. * @return string, devuelve el saldo transferido en tipi 'string' */ public string TransferirDinero(Transferencia transferencia) { decimal saldoTotal = 0; Cuentas CuentaDestino = new Cuentas(); if (SaldoIsOk(transferencia.Id)) { try { using (dbHomeBank db = new dbHomeBank()) { Cuentas oCuenta = db.Cuentas.Where(d => d.idCliente == transferencia.Id).FirstOrDefault(); //Cuentas CuentaDestino = new Cuentas(); if (transferencia.Monto <= oCuenta.saldoPesos) { Debug.WriteLine("acá guardo los datos modificados"); oCuenta.saldoPesos -= transferencia.Monto; var oOperacion = new Operaciones(); oOperacion.idCuenta = transferencia.Id; oOperacion.montoPesos = transferencia.Monto; oOperacion.nombreOperacion = "Transferencia"; if (transferencia.Alias != null) { CuentaDestino = db.Cuentas.Where(d => d.alias == transferencia.Alias).FirstOrDefault(); CuentaDestino.saldoPesos += transferencia.Monto; } if (transferencia.Cbu != null) { CuentaDestino = db.Cuentas.Where(d => d.cbu.ToString().Equals(transferencia.Cbu)).FirstOrDefault(); CuentaDestino.saldoPesos += transferencia.Monto; } oOperacion.destino = CuentaDestino.cbu.ToString(); oOperacion.fecha = DateTime.Now; var oReciboTransferencia = new Operaciones(); oReciboTransferencia.idCuenta = CuentaDestino.idCuenta; oReciboTransferencia.montoPesos = transferencia.Monto; oReciboTransferencia.nombreOperacion = "Transferencia"; oReciboTransferencia.destino = oCuenta.cbu.ToString(); oReciboTransferencia.fecha = DateTime.Now; db.Operaciones.Add(oReciboTransferencia); db.Operaciones.Add(oOperacion); db.Entry(oCuenta).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); saldoTotal = (decimal)oCuenta.saldoPesos; } } return(saldoTotal.ToString()); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { System.Diagnostics.Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } } else { using (dbHomeBank db = new dbHomeBank()) { Cuentas elCLiente = db.Cuentas.Find(transferencia.Id); 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); } } }
/* * 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()); }