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(); }