****Estou tentando realizar a consulta no método agendar:
{ "idMedico": 1, "idPaciente": 2, "data": "2023-08-11T12:00:00" }
****Porem o retorno está caindo na exception do ValidadorPacienteAtivo:
Erro: Consulta não pode ser agendada para pacientes inativos!
Aqui está o meur Repository
@Repository
public interface PacientesRepository extends JpaRepository <PacientesEntity, Long> {
@Query("""
SELECT p.ativo
FROM PacientesEntity p
WHERE
p.id = :id
""")
Boolean findAtivoById(Long id);
}
Aqui está minha classe de validação
@Component
public class ValidadorPacienteAtivo implements Validador{
@Autowired
private PacientesRepository pacientesRepository;
public void validar(DadosAgendamentoConsulta dados) {
if(dados.idPaciente() == null) {
return;
}
var pacienteAtivo = pacientesRepository.findAtivoById(dados.idPaciente());
if(!pacienteAtivo) {
throw new RuntimeException("Consulta não pode ser agendada para pacientes inativos!");
}
}
}
Aqui está minha entidade paciente
@Entity
@Table(name = "pacientes")
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class PacientesEntity {
@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 PacientesEntity(DadosCadastrosPacientes dadosPacientes) {
this.nome = dadosPacientes.nome();
this.email = dadosPacientes.email();
this.telefone = dadosPacientes.telefone();
this.cpf = dadosPacientes.cpf();
this.endereco = new Endereco(dadosPacientes.endereco());
}
public void atualizarInformacoes(DadosAtualizacaoPacientes dadosPacientes) {
if (dadosPacientes.nome() != null) {
this.nome = dadosPacientes.nome();
}
if (dadosPacientes.telefone() != null) {
this.telefone = dadosPacientes.telefone();
}
if (dadosPacientes.endereco() != null) {
this.endereco.atualizarInformacoes(dadosPacientes.endereco());
}
}
public void excluir() {this.ativo = false;}
}