Esto es lo que en el desafio desarrolle, no estoy seguro de haberlo echo bien, cualquier sugerencia o observacion es bien venida: RECORD: **DatosCancelamientoConsulta
En la clase Consulta el metodo que dio el profe:
public void cancelar(MotivoCancelamiento motivo) {
this.motivoCancelamiento = motivo;
}
**Enla clase ValidadorHorarioAntecedencia:
@Component("ValidadorHorarioAntecedenciaCancelamiento")
public class ValidadorHorarioAntecedencia implements ValidadorCancelamientoDeConsulta{
@Autowired
private ConsultaRepository repository;
@Override
public void validar(DatosCancelamientoConsulta datos){
var consulta = repository.getReferenceById(datos.idConsulta());
var ahora = LocalDateTime.now();
var diferenciaEnHoras = Duration.between(ahora, consulta.getFecha()).toHours();
if(diferenciaEnHoras < 24){
throw new ValidationException("Consulta solamente puede ser cancelada con antecedencia minima de 24 horas");
}
}
}
***En la interfaz ValidadorCancelamientoDeConsulta_:
public interface ValidadorCancelamientoDeConsulta {
public void validar(DatosCancelamientoConsulta datos);
}
*En la clase AgendaDeConsultaService: *
En la InterfazConsultaRepository :
@Repository
public interface ConsultaRepository extends JpaRepository<Consulta, Long> {
static void delete(Long idConsulta) {
}
Boolean existsByPacienteIdAndFechaBetween(Long idPaciente, LocalDateTime primerHorario, LocalDateTime ultimoHorario);
Boolean existsByMedicoIdAndFecha(Long idMedico, LocalDateTime fecha);
}
Solo me falta poner en el ConsultaController la funcion DELETE:
@DeleteMapping("/consultas")
@Transactional
public ResponseEntity cancelar(@PathVariable @Valid Long idConsulta){
ConsultaRepository.delete(idConsulta);
return ResponseEntity.noContent().build();
}
POR QUE ME MANDA ERROR AL ELIMINAR UNA CONSULTA: DELETED is not supported