43-opcion dos

 Este es un segundo escenario cuando la fecha de ingreso del usuario 

es mayor a una fecha de ingreso que ya esté reservada pero al mismo tiempo es menor que una fecha 

de salida que ya se reserva.

/* VALIDAR CRUCE DE FECHAS OPCIÓN 2 */

if(fechaIngreso > respuesta[i]["fecha_ingreso"] && fechaIngreso < respuesta[i]["fecha_salida"]){
    opcion2[i] = false;
} else {
    opcion2[i] = true;
}

console.log("opcion1[i]", opcion1[i]);
console.log("opcion2[i]", opcion2[i]);

/* VALIDAR DISPONIBILIDAD */

if(opcion1[i] == false || opcion2[i] == false){
    validarDisponibilidad = false;
} else {
    validarDisponibilidad = true;
}

Validación de Cruce de Fechas - Opción 2: Solapamiento Parcial

En sistemas de reservas, no solo debemos verificar si una fecha coincide exactamente con una reserva existente, sino también detectar solapamientos parciales. Esta es la Opción 2, donde la fecha de ingreso del usuario cae dentro del rango de una reserva ya existente.


🔍 ¿Qué busca la Opción 2?

La condición verifica:

"¿La fecha de ingreso del usuario (fechaIngreso) está entre la fecha de ingreso y salida de una reserva ya existente?"

📌 Fórmula de Validación

javascript
if (fechaIngreso > respuesta[i]["fecha_ingreso"] && fechaIngreso < respuesta[i]["fecha_salida"]) {
    opcion2[i] = false; // ¡Hay conflicto! No disponible.
} else {
    opcion2[i] = true;  // No hay solapamiento.
}

📊 Ejemplo Práctico

Supongamos que en la tabla reservas tenemos:

fecha_ingresofecha_salida
2024-01-102024-01-15
2024-01-182024-01-25

Caso 1: Fecha de usuario dentro de un rango existente

  • Fecha ingresada por el usuario: 2024-01-12

  • Validación:

    javascript
    if ("2024-01-12" > "2024-01-10" && "2024-01-12" < "2024-01-15")true
    • Resultado: opcion2[i] = false (No disponible).

Caso 2: Fecha de usuario fuera de rangos existentes

  • Fecha ingresada por el usuario: 2024-01-16

  • Validación:

    javascript
    if ("2024-01-16" > "2024-01-10" && "2024-01-16" < "2024-01-15")false
    if ("2024-01-16" > "2024-01-18" && "2024-01-16" < "2024-01-25")false
    • Resultado: opcion2[i] = true (Disponible).


⚙️ Integración con la Validación General

La disponibilidad final (validarDisponibilidad) se determina combinando Opción 1 (fechas exactas) y Opción 2 (rangos):

javascript
if (opcion1[i] == false || opcion2[i] == false) {
    validarDisponibilidad = false; // ¡No hay disponibilidad!
} else {
    validarDisponibilidad = true;  // Todo correcto.
}

📌 Flujo de Decisiones

  1. Si validarDisponibilidad = false:

    • Se muestra error: "No hay disponibilidad".

    • Se pintan solo las fechas ocupadas (gris).

    • El ciclo se rompe (break).

  2. Si validarDisponibilidad = true:

    • Se pintan todas las fechas ocupadas de la BD.

    • Al finalizar el ciclo, si no hubo conflictos, se agregan las fechas del usuario (amarillo).


🎨 Visualización en el Calendario

  • Fechas ocupadas (BD): #847059 (gris).

  • Fechas disponibles (usuario): #FFCC29 (amarillo).

Ejemplo con validarDisponibilidad = false

FechaColorOrigen
2024-01-10#847059BD (ocupado)
2024-01-12#847059BD (ocupado)

Ejemplo con validarDisponibilidad = true

FechaColorOrigen
2024-01-10#847059BD (ocupado)
2024-01-16#FFCC29Usuario (OK)

🔑 Conclusión

La Opción 2 complementa la validación de reservas al detectar:
✅ Fechas que caen dentro de rangos ya reservados.
✅ Evita solapamientos parciales (ej: usuario quiere ingresar un día que ya está ocupado).

¿Necesitas más detalles? ¡Déjame un comentario! 👇

Comentarios