예제 #1
0
        public override async Task ListAll(AutorSearch request, IServerStreamWriter <AutoresResponse> responseStream, ServerCallContext context)
        {
            var autoresResponse = new AutoresResponse();
            var searchQuery     = new AutorSearchQuery
            {
                Nome  = request.Nome,
                Email = request.Email
            };

            var result = await _servico.GetAutoresAsync(filter : searchQuery);

            autoresResponse.Code = (int)context.Status.StatusCode;
            autoresResponse.Errors.AddRange(result.Errors);
            autoresResponse.Message = result.Errors.Any() ?
                                      "Erro ao retornar lista de autores" :
                                      "Autores retornados com sucesso";
            autoresResponse.Data.AddRange(
                result.Value.Select(x => new AutorModel
            {
                Id        = x.Id.ToString(),
                Nome      = x.Nome,
                Sobrenome = x.Sobrenome,
                Email     = x.Email,
                Bio       = x.Bio,
                Avatar    = x.Avatar
            }));

            await responseStream.WriteAsync(autoresResponse);
        }
        public async Task <Result <IReadOnlyList <AutorModel> > > GetAutoresAsync(AutorSearchQuery filter = null)
        {
            var spec    = new AutorSearchSpecification(filter.Nome, filter.Email);
            var autores = (await _repositorio.ListAsync(spec)).ToList();

            return(Result <IReadOnlyList <AutorModel> > .Success(
                       _mapper.Map <IReadOnlyList <AutorModel> >(autores)));
        }