public async Task <Result <IReadOnlyList <LivroModel> > > GetLivrosAsync(LivroFilterQuery filter = null) { var spec = new LivroFilterSpecification(filter.EditoraId, filter.AutorId, filter.Titulo, filter.Idioma); var livros = (await _repositorio.ListAsync(spec)).ToList(); return(Result <IReadOnlyList <LivroModel> > .Success( _mapper.Map <IReadOnlyList <LivroModel> >(livros))); }
public override async Task ListAll(LivroSearch request, IServerStreamWriter <LivrosResponse> responseStream, ServerCallContext context) { var livrosResponse = new LivrosResponse(); Guid?editoraId, autorId; if (string.IsNullOrEmpty(request.EditoraId)) { editoraId = null; } else { editoraId = Guid.Parse(request.EditoraId); } if (string.IsNullOrEmpty(request.AutorId)) { autorId = null; } else { autorId = Guid.Parse(request.AutorId); } var searchQuery = new LivroFilterQuery { Titulo = request.Titulo, Idioma = request.Idioma, EditoraId = editoraId, AutorId = autorId }; var result = await _servico.GetLivrosAsync(filter : searchQuery); livrosResponse.Code = (int)context.Status.StatusCode; livrosResponse.Errors.AddRange(result.Errors); livrosResponse.Message = result.Errors.Any() ? "Erro ao retornar lista de livros" : "Livros retornados com sucesso"; livrosResponse.Data.AddRange( result.Value.Select(x => new LivroModel { Id = x.Id.ToString(), Titulo = x.Titulo, Descricao = x.Descricao, Valor = Convert.ToDouble(x.Valor), Isbn10 = x.ISBN_10, Edicao = x.Edicao, Idioma = x.Idioma, DataPublicacao = x.DataPublicacao.ToShortDateString(), NumeroPaginas = x.NumeroPaginas, EditoraId = x.EditoraId.ToString(), AutorId = x.AutorId.ToString() })); await responseStream.WriteAsync(livrosResponse); }