public RetornoBase <Livro> Localizar(int livroId) { var retorno = new RetornoBase <Livro>(); try { var tbLivro = db.Livros.Include("Editora").Include("Autores").FirstOrDefault(x => x.LivroId == livroId); if (tbLivro != null) { retorno.Valor = RepositorioLivro.TabLivroParaLivro(tbLivro); } else { retorno.Mensagem = $"Livro não localizado para ID {livroId}."; } } catch (Exception ex) { retorno.Mensagem = $"Não foi possível localizar o livro {livroId}."; retorno.Problemas.Add($"Falha ao {nameof(Localizar)} em {nameof(RepositorioLivro)}: {ex.Message}"); } return(retorno); }
public RetornoBase <ICollection <Livro> > ListarAcervo(string titulo, int editoraId, int autorId) { var retorno = new RetornoBase <ICollection <Livro> >(); try { List <Expression <Func <TabLivro, bool> > > expressoes = new List <Expression <Func <TabLivro, bool> > >(); if (!string.IsNullOrEmpty(titulo)) { expressoes.Add(x => x.Titulo.Contains(titulo)); } if (editoraId > 0) { expressoes.Add(x => x.EditoraId == editoraId); } if (autorId > 0) { expressoes.Add(x => x.Autores.Select(a => a.AutorId).Contains(autorId)); } List <TabLivro> tbLivros = null; if (expressoes.Count > 0) { if (expressoes.Count > 1) { var exLivro = expressoes[0].And(expressoes[1]); for (var i = 2; i < expressoes.Count; i++) { exLivro = exLivro.And(expressoes[i]); } tbLivros = db.Livros.Include("Editora").Include("Autores").Where(exLivro).ToList(); } else { tbLivros = db.Livros.Include("Editora").Include("Autores").Where(expressoes[0]).ToList(); } } else { tbLivros = db.Livros.Include("Editora").Include("Autores").ToList(); } if (tbLivros != null) { retorno.Valor = new List <Livro>(); foreach (var tbLivro in tbLivros) { retorno.Valor.Add(RepositorioLivro.TabLivroParaLivro(tbLivro)); } } else { retorno.Mensagem = $"Nenhum livro no acervo para os dados de entrada."; } } catch (Exception ex) { retorno.Mensagem = $"Não foi possível listar o acervo."; retorno.Problemas.Add($"Falha ao {nameof(ListarAcervo)} em {nameof(RepositorioLivro)}: {ex.Message}"); } return(retorno); }