public IActionResult _LivrosBusca(string json) { JObject o = JObject.Parse(json); FiltrosAdminLivroModel f = o.ToObject <FiltrosAdminLivroModel>(); IEnumerable <Livro> livros = _facade.ListAllInclude <Livro>(); livros = f.Id != 0 ? livros.Where(t => t.Id == f.Id) : livros; if (!String.IsNullOrEmpty(f.TituloAutor)) { livros = livros.Where(l => l.Titulo .Contains(f.TituloAutor)) .Concat(livros .Where(l => l.Autor.Contains(f.TituloAutor)) .Distinct()); } if (!String.IsNullOrEmpty(f.Categorias)) { string[] ctgs = f.Categorias.Split(" "); IEnumerable <CategoriaLivro> categoriaLivros = _facade.Query <CategoriaLivro>(c => ctgs.Contains(c.Nome), c => c); IEnumerable <LivroCategoriaLivro> livCtl = livros.SelectMany(c => c.LivrosCategoriaLivros); IEnumerable <int> ids = livCtl.Where(l => categoriaLivros.Select(c => c.Id).Contains(l.CategoriaLivroId)) .Select(l => l.LivroId).Distinct(); livros = livros.Where(l => ids.Contains(l.Id)); } livros = f.ValorMin > 0 ? livros.Where(l => l.Valor > f.ValorMin) : livros; livros = f.ValorMax > 0 ? livros.Where(l => l.Valor < f.ValorMax) : livros; livros = f.IncluiInativos ? livros : livros.Where(l => !l.Inativo); livros = f.PagAtual > 0 ? livros.Skip((f.PagAtual - 1) * 10) : livros; _vh = new ListaAdminLivroViewHelper { Entidades = new Dictionary <string, object> { [typeof(IList <Livro>).FullName] = livros.Take(10).ToList(), [nameof(ListaAdminLivroModel.PagAtual)] = 1, [nameof(ListaAdminLivroModel.PagMax)] = (livros.Count() / 10) + 1 } }; ListaAdminLivroModel vm = (ListaAdminLivroModel)_vh.ViewModel; vm.Filtros = f; return(PartialView("../Admin/PartialViews/_TabelaLivrosConfigPartial", vm)); }
protected override void ToViewModel() { ListaAdminLivroModel vm = new ListaAdminLivroModel { PagAtual = (int)Entidades[nameof(ListaAdminLivroModel.PagAtual)], PagMax = (int)Entidades[nameof(ListaAdminLivroModel.PagMax)] }; IList <Livro> livros = (IList <Livro>)Entidades[typeof(IList <Livro>).FullName]; AdminLivroViewHelper livroVh = new AdminLivroViewHelper(); foreach (var livro in livros) { livroVh.Entidades = new Dictionary <string, object> { [typeof(Livro).Name] = livro }; vm.Livros.Add((AdminLivroModel)livroVh.ViewModel); } ; _viewModel = vm; }