示例#1
0
        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();
            }
        }
示例#2
0
        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;
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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
                }
            }
        }