43-opcion3

 OPCION TRES:

validar cruce de fechas con la opción 3

donde la fecha de ingreso es menor que la fecha de ingreso en el sistema pero la fecha de salida es mayor a la fecha de ingreso que están en el sistema ese sería un tercer escenario donde la opción 3 pasaría falso.

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

/* VALIDAR CRUCE DE FECHAS OPCIÓN 3 */
if(fechaIngreso < respuesta[i]["fecha_ingreso"] && fechaSalida > respuesta[i]["fecha_ingreso"]) {
    opcion3[i] = false;
} else {
    opcion3[i] = true;
}

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

Validación de Cruce de Fechas - Opción 3: Reservas que Envuelven Otras Reservas

En sistemas de reservas, existe un tercer escenario crítico que debemos validar: cuando el rango de fechas del usuario "envuelve" una reserva existente. Es decir:

"¿La fecha de ingreso del usuario es antes de una reserva existente, pero su fecha de salida es después del ingreso de esa reserva?"

Esta es la Opción 3, y evita casos donde un usuario intenta reservar un período que incluye fechas ya ocupadas.


🔍 ¿Qué busca la Opción 3?

La condición verifica:

"¿El rango del usuario (fechaIngresofechaSalidacubre parcialmente una reserva existente?"

📌 Fórmula de Validación

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

📊 Ejemplo Práctico

Supongamos que en la tabla reservas tenemos:

fecha_ingresofecha_salida
2024-01-152024-01-20

Caso 1: Rango del usuario "envuelve" una reserva existente

  • Fechas del usuario:

    • fechaIngreso = "2024-01-10"

    • fechaSalida = "2024-01-18"

  • Validación:

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

Caso 2: Rango del usuario fuera de reservas existentes

  • Fechas del usuario:

    • fechaIngreso = "2024-01-05"

    • fechaSalida = "2024-01-12"

  • Validación:

    javascript
    if ("2024-01-05" < "2024-01-15" && "2024-01-12" > "2024-01-15")false
    • Resultado: opcion3[i] = true (Disponible).


⚙️ Integración con las Otras Validaciones

La disponibilidad final (validarDisponibilidad) se determina combinando todas las opciones:

javascript
if (opcion1[i] == false || opcion2[i] == false || opcion3[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 (Opción 3)

FechaColorOrigen
2024-01-15#847059BD (ocupado)

Ejemplo con validarDisponibilidad = true

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

🔑 Conclusión

La Opción 3 cubre un caso crítico:
✅ Detecta cuando un usuario intenta reservar un período que incluye fechas ya ocupadas.
✅ Complementa las Opciones 1 y 2 para una validación completa.

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

Comentarios

Entradas más populares de este blog

37. Enviando datos de la reserva - parte 1

40-pintar con php

42. Validar cruce de fechas - parte 1