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
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_salida2024-01-10 2024-01-15 2024-01-18 2024-01-25
Caso 1: Fecha de usuario dentro de un rango existente
Fecha ingresada por el usuario: 2024-01-12
Validación:
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:
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):
if (opcion1[i] == false || opcion2[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
Fecha Color Origen 2024-01-10 #847059BD (ocupado) 2024-01-12 #847059BD (ocupado)
Ejemplo con validarDisponibilidad = true
Fecha Color Origen 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
Publicar un comentario