public ActionResult JogosDisponiveis(string nomeJogo)
        {
            RelatorioModel model = new RelatorioModel();
            IList<Jogo> jogos;

            if (!string.IsNullOrEmpty(nomeJogo))
            {
                jogos = repo.BuscarPorNome(nomeJogo);
            }
            else
            {
                jogos = repo.BuscarTodos();
            }

            if (jogos.Count > 0)
            {
                foreach (var jogo in jogos)
                {
                    JogoModel jogoModel = new JogoModel();
                    jogoModel.Nome = jogo.Nome;

                    jogoModel.Categoria = jogo.Categoria.ToString();
                    jogoModel.Id = jogo.Id;

                    model.Jogos.Add(jogoModel);
                }

                model.QuantidadeDeJogos = jogos.Count();

            }

            return View(model);
        }
 public ActionResult JogosDisponiveis(string nomeJogo)
 {
     RelatorioModel relatorioModel = new RelatorioModel();
     IList<Jogo> listaJogos;
     if (nomeJogo != null)
     {
         listaJogos = repositorio.BuscarPorNome(nomeJogo);
     }
     else
     {
         listaJogos = repositorio.BuscarTodos();
     }
     if (listaJogos.Count != 0)
     {
         foreach (var jogo in listaJogos)
         {
             var id = jogo.Id;
             var nome = jogo.Nome;
             var categoria = jogo.Categoria.ToString();
             JogoModel jogoModel = new JogoModel()
             {
                 Id = id,
                 Nome = nome,
                 Categoria = categoria
             };
             relatorioModel.ListaJogos.Add(jogoModel);
         }
         relatorioModel.QuantidadeJogos = relatorioModel.ListaJogos.Count;
     }
     return View(relatorioModel);
 }
        public ActionResult JogosDisponiveis(string nome)
        {
            IJogoRepositorio repositorio = FabricaDeModulos.CriarJogoRepositorio();

            List<Jogo> jogosDominio = (nome == null) ? repositorio.BuscarTodos().ToList() : repositorio.BuscarPorNome(nome).ToList();

            var model = new RelatorioModel();

            if (jogosDominio.Count > 0)
            {
                foreach (var jogo in jogosDominio)
                {
                    JogoModel jogoModel = this.JogoToJogoModel(jogo);

                    model.Jogos.Add(jogoModel);
                }

                model.QuantidadeTotalJogos = model.Jogos.Count;
            }
            else
            {
                model.QuantidadeTotalJogos = 0;

                ViewBag.Mensagem = "Nenhum jogo encontrado.";
            }

            return View(model);
        }
 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 JogosDisponiveis(string texto)
        {
            RelatorioModel modelRelatorio = new RelatorioModel();
            var busca = String.IsNullOrEmpty(texto) ? repositorio.BuscarTodos() : repositorio.BuscarPorNome(texto);

            foreach (var jogo in busca)
            {
                var id = jogo.Id;
                var nome = jogo.Nome;
                var categoria = jogo.Categoria.ToString();
                var selo = jogo.Selo.ToString();
                JogoModel modelJogo = new JogoModel()
                {
                    Id = id,
                    Nome = nome,
                    Categoria = categoria,
                    Selo = selo,
                };
                modelRelatorio.Jogos.Add(modelJogo);
            }
            if (modelRelatorio.Jogos.Count == 0)
            {
                TempData["notfound"] = "Jogo não encontrado";
                return RedirectToAction("Index", "Home");
            }

            modelRelatorio.QuantidadeJogos = modelRelatorio.Jogos.Count;

            return View(modelRelatorio);
        }
 public ActionResult JogosDisponiveis(string nome)
 {
     var model = new RelatorioModel();
     IList<Jogo> lista;
     if (!string.IsNullOrWhiteSpace(nome))
     {
         lista = repositorio.BuscarPorNome(nome);
     }
     else
     {
         lista = repositorio.BuscarTodos();
     }
     if (lista.Count > 0)
     {
         foreach (var jogo in lista)
         {
             if (jogo.DataLocacao == null)
             {
                 var jogoModel = new JogoModel() { IdJogo = jogo.Id, Nome = jogo.Nome, Categoria = jogo.Categoria.ToString(), Selo = jogo.Selo, DataDevolucao = jogo.DataLocacao };
                 model.Jogos.Add(jogoModel);
             }
         }
         model.QuantidadeTotalDeJogos = model.Jogos.Count;
         return View(model);
     }
     else
     {
         return View("JogoNaoEncontrado");
     }
 }
        public ActionResult JogosDisponiveis(string nome)
        {
            var banco = new JogoRepositorio();

            var lista = string.IsNullOrWhiteSpace(nome) ? banco.BuscarTodos().ToList() : banco.BuscarPorNome(nome).ToList();
            lista = lista.Where(j => j.IdCliente == null).ToList();
            List<JogoModel> jogos = new List<JogoModel>();

            foreach (var j in lista)
            {
                jogos.Add(new JogoModel()
                {
                    Id = j.Id,
                    Nome = j.Nome,
                    Categoria = j.Categoria.ToString()
                });
            }
            if (jogos.Count > 0)
            {
                var model = new RelatorioModel()
                {
                    JogosDisponiveis = jogos,
                    QuantidadeDeJogos = jogos.Count()
                };
                return View(model);
            }
            return View(new RelatorioModel());
        }
        public ActionResult JogosDisponiveis(string nome)
        {
            var model = new RelatorioModel();
            var fazer = nome == null;
            List<Locadora.Dominio.Jogo> jogos;
            if (fazer)
            {
                jogos = repositorio.BuscarTodos().ToList();
            }
            else
            {
                jogos = repositorio.BuscarPorNome(nome).ToList();
            }
            if (!jogos.Any())
            {
                return View();
            }
            foreach (var item in jogos)
            {
                JogoModel jogo = new JogoModel()
                {
                    Nome = item.Nome,
                    Categoria = item.Categoria.ToString(),
                    ID = item.IDJogo,
                    locado = item.DataLocacao == null ? false : true

                };
                model.ListaJogos.Add(jogo);
            }
            model.TotalJogos = model.ListaJogos.Count;
            return View(model);
        }
        public ActionResult JogosDisponiveis(string nome)
        {
            RelatorioModel model = new RelatorioModel();

            IList<Jogo> jogos = string.IsNullOrEmpty(nome) ? repositorioJogos.BuscarTodos() : repositorioJogos.BuscarPorNome(nome);

            foreach (var jogo in jogos)
            {
                var jogoModel = new JogoModel()
                {
                    Id = jogo.Id,
                    Nome = jogo.Nome,
                    Categoria = jogo.Categoria.ToString(),
                    Imagem = jogo.Imagem,
                    Selo = jogo.Selo
                };

                model.Jogos.Add(jogoModel);
            }
            if (model.Jogos.Count != 0)
            {
                model.QuantidadeDeJogos = model.Jogos.Count;
            }
            return View(model);
        }
        public ActionResult JogosDisponiveis(string nomeJogo)
        {
            var relatorioModel = new RelatorioModel();

            var metodoBusca = string.IsNullOrEmpty(nomeJogo) ? repositorio.BuscarNaoLocados() : repositorio.BuscarPorNome(nomeJogo);

            foreach (var jogo in metodoBusca)
            {
                var jogoModel = new JogoModel()
                {
                    Id = jogo.Id,
                    Nome = jogo.Nome,
                    Categoria = jogo.Categoria,
                    Selo = jogo.Selo
                };
                relatorioModel.ListaJogos.Add(jogoModel);
            }

            if (relatorioModel.ListaJogos.Count() != 0)
            {
                relatorioModel.QuantidadeTotal = relatorioModel.ListaJogos.Count();

                return View(relatorioModel);
            }

            else
            {
                ViewBag.Mensagem = "Nenhum jogo corresponde com a sua pesquisa. Por favor, tente novamente.";

                return View();
            }
        }
        public ActionResult JogosDisponiveis()
        {
            var model = new RelatorioModel();

            foreach (var jogo in repositorio.BuscarTodos())
            {
                var jogoModel = new JogoModel(jogo);
                model.Jogos.Add(jogoModel);

            }

            if (model.Jogos.Count == 0)
            {
                return View(model);
            }
            else
            {

                model.QuantidadeTotal = model.Jogos.Count();
                model.ValorMedio = model.Jogos.Average(j => j.Preco);
                model.JogoMaisCaro = (model.Jogos.OrderBy(j => j.Preco).FirstOrDefault()).Nome;
                model.JogoMaisBarato = (model.Jogos.OrderByDescending(j => j.Preco).FirstOrDefault()).Nome;

                return View(model);
            }
        }
        public ActionResult JogosDisponiveis(string nome)
        {
            RelatorioModel model = new RelatorioModel();

            try
            {
                bool verificarNome = string.IsNullOrEmpty(nome);
                var resultado = (verificarNome)? JogosRepositorio.BuscarTodos() : JogosRepositorio.BuscarPorNome(nome);

                foreach (var jogo in resultado)
                {
                    JogoModel jogoModels = new JogoModel(jogo.Nome, jogo.Categoria.ToString(), jogo.Selo.ToString())
                                                        { Id = jogo.Id };

                    model.Jogos.Add(jogoModels);
                }

                model.QuantidadeTotal = model.Jogos.Count;
                return View(model);
            }
            catch
            {
                TempData["Mensagem"] = "Nenhum jogo Encontrado";
                return View();
            }
        }
        public ActionResult JogosDisponiveis(string nomeJogo)
        {
            var model = new RelatorioModel();

            foreach (var jogo in repositorio.BuscarTodos())
            {
                var jogoModel = new JogoModel() { Nome = jogo.Nome, Preco = jogo.Preco, Categoria = jogo.Categoria.ToString() };
                model.Jogos.Add(jogoModel);
            }

            model.QuantidadeTotalDeJogos = model.Jogos.Count();

            return View(model);
        }
        public ActionResult JogosDisponiveis(string nome, string ordem = "Título(A-Z)")
        {
            repositorio = FabricaDeModulos.CriarJogoRepositorio();
            var model = new RelatorioModel();
            bool buscarPorNome = !string.IsNullOrEmpty(nome);

            IList<Jogo> listaDeJogos;

            if (buscarPorNome)
            {
                listaDeJogos = repositorio.BuscarPorNome(nome);
            }
            else
            {
                listaDeJogos = repositorio.BuscarTodos();
            }

            if (listaDeJogos.Count > 0)
            {
                ViewBag.Ordem = ordem;
                IOrderedEnumerable<Jogo> listaOrdenada = null;
                if (ordem == "Título(A-Z)")
                {
                    listaOrdenada = listaDeJogos.OrderBy(j => j.Nome);
                }
                else if (ordem == "Título(Z-A)")
                {
                    listaOrdenada = listaDeJogos.OrderByDescending(j => j.Nome);
                }

                foreach (var jogo in listaOrdenada)
                {
                    var jogoModel = new JogoModel()
                    {
                        Id = jogo.Id,
                        Nome = jogo.Nome,
                        Categoria = jogo.Categoria.ToString(),
                        Imagem = jogo.Imagem,
                        Selo = jogo.Selo
                    };

                    model.Jogos.Add(jogoModel);
                }
                model.QuantidadeTotalDeJogos = model.Jogos.Count;
            }
            return View(model);
        }
        public ActionResult JogosDisponiveis(string nomeJogo)
        {
            var model = new RelatorioModel();

            foreach (var jogo in repositorio.BuscarTodos())
            {
                var jogoModel = new JogoModel() { Nome = jogo.Nome, Preco = jogo.Preco, Categoria = jogo.Categoria.ToString() };
                model.Jogos.Add(jogoModel);
            }

            model.QuantidadeTotalDeJogos = model.Jogos.Count();
            model.JogoMaisCaro = model.Jogos.OrderBy(j => j.Preco).Last().Nome;
            model.JogoMaisBarato = model.Jogos.OrderBy(j => j.Preco).First().Nome;
            model.ValorMedio = model.Jogos.Average(j => j.Preco);

            return View(model);
        }
        public ActionResult JogosDisponiveis(string busca)
        {
            var model = new RelatorioModel();
            var buscaJogos = repositorio.BuscarPorNome(busca);
            var jogos = buscaJogos;

            if (!string.IsNullOrWhiteSpace(busca))
            {
                if (buscaJogos.Count() != 0)
                {
                    jogos = buscaJogos;
                }
                else
                {
                    model.EncontrouResultados = false;
                }
            }
            else
            {
                jogos = repositorio.BuscarTodos();
            }

            foreach(var jogo in jogos)
            {
                var jogoModel = new JogoModel
                    (jogo.Id, jogo.Nome, jogo.Preco, jogo.Categoria.ToString(), jogo.Selo.ToString());
                model.Jogos.Add(jogoModel);
            }

            if(model.EncontrouResultados)
            {
                model.QuantidadeDeJogos = model.Jogos.Count();

                var maiorPreco = model.Jogos.Max(jogo => jogo.Preco);
                var menorPreco = model.Jogos.Min(jogo => jogo.Preco);
                model.JogoMaisCaro = model.Jogos.First(jogo => jogo.Preco == maiorPreco).Nome;
                model.JogoMaisBarato= model.Jogos.First(jogo => jogo.Preco == menorPreco).Nome;

                model.PrecoMedio = model.Jogos.Average(jogo => jogo.Preco);
            }

            return View(model);
        }
        private RelatorioModel BuscarResultados(List<Jogo>listaDeJogos)
        {
            RelatorioModel relatorioModel = new RelatorioModel();
            relatorioModel.jogos = new List<JogoModel>();

            foreach (var jogo in listaDeJogos)
            {
                JogoModel jogoModel = new JogoModel(jogo.Id, jogo.Nome, jogo.Categoria.ToString(), jogo.Imagem, jogo.Selo.ToString());
                relatorioModel.jogos.Add(jogoModel);
            }

            relatorioModel.TotalJogos = relatorioModel.jogos.Count();
            //decimal MaisCaro = listaDeJogos.Max(jogo => jogo.Preco);
            //decimal MaisBarato = listaDeJogos.Min(jogo => jogo.Preco);
            //relatorioModel.ValorMedio = Math.Round(listaDeJogos.Average(jogo => jogo.Preco),2).ToString();
            //relatorioModel.JogoMaisCaro = listaDeJogos.First(jogo => jogo.Preco == MaisCaro).Nome;
            //relatorioModel.JogoMaisBarato = listaDeJogos.First(jogo => jogo.Preco == MaisBarato).Nome;

            return relatorioModel;
        }
        public ActionResult Devolucao()
        {
            var jogoRelatorioModel = new RelatorioModel();
            var metodoBusca = repositorioJogo.BuscarLocados();

            foreach (var jogo in metodoBusca)
            {
                var jogoModel = new JogoLocacaoModel()
                {
                    Id = jogo.Id,
                    Nome = jogo.Nome,
                    Selo = jogo.Selo,
                    DataEntrega = (DateTime)jogo.DataEntrega,
                    Valor = (decimal)jogo.Valor
                };
                jogoRelatorioModel.ListaJogosLocacao.Add(jogoModel);
            }

            return View(jogoRelatorioModel);
        }
        public ActionResult JogosDisponiveis(string nomeJogo)
        {
            repositorio = CriarJogoRepositorio();
            var model = new RelatorioModel();
            IList<Jogo> ListaJogos = new List<Jogo>();
            ListaJogos = ObterJogosPorFiltro(nomeJogo);

            foreach (var jogo in ListaJogos)
            {
                if (jogo.EstaDisponivel())
                {
                    var jogoModel = new JogoModel() { Id = jogo.Id, Nome = jogo.Nome, Categoria = jogo.Categoria.ToString(), Selo = jogo.Selo.ToString() };
                    model.Jogos.Add(jogoModel);
                }
            }
            if (ListaJogos.Count == 0)
            {
                return View("JogoNaoEncontrado");
            }
            model.QuantidadeDeJogos = model.Jogos.Count;

            return View(model);
        }
        public ActionResult JogosDisponiveis(string nomeJogo)
        {
            var relatorioModel = new RelatorioModel();

            var metodoBusca = string.IsNullOrEmpty(nomeJogo) ? repositorio.BuscarTodos() : repositorio.BuscarPorNome(nomeJogo);

            foreach (var jogo in metodoBusca)
            {
                var jogoModel = new JogoModel()
                {
                    Id = jogo.Id,
                    Nome = jogo.Nome,
                    Preco = jogo.Preco,
                    Categoria = jogo.Categoria.ToString(),
                    Selo = jogo.Selo.ToString()
                };
                relatorioModel.ListaJogos.Add(jogoModel);
            }

            if (relatorioModel.ListaJogos.Count() != 0)
            {
                relatorioModel.QuantidadeTotal = relatorioModel.ListaJogos.Count();
                relatorioModel.ValorMedio = relatorioModel.ListaJogos.Sum(valorMedio => valorMedio.Preco);
                relatorioModel.JogoMaisCaro = relatorioModel.ListaJogos.Max(maisCaro => maisCaro.Preco);
                relatorioModel.JogoMaisBarato = relatorioModel.ListaJogos.Min(maisBarato => maisBarato.Preco);

                return View(relatorioModel);
            }

            else
            {
                ViewBag.Mensagem = "Nenhum jogo corresponde com a sua pesquisa. Por favor, tente novamente.";

                return View();
            }
        }