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 }));
        }
Beispiel #3
0
        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);
            }
        }