Supón que una habitación está reservada del 10 al 15 de octubre. (día 10 es fechaInicioFiltro y día 15 fechaFinalFiltro)
La fecha en que se solicita es del 8 al 12 de octubre.
FECHA_INICIO_FILTRO < fecha_inicio_reserva and FECHA_FINAL_FILTRO < fecha_inicio_reserva no se cumple
FECHA_FINAL_FILTRO > fecha_final_reserva and FECHA_INICIO_FILTRO > fecha_final_reserva no se cumple
La habitación no consta como ocupada, pero sí está ocupada, ya que basta con que haya un solape para que la solicitud no se pueda materializar (en este caso se solapa del 10 al 12 de octubre).
Yo sigo empeñado en determinar las posibilidades (AUNQUE ME EDITO Y CAMBIO LO DICHO, antes había identificado 3 posibilidades pero ahora estoy viendo cuatro):
Ejemplo 1: Solicitud dentro del intervalo de la reserva. Solicito del 10 al 15 de octubre. Hay reserva del 5 al 20 de octubre
fechaSolicitadaDeEntrada >= fechaIngresoEnLaReserva y fechaSolicitadaDeSalida<= fechaSalidaEnLaReserva
Ejemplo 2: La reserva empezó antes pero se solapa con las fechas solicitadas. solicito del 10 al 15 de octubre. Hay reserva del 7 al 12 de octubre.
fechaSolicitadaDeEntrada > fechaIngresoEnLaReserva y fechaSolicitadaDeEntrada<= fechaSalidaEnLaReserva
Ejemplo 3: La reserva empieza después pero se solapa con las fechas solicitadas. solicito del 10 al 15 de octubre. Hay reserva del 13 al 18 de octubre.
fechaSolicitadaDeEntrada < fechaEntradaEnLaReserva y fechaSolicitadaDeSalida > fechaEntradaEnLaReserva
Ejemplo 4: la reserva queda dentro del periodo solicitado. Solicito del 10 al 15 de octubre. Hay reserva del 13 al 14 de octubre.
fechaSolicitadaDeEntrada< fechaEntradaEnLaReserva y fechaSolicitadaDeSalida > fechaSalidaEnLaReserva
En estos cuatro casos la habitación no está disponible para reserva, en otro caso sí está disponible.
Eligiendo del total de habitaciones las que no cumplen con estas condiciones, tendríamos las habitaciones libres.
Aunque plantearlo sin probarlo es difícil e igual ya estoy viendo doble