Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos en el aula: actualizar y eliminar

@RestController
@RequestMapping("/pacientes")
public class PacienteController {

    @Autowired
    PacienteRepository pacienteRepository;

    @PostMapping()
    public void registrarPaciente(@RequestBody @Valid PacienteDTO datosPaciente) {
        pacienteRepository.save(new Paciente(datosPaciente));
    }

    @GetMapping()
    public Page<DatosPaciente> mostrarPacientes(Pageable pageable) {
        return pacienteRepository.findAll(pageable).map(DatosPaciente::new);
    }

    @PutMapping()
    @Transactional
    public void actualizarMedico(@RequestBody @Valid DatosPacienteAActualizar datosPacienteAActualizar) {
        Paciente paciente = pacienteRepository.getReferenceById(datosPacienteAActualizar.id());
        paciente.actualizarDatos(datosPacienteAActualizar);
    }

    @DeleteMapping("/{id}")
    @Transactional
    public void eliminarPaciente(@PathVariable Long id) {
        Paciente paciente = pacienteRepository.getReferenceById(id);
        paciente.desactivarPaciente();
    }
}
@Entity(name = "Paciente")
@Table(name = "pacientes")
@EqualsAndHashCode(of = "id")
public class Paciente {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String nombre;
    private String email;
    private String telefono;
    private String documento;
    private String calle;
    private String numero;
    private String comuna;
    private String ciudad;
    private Boolean activo;

    public Paciente(PacienteDTO pacienteDTO) {
        this.nombre = pacienteDTO.nombre();
        this.email = pacienteDTO.email();
        this.telefono = pacienteDTO.telefono();
        this.documento = pacienteDTO.documento();
        this.calle = pacienteDTO.calle();
        this.numero = pacienteDTO.numero();
        this.comuna = pacienteDTO.comuna();
        this.ciudad = pacienteDTO.ciudad();
        this.activo = true;
    }

    public Paciente() {
    }

    public Paciente(String nombre, String email, String telefono, String documento, String calle, String numero, String comuna, String ciudad) {
        this.nombre = nombre;
        this.email = email;
        this.telefono = telefono;
        this.documento = documento;
        this.calle = calle;
        this.numero = numero;
        this.comuna = comuna;
        this.ciudad = ciudad;
        this.activo = true;
    }

    public Long getId() {
        return id;
    }

    public String getNombre() {
        return nombre;
    }

    public String getEmail() {
        return email;
    }

    public String getTelefono() {
        return telefono;
    }

    public String getDocumento() {
        return documento;
    }

    public String getCalle() {
        return calle;
    }

    public String getNumero() {
        return numero;
    }

    public String getComuna() {
        return comuna;
    }

    public String getCiudad() {
        return ciudad;
    }

    public void actualizarDatos(@Valid DatosPacienteAActualizar datosPacienteAActualizar) {
        if (datosPacienteAActualizar.nombre() != null) {
            this.nombre = datosPacienteAActualizar.nombre();
        }
        if (datosPacienteAActualizar.email() != null) {
            this.email = datosPacienteAActualizar.email();
        }
        if (datosPacienteAActualizar.telefono() != null) {
            this.telefono = datosPacienteAActualizar.telefono();
        }
    }

    public void desactivarPaciente() {
        this.activo = false;
    }
}
public record DatosPacienteAActualizar(@NotNull Long id, String nombre, String email, String telefono) {
}
public record DatosPaciente(
    Long id,
    String nombre,
    String email,
    String telefono,
    String documento
    ) {

    public DatosPaciente(Paciente p) {
        this(p.getId(), p.getNombre(), p.getEmail(), p.getTelefono(), p.getDocumento());
    }
}
alter table pacientes add activo tinyint;
update pacientes set activo = 1;
1 respuesta

Hola Roberto, espero que estés bien

Considero su código muy bueno, en este momento no veo puntos de mejora. ¡Continúa con sus estudios y éxito en su carrera!

Gracias por compartir tu ejercício práctico con nosotros! Tu contribución es fundamental para el crecimiento de nuestra comunidad en Alura. Sigue comprometido y no dudes en regresar al foro en caso que tengas alguna duda o dificultad.

¡Abrazos y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!