Se o objetivo da exclusão lógica é não excluir a parte, como desfazer essa exclusão? não deveria ter sido mostrada? Professor pode mostrar?
Se o objetivo da exclusão lógica é não excluir a parte, como desfazer essa exclusão? não deveria ter sido mostrada? Professor pode mostrar?
Oii, Edgard, tudo bem?
Para desfazer uma exclusão lógica, você pode alterar o valor desse atributo de volta para um estado que indique que o registro está ativo de novo. Por exemplo, se você tem um campo booleano chamado ativo
que é definido como false
quando o registro é "excluído", para desfazer isso, você definiria ativo
como true
.
Vou deixar abaixo um exemplo de como fazer dentro de um controller no Spring:
@RestController
@RequestMapping("/api/usuarios")
public class UsuarioController {
@Autowired
private UsuarioRepository usuarioRepository;
// Método para desfazer a exclusão lógica
@PutMapping("/reativar/{id}")
public ResponseEntity reativarUsuario(@PathVariable Long id) {
Optional<Usuario> usuario = usuarioRepository.findById(id);
if (usuario.isPresent()) {
Usuario usuarioAtual = usuario.get();
if (!usuarioAtual.isAtivo()) {
usuarioAtual.setAtivo(true);
usuarioRepository.save(usuarioAtual);
return ResponseEntity.ok().body("Usuário reativado com sucesso!");
} else {
return ResponseEntity.badRequest().body("Usuário já está ativo.");
}
} else {
return ResponseEntity.notFound().build();
}
}
}
Ali temos um endpoint que recebe o ID de um usuário e verifica se ele está inativo. Se estiver, ele muda o estado para ativo e salva o registro. Isso efetivamente "desfaz" a exclusão lógica.
Se outra dúvida surgir, estamos disponíveis aqui no fórum.
Abraços! :)
Boa noite MARIA ISABEL TEIXEIRA, eu fiz o teste e funcionou com este if abaixo Optional usuario = usuarioRepository.findById(id); if (usuario.isPresent()) { Usuario usuarioAtual = usuario.get(); if (!usuarioAtual.isAtivo()) { usuarioAtual.setAtivo(true); usuarioRepository.save(usuarioAtual); return ResponseEntity.ok().body("Usuário reativado com sucesso!"); }
porém, quando refiz o teste para ele entrar no else:
else {
return ResponseEntity.badRequest().body("Usuário já está ativo.");
}
} else {
return ResponseEntity.notFound().build();
}
o mesmo não entrou e continua aparecendo como "Usuario reativado com sucesso". Voce pode me corrigir e me mostrar como voce fez o método isAtivo dentro da classe Usuario?
Consegui resolver, coloquei assim:
public boolean isAtivo() { if(getAtivo().booleanValue()) { return this.ativo = true; } return this.ativo = false; }