Exemple #1
0
 public Livros(LivroRequest request)
 {
     this.Titulo        = request.Titulo;
     this.Editora       = request.Editora;
     this.AnoPublicacao = request.AnoPublicacao;
     this.Autor         = request.Autor;
 }
        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));
        }
        /// <summary>
        /// Adiciona um novo Livro
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public LivroResponse Add(LivroRequest request)
        {
            List <Exemplares> exemplares = new List <Exemplares>();

            if (TitleAlreadyExists(request.Titulo))
            {
                throw new LivroException("Não é possível cadastrar o livro desejado pois já existe um com o mesmo Título");
            }

            Entity.Livros dbLivro = new Entity.Livros(request);
            _livroRepository.Add(dbLivro);

            // cadastra exemplares
            for (int i = 0; i < request.QtdeExemplares; i++)
            {
                Exemplares dbExemplares = new Exemplares()
                {
                    Livro = dbLivro
                };

                exemplares.Add(dbExemplares);
            }
            _exemplarRepository.AddRange(exemplares);

            _livroRepository.SaveChanges();
            _exemplarRepository.SaveChanges();

            return(new LivroResponse(dbLivro, exemplares));
        }
        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 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));
        }
        /// <summary>
        /// Exclui um livro
        /// </summary>
        /// <param name="request"></param>
        public void Delete(LivroRequest request)
        {
            _exemplarRepository.RemoveRange(_exemplarRepository.GetExemplarByBookId(request.Id));
            _livroRepository.Remove(request.Id);

            _exemplarRepository.SaveChanges();
            _livroRepository.SaveChanges();
        }
        /// <summary>
        /// Altera um livro já existente
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public LivroResponse Update(LivroRequest request)
        {
            Entity.Livros dbLivros = _livroRepository.GetById(request.Id);

            if (dbLivros == null)
            {
                throw new LivroException("O Livro informado para edição não existe");
            }

            if (request.Titulo != request.CurrentTitle)
            {
                if (TitleAlreadyExists(request.Titulo))
                {
                    throw new LivroException("Não é possível alterar o livro desejado pois já existe um com o mesmo Título");
                }
            }

            dbLivros.Titulo        = request.Titulo;
            dbLivros.Editora       = request.Editora;
            dbLivros.AnoPublicacao = request.AnoPublicacao;
            dbLivros.Autor         = request.Autor;

            int currentQtyExemplares = _exemplarRepository.GetExemplarByBookId(request.Id).Count();

            int countDifference = 0;

            if (currentQtyExemplares < request.QtdeExemplares)
            {
                List <Exemplares> exemplares = new List <Exemplares>();
                countDifference = (request.QtdeExemplares - currentQtyExemplares);

                for (int i = 0; i < countDifference; i++)
                {
                    Exemplares dbExemplar = new Exemplares()
                    {
                        LivroId = request.Id
                    };
                    exemplares.Add(dbExemplar);
                }
                _exemplarRepository.AddRange(exemplares);
            }
            else
            {
                countDifference = (currentQtyExemplares - request.QtdeExemplares);

                List <Exemplares> exemplares = _exemplarRepository.GetExemplarByBookId(request.Id)
                                               .OrderByDescending(__exemplar => __exemplar.Codigo)
                                               .Take(countDifference)
                                               .ToList();
                _exemplarRepository.RemoveRange(exemplares);
            }

            _livroRepository.Update(dbLivros);
            _livroRepository.SaveChanges();
            _exemplarRepository.SaveChanges();

            return(new LivroResponse(dbLivros));
        }
        private bool FieldsAreNotValid(LivroRequest request)
        {
            if (string.IsNullOrWhiteSpace(request.Titulo) || string.IsNullOrWhiteSpace(request.Editora) || request.AnoPublicacao <= 0 || string.IsNullOrWhiteSpace(request.Autor) || request.QtdeExemplares <= 0)
            {
                return(true);
            }

            return(false);
        }
Exemple #9
0
        public ActionResult Update(string id, [FromBody] LivroRequest request)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(NotFound());
            }

            _livroService.UpdateLivro(id, request);
            return(Ok());
        }
Exemple #10
0
 public HttpResponseMessage Edit(LivroRequest request)
 {
     try
     {
         _livroAplicacao.Persistir(request);
         return(Request.CreateResponse(HttpStatusCode.OK, ModelState));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex));
     }
 }
Exemple #11
0
        public IActionResult Editar([FromBody] LivroRequest request)
        {
            string NewTokien = this.ValidarAcesso(request.Tokien);

            if (NewTokien != null)
            {
                Livro Livro           = _Mapeamento.MapLivro(request);
                Livro LivroAtualizado = LivroServico.Edit(Livro);

                return(Ok(this.Commit(LivroAtualizado, NewTokien, LivroServico)));
            }
            return(NotFound());
        }
        public Livro MapLivro(LivroRequest request)
        {
            Livro resp = new Livro();

            try {
                resp            = _Mapper.Map <Livro>(request);
                resp.NumPaginas = Convert.ToInt32(request.NumPaginas);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            return(resp);
        }
Exemple #13
0
        public Dominio.Entidades.Livro Criar(LivroRequest request)
        {
            if (request == null)
            {
                return(null);
            }

            return(new Dominio.Entidades.Livro
            {
                Id = request.Id,
                Descricao = request.Descricao,
                Isbn = request.Isbn,
                Titulo = request.Titulo
            });
        }
Exemple #14
0
        public IActionResult Adicionar([FromBody] LivroRequest request)
        {
            string NewTokien = this.ValidarAcesso(request.Tokien);

            if (NewTokien != null)
            {
                Livro livro = _Mapeamento.MapLivro(request);

                LivroServico.Add(livro.Valid());
                LivroServico.Vincular(livro.Id, this.UserLogado.Id);

                return(Ok(this.Commit(request, NewTokien, livro)));
            }
            return(NotFound());
        }
Exemple #15
0
        public int Persistir(LivroRequest request)
        {
            var entidade = _livroFactory.Criar(request);

            _validator.Validar(entidade);

            if (entidade.Id == 0)
            {
                _repositorio.Adicionar(entidade);
            }
            else
            {
                _repositorio.Atualizar(entidade);
            }

            return(entidade.Id);
        }
Exemple #16
0
        public ActionResult Create([FromBody] LivroRequest request)
        {
            if (request == null)
            {
                return(null);
            }

            var livro = new Livro()
            {
                Titulo = request.Titulo,
                Isbn   = request.Isbn,
                Ano    = request.Ano,

                AutorId = request.AutorId,
            };

            var response = _livroService.AddLivro(livro);

            return(Ok(response));
        }
        public IActionResult Delete(int id, [FromBody] LivroRequest request)
        {
            try
            {
                if (id == 0)
                {
                    return(NotFound(new BaseResponse(false, "Não foi possível localizar o id informado para alteração")));
                }

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

                _livroService.Delete(request);
            }
            catch (Exception)
            {
                return(BadRequest(new BaseResponse(false, "Internal Server error")));
            }

            return(Ok(new BaseResponse(true, "Livro excluído com sucesso")));
        }
        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);
        }
        public BaseResponse DeleteBook(LivroRequest request)
        {
            BaseResponse baseResponse = null;

            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.Delete,
                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;

            baseResponse = JsonConvert.DeserializeObject <BaseResponse>(json);

            return(baseResponse);
        }
Exemple #20
0
 public Livro MapLivro(LivroRequest request)
 {
     return(_Mapper.Map <Livro>(request));
 }