public override async Task <LivroResponse> GetById(LivroFilter request, ServerCallContext context)
        {
            var livroResponse = new LivroResponse();

            var result = await _servico.GetLivroAsync(Guid.Parse(request.LivroId));

            if (result.Status is ResultStatus.NotFound)
            {
                livroResponse.Code = (int)context.Status.StatusCode;
                livroResponse.Errors.AddRange(result.Errors);
                livroResponse.Message = $"Nenhum livro com o id '{request.LivroId}' foi encontrado";

                return(livroResponse);
            }

            livroResponse.Code = (int)result.Status;
            livroResponse.Errors.AddRange(result.Errors);
            livroResponse.Message = "Busca realizada com sucesso";
            livroResponse.Data    = new LivroModel
            {
                Id             = result.Value.Id.ToString(),
                Titulo         = result.Value.Titulo,
                Descricao      = result.Value.Descricao,
                Valor          = Convert.ToDouble(result.Value.Valor),
                Isbn10         = result.Value.ISBN_10,
                Edicao         = result.Value.Edicao,
                Idioma         = result.Value.Idioma,
                DataPublicacao = result.Value.DataPublicacao.ToShortDateString(),
                NumeroPaginas  = result.Value.NumeroPaginas,
                EditoraId      = result.Value.EditoraId.ToString(),
                AutorId        = result.Value.AutorId.ToString()
            };

            return(livroResponse);
        }
        public IActionResult Post([FromBody] LivroRequest request)
        {
            LivroResponse livroResponse = null;

            try
            {
                if (request == null)
                {
                    return(BadRequest(new LivroResponse(false, "A request não foi encontrada")));
                }

                livroResponse = _livroService.Add(request);

                if (livroResponse == null)
                {
                    return(BadRequest(new LivroResponse(false, "Não foi possível cadastrar o livro informado")));
                }
            }
            catch (LivroException ex)
            {
                return(BadRequest(new LivroResponse(false, ex.Message)));
            }
            catch (Exception)
            {
                return(BadRequest(new LivroResponse(false, "Internal Server error")));
            }

            livroResponse.Status  = true;
            livroResponse.Message = "Cadastro realizado com sucesso";
            return(Ok(livroResponse));
        }
        public IActionResult Put(int id, [FromBody] LivroRequest request)
        {
            LivroResponse livroResponse = null;

            try
            {
                if (id == 0)
                {
                    return(NotFound(new LivroResponse(false, "Não foi possível localizar o id informado para alteração")));
                }

                if (id != request.Id)
                {
                    return(BadRequest(new LivroResponse(false, "O Id informado não condiz com o Id informado na request")));
                }

                livroResponse = _livroService.Update(request);
            }
            catch (LivroException ex)
            {
                return(BadRequest(new LivroResponse(false, ex.Message)));
            }
            catch (Exception)
            {
                return(BadRequest(new LivroResponse(false, "Internal Server error")));
            }

            livroResponse.Status  = true;
            livroResponse.Message = "Edição realizada com sucesso";
            return(Ok(livroResponse));
        }
        public LivroResponse PutBook(LivroRequest request)
        {
            LivroResponse livroResponse = null;

            if (FieldsAreNotValid(request))
            {
                return(new LivroResponse(false, "Informações incorretas. Verifique os campos e tente novamente"));
            }

            string url = string.Format(string.Concat(_configuration["ApiBase:Base"], "api/Livro/{0}"), request.Id);

            _client.DefaultRequestHeaders.Clear();
            _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpRequestMessage httpRequest = new HttpRequestMessage
            {
                Method     = HttpMethod.Put,
                RequestUri = new Uri(url),
                Content    = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json")
            };

            HttpResponseMessage response = _client.SendAsync(httpRequest).Result;

            string json = response.Content.ReadAsStringAsync().Result;

            livroResponse = JsonConvert.DeserializeObject <LivroResponse>(json);

            return(livroResponse);
        }
        public override async Task <LivroResponse> Create(LivroCreateRequest request, ServerCallContext context)
        {
            var livroResponse = new LivroResponse();
            var livroModel    = new Application.Models.LivroModel
            {
                Titulo         = request.Titulo,
                Descricao      = request.Descricao,
                Valor          = Convert.ToDecimal(request.Valor),
                ISBN_10        = request.Isbn10,
                Edicao         = request.Edicao,
                Idioma         = request.Idioma,
                DataPublicacao = DateTime.Parse(request.DataPublicacao),
                NumeroPaginas  = request.NumeroPaginas,
                EditoraId      = Guid.Parse(request.EditoraId),
                AutorId        = Guid.Parse(request.AutorId)
            };

            var result = await _servico.AddLivroAsync(livroModel);

            if (result.Status is ResultStatus.Invalid)
            {
                livroResponse.Code = (int)context.Status.StatusCode;
                livroResponse.Errors.AddRange(result.Errors);
                livroResponse.Message = $"Livro possui erros de validação";
                livroResponse.Validations.AddRange(result.ValidationErrors
                                                   .Select(x => new LivroValidationErrorsModel
                {
                    Error    = x.ErrorMessage,
                    Property = x.Identifier,
                    Nivel    = x.Severity.ToString()
                }));

                return(livroResponse);
            }

            livroResponse.Code = (int)result.Status;
            livroResponse.Errors.AddRange(result.Errors);
            livroResponse.Message = "Livro criado com sucesso";
            livroResponse.Data    = new LivroModel
            {
                Id             = result.Value.Id.ToString(),
                Titulo         = result.Value.Titulo,
                Descricao      = result.Value.Descricao,
                Valor          = Convert.ToDouble(result.Value.Valor),
                Isbn10         = result.Value.ISBN_10,
                Edicao         = result.Value.Edicao,
                Idioma         = result.Value.Idioma,
                DataPublicacao = result.Value.DataPublicacao.ToShortDateString(),
                NumeroPaginas  = result.Value.NumeroPaginas,
                EditoraId      = result.Value.EditoraId.ToString(),
                AutorId        = result.Value.AutorId.ToString()
            };

            return(livroResponse);
        }
Beispiel #6
0
        public async Task <ActionResult <Livro> > PostLivro(LivroResponse livroResponse)
        {
            var autorTake = await _context.Autores.FirstOrDefaultAsync(x => x.Id == livroResponse.Autor.Id);

            livroResponse.Autor = autorTake;
            Livro livro = new Livro {
                Titulo = livroResponse.Titulo, ISBN = livroResponse.ISBN, Ano = livroResponse.Ano, Autor = livroResponse.Autor
            };

            _context.Livros.Add(livro);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetLivro", new { id = livro.Id }, livro));
        }
        public ActionResult Create(LivroResponse livro)
        {
            if (ModelState.IsValid)
            {
                var client = new RestClient();

                var request = new RestRequest("https://localhost:5001/api/livros", DataFormat.Json);
                request.AddJsonBody(livro);
                var response = client.Post <Livro>(request);


                return(Redirect("/livro/index"));
            }
            return(BadRequest());
        }
Beispiel #8
0
        public IActionResult Get(string Tokien)
        {
            string NewTokien = this.ValidarAcesso(Tokien);

            if (NewTokien != String.Empty)
            {
                LivroResponse response = new LivroResponse()
                {
                    Tokien = NewTokien,
                    Livros = LivroServico.GetByLivroUsuario(this.UserLogado.Id)
                };

                return(Ok(response));
            }
            return(NotFound());
        }
        public override async Task <LivroResponse> Delete(LivroFilter request, ServerCallContext context)
        {
            var livroResponse = new LivroResponse();

            var result = await _servico.DeleteLivroAsync(Guid.Parse(request.LivroId));

            if (result.Status is ResultStatus.NotFound)
            {
                livroResponse.Code = (int)context.Status.StatusCode;
                livroResponse.Errors.AddRange(result.Errors);
                livroResponse.Message = $"Nenhum livro com o id '{request.LivroId}' foi encontrado";

                return(livroResponse);
            }

            livroResponse.Code = (int)result.Status;
            livroResponse.Errors.AddRange(result.Errors);
            livroResponse.Message = "Livro deletado com sucesso";

            return(livroResponse);
        }
        public LivroResponse PostBook(LivroRequest request)
        {
            LivroResponse livroResponse = null;

            if (FieldsAreNotValid(request))
            {
                return(new LivroResponse(false, "Informações incorretas. Verifique os campos e tente novamente"));
            }

            string url = string.Concat(_configuration["ApiBase:Base"], "api/Livro");

            _client.BaseAddress = new Uri(url);

            _client.DefaultRequestHeaders.Clear();
            _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = _client.PostAsJsonAsync(_client.BaseAddress, request).Result;

            string json = response.Content.ReadAsStringAsync().Result;

            livroResponse = JsonConvert.DeserializeObject <LivroResponse>(json);

            return(livroResponse);
        }