Não é possivel compilar o projeto, acusa o seguinte erro:
Erro: java: constructor Consulta in class med.voll.api.domain.consulta.Consulta cannot be applied to given types; required: no arguments found: ,med.voll.api.domain.medico.Medico,med.voll.api.domain.paciente.Paciente,@jakarta.validation.constraints.NotNull,@jakarta.validation.constraints.Future java.time.LocalDateTime reason: actual and formal argument lists differ in length
package med.voll.api.domain.consulta;
import med.voll.api.domain.ValidacaoException;
import med.voll.api.domain.consulta.validacaoes.ValidadorAgendamentoDeConsulta;
import med.voll.api.domain.medico.Medico;
import med.voll.api.domain.medico.MedicoRepository;
import med.voll.api.domain.paciente.PacienteRepository;
import org.springframework.beans.factory.annotation.Autowired;
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;
public DadosDetalhamentoConsulta agendar (DadosAgendamentoConsulta dados) {
if (!pacienteRepository.existsById(dados.idPaciente())) {
throw new ValidacaoException("id paciente não existe");
}
if((dados.idMedico() != null) && !medicoRepository.existsById(dados.idMedico())){
throw new ValidacaoException("id medico não existe");
}
validadores.forEach(v -> v.validar(dados));
var paciente = pacienteRepository.getReferenceById(dados.idPaciente());
var medico = escolherMedico(dados);
var consulta = new Consulta(null, medico, paciente, dados.data()); /*essa linha acusa erro*/
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 não foi selecionado médico");
}
return medicoRepository.escolherMedicoAleatorioLivreNaData(dados.especialidade(), dados.data());
}
}
package med.voll.api.domain.consulta;
import jakarta.persistence.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import med.voll.api.domain.medico.Medico;
import med.voll.api.domain.paciente.Paciente;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Table(name = "consultas")
@Entity(name = "Consulta")
@Getter
@NoArgsConstructor
@EqualsAndHashCode(of = "id")
public class Consulta {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "medico_id")
private Medico medico;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "paciente_id")
private Paciente paciente;
private LocalDateTime data;
}