public static void saveDetalle(Nullable <long> dest, string concepto, long userId, Nullable <int> mon) { using (var db = new Banco2Context()) { if (concepto == "deposito")//Pide ingresar el concepto de el deposito, si se va a hacer uno { Console.WriteLine("Concepto del deposito: "); concepto = Console.ReadLine(); } var obj = new Detalle { fecha = DateTime.Now, destinatario = dest, tipoConcepto = concepto, monto = mon }; //se crea un objeto con los datos a guardar en el reporte de la transaccion realizada db.Add(obj); db.SaveChanges(); db.Entry(obj).GetDatabaseValues();//obtener el id de el reporte recien generado int detalleId = obj.id; db.Add(new Transaccion { usuario = userId, detalle = detalleId }); //se crea una transaccion, para indicar que usuario lo realizo db.SaveChanges(); } }
public static void getHistorial(long myId, int month) { //metodo para acceder a el historial de el mes actual DateTime nowDate = DateTime.Now; using (var db = new Banco2Context()) { var transaccions = db.Transaccion.Where(u => u.usuario == myId) .ToArray(); //Arreglo con las transacciones de el usuario de la sesion actual for (int i = 0; i < transaccions.Length; i++) //por cada transaccion { var listDetail = db.Detalle .Where(u => u.id == transaccions[i].detalle && u.fecha.Month == month && u.fecha.Year == nowDate.Year) .FirstOrDefault(); //obtener si lo hay el detalle de la transaccion actual if (listDetail == null) //si no encuentra detalles ni transacciones de el mes actual { Console.WriteLine("No se encontraron transacciones en este mes"); return; } else//si encuentra transacciones, las muestra dependiendo el tipo de transaccion { Console.WriteLine("Mes:" + listDetail.fecha.ToString("MMMM")); if (listDetail.tipoConcepto == "retiro") { Console.WriteLine("Accion: " + listDetail.tipoConcepto); Console.WriteLine("Monto:" + listDetail.monto); } else if (listDetail.tipoConcepto == "consulta") { Console.WriteLine("Accion: " + listDetail.tipoConcepto); } else { Console.WriteLine("Accion: deposito a " + listDetail.destinatario); Console.WriteLine("Concepto:" + listDetail.tipoConcepto); } Console.WriteLine("El día: " + listDetail.fecha + "\n \n");//el dia que se hizo la transaccion } } } return; }
static void Main(string[] args) { using (var db = new Banco2Context()) { List <Usuario> users = (from u in db.Usuario select u).ToList(); Usuario me = new Usuario();//instancia de el usuario que va a iniciar sesion string newCuenta; string newNip; bool repeat = true; int caso; int dinero = 500 * 20;//dinero con el que inicia el cajero cada que se enciende do { Console.Clear(); Console.WriteLine("Bienvenido al Banco Perron \n"); System.Threading.Thread.Sleep(1200); Console.WriteLine("Ingrese su numero de cuenta: "); newCuenta = Console.ReadLine(); Console.WriteLine("Ingrese su nip: "); newNip = Console.ReadLine(); string resultado = General.validateLogin(newCuenta, newNip, users, me);//retorna el tipo de usuario que logeo //funcion que valida el login, si es valido inicia sesion y construy el objeto de la sesion actual if (resultado == "cliente") //usuario tipo cliente { Usuario bdUser = db.Usuario.Find(me.id); //objecto que representa la tabla bool menuClient = true; do { Console.Clear(); Console.WriteLine("Hola, " + me.pNombre + "\n"); caso = General.mainMenu(me.tipoUsuario);//muestra el menu y retorna un int con la opcion escogida switch (caso) { case 1: { Console.WriteLine("Su balance es de $" + me.saldo); //Obtener el balance de la cuenta Detalle.saveDetalle(null, "consulta", me.id, null); //guardar en el historial break; } case 2: { int retiro = General.retiroMenu(); //mostrar el menu de la cantidad a retirar if (retiro == 6) { break; //si se selecciona 6 cierra el menu } else { if (dinero > retiro && retiro < me.saldo) //si hay suficiente dinero en el cajero { me.saldo = me.saldo - retiro; bdUser.saldo = me.saldo; //se resta la cantidad que se retiro en la base de datos y en el objeto actual db.SaveChanges(); Console.WriteLine("Tome su efectivo"); Detalle.saveDetalle(null, "retiro", me.id, retiro); //guardar en el histoorial break; } else //si no hay suficiente dinero en el cajero { Console.WriteLine("No hay dinero"); } break; } } case 3: { long cuenta; int deposito; bool valid = true; bool money = false; do { Console.WriteLine("Ingresa la cantidad a depositar en centavos(0 si desea salir):"); deposito = Convert.ToInt32(Console.ReadLine()); deposito = deposito / 100; if (deposito > me.saldo) { money = false; } else { money = true; } } while (!money); //validar que la cuenta tiene el dinero suficiente para hacer el deposito if (deposito == 0) { break; } DateTime inicio = DateTime.Now; TimeSpan maximo = new TimeSpan(00, 00, 02, 00); DateTime final = DateTime.Now; TimeSpan total = new TimeSpan(final.Ticks - inicio.Ticks); if (TimeSpan.Compare(total, maximo) == 1) { Console.Clear(); Console.WriteLine("Transaccion finalizada por inactividad"); Console.ReadKey(); break; } do { Console.WriteLine("Numero de cuenta a hacer deposito(0 si desea salir):"); cuenta = Convert.ToInt64(Console.ReadLine()); if (cuenta == 0) { break; } foreach (Usuario user in users) { if (user.id == cuenta && user.tipoUsuario == 1) { valid = false; } } } while (valid); //lee y valida que exista el numero de cuenta al que se va a depositar if (cuenta == 0) { break; } Usuario upUsuario = db.Usuario.Find(cuenta); //encuentra al usuari al que se le va a depositar upUsuario.saldo += deposito; //se le suma lo que se le deposito al usuario bdUser.saldo -= deposito; me.saldo -= deposito;//se resta en la bd y al objeto de la sesion actual, el monto que se deposito if (upUsuario.id == me.id) { me.saldo = upUsuario.saldo; } //si me hago un deposito a mi mismo, no pasa nada db.SaveChanges(); Detalle.saveDetalle(cuenta, "deposito", me.id, deposito); //Guardar este depósito en el historial menuClient = true; break; } case 4: { DateTime nowDate = DateTime.Now; General.getHistorial(me.id, nowDate.Month); //Mostrar el historial de el mes actual break; } case 5: { General.getHistorial(me.id, (General.mesesMenu())); //Abrir menu para mostrar los meses de los cuales se quiere conocer el historial break; } default: { Console.WriteLine("Saliendo... Gracias"); menuClient = false; break; } } if (menuClient) { Console.ReadLine(); } } while (menuClient); } else if (resultado == "gerente") { bool menuClient = true; do { Console.Clear(); Console.WriteLine("Hola, " + me.pNombre); caso = General.mainMenu(me.tipoUsuario);//muestra el menu para el usuario gerente switch (caso) { case 1: { Console.WriteLine("Cantidad de retiros"); General.revisarMes(0, 1); //funcion que realiza el proceso solicitado en su segundo parametro break; } case 2: { Console.WriteLine("Cantidad de depositos"); General.revisarMes(0, 2); //funcion que realiza el proceso solicitado en su segundo parametro break; } case 3: { Console.WriteLine("Monto total de retiros: "); General.revisarMes(0, 3); //funcion que realiza el proceso solicitado en su segundo parametro break; } case 4: { Console.WriteLine("Monto total de depositos: "); General.revisarMes(0, 4); //funcion que realiza el proceso solicitado en su segundo parametro break; } case 5: { bool valid = false; long cuenta = 0; do { Console.WriteLine("¿Que cuenta deseas revisar?"); cuenta = Convert.ToInt64(Console.ReadLine()); foreach (Usuario user in users) { if (user.id == cuenta) { valid = true; break; } } if (!valid) { Console.WriteLine("Cuenta no encontrada"); } } while (!valid); //encontrar la cuenta de usuario que se va a consultar General.revisarMes(cuenta, 5); break; } default: { Console.WriteLine("Saliendo... Gracias"); menuClient = false; break; } } if (menuClient) { Console.ReadLine(); } } while (menuClient); } else { Console.WriteLine(resultado); }//opcion si algo sale mal, el tipo de usuario no es ni cliente ni gerente Console.ReadLine(); } while (repeat == true); } }
public static void revisarMes(long cuenta, int option) { using (var db = new Banco2Context()) { DateTime nowDate = DateTime.Now; Console.WriteLine("1.Revisar mes actual"); Console.WriteLine("2.Revisar meses"); int revision = Convert.ToInt32(Console.ReadLine()); //si revision es 1, se va a visualizar lo pedido de el mes actual //si es 2, llamar a la funcion de mesesMenu y visualizar lo de el mes seleccionado if (option == 1) { if (revision == 1) {//revisar cantidad de retiros de el mes actual var reportes = db.Detalle .Where(u => u.fecha.Month == nowDate.Month && u.tipoConcepto == "retiro" && u.fecha.Year == nowDate.Year) .Count(); Console.WriteLine(nowDate.ToString("MMMM") + " hubieron " + reportes + " retiros."); } else {//revisar cantidad de retiros en el mes elegido del menu int mes = mesesMenu(); var reportes = db.Detalle .Where(u => u.fecha.Month == mes && u.tipoConcepto == "retiro") .Count(); Console.WriteLine(meses[mes - 1] + " hubieron " + reportes + " retiros."); } } else if (option == 2) { if (revision == 1) {//contar depositos de el mes actual var reportes = db.Detalle .Where(u => u.fecha.Month == nowDate.Month && u.tipoConcepto != "retiro" && u.tipoConcepto != "consulta" && u.fecha.Year == nowDate.Year) .Count(); Console.WriteLine(nowDate.ToString("MMMM") + " hubieron " + reportes + " depositos."); } else {//contar depositos de el mes elegido int mes = mesesMenu(); var reportes = db.Detalle .Where(u => u.fecha.Month == mes && u.tipoConcepto != "retiro" && u.tipoConcepto != "consulta" && u.fecha.Year == nowDate.Year) .Count(); Console.WriteLine(meses[mes - 1] + " hubieron " + reportes + " depositos."); } } else if (option == 3) { if (revision == 1) {//retiro de el mes actual var sum1 = db.Detalle .Where(p => p.tipoConcepto == "retiro" && p.fecha.Month == nowDate.Month && p.fecha.Year == nowDate.Year) .Sum(p => p.monto); Console.WriteLine("En" + nowDate.ToString("MMMM") + " se retiraron $" + sum1); } else {//retiro de el mes elegido en el menu int mes = mesesMenu(); var sum1 = db.Detalle .Where(p => p.tipoConcepto == "retiro" && p.fecha.Month == mes && p.fecha.Year == nowDate.Year) .Sum(p => p.monto); Console.WriteLine("En " + meses[mes - 1] + " se retiraron $" + sum1); } } else if (option == 4) { if (revision == 1) {//mostrar cantidad de dinero depositado de el mes actual var sum2 = db.Detalle .Where(p => p.tipoConcepto != "retiro" && p.tipoConcepto != "consulta" && p.fecha.Month == nowDate.Month && p.fecha.Year == nowDate.Year) .Sum(p => p.monto); Console.WriteLine("En " + nowDate.ToString("MMMM") + " se depositaron $" + sum2); } else {//mostrar cantidad de dinero depositado de el mes seleccionado int mes = mesesMenu(); var sum2 = db.Detalle .Where(p => p.tipoConcepto != "retiro" && p.tipoConcepto != "consulta" && p.fecha.Month == mes && p.fecha.Year == nowDate.Year) .Sum(p => p.monto); Console.WriteLine("En " + meses[mes - 1] + " se depositaron $" + sum2); } } else if (option == 5) { if (revision == 1) { getHistorial(cuenta, nowDate.Month); } //revisar el historial de el mes actual y de el numero de cuenta ingresado else { getHistorial(cuenta, mesesMenu()); } //revisar historial de el mes seleccionado y usuario ingresado } } }