public async Task <PagedList <PedidoVenda> > BuscarPorFiltroComPaginacao(PedidoVendaParams parametros)
 {
     try
     {
         return(await _repository.BuscarPorFiltroComPaginacao(parametros));
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
예제 #2
0
        public async Task <IActionResult> BuscarPorFiltroComPaginacao([FromQuery] PedidoVendaParams parametros)
        {
            PagedList <PedidoVenda> pagina = await _pedidoVendaService.BuscarPorFiltroComPaginacao(parametros);


            var pageData = new
            {
                pagina.TotalCount,
                pagina.PageSize,
                pagina.CurrentPage,
                pagina.TotalPages,
                pagina.HasNext,
                pagina.HasPrevious
            };

            return(Ok(new { pagina, pageData }));
        }
예제 #3
0
        public async Task <PagedList <PedidoVenda> > BuscarPorFiltroComPaginacao(PedidoVendaParams parametros)
        {
            try
            {
                var pedidos = _context.Pedidos
                              .Include(p => p.Cliente)
                              .Include(p => p.ItemPedidos)
                              .ThenInclude(i => i.Produto).AsQueryable();


                if (parametros.Filter != null)
                {
                    pedidos = pedidos.Where(x =>
                                            x.Cliente.Nome.ToLower().Contains(parametros.Filter.ToLower()) ||
                                            x.ValorTotal.ToString().ToLower().Contains(parametros.Filter.ToLower()) ||
                                            x.DataVenda.ToString().ToLower().Contains(parametros.Filter.ToLower())
                                            );
                }
                if (parametros.SortOrder.ToLower().Equals("asc"))
                {
                    if (parametros.OrdenarPor.ToLower().Equals("cliente"))
                    {
                        pedidos = pedidos.OrderBy(pedido => pedido.Cliente.Nome);
                    }
                    if (parametros.OrdenarPor.ToLower().Equals("dataVenda"))
                    {
                        pedidos = pedidos.OrderBy(pedido => pedido.DataVenda);
                    }
                    if (parametros.OrdenarPor.ToLower().Equals("valorTotal"))
                    {
                        pedidos = pedidos.OrderBy(pedido => pedido.ValorTotal);
                    }
                }
                if (parametros.SortOrder.ToLower().Equals("desc"))
                {
                    if (parametros.OrdenarPor.Equals("cliente"))
                    {
                        pedidos = pedidos.OrderByDescending(pedido => pedido.Cliente.Nome);
                    }
                    if (parametros.OrdenarPor.Equals("dataVenda"))
                    {
                        pedidos = pedidos.OrderByDescending(pedido => pedido.DataVenda);
                    }
                    if (parametros.OrdenarPor.Equals("valorTotal"))
                    {
                        pedidos = pedidos.OrderByDescending(pedido => pedido.ValorTotal);
                    }
                }

                var result = await pedidos.Select(
                    p => new PedidoVenda
                {
                    Id         = p.Id,
                    DataVenda  = p.DataVenda,
                    ValorTotal = p.ValorTotal,
                    Cliente    = new Cliente
                    {
                        Id       = p.Cliente.Id,
                        Nome     = p.Cliente.Nome,
                        CPF      = p.Cliente.CPF,
                        Endereco = p.Cliente.Endereco,
                        Telefone = p.Cliente.Telefone,
                        Pedidos  = new List <PedidoVenda>()
                    },
                    ItemPedidos = p.ItemPedidos.Select(ip => new ItemPedidoVenda
                    {
                        Id         = ip.Id,
                        IdPedido   = ip.IdPedido,
                        IdProduto  = ip.IdProduto,
                        Preco      = ip.Preco,
                        Quantidade = ip.Quantidade,
                        SubTotal   = ip.SubTotal,
                        Produto    = new Produto
                        {
                            Id        = ip.Produto.Id,
                            Nome      = ip.Produto.Nome,
                            Descricao = ip.Produto.Descricao,
                            Valor     = ip.Produto.Valor
                        }
                    }).ToList()
                }).ToListAsync();

                return(PagedList <PedidoVenda> .ToPagedList(result, parametros.NumeroDaPaginaAtual, parametros.TamanhoDaPagina));
            }
            catch (MySqlException ex)
            {
                _context.Dispose();
                throw new Exception(ex.Message);
            }
        }