Por favor, alguém pode me ajudar com esse problema?
Field validadoresCancelamento in med.voll.api.domain.consulta.AgendaDeConsultas required a bean of type 'java.util.List' 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 'java.util.List' in your configuration.
import med.voll.api.domain.ValidacaoException;
import med.voll.api.domain.consulta.cancelamento.ValidadorCancelamentoDeConsulta;
import med.voll.api.domain.consulta.validacoes.agendamento.ValidadorAgendamentoDeConsulta;
import med.voll.api.domain.medico.Medico;
import med.voll.api.domain.medico.MedicoRepository;
import med.voll.api.domain.pacientes.PacienteRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class AgendaDeConsultas {
@Autowired
private ConsultaRepository consultaRepository;
@Autowired
private MedicoRepository medicoRepository;
@Autowired
private PacienteRepository pacienteRepository;
@Autowired
private List<ValidadorAgendamentoDeConsulta> validadores;
@Autowired
private List<ValidadorCancelamentoDeConsulta> validadoresCancelamento;
public DadosDetalhamentoConsulta agendar(DadosAgendamentoConsulta dados) {
if(!pacienteRepository.existsById(dados.idPaciente())) {
throw new ValidacaoException("Id do paciente informado não existe!");
}
if(dados.idMedico() != null && !medicoRepository.existsById((dados.idMedico())))
throw new ValidacaoException("Id do médico informado não existe!");
validadores.forEach(v -> v.validar(dados));
var paciente = pacienteRepository.getReferenceById(dados.idPaciente());
var medico = escolherMedico(dados);
if(medico == null) {
throw new ValidacaoException("Não existe médico disponível nessa data!");
}
var consulta = new Consulta(null, medico, paciente, dados.data(), null);
consultaRepository.save(consulta);
return new DadosDetalhamentoConsulta(consulta);
}
private Medico escolherMedico(DadosAgendamentoConsulta dados) {
if(dados.idMedico() != null) {
return medicoRepository.getReferenceById(dados.idMedico());
}
if(dados.especialidade() == null) {
throw new ValidacaoException("Especialidade é obrigatória quando o médico não for escolhido!");
}
return medicoRepository.escolherMedicoAleatorioLivreNaData(dados.especialidade(), dados.data());
}
public void cancelar(DadosCancelamentoConsulta dados) {
if (!consultaRepository.existsById(dados.idConsulta())) {
throw new ValidacaoException("Id da consulta informado não existe!");
}
validadoresCancelamento.forEach(v -> v.validar(dados));
var consulta = consultaRepository.getReferenceById(dados.idConsulta());
consulta.cancelar(dados.motivo());
}
}