Beispiel #1
0
        public IActionResult Pesquisa(string filtro)
        {
            JObject o = JObject.Parse(filtro);

            LojaFiltrosModel filtros = o.ToObject <LojaFiltrosModel>();

            IEnumerable <Livro> livros = _facade.ListAllInclude <Livro>()
                                         .Where(l => !l.Inativo)
                                         .OrderBy(l => l.Titulo);

            if (!String.IsNullOrEmpty(filtros.Titulo))
            {
                livros = livros.Where(l => l.Titulo.Contains(filtros.Titulo));
            }

            if (!String.IsNullOrEmpty(filtros.Autor))
            {
                livros = livros.Where(l => l.Autor.Contains(filtros.Autor));
            }

            if (!String.IsNullOrEmpty(filtros.Isbn))
            {
                livros = livros.Where(l => l.Isbn.Contains(filtros.Isbn));
            }

            if (!String.IsNullOrEmpty(filtros.Editora))
            {
                livros = livros.Where(l => l.Editora.Nome.Contains(filtros.Editora));
            }

            if (!String.IsNullOrEmpty(filtros.Categorias))
            {
                string[] ctgs = filtros.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));
            }

            if (filtros.PrecoMin > 0)
            {
                livros = livros.Where(l => l.Valor > filtros.PrecoMin);
            }

            if (filtros.PrecoMax > 0)
            {
                livros = livros.Where(l => l.Valor < filtros.PrecoMax);
            }

            if (!String.IsNullOrEmpty(filtros.DataMin))
            {
                DateTime dataMin = Convert.ToDateTime(filtros.DataMin);
                livros = livros.Where(l => l.DtLancamento.Date >= dataMin.Date);
            }

            if (!String.IsNullOrEmpty(filtros.DataMax))
            {
                DateTime dataMax = Convert.ToDateTime(filtros.DataMax);
                livros = livros.Where(l => l.DtLancamento.Date <= dataMax.Date);
            }

            if (filtros.PaginaAtual > 0)
            {
                livros = livros.Skip((filtros.PaginaAtual - 1) * 8);
            }

            _vh = new ListaCardLivrosViewHelper
            {
                Entidades = new Dictionary <string, object>
                {
                    [typeof(IList <Livro>).Name]            = livros.Take(8).ToList(),
                    [nameof(ListaCardLivrosModel.PagAtual)] = filtros.PaginaAtual,
                    [nameof(ListaCardLivrosModel.PagMax)]   = (livros.Count() / 8) + 1
                }
            };

            return(PartialView("../Shared/_ListaLivrosCardPartial", _vh.ViewModel));
        }
Beispiel #2
0
        protected override void ToViewModel()
        {
            PaginaLojaModel      vm             = new PaginaLojaModel();
            LojaFiltrosModel     filtrosModel   = new LojaFiltrosModel();
            ListaCardLivrosModel listaCardModel = new ListaCardLivrosModel();

            if (Entidades == null)
            {
                _viewModel = vm;
                return;
            }

            ListaCardLivrosViewHelper listaCardHelper = new ListaCardLivrosViewHelper
            {
                Entidades = new Dictionary <string, object>
                {
                    [typeof(IList <Livro>).Name]            = Entidades[typeof(IList <Livro>).Name],
                    [nameof(ListaCardLivrosModel.PagAtual)] = Entidades[nameof(ListaCardLivrosModel.PagAtual)],
                    [nameof(ListaCardLivrosModel.PagMax)]   = Entidades[nameof(ListaCardLivrosModel.PagMax)]
                }
            };

            listaCardModel = (ListaCardLivrosModel)listaCardHelper.ViewModel;

            string Titulo     = nameof(LojaFiltrosModel.Titulo),
                   Autor      = nameof(LojaFiltrosModel.Autor),
                   Isbn       = nameof(LojaFiltrosModel.Isbn),
                   Editora    = nameof(LojaFiltrosModel.Editora),
                   PrecoMin   = nameof(LojaFiltrosModel.PrecoMin),
                   PrecoMax   = nameof(LojaFiltrosModel.PrecoMax),
                   DataMin    = nameof(LojaFiltrosModel.DataMin),
                   DataMax    = nameof(LojaFiltrosModel.DataMax),
                   Categorias = nameof(LojaFiltrosModel.Categorias);

            if (Entidades.ContainsKey(Titulo))
            {
                filtrosModel.Titulo = (string)Entidades[Titulo];
            }

            if (Entidades.ContainsKey(Autor))
            {
                filtrosModel.Autor = (string)Entidades[Autor];
            }

            if (Entidades.ContainsKey(Isbn))
            {
                filtrosModel.Isbn = (string)Entidades[Isbn];
            }

            if (Entidades.ContainsKey(Editora))
            {
                filtrosModel.Editora = (string)Entidades[Editora];
            }

            if (Entidades.ContainsKey(PrecoMin))
            {
                filtrosModel.PrecoMin = (double)Entidades[PrecoMin];
            }

            if (Entidades.ContainsKey(PrecoMax))
            {
                filtrosModel.PrecoMax = (double)Entidades[PrecoMax];
            }

            if (Entidades.ContainsKey(DataMin))
            {
                filtrosModel.PrecoMax = (double)Entidades[DataMin];
            }

            if (Entidades.ContainsKey(DataMax))
            {
                filtrosModel.PrecoMax = (double)Entidades[DataMax];
            }

            if (Entidades.ContainsKey(Categorias))
            {
                filtrosModel.Categorias = (string)Entidades[Categorias];
            }

            vm.Filtros = filtrosModel;
            vm.Livros  = listaCardModel;

            _viewModel = vm;
        }