public ActionResult FinalizarLocacao(string nomeCliente, int JogoId)
 {
     try
     {
         RegrasLocacao regrasLocacao = new RegrasLocacao();
         Cliente cliente = bancoDeClientes.BuscarUnicoClientePorNome(nomeCliente);
         int totalLocacoes = bancoDeClientes.BuscarTotalDeLocacoes(cliente);
         if (totalLocacoes > 3)
         {
             TempData["Mensagem"] = "Limite de Locações atingido, não é possivel registrar mais locações para este cliente.";
             return View("Locar");
         }
         Jogo jogo = bancoDeJogos.BuscarPorId(JogoId);
         jogo.LocarPara(cliente);
         jogo.IdCliente = cliente.Id;
         jogo.DataPrevistaParaEntrega = regrasLocacao.DataPrevistaParaEntrega(jogo.Selo);
         bancoDeJogos.Atualizar(jogo);
         TempData["Mensagem"] = "Locação registrada com sucesso!";
         return View("Locar");
     }
     catch(Exception e)
     {
         TempData["Mensagem"] = "Locação não efetuada, algo deu errado, por favor, tente novamente";
         return View("Locar");
     }
 }
        public void ValorTotalIgual5ComSeloBronze()
        {
            Jogo jogo = new Jogo(id: 1) { Selo = Selo.Bronze };
            RegrasLocacao regrasDeLocacao = new RegrasLocacao();
            decimal valorEsperado = regrasDeLocacao.ValorJogo(jogo.Selo);

            Assert.AreEqual(5.00M, valorEsperado);
        }
        public void ValorTotalIgual10ComSeloPrata()
        {
            Jogo jogo = new Jogo(id: 1) { Selo = Selo.Prata };
            RegrasLocacao regrasDeLocacao = new RegrasLocacao();
            decimal valorEsperado = regrasDeLocacao.ValorJogo(jogo.Selo);

            Assert.AreEqual(10.00M, valorEsperado);
        }
        public void DataPrevistaPataEntregaComSeloPrataDiaDeHojeMais2()
        {
            Jogo jogo = new Jogo(id: 1) { Selo = Selo.Prata };
            RegrasLocacao regrasDeLocacao = new RegrasLocacao();
            jogo.DataPrevistaParaEntrega = regrasDeLocacao.DataPrevistaParaEntrega(jogo.Selo);

            DateTime DataPrevistaComSeloOuro = DateTime.Now.AddDays(2);

            Assert.AreEqual(DataPrevistaComSeloOuro, jogo.DataPrevistaParaEntrega);
        }
        public ActionResult PesquisaJogoDevolver(string nomeJogo)
        {
            try
            {
                Jogo jogo = bancoDeJogos.BuscarUnicoJogoPorNome(nomeJogo);
                RegrasLocacao regrasLocacao = new RegrasLocacao();
                RegrasDevolucao regrasDevolucao = new RegrasDevolucao();
                TelaLocacao locacao = new TelaLocacao();
                if (nomeJogo == "")
                {
                    locacao.JogoId = 0;
                    locacao.JogoNome = "Não a jogo selecionado!";
                    locacao.JogoImagem = "http://clickmobile.com.br/blog/wp-content/uploads/2014/03/sem-imagem-click.jpg";
                    locacao.JogoPreco = 0.00M;
                    locacao.JogoDataParaEntrega = DateTime.Now;
                }
                else
                {
                    locacao.JogoId = jogo.Id;
                    locacao.JogoNome = jogo.Nome;
                    locacao.JogoImagem = jogo.Imagem;
                    locacao.JogoPreco = regrasLocacao.ValorJogo(jogo.Selo);
                    locacao.JogoDataParaEntrega = (DateTime)jogo.DataPrevistaParaEntrega;
                    locacao.JogoPreco = regrasDevolucao.CalcularValorTotal(locacao.JogoDataParaEntrega, locacao.JogoPreco);
                }

                return PartialView("_TelaLocacao", locacao);
            }
            catch(Exception e)
            {
                return PartialView("Erro");
            }
        }
 public ActionResult Locar(int id)
 {
     Jogo jogo = bancoDeJogos.BuscarPorId(id);
     RegrasLocacao regrasLocacao = new RegrasLocacao();
     TelaLocacao locacao = new TelaLocacao();
     locacao.JogoId = jogo.Id;
     locacao.JogoNome = jogo.Nome;
     locacao.JogoImagem = jogo.Imagem;
     locacao.JogoDataParaEntrega = regrasLocacao.DataPrevistaParaEntrega(jogo.Selo);
     locacao.JogoPreco = regrasLocacao.ValorJogo(jogo.Selo);
     return View(locacao);
 }