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 (fechaIngreso–fechaSalida) cubre parcialmente una reserva existente?"
📌 Fórmula de Validación
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_salida2024-01-15 2024-01-20
Caso 1: Rango del usuario "envuelve" una reserva existente
Fechas del usuario:
fechaIngreso = "2024-01-10"
fechaSalida = "2024-01-18"
Validación:
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:
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:
if (opcion1[i] == false || opcion2[i] == false || opcion3[i] == false) {
validarDisponibilidad = false; // ¡No hay disponibilidad!
} else {
validarDisponibilidad = true; // Todo correcto.
}
📌 Flujo de Decisiones
Si validarDisponibilidad = false:
Se muestra error: "No hay disponibilidad".
Se pintan solo las fechas ocupadas (gris).
El ciclo se rompe (break).
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)
Fecha Color Origen 2024-01-15 #847059BD (ocupado)
Ejemplo con validarDisponibilidad = true
Fecha Color Origen 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
Publicar un comentario