//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)); }
//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)); }
//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()); }