Obtive o seguinte erro após implementar o método de escolha de médico aleatório:
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-09-26T09:52:30.836-03:00 ERROR 17576 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Field medico in Voll.med.Primeira.Api.domain.consultas.AgendamentoDeConsulta required a bean of type 'Voll.med.Primeira.Api.domain.medicos.Medico' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'Voll.med.Primeira.Api.domain.medicos.Medico' in your configuration.
Código da classe AgendamentoDeConsulta:
package Voll.med.Primeira.Api.domain.consultas;
import Voll.med.Primeira.Api.domain.medicos.Medico;
import Voll.med.Primeira.Api.domain.medicos.MedicoRepository;
import Voll.med.Primeira.Api.domain.pacientes.Paciente;
import Voll.med.Primeira.Api.domain.pacientes.PacienteRepository;
import Voll.med.Primeira.Api.infra.exception.ValidacaoException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class AgendamentoDeConsulta {
@Autowired
private ConsultaRepository consultaRepository;
@Autowired
private Medico medico;
@Autowired
private Paciente paciente;
@Autowired
private MedicoRepository medicoRepository;
@Autowired
private PacienteRepository pacienteRepository;
public void Agendamento(DadosAgendamentoDeConsulta dados){
if (!pacienteRepository.existsById(dados.idPaciente())){
throw new ValidacaoException("Paciente inexistente!");
}
if (dados.idMedico() != null && !medicoRepository.existsById(dados.idPaciente())){
throw new ValidacaoException("Paciente inexistente!");
}
var paciente = pacienteRepository.findById(dados.idPaciente()).get();
var medico = medicoRepository.findById(dados.idMedico()).get();
var consulta = new Consulta(null, medico, paciente, dados.data());
consultaRepository.save(consulta);
}
private Medico escolheMedico(DadosAgendamentoDeConsulta dados){
if (dados.idMedico() != null){
return medicoRepository.getReferenceById(dados.idMedico());
}
if (dados.especialidade() == null){
throw new ValidacaoException("Especialida não informada ou invalída, por favor informe a especialidade da consulta corretamente");
}
return medicoRepository.escolherMedicoAleatorioDisponivelNaData(dados.especialidade(),dados.data());
}
}