public async Task <PagedList <OrdemCompra> > BuscarPorFiltroComPaginacao(OrdemCompraParams parametros) { try { return(await _repository.BuscarPorFiltroComPaginacao(parametros)); } catch (Exception e) { throw new Exception(e.Message); } }
public async Task <IActionResult> BuscarPorFiltroComPaginacao([FromQuery] OrdemCompraParams parametros) { PagedList <OrdemCompra> pagina = await _ordemCompraService.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 <OrdemCompra> > BuscarPorFiltroComPaginacao(OrdemCompraParams parametros) { try { var ordens = _context.OrdemCompras .Include(ordem => ordem.Fornecedor) .Include(ordem => ordem.ItemsOrdemCompra) .ThenInclude(i => i.Produto).AsQueryable(); if (parametros.Filter != null) { ordens = ordens.Where(x => x.Fornecedor.Nome.ToLower().Contains(parametros.Filter.ToLower()) || x.ValorTotal.ToString().ToLower().Contains(parametros.Filter.ToLower()) || x.DataEntrada.ToString().ToLower().Contains(parametros.Filter.ToLower()) ); } if (parametros.SortOrder.ToLower().Equals("asc")) { if (parametros.OrdenarPor.ToLower().Equals("fornecedor")) { ordens = ordens.OrderBy(ordem => ordem.Fornecedor.Nome); } if (parametros.OrdenarPor.ToLower().Equals("dataEntrada")) { ordens = ordens.OrderBy(ordem => ordem.DataEntrada); } if (parametros.OrdenarPor.ToLower().Equals("valorTotal")) { ordens = ordens.OrderBy(ordem => ordem.ValorTotal); } } if (parametros.SortOrder.ToLower().Equals("desc")) { if (parametros.OrdenarPor.Equals("fornecedor")) { ordens = ordens.OrderByDescending(ordem => ordem.Fornecedor.Nome); } if (parametros.OrdenarPor.Equals("dataEntrada")) { ordens = ordens.OrderByDescending(ordem => ordem.DataEntrada); } if (parametros.OrdenarPor.Equals("valorTotal")) { ordens = ordens.OrderByDescending(ordem => ordem.ValorTotal); } } var result = await ordens.Select( ordem => new OrdemCompra { Id = ordem.Id, DataEntrada = ordem.DataEntrada, ValorTotal = ordem.ValorTotal, Fornecedor = new Fornecedor { Id = ordem.Fornecedor.Id, Nome = ordem.Fornecedor.Nome, CNPJ = ordem.Fornecedor.CNPJ, Telefone = ordem.Fornecedor.Telefone, OrdemCompras = new List <OrdemCompra>() }, ItemsOrdemCompra = ordem.ItemsOrdemCompra.Select(ip => new ItemOrdemCompra { Id = ip.Id, IdOrdemCompra = ip.IdOrdemCompra, 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 <OrdemCompra> .ToPagedList(result, parametros.NumeroDaPaginaAtual, parametros.TamanhoDaPagina)); } catch (MySqlException ex) { _context.Dispose(); throw new Exception(ex.Message); } }