public ActionResult <IEnumerable <Livro> > PostByFilter([FromBody] LivroFiltroDTO filtro) { try { var result = _livroService.GetLivrosPorFiltro(filtro); return(Ok(result)); } catch (Exception ex) { return(BadRequest(ex)); } }
public List <Livro> GetLivrosPorFiltro(LivroFiltroDTO filtro) { var query = _livroRepository.FilterByCondition(x => x.Id > 0); if (filtro.ISBN > 0) { query = query.Where(x => x.ISBN == filtro.ISBN); } if (!string.IsNullOrEmpty(filtro.Nome)) { query = query.Where(x => x.Nome.Contains(filtro.Nome)); } if (!string.IsNullOrEmpty(filtro.Autor)) { query = query.Where(x => x.Autor.Contains(filtro.Autor)); } if (filtro.Preco > 0) { query = query.Where(x => x.Preco == filtro.Preco); } if (filtro.SortBy != null && filtro.SortBy.ToUpper() == "ISBN") { return(query.OrderBy(o => o.ISBN).ToList()); } else if (filtro.SortBy != null && filtro.SortBy.ToUpper() == "NOME") { return(query.OrderBy(o => o.Nome).ToList()); } else if (filtro.SortBy != null && filtro.SortBy.ToUpper() == "AUTOR") { return(query.OrderBy(o => o.Autor).ToList()); } else if (filtro.SortBy != null && filtro.SortBy.ToUpper() == "PRECO") { return(query.OrderBy(o => o.Preco).ToList()); } else if (filtro.SortBy != null && filtro.SortBy.ToUpper() == "DATAPUBLICACAO") { return(query.OrderBy(o => o.DataPublicacao).ToList()); } return(query.ToList()); }