Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Se funciona a exclusão lógica, como desfaze-lo

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?

4 respostas
solução!

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! :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

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; }