43-1
Explicación del Código para Principiantes
Vamos a analizar este código paso a paso, como si estuvieras aprendiendo a programar. Es un código que verifica la disponibilidad de fechas en un calendario, probablemente para un sistema de reservas.
Estructura Principal
El código tiene una estructura condicional principal:
if(respuesta.length == 0) {
// Código cuando no hay respuestas
} else {
// Código cuando hay respuestas
}Esto significa que el comportamiento será diferente dependiendo de si tenemos datos en la variable respuesta o no.
Caso 1: Cuando no hay respuestas (respuesta.length == 0)
$('#calendar').fullCalendar({
defaultDate: fechaIngreso,
header: {
left: 'prev',
center: 'title',
right: 'next'
},
events: [
{
start: fechaIngreso,
end: fechaSalida,
rendering: 'background',
color: '#FFCC29'
}
]
});
colDerReservas();Aquí estamos:
Inicializando un calendario con la biblioteca FullCalendar
Estableciendo la fecha por defecto como
fechaIngresoConfigurando el encabezado con botones de navegación
Añadiendo un evento que muestra un fondo amarillo (
#FFCC29) entre las fechas de ingreso y salidaLlamando a la función
colDerReservas()(probablemente para mostrar más detalles)
Interpretación: Si no hay reservas existentes, mostramos directamente las fechas seleccionadas como disponibles (en amarillo).
Caso 2: Cuando hay respuestas (respuesta.length > 0)
Aquí el código es más complejo. Vamos por partes:
1. Bucle para revisar cada reserva existente
for(var i = 0; i < respuesta.length; i++) {
// Validaciones de fechas
}Recorremos cada elemento en respuesta (que probablemente contiene reservas existentes).
2. Tres validaciones de fechas
Hay tres formas de verificar si las nuevas fechas chocan con las existentes:
Opción 1: Fecha de ingreso coincide exactamente con una reserva existente
if(fechaIngreso == respuesta[i]["fecha_ingreso"]) {
opcion1[i] = false; // Hay conflicto
} else {
opcion1[i] = true; // No hay conflicto
}Opción 2: Fecha de ingreso está dentro de un rango de reserva existente
if(fechaIngreso > respuesta[i]["fecha_ingreso"] && fechaIngreso < respuesta[i]["fecha_salida"]) {
opcion2[i] = false; // Hay conflicto
} else {
opcion2[i] = true; // No hay conflicto
}Opción 3: El rango de fechas nuevo incluye el inicio de una reserva existente
if(fechaIngreso < respuesta[i]["fecha_ingreso"] && fechaSalida > respuesta[i]["fecha_ingreso"]) {
opcion3[i] = false; // Hay conflicto
} else {
opcion3[i] = true; // No hay conflicto
}3. Validación final de disponibilidad
if(opcion1[i] == false || opcion2[i] == false || opcion3[i] == false) {
validarDisponibilidad = false; // No disponible
} else {
validarDisponibilidad = true; // Disponible
}Si cualquiera de las tres opciones indica conflicto (false), entonces no hay disponibilidad.
4. Acciones según disponibilidad
Si no hay disponibilidad:
totalEventos.push({
"start": respuesta[i]["fecha_ingreso"],
"end": respuesta[i]["fecha_salida"],
"rendering": 'background',
"color": '#847059' // Color café/marrón
});
$(".infoDisponibilidad").html('<h5 class="pb-5 float-left">¡Lo sentimos, no hay disponibilidad para esa fecha!<br><br><strong>¡Vuelve a intentarlo!</strong></h5>');
break; // Sale del bucleAñade la reserva existente al calendario en color café
Muestra un mensaje de no disponibilidad
Termina el bucle con
break(no necesita seguir verificando)
Si hay disponibilidad:
totalEventos.push({
"start": respuesta[i]["fecha_ingreso"],
"end": respuesta[i]["fecha_salida"],
"rendering": 'background',
"color": '#847059' // Color café/marrón
});
$(".infoDisponibilidad").html('<h1 class="pb-5 float-left">¡Está Disponible!</h1>');
colDerReservas();Añade la reserva existente al calendario en color café
Muestra un mensaje de disponibilidad
Llama a
colDerReservas()
5. Después del bucle
Si después de revisar todas las reservas validarDisponibilidad sigue siendo true:
totalEventos.push({
"start": fechaIngreso,
"end": fechaSalida,
"rendering": 'background',
"color": '#FFCC29' // Color amarillo
});Añade las nuevas fechas seleccionadas al calendario en color amarillo.
6. Finalmente, muestra el calendario
$('#calendar').fullCalendar({
defaultDate: fechaIngreso,
header: {
left: 'prev',
center: 'title',
right: 'next'
},
events: totalEventos
});Inicializa el calendario con todos los eventos acumulados en totalEventos.
Resumen
Este código:
Verifica si hay reservas existentes
Si no hay, marca las fechas seleccionadas como disponibles
Si hay reservas, verifica si las nuevas fechas chocan con las existentes
Muestra mensajes y colorea el calendario según la disponibilidad
Las fechas existentes se muestran en café, las nuevas en amarillo si están disponibles
Es un sistema típico de verificación de disponibilidad para hoteles, rentas de vacaciones, etc.
Comentarios
Publicar un comentario