@Component
public class ValidadorPacienteSinOtraConsulta implements ValidadorDeConsultas {
@Autowired
private ConsultaRepository repository;
public void validar(DatosConsulta datos) {
var primerHorario = datos.fecha().withHour(7);
var ultimoHorario = datos.fecha().withHour(18);
var pacienteTieneOtraConsultaEnElDia = repository
.existsByPacienteIdAndMotivoCancelamientoIsNullAndFechaBetween(
datos.idPaciente(),
primerHorario,
ultimoHorario
);
if (pacienteTieneOtraConsultaEnElDia) {
throw new ValidacionException(
"Paciente ya tiene una consulta reservada para ese dia"
);
}
}
}
package med.voll.api.domain.consulta;
import org.springframework.data.jpa.repository.JpaRepository;
import java.time.LocalDateTime;
public interface ConsultaRepository extends JpaRepository<Consulta, Long> {
boolean existsByPacienteIdAndMotivoCancelamientoIsNullAndFechaBetween(
Long idPaciente,
LocalDateTime primerHorario,
LocalDateTime ultimoHorario
);
boolean existsByMedicoIdAndFechaAndMotivoCancelamientoIsNull(
Long idMedico,
LocalDateTime fecha
);
}