Source: controllers/c_controlarFecha.js

/**
 * @fileoverview Script que obtiene los momentos activos actuales y los envía al backend.
 * @author Mauricio Peña Domínguez
 */

import M_obtenerMomentos from "/InscripcionesEVG/assets/js/models/m_obtenerMomentos.js";

/**
 * Controla los momentos activos según la fecha actual y los guarda mediante una petición al backend.
 * Separa el momento general y el de torneo olímpico, si están activos.
 *
 * @async
 * @function controlarFecha
 * @returns {Promise<void>}
 */
async function controlarFecha() {
	try {
		const gestorMomentos = new M_obtenerMomentos();

		/** @type {Array<Object>} */
		const momentos = await gestorMomentos.obtenerMomentos();

		const hoy = new Date();

		/**
		 * Filtra los momentos que están activos en la fecha actual.
		 * @type {Array<Object>}
		 */
		const momentosActuales = momentos.filter((m) => {
			const inicio = new Date(m.fecha_inicio);
			const fin = new Date(m.fecha_fin);
			return hoy >= inicio && hoy <= fin;
		});

		/** @type {Object|null} */
		let momentoTorneoOlimpico = null;

		/** @type {Object|null} */
		let momentoActual = null;

		console.log(momentosActuales);

		// Separa el momento de tipo torneo olímpico (idMomento == 0)
		for (const momento of momentosActuales) {
			if (momento.idMomento == 0) {
				momentoTorneoOlimpico = momento;
			} else {
				momentoActual = momento;
			}
		}

		console.log("Momento actual:", momentoActual);
		console.log("Momento Torneo Olímpico:", momentoTorneoOlimpico);

		// Enviar momentos activos al backend
		await fetch(
			"/InscripcionesEVG/index.php?controlador=controlarFecha&accion=guardarMomentosActivos&j=1",
			{
				method: "POST",
				headers: { "Content-Type": "application/json" },
				body: JSON.stringify({
					momentoActual,
					momentoTorneoOlimpico,
				}),
			},
		);
	} catch (error) {
		console.error("Error al controlar fecha:", error);
	}
}

// Ejecutar al cargar la página
controlarFecha();
ontrolarFecha();