Пример #1
0
        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));
        }
Пример #2
0
        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;
        }