private static bool Deposito(Transacciones newTrans) { int n_AccountDest; //Variable utilizada para guardar el número de cuenta a la que se depositará decimal n_Monto; //Variable que almacena el monto a depositar. Deposito: Console.WriteLine("Ingresa el numero de cuenta a la que deseas depositar"); n_AccountDest = Convert.ToInt32(Console.ReadLine()); //Se guarda el número de cuenta destino. using (var db = new ATMdb()) { try { Usuarios us = db.Usuarios.Single(st => st.noCuenta == n_AccountDest); }//Se hace un select en la tabla Usuarios con e catch (Exception) { Console.Clear(); Console.WriteLine("Cuenta no Encontrada!"); goto Deposito; } } using (var db = new ATMdb()) { Monto: Console.WriteLine("Introduce la cantidad a depositar, para cancelar introduzca 0"); n_Monto = Convert.ToInt32(Console.ReadLine()); //n_Monto guarda el monto a depositar. if (n_Monto == 0) ///Si n_Monto es 0... (Cancelar Operacion) { Console.Clear(); return(false); } n_Monto /= 100; //Se divide n_Monto entre 100 para contemplar los centavos. if (!DepositWaitTime(n_Monto)) //Verifica que el usuario introduzca el dinero en en plazo de 2min. { goto Deposito; //Si excedió el tiempo se vuelve a iniciar el proceso de depósito. } db.Transacciones.Add(newTrans); //Inserta el registro de la tabla transaccion. int affected = db.SaveChanges(); //Guarda los cambios en la bd. int maxFolio = db.Transacciones.Max(p => p.Folio); //maxFolio adquiere el valor del folio que se acaba de insertar. var newDeposito = new Deposito { Folio = maxFolio, //Deposito.Folio = maxFolio cuentaDest = n_AccountDest, //Deposito.cuentaDest = n_AccountDest monto = n_Monto //Deposito.monto = n_Monto }; db.Deposito.Add(newDeposito); //Se inserta el registro en la Tabla Deposito // ActualizarSaldo(db, n_Account, n_Monto, '-');//Disminuye el saldo de la cuenta de origen (- Monto) ActualizarSaldo(db, n_AccountDest, n_Monto, '+');//Aumenta el saldo de la cuenta destino (+ Monto) affected = db.SaveChanges(); return(affected == 1); } }
private static bool Retiro(int n_Account, Transacciones newTrans, ref int atmMoney) { Dictionary <int, int> retCants = new Dictionary <int, int>(); //Se crea un diccionario para relacionar el índice de cada retiro con su valor. retCants.Add(1, 20); //1: $20 retCants.Add(2, 40); //2: $40 retCants.Add(3, 60); //3: $60 retCants.Add(4, 100); //4: $100 retCants.Add(5, 200); //5: $200 Console.Clear(); aRetiro: Console.WriteLine("Elige el monto a retirar\n1:$20\n2:$40\n3:$60\n4:$100\n5:$200\n6:Cancelar Operación"); int opt = Convert.ToInt32(Console.ReadLine()); if (opt == 6)//Si opt es igual a 6(Cancelar Operacion)... { return(false); } decimal n_Monto = retCants[opt]; //n_Monto adquiere el valor del monto a retirar, a partir del diccionario. if (atmMoney < n_Monto) //Si la cantidad de dinero del cajero es menor que el monto a retirar... { Console.Clear(); Console.WriteLine("Lo sentimos, el cajero no cuenta con el dinero suficiente, escoge otro monto"); return(false); } using (var db = new ATMdb()) { if (!VerifyEnoughBalance(db, n_Account, n_Monto))//Se llama a VerifyEnoughBalance para verificar si el Usuario cuenta //con los fondos suficientes. { Console.WriteLine("Fondos Insuficientes"); goto aRetiro; } ActualizarSaldo(db, n_Account, n_Monto, '-'); //Se llama a esta función para restarle al usuario el monto que retiró. db.Transacciones.Add(newTrans); //Se inserta el registro en Transacciones. int affected = db.SaveChanges(); //Se guardan los cambios. int maxFolio = db.Transacciones.Max(p => p.Folio); //Se obtiene el Folio de la Transacción generada. var newRetiro = new Retiro //Se crea la variable newRetiro de tipo retiro. { Folio = maxFolio, monto = n_Monto }; db.Retiro.Add(newRetiro); //Se inserta el registro en Retiro. Console.WriteLine("Saldo Actualizado!"); affected = db.SaveChanges(); //Se guardan los cambios. return(affected == 1); } }
private static bool Transaccion(int type, int n_Account, ref int atmMoney) { using (var db = new ATMdb()) { DateTime localDate = DateTime.Now; //Se crea la variable localdate con la fecha y hora actual. var newTrans = new Transacciones //Se crea una nueva variable tipo Transacciones y se le introducen todos los datos //de la transaccion. { opeID = type, //tipo de transaccion, consulta, depósito o retiro. cuentaOr = n_Account, //cuenta de origen dateTime = localDate //fecha y hora de la transacción. }; if (type == 2) //si la operación es Depósito.. { Deposito(newTrans); //se llama a la función Deposito mandándole la nueva variable tipo Transacción. return(true); } if (type == 3) //si la operación es Retiro.. { Retiro(n_Account, newTrans, ref atmMoney); //se llama a la función Retiro mandándole la nueva variable tipo Transacción. return(true); } else//si la operación es Consulta... { Consulta(n_Account);//Se llama a la función Consulta mandándole el número de cuenta del usuario. db.Transacciones.Add(newTrans); //Se inserta el registro en Transacciones. int affected = db.SaveChanges(); //Se guardan cambios. return(affected == 1); } } }
private static bool Consulta(int n_Account) { using (var db = new ATMdb()) { //Se raliza un Queryable tipo Clientes que selecciona el registro de la cuenta especificada. IQueryable <Clientes> client = db.Clientes.Where(Clientes => Clientes.noCuenta == n_Account); foreach (var cl in client) { Console.WriteLine("Saldo Actual: $" + cl.Monto); //Se imprime el saldo de la cuenta. } int affected = db.SaveChanges(); //Se guardan los cambios. return(affected == 1); } }
private static void ActualizarSaldo(ATMdb db, int n_Account, decimal n_Monto, char op) { var result = db.Clientes.SingleOrDefault(b => b.noCuenta == n_Account);//La variable result selecciona el registro de la cuenta especificada. if (result != null) { if (op == '+') { result.Monto = result.Monto + n_Monto;//Se suma el monto a la cuenta. } else { result.Monto = result.Monto - n_Monto;//Se resta el monto a la cuenta } db.SaveChanges(); } }
private static bool HistorialForUsers(int n_Account, int n_Month, string month) { using (var db = new ATMdb()) { //Se selecciona el Folio, la fecha, y el tipo de operaccion realizado para cada una de las transacciones. /*Select Transacciones.Folio, Transacciones.dateTime, Concepto.Operaciones FROM Transacciones * INNER JOIN Operaciones WHERE Transacciones.opeID = Operaciones.opeID; */ var query = (from s in db.Transacciones join sa in db.Operaciones on s.opeID equals sa.opeID where s.dateTime.Month == n_Month && s.cuentaOr == n_Account select new { Folio = s.Folio, dateTime = s.dateTime, concepto = sa.concepto }).ToList(); if (query.Count == 0)//Si no se encontró ninguna transacción... { Console.WriteLine("No se encontro ningún movimiento\n"); } foreach (var item in query) { Console.WriteLine("Mes: " + month); Console.Write(item.concepto + " "); if (item.concepto == "Deposito ") { Deposito dep = db.Deposito.SingleOrDefault(p => p.Folio == item.Folio); //Se selecciona el Depósito que cuenta con el Folio generado de Transacción Console.Write("a N° de cuenta " + dep.cuentaDest); //Numero de cuenta destino Console.Write(" | Monto: " + dep.monto); //Monto } if (item.concepto == "Retiro ") { Retiro ret = db.Retiro.Single(p => p.Folio == item.Folio); // Se selecciona el Retiro que cuenta con el Folio generado de Transacción Console.Write("Monto: " + ret.monto); //Monto } Console.WriteLine("\n" + item.dateTime + "\n"); //Fecha } int affected = db.SaveChanges(); return(affected == 1); } }