package med.voll.api.domain.paciente;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
public interface PacienteRepository extends JpaRepository<Paciente, Long> {
Page<Paciente> findAllByAtivoTrue(Pageable paginacao);
@Query("""
select p.ativo
from Paciente
where
p.id = :idPaciente
""")
Boolean findAtivoById(Long idPaciente);
}
package med.voll.api.domain.paciente;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import med.voll.api.domain.endereco.Endereco;
@Table(name="pacientes")
@Entity(name="Paciente")
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Paciente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String email;
private String telefone;
private String cpf;
@Embedded
private Endereco endereco;
private boolean ativo;
public Paciente(DadosCadastroPaciente dados) {
this.nome = dados.nome();
this.email = dados.email();
this.telefone = dados.telefone();
this.cpf = dados.cpf();
this.endereco = new Endereco(dados.endereco());
this.ativo = true;
}
public void atualizarInformacoes(DadosAtulizacaoPaciente dados) {
if(dados.nome()!=null){
this.nome = dados.nome();
}
if(dados.telefone()!=null){
this.telefone = dados.telefone();
}
if(dados.endereco()!=null){
this.endereco.atualizarInformacoes(dados.endereco());
}
}
public void excluir() {
this.ativo = false;
}
}