public ActionResult JogosLocados()
 {
     var banco = new JogoRepositorio();
     var clienteRepositorio = new ClienteRepositorio();
     var jogosLocados = banco.BuscarTodos().Where(j => j.IdCliente != null).ToList();
     List<JogoLocadoModel> jogos = new List<JogoLocadoModel>();
     foreach (var j in jogosLocados)
     {
         jogos.Add(new JogoLocadoModel()
         {
             Id = j.Id,
             Nome = j.Nome,
             Categoria = j.Categoria.ToString(),
             NomeCliente = clienteRepositorio.BuscarPorId((int)j.IdCliente).Nome
         });
     }
     if (jogos.Count > 0)
     {
         var model = new RelatorioModel()
         {
             JogosLocados = jogos,
             QuantidadeDeJogos = jogos.Count()
         };
         return View(model);
     }
     return View(new RelatorioModel());
 }
 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 JsonResult ClienteAutocomplete(string term)
        {
            var banco = new ClienteRepositorio();
            IList<Cliente> jogosEncontrados = string.IsNullOrWhiteSpace(term) ? banco.BuscarTodos() : banco.BuscarPorNome(term);

            var json = jogosEncontrados.Select(x => new { label = x.Nome });

            return Json(json, JsonRequestBehavior.AllowGet);
        }
        private IList<Cliente> ObterJogosPorFiltro(string nome)
        {
            IClienteRepositorio clienteRepositorio = new  ClienteRepositorio();

            if (string.IsNullOrEmpty(nome))
                return clienteRepositorio.BuscarTodos();
            else
            {
                return clienteRepositorio.BuscarPorNome(nome);
            }
        }
        public ActionResult Salvar(LocacaoModel model)
        {
            LocacaoRepositorio repLocacao = new LocacaoRepositorio();
            Jogo jogo = new JogoRepositorio().BuscarPorId(model.IdJogo);
            Cliente cliente = new ClienteRepositorio().BuscarPorId(model.IdClient);
            Locacao Locacao = new Locacao(jogo, cliente, model.DataLocacao);

            repLocacao.Criar(Locacao);

            return RedirectToAction("JogosDisponiveis", "Relatorio");
        }
 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");
 }