Oi Pessoas, estou com uma duvida, tenho que desenvolver um programa para alocação de salas e eventos, só que para para alocar sala evento precisa saber manipular Datas e eu ainda estou aprendendo. Vamos ao prolema, para fazer a locação de um evento em uma sala tenho que saber se já não existe um evento alocado naquele dia e horário, sendo que evento podem ser repetidos ou não, eventos podem se repedir durante varias semanas naquele mesmo dia da semana e horário, mas minha duvida e como verificar os eventos repetido, ou seja, que se repetem durante a semana naquela sala para que não dê choque de horário, como eu faço isso?
obs: estou utilizando a biblioteca LocalDateTime.
DateTimeFormatter formatoData = DateTimeFormatter.ofPattern("dd/MM/yyyy");
DateTimeFormatter formatoHora = DateTimeFormatter.ofPattern("HH:mm");
Buscar buscar = new Buscar();
Evento eventoAserAlocado = buscar.buscarEvento("EV-01");
String eventoAserAlocadoInicio = eventoAserAlocado.getDataInicio();
String EventoAserAlocadoFim = eventoAserAlocado.getDataFinal();
for(Alocar ea: alocados){
if(ea.getIdSala().equals("SA-01")){
Alocar alocado = ea;
Evento eventoJaAlocado = buscar.buscarEvento(alocado.getIdEvento());
String eventoJaAlocadoInicio = eventoJaAlocado.getDataInicio();
String eventoJaAlocadoFim = eventoJaAlocado.getDataFinal();
String arrayEventosJaAlocadosFim[] = new String[2];
String arrayEventosJaAlocadosInicio[] = new String[2];
String arrayEventosAserAlocadoFim[] = new String[2];
String arrayEventosAserAlocadoInicio[] = new String[2];
arrayEventosJaAlocadosInicio = eventoJaAlocadoInicio.split(" ");
arrayEventosJaAlocadosFim = eventoJaAlocadoFim.split(" ");
arrayEventosAserAlocadoInicio = eventoAserAlocadoInicio.split(" ");
arrayEventosAserAlocadoFim = EventoAserAlocadoFim.split(" ");
String eventoAserAlocadoDataInicio = arrayEventosAserAlocadoInicio[0];
String eventoAserAlocadoDataFim = arrayEventosAserAlocadoFim[0];
String eventoAserAlocadoHoraInicio = arrayEventosAserAlocadoInicio[1];
String eventoAserAlocadoHoraFim = arrayEventosAserAlocadoFim[1];
String eventoJaAlocadoDataInicio = arrayEventosJaAlocadosInicio[0];
String eventoJaAlocadoDataFim = arrayEventosJaAlocadosFim[0];
String eventoJaAlocadoHoraInicio = arrayEventosJaAlocadosInicio[1];
String eventoJaAlocadoHoraFim = arrayEventosJaAlocadosFim[1];
LocalDate sDataInicioEventoAserAlocado = LocalDate.parse(eventoAserAlocadoDataInicio , formatoData );
LocalDate sDataFim1EventoAserAlocado = LocalDate.parse(eventoAserAlocadoDataFim , formatoData );
LocalDate sDataInicioJaAlocado = LocalDate.parse(eventoJaAlocadoDataInicio , formatoData );
LocalDate sDataFim2JaAlocado = LocalDate.parse(eventoJaAlocadoDataFim , formatoData );
LocalTime horaInicialEventoAserAlocado = LocalTime.parse(eventoAserAlocadoHoraInicio, formatoHora);
LocalTime horaFinalEventoAserAlocado = LocalTime.parse(eventoAserAlocadoHoraFim, formatoHora);
LocalTime horaInicialEventoJaAlocado = LocalTime.parse(eventoJaAlocadoHoraInicio, formatoHora);
LocalTime horaFinalEventoJaAlocado = LocalTime.parse(eventoJaAlocadoHoraFim, formatoHora);
Period period = Period.between(sDataInicioEventoAserAlocado , sDataInicioJaAlocado);
if(eventoAserAlocado.getNumRepedicoes() > 0){
for(int i =0; i < eventoAserAlocado.getNumRepedicoes(); i++){
LocalDate rInicio = sDataInicioEventoAserAlocado.plusDays((i+1)*7);
Period period1 = Period.between(rInicio , sDataInicioJaAlocado);
Duration dur = Duration.between(horaFinalEventoAserAlocado , horaInicialEventoJaAlocado);
if(period1.getDays() == 0){
if(horaInicialEventoJaAlocado.isAfter(horaFinalEventoAserAlocado)){
System.out.println("true");
}
else if(dur.toMillis() < 60){
System.out.println("false");
}
else if(dur.toHours() == 0){
System.out.println("true");
}
else if(horaFinalEventoAserAlocado.isAfter(horaFinalEventoJaAlocado)){
System.out.println("false");
}
else if(horaInicialEventoAserAlocado.isAfter(horaInicialEventoJaAlocado)){
System.out.println("false");
}
else if(horaFinalEventoAserAlocado.isAfter(horaInicialEventoJaAlocado)){
System.out.println("false");
}
else {
System.out.println("false");
}
}
else{
}
}
}
else{
System.out.println("dia diferentes");
}
}
}