Пример #1
0
        //Pegar apenas uma palavra
        public ActionResult ObterUmaPalavra(int id)
        {
            var obj = _repository.ObterUmaPalavra(id);

            //Verificando se a palavra existe pelo id
            // se nao existe, retornar um not found 404
            if (obj == null)
            {
                return(NotFound());
            }

            //Mapeando a Palavra e transformando em PalavraDto
            PalavraDto palavraDto = _mapper.Map <Palavra, PalavraDto>(obj);

            #region Adicionando os Links
            //Vantagem do Url.Link é deixar o link da api dinâmico e assim vai funcionar bem no deploy
            palavraDto.Links.Add(new LinkDTO("self", Url.Link("ObterUmaPalavra", new { id = palavraDto.Id }), "GET"));

            //Mostrando ao usuário que existe outras funcionalidades atráves dos links
            palavraDto.Links.Add(new LinkDTO("update", Url.Link("AtualizarPalavra", new { id = palavraDto.Id }), "PUT"));
            palavraDto.Links.Add(new LinkDTO("delete", Url.Link("DeletarPalavra", new { id = palavraDto.Id }), "DELETE"));

            #endregion


            return(Ok(palavraDto));
        }
Пример #2
0
        //Cadastrar palavra
        public ActionResult CadastrarPalavra([FromBody] Palavra palavra)
        {
            #region Validações de cadastro
            // caso o usuário enviar um formulário vazio
            if (palavra == null)
            {
                return(BadRequest());
            }

            // Validando os dados enviados. Se ficou algum campo sem preencher
            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            #endregion
            // Colocando a própria API para fornecer a data de cadastro e de Ativo
            palavra.Ativo  = true;
            palavra.Criado = DateTime.Now;

            //Cadastrando palavra
            _repository.CadastrarPalavra(palavra);

            PalavraDto palavraDto = _mapper.Map <Palavra, PalavraDto>(palavra);
            palavraDto.Links.Add(new LinkDTO("self",
                                             Url.Link("ObterUmaPalavra",
                                                      new { id = palavraDto.Id }), "GET"));

            return(Created($"/api/palavras/{palavra.Id}", palavraDto));
        }
        public ActionResult Obter(int id)
        {
            var obj = _repository.Obter(id);

            if (obj == null)
            {
                //return StatusCode(404);
                return(NotFound());
            }

            PalavraDto palavraDto = _mapper.Map <Palavra, PalavraDto>(obj);

            palavraDto.Links = new List <LinkDto>();
            palavraDto.Links.Add(
                new LinkDto("self", Url.Link("ObterPalavra", new { id = palavraDto.Id }), "GET")
                );
            palavraDto.Links.Add(
                new LinkDto("update", Url.Link("AtualizarPalavras", new { id = palavraDto.Id }), "PUT")
                );
            palavraDto.Links.Add(
                new LinkDto("delete", Url.Link("ExcluirPalavra", new { id = palavraDto.Id }), "DELETE")
                );

            return(Ok(palavraDto));
        }
Пример #4
0
        //Atualizar palavra
        public ActionResult AtualizarPalavra(int id, [FromBody] Palavra palavra)
        {
            #region Validações de cadastro
            var obj = _repository.ObterUmaPalavra(id);
            // validando se a palavra existe no banco de dados
            if (obj == null)
            {
                return(NotFound());
            }

            // caso o usuário enviar um formulário vazio
            if (palavra == null)
            {
                return(BadRequest());
            }

            // Validando os dados enviados. Se ficou algum campo sem preencher
            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityResult());
            }

            #endregion

            palavra.Id = id;

            //Setando automáticamente esses valores para que o usuário não possa modificar.
            palavra.Ativo  = obj.Ativo;
            palavra.Criado = obj.Criado;

            // API colocará a data sozinha // controle interno
            palavra.Atualizado = DateTime.Now;

            _repository.AtualizarPalavra(palavra);

            PalavraDto palavraDto = _mapper.Map <Palavra, PalavraDto>(palavra);
            // Passando o link para poder ver a palavra atualizada
            palavraDto.Links.Add(new LinkDTO("self",
                                             Url.Link("ObterUmaPalavra",
                                                      new { id = palavraDto.Id }), "GET"));

            return(Ok());
        }