public async Task <PagedList <PedidoVenda> > BuscarPorFiltroComPaginacao(PedidoVendaParams parametros) { try { return(await _repository.BuscarPorFiltroComPaginacao(parametros)); } catch (Exception e) { throw new Exception(e.Message); } }
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 })); }
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); } }