public ActionResult Detalhes(string nomeJogo)
        {
            locacaoRepositorio = FabricaDeModulos.CriarLocacaoRepositorio();
            clienteRepositorio = FabricaDeModulos.CriarClienteRepositorio();
            jogoRepositorio = FabricaDeModulos.CriarJogoRepositorio();

            servicoLocacao = new ServicoLocacao(jogoRepositorio, clienteRepositorio, locacaoRepositorio);

            var locacao = locacaoRepositorio.BuscarPendentesPorNomeDoJogo(nomeJogo).FirstOrDefault();
            bool jogoEstaLocado = locacao != null && !locacao.Jogo.Disponivel;

            if (jogoEstaLocado)
            {
                DevolucaoModel model = new DevolucaoModel()
                {
                    IdLocacao = locacao.Id,
                    DataLocacao = locacao.DataLocacao,
                    ImagemJogo = locacao.Jogo.Imagem,
                    NomeJogo = locacao.Jogo.Nome,
                    ValorFinal = servicoLocacao.CalcularValorFinal(locacao)
                };
                return View(model);
            }

            TempData["Mensagem"] = "Jogo informado não encontrado";
            TempData["TipoMensagem"] = "Falha";
            return View("Devolucao");
        }
 public ActionResult Salvar(string clienteNome, int id)
 {
     if (String.IsNullOrWhiteSpace(clienteNome))
     {
         TempData["Mensagem"] = "Erro na busca do cliente";
         return RedirectToAction("JogosDisponiveis","Relatorio");
     }
     var repositorio = new ClienteRepositorio();
     var jogoRepositorio = new JogoRepositorio();
     var servicoLocacao = new ServicoLocacao() { JogoRepositorio=jogoRepositorio};
     var jogo = jogoRepositorio.BuscarPorId(id);
     var cliente = repositorio.BuscarPorNome(clienteNome).FirstOrDefault();
     if (servicoLocacao.PodeLocar(cliente))
     {
         var data = servicoLocacao.GerarDataDevolucao(jogo);
         if (cliente != null)
         {
             jogo.IdCliente = cliente.Id;
             jogo.LocarPara(cliente);
             jogo.DataDevolucao = data;
             jogoRepositorio.Atualizar(jogo);
             TempData["Mensagem"] = "Jogo Locado com Sucesso";
         }
     }
     else
     {
         TempData["Mensagem"] = "Cliente não pode locar mais jogos";
     }
     return RedirectToAction("JogosDisponiveis", "Relatorio");
 }
        public ActionResult Devolver(int idLocacao)
        {
            locacaoRepositorio = FabricaDeModulos.CriarLocacaoRepositorio();
            clienteRepositorio = FabricaDeModulos.CriarClienteRepositorio();
            jogoRepositorio = FabricaDeModulos.CriarJogoRepositorio();

            servicoLocacao = new ServicoLocacao(jogoRepositorio, clienteRepositorio, locacaoRepositorio);

            bool jogoFoiDevolvido = servicoLocacao.DevolverJogo(idLocacao);

            TempData["Mensagem"] = jogoFoiDevolvido ? "Jogo devolvido com sucesso" : "Não foi possível devolver o jogo";
            TempData["TipoMensagem"] = jogoFoiDevolvido ? "sucesso" : "falha";
            return RedirectToAction("Devolucao");
        }
        public ActionResult Salvar(LocacaoModel model)
        {
            jogoRepositorio = FabricaDeModulos.CriarJogoRepositorio();
            clienteRepositorio = FabricaDeModulos.CriarClienteRepositorio();
            locacaoRepositorio = FabricaDeModulos.CriarLocacaoRepositorio();

            servicoLocacao = new ServicoLocacao(jogoRepositorio, clienteRepositorio, locacaoRepositorio);

            bool locacaoEfetuadaComSucesso = servicoLocacao.LocarJogoParaCliente(model.IdJogo, model.NomeCliente);

            @TempData["Mensagem"] = locacaoEfetuadaComSucesso ? "Locação efetuada" : "Erro na locação";
            @TempData["TipoMensagem"] = locacaoEfetuadaComSucesso ? "sucesso" : "falha";

            return RedirectToAction("JogosDisponiveis", "Relatorio");
        }
 public ActionResult Locar(int id)
 {
     var jogoRepositorio = new JogoRepositorio();
     Jogo jogo = jogoRepositorio.BuscarPorId(id);
     var servicoLocacao = new ServicoLocacao() { JogoRepositorio= jogoRepositorio };
     var dataPrevista = servicoLocacao.GerarDataDevolucao(jogo);
     var telaLocacao = new TelaLocacaoModel()
     {
         Id = jogo.Id,
         NomeJogo = jogo.Nome,
         Selo = jogo.Selo,
         Imagem = string.IsNullOrEmpty(jogo.Imagem) ? "http://imobiliariaprimos.com.br/imagens/imoveis/sem_imagem.jpg" : jogo.Imagem,
         DataPrevista = string.Format("{0:dd/MM/yyyy}", dataPrevista),
         ValorDaLocacao = jogo.GerarValorDaLocacao().ToString("C")
     };
     return View(telaLocacao);
 }
 public ActionResult DevolverJogo(int id)
 {
     var jogoRepositorio = new JogoRepositorio();
     var clienteRepositorio = new ClienteRepositorio();
     var servicoLocacao = new ServicoLocacao() { JogoRepositorio = jogoRepositorio };
     Jogo jogo = jogoRepositorio.BuscarPorId(id);
     TempData["Cliente"] = clienteRepositorio.BuscarPorId((int)jogo.IdCliente).Nome;
     TempData["Valor"] = jogo.GerarValorDaLocacao().ToString("C");
     bool devolver =servicoLocacao.DevolverJogo(jogo);
     if (devolver)
     {
         TempData["Mensagem"] = "Jogo Devolvido!";
         TempData["DataEntrega"] = String.Format("{0:dd/MM/yyyy}",DateTime.Now.Date);
         return RedirectToAction("JogosLocados", "Relatorio");
     }
     TempData["Mensagem"] = "Falha na devolução";
     return RedirectToAction("JogosLocados", "Relatorio");
 }