Exemple #1
0
        public void TestMethod1()
        {
            var relatorio =
                "Tipo do Carro: Motor Home\n" +
                "Quantidade de diárias: 2\n" +
                "Valor total das diárias: R$ 600\n" +
                "Estimativa de quilometragem em reais: R$ 552.50\n" +
                "Valores de todos os adicionais: GPS: R$ 35 Geladeira: R$ 250 \n" +
                "Valor total do aluguel: R$ 1437.50";

            var motorHome =
                MotorHome.Novo()
                .AdicionarAdicional <Gps>(35m)
                .AdicionarAdicional <Geladeira>(250m);

            var dataSaida   = new DateTime(2019, 10, 21);
            var dataRetorno = new DateTime(2019, 10, 23);

            var aluguel = new Aluguel(dataSaida, dataRetorno, motorHome, 850);

            var result = Relatorio.Imprimir(aluguel);

            Assert.AreEqual(result, relatorio);
        }
        static void Main(string[] args)
        {
            string op;

            ArquivoCliente    arquivoCliente    = new ArquivoCliente();
            ArquivoEmprestimo arquivoEmprestimo = new ArquivoEmprestimo();
            ArquivoLivro      arquivoLivro      = new ArquivoLivro();

            List <Cliente>         clientes    = new List <Cliente>();
            List <Livro>           livros      = new List <Livro>();
            List <EmprestimoLivro> emprestimos = new List <EmprestimoLivro>();

            #region Criar Arquivos

            if (!ArquivoCSV.CriarDiretorio())
            {
                if (!arquivoCliente.CriarArquivo())
                {
                    clientes = arquivoCliente.Leitura();
                }
                if (!arquivoLivro.CriarArquivo())
                {
                    livros = arquivoLivro.Leitura();
                }
                if (!arquivoEmprestimo.CriarArquivo())
                {
                    emprestimos = arquivoEmprestimo.Leitura();
                }
            }
            else
            {
                arquivoCliente.CriarArquivo();
                arquivoEmprestimo.CriarArquivo();
                arquivoLivro.CriarArquivo();
            }

            #endregion

            Console.WriteLine("Bem vindo a livraria 5by5\n");

            #region Menu

            do //Repita enquanto a opção de sair não seja escolhida
            {
                Menu();
                Console.Write(">>> ");
                op = Console.ReadLine();
                string cpf;
                long   numeroTombo;
                string nTombo;
                bool   funcionar;

                Livro           livro      = new Livro();
                Cliente         cliente    = new Cliente();;
                EmprestimoLivro emprestimo = new EmprestimoLivro();;

                switch (op)
                {
                case "1":
                    #region Cadastro Cliente

                    //Cadastro do Cliente

                    Console.Clear();
                    Console.WriteLine(">>> Cadastro de clientes <<<");

                    cliente = new Cliente();

                    Console.Write("Digite o CPF do cliente: ");
                    cpf = Console.ReadLine();

                    cliente = clientes.Find(c => c.CPF == cpf);

                    if (cliente != null)
                    {
                        //trazendo informações do cliente
                        Console.WriteLine("\nCliente já cadastrado!");
                        Console.WriteLine(cliente);
                    }
                    else
                    {
                        cliente          = CadastroCliente(cpf);
                        cliente.endereco = CadastroEndereco();
                        if (!(clientes.Count > 0))
                        {
                            cliente.IdCliente = 1;
                        }
                        else
                        {
                            cliente.IdCliente = clientes.Last().IdCliente + 1;
                        }
                        arquivoCliente.Salvar(cliente);
                        clientes.Add(cliente);

                        Console.WriteLine("Cliente cadastrado...");
                    }
                    Console.Write("Pressione qualquer tecla para voltar ao menu principal...");
                    Console.ReadKey();
                    Console.Clear();

                    break;

                    #endregion

                case "2":
                    #region Cadastro do livro

                    //Cadastro do livro

                    Console.Clear();
                    Console.WriteLine(">>> Cadastro de livros <<<");

                    Console.Write("\nDigite o ISBN do livro: ");
                    string isbn = Console.ReadLine();

                    livro = livros.Find(l => l.ISBN == isbn);

                    if (livro != null)     // se estiver cadastrado
                    {
                        Console.WriteLine("\nLivro já cadastrado!");
                        Console.WriteLine(livro);
                        Console.Write("Pressione qualquer tecla para voltar ao menu principal...");
                        Console.ReadKey();
                        Console.Clear();
                    }
                    else     //se não estiver cadastrado
                    {
                        if (!(livros.Count > 0))
                        {
                            numeroTombo = 1;
                        }
                        else
                        {
                            numeroTombo = livros.Last().NumeroTombo + 1;
                        }

                        livro = CadastroLivro(numeroTombo, isbn);
                        arquivoLivro.Salvar(livro);
                        livros.Add(livro);


                        Console.WriteLine("\nLivro cadastrado...");
                        Console.WriteLine($"O numero do tombo é: {numeroTombo}");
                        Console.Write("Pressione qualquer tecla para voltar ao menu principal...");
                        Console.ReadKey();
                        Console.Clear();
                    }
                    break;

                    #endregion

                case "3":
                    #region Empréstimo de Livro

                    //Empréstimo de Livro
                    Console.Clear();
                    Console.WriteLine(">>> Empréstimo de livros <<<");
                    if (!(livros.Count > 0))
                    {
                        Console.WriteLine("\nNenhum livro cadastrado");
                    }
                    else
                    {
                        do
                        {
                            funcionar = false;
                            do
                            {
                                Console.Write("Digite o numero do tombo: ");
                                nTombo = Console.ReadLine();

                                if (!long.TryParse(nTombo, out numeroTombo))
                                {
                                    Console.WriteLine("Digite um número inteiro !\n");
                                }
                                else
                                {
                                    funcionar = true;
                                }
                            } while (!funcionar);

                            livro = livros.Find(l => l.NumeroTombo == numeroTombo);

                            if (livro == null)
                            {
                                Console.WriteLine("\nLivro indisponível para empréstimo");
                                Console.WriteLine("Deseja tentar novamente? ");

                                op = Confirmacao();
                            }
                            else
                            {
                                do
                                {
                                    Console.Write("Digite o CPF do cliente: ");
                                    cpf     = Console.ReadLine();
                                    cliente = clientes.Find(c => c.CPF == cpf);
                                    if (cliente == null)
                                    {
                                        Console.WriteLine("\nCliente não cadastrado");
                                        Console.WriteLine("Deseja tentar novamente? ");

                                        op = Confirmacao();
                                    }
                                    else
                                    {
                                        emprestimo = CadastradoEmprestimo(numeroTombo, cliente.IdCliente);
                                        arquivoEmprestimo.Salvar(emprestimo);
                                        emprestimos.Add(emprestimo);

                                        Console.WriteLine("\nEmprestimo cadastrado...");
                                        op = "sair";     // condição para sair do laço
                                    }
                                } while (op != "sair");
                            }
                        } while (op != "sair");
                    }

                    Console.Write("Pressione qualquer tecla para voltar ao menu principal...");
                    Console.ReadKey();
                    Console.Clear();

                    break;

                    #endregion

                case "4":
                    #region Devolução do Livro

                    //Devolução do Livro

                    Console.Clear();
                    Console.WriteLine(">>> Devolução de livros <<<");

                    if (!(emprestimos.Count > 0))
                    {
                        Console.WriteLine("\nNenhum livro cadastrado para emprestimo");
                    }
                    else
                    {
                        funcionar = false;
                        do
                        {
                            Console.Write("Digite o numero do tombo: ");
                            nTombo = Console.ReadLine();

                            if (!long.TryParse(nTombo, out numeroTombo))
                            {
                                Console.WriteLine("Digite um número inteiro !\n");
                            }
                            else
                            {
                                funcionar = true;
                            }
                        } while (!funcionar);

                        int index = arquivoEmprestimo.ProcuraNumeroTombo(numeroTombo);

                        if (index == -1)     //ProcuraNumeroTombo retorna -1 caso não encontre o index
                        {
                            Console.WriteLine("\nLivro não encontrado para devolução");
                        }
                        else
                        {
                            double multa = EmprestimoLivro.CalculaMulta(emprestimos.ElementAt(index));
                            if (multa > 0)
                            {
                                Console.WriteLine($"\nMulta a ser paga: R$ {multa:F2}");
                                string resposta;
                                do
                                {
                                    Console.Write("A multa foi paga sim ou não(s/n)? ");
                                    resposta = Console.ReadLine().ToLower();
                                    if (resposta == "s")
                                    {
                                        emprestimos.ElementAt(index).StatusEmprestimo = 2;
                                        arquivoEmprestimo.Devolucao(index);
                                        //alterar situação
                                        Console.WriteLine("\nSituação alterada para \"Devolvido\"...");
                                    }
                                    else if (resposta != "n")
                                    {
                                        Console.WriteLine("Digite \"s\" ou \"n\"");
                                    }
                                    else
                                    {
                                        Console.WriteLine("\nSituação não foi alterada...");
                                    }
                                } while (resposta != "s" && resposta != "n");
                            }
                            else
                            {
                                Console.WriteLine("\nO prazo da devolução foi cumprido\n");

                                emprestimos.ElementAt(index).StatusEmprestimo = 2;
                                arquivoEmprestimo.Devolucao(index);
                                //alterar situação
                                Console.WriteLine("salvando situação para \"Devolvido\"...");
                            }

                            //Alterar para devolvido (2) no arquivoEmprestimo
                        }
                    }

                    Console.Write("Pressione qualquer tecla para voltar ao menu principal...");
                    Console.ReadKey();
                    Console.Clear();

                    break;

                    #endregion

                case "5":
                    #region Relatório de Emprestimos e Devoluções
                    Console.Clear();
                    Console.WriteLine(">>> Relatório de Emprestimos e Devoluções <<<");
                    int j = 0;
                    do
                    {
                        if (emprestimos.Count == 0)
                        {
                            Console.WriteLine("\nNenhum emprestimo cadastrado!");
                            j = -1;
                        }
                        else
                        {
                            Relatorio relatorio = new Relatorio();

                            Console.Write("\n" + relatorio.Imprimir(clientes, livros, emprestimos[j]));

                            j = relatorio.Menu(emprestimos, j);
                        }
                    } while (j != -1);

                    Console.Write("Pressione qualquer tecla para voltar ao menu principal...");
                    Console.ReadKey();
                    Console.Clear();

                    break;

                    #endregion

                case "0":
                    #region Finalizar o Programa

                    //Finalizar o Programa

                    Console.Clear();

                    do     //Repita enquanto a resposta for diferente de sim ou não
                    {
                        Console.WriteLine("\nDeseja realmente sair?");
                        Console.WriteLine("Digite \"s\" pra sim ou \"n\" para não\n");
                        Console.Write(">>> ");
                        op = Console.ReadLine().ToLower();

                        if (op == "s")
                        {
                            op = "0";
                            Console.Write("\nObrigado por usar o sistema Livraria 5by5\n");
                        }
                        else if ((op == "n"))
                        {
                            Console.Write("Pressione qualquer tecla para voltar ao menu principal...");
                            Console.ReadKey();
                            Console.Clear();
                        }
                        else
                        {
                            Console.WriteLine("Digito inválido");
                        }
                    } while (op != "0" && op != "n");

                    break;

                    #endregion

                default:
                    Console.Clear();
                    Console.WriteLine("\nPor favor digite uma opção do menu !\n");
                    break;
                }
            } while (op != "0");

            #endregion

            Console.Write("Pressione qualquer tecla para encerrar...");
            Console.ReadKey();
        }