static int deletarConta(BancoContext context, Conta conta, int opt)
        {
            Cliente       cliente = new Cliente();
            ContaCorrente contaC  = new ContaCorrente();
            ContaPoupanca contaP  = new ContaPoupanca();
            int           option  = 0;

            Console.WriteLine("digite novamente seu nome e cpf");
            Console.WriteLine("Digite o nome do Titular da conta");
            string nome = Console.ReadLine();

            Console.WriteLine("Digite o Cpf da conta");
            string cpf = Console.ReadLine();

            try{
                if (opt == 1)
                {
                    cliente = context.Set <Cliente>().Where(b => b.Cpf == cpf && b.Nome == nome)
                              .FirstOrDefault();
                    contaC = context.Set <ContaCorrente>().Where(b => b.Conta == conta)
                             .FirstOrDefault();
                }
                else if (opt == 2)
                {
                    cliente = context.Set <Cliente>().Where(b => b.Cpf == cpf && b.Nome == nome)
                              .FirstOrDefault();
                    contaP = context.Set <ContaPoupanca>().Where(b => b.Conta == conta)
                             .FirstOrDefault();
                }
                for (; option != 2;)
                {
                    Console.WriteLine("Deseja realmente deletar esta conta?");
                    Console.WriteLine("Sim -                              1");
                    Console.WriteLine("Não -                              2");
                    try
                    {
                        option = Int32.Parse(Console.ReadLine());
                    }catch (Exception e)
                    {
                        e.ToString();
                        option = 100;
                    }
                    switch (option)
                    {
                    case 1:
                        if (opt == 1)
                        {
                            var solicitacao = context.Set <Solicitacao>();
                            foreach (var s in solicitacao)
                            {
                                if (s.Conta == conta)
                                {
                                    context.Remove(s);
                                }
                            }
                            context.Remove(contaC);
                            context.Remove(conta);
                            context.Remove(cliente);
                            context.SaveChanges();
                        }
                        else if (opt == 2)
                        {
                            var solicitacao = context.Set <Solicitacao>();
                            foreach (var s in solicitacao)
                            {
                                if (s.Conta == conta)
                                {
                                    context.Remove(s);
                                }
                            }
                            context.Remove(contaP);
                            context.Remove(conta);
                            context.Remove(cliente);
                            context.SaveChanges();
                        }
                        Console.WriteLine("Operação Realizada com sucesso!");
                        Console.WriteLine(" ");

                        break;

                    case 2:
                        break;

                    default:
                        Console.WriteLine("Opção Invalida");
                        Console.WriteLine(" ");
                        break;
                    }
                    if (option == 1)
                    {
                        return(0);
                    }
                }
            }catch (Exception e)
            {
                e.ToString();
                Console.WriteLine("Credenciais incorretas");
                Console.WriteLine(" ");
            }

            return(5);
        }
        public void atualizar(Conta conta, Cliente cliente, BancoContext context)
        {
            var clienteAtualizado = context.Set <Cliente>().First(p => p.Id == cliente.Id);
            var contaAtualizada   = context.Set <Conta>().First(p => p.Id == conta.Id);
            int opt = 1;

            for (; opt != 0;)
            {
                Console.WriteLine("--------Atualizar--------");
                Console.WriteLine("Nome                   -1");
                Console.WriteLine("Idade                  -2");
                Console.WriteLine("Cpf                    -3");
                Console.WriteLine("Sair                   -0");
                try
                {
                    opt = Int32.Parse(Console.ReadLine());
                }catch (Exception e)
                {
                    e.ToString();
                    opt = 100;
                }
                switch (opt)
                {
                case 1:
                    Console.WriteLine("Digite o novo nome");
                    string nome = Console.ReadLine();
                    clienteAtualizado.Nome = nome;
                    context.SaveChanges();
                    contaAtualizada.Titular = nome;
                    context.SaveChanges();
                    break;

                case 2:
                    Console.WriteLine("Digite a nova idade");
                    int idade;
                    try
                    {
                        idade = Int32.Parse(Console.ReadLine());
                        clienteAtualizado.Idade = idade;
                        context.SaveChanges();
                    }catch (Exception e)
                    {
                        e.ToString();
                        Console.WriteLine("Idade Invalida");
                    }
                    break;

                case 3:
                    Console.WriteLine("Digite o novo CPF");
                    string cpf      = Console.ReadLine();
                    var    checkCpf = context.Clientes.Where(b => b.Cpf == cpf)
                                      .FirstOrDefault();

                    if (checkCpf != null)
                    {
                        Console.WriteLine("CPF ja cadastrado em outra conta");
                        Console.WriteLine(" ");
                        break;
                    }
                    clienteAtualizado.Cpf = cpf;
                    context.SaveChanges();

                    break;

                case 0:
                    break;

                default:
                    Console.WriteLine("Opção Invalida");
                    Console.WriteLine(" ");
                    break;
                }
            }
        }
        public static int CriarConta(BancoContext context)
        {
            string  cpf;
            int     idade;
            string  agencia;
            Agencia agenciaCliente = new Agencia();
            string  nome;

            Console.WriteLine("Digite seu cpf");
            cpf = Console.ReadLine();
            try
            {
                var clienteCadastrado = context.Clientes.Where(b => b.Cpf == cpf)
                                        .FirstOrDefault();
                if (clienteCadastrado != null)
                {
                    Console.WriteLine("Este cpf já esta cadastrado");
                    return(0);
                }
            }catch (Exception e)
            {
                Console.WriteLine("Estamos passando pro problemas tecnicos!");
                Console.WriteLine("Tente novamente dentro de alguns minutos");
                Console.WriteLine(" ");
                return(0);
            }
            Console.WriteLine("Digite seu Nome");
            nome = Console.ReadLine();
            Console.WriteLine("Digite sua idade");
            try
            {
                idade = Int32.Parse(Console.ReadLine());
            }catch (Exception e)
            {
                e.ToString();
                Console.WriteLine("Idade Invalida");
                return(0);
            }
            Console.WriteLine("Selecione uma de nossas Agencias:");
            var bancos = context.Set <Banco>();

            foreach (var b in bancos)
            {
                if (b.Nome == "Banco do Brasil")
                {
                    Console.WriteLine("--------" + b.Nome + "--------");
                }
            }
            var agencias = context.Set <Agencia>();

            foreach (var a in agencias)
            {
                Console.WriteLine(a.Numero);
            }
            Console.WriteLine(" ");
            bool error = true;

            for (; error != false;)
            {
                Console.WriteLine("Digite a agencia que deseja");
                agencia = Console.ReadLine();
                try{
                    var agenciaSelecionada = context.Agencias.Where(b => b.Numero == agencia)
                                             .FirstOrDefault();
                    agenciaCliente = agenciaSelecionada;
                    error          = false;
                }catch (Exception e)
                {
                    e.ToString();
                    Console.WriteLine("Agencia Não Encontrada");
                    Console.WriteLine(" ");
                    error = true;
                }
            }
            int contaType = 0;

            for (; contaType != 1 && contaType != 2;)
            {
                Console.WriteLine("Escolha um tipo de conta:");
                Console.WriteLine(" ");
                Console.WriteLine("Conta Corrente          1");
                Console.WriteLine("Conta Poupanca          2");
                try
                {
                    contaType = Int32.Parse(Console.ReadLine());
                }catch (Exception e)
                {
                    e.ToString();
                    contaType = 100;
                }
                switch (contaType)
                {
                case 1:
                    CriarNovaContaCorrente(cpf, nome, idade, agenciaCliente, context);
                    break;

                case 2:
                    CriarNovaContaPoupanca(cpf, nome, idade, agenciaCliente, context);
                    break;

                default:
                    Console.WriteLine("Tipo de conta Invalido");
                    Console.WriteLine(" ");
                    break;
                }
            }
            return(0);
        }