/**
* Módulo para manejar la cadena de confirmaciones de borrado con modales, loader y manejo de errores.
*
* @module borrarInscripciones
* @author Mauricio Peña
*/
import { ModalConfirmacion } from "/InscripcionesEVG/assets/js/utils/modalConfirmacion.js";
import { Loader } from "/InscripcionesEVG/assets/js/utils/loader.js";
import { ErrorDialog } from "/InscripcionesEVG/assets/js/utils/errorHandler.js";
document.addEventListener("DOMContentLoaded", () => {
/**
* Botón que inicia el proceso de borrado.
* @type {HTMLButtonElement | null}
*/
const btnBorrar = document.querySelector(".btn-borrar");
/** Instancia para mostrar diálogos de error o confirmación */
const errorDialog = new ErrorDialog();
/**
* Manejador para el clic en el botón de borrar.
* Muestra un modal solicitando la contraseña para confirmar el borrado.
*/
btnBorrar.addEventListener("click", () => {
new ModalConfirmacion({
titulo: "Confirmar borrado",
contenidoPersonalizado: `
<label for="password-input">Introduce la contraseña para confirmar:</label>
<input type="password" id="password-input" style="width: 50%; padding: 0.5rem; margin-top: 0.5rem;" />
`,
/**
* Función llamada al aceptar el primer modal.
* Valida la contraseña y decide si cerrar el modal o mostrar error.
* @returns {boolean} true para cerrar modal, false para mantenerlo abierto.
*/
onAceptar: () => {
const input = document.getElementById("password-input");
const password = input.value.trim();
if (password === "") {
alert("La contraseña no puede estar vacía.");
return false;
}
if (password !== "eliminarTodo") {
alert("Contraseña incorrecta.");
return false;
}
mostrarSegundoModal();
return true;
},
/** Función llamada al cancelar el primer modal */
onCancelar: () => {
console.log("Borrado cancelado");
},
});
});
/**
* Muestra el segundo modal de confirmación con mensaje simple.
*/
function mostrarSegundoModal() {
new ModalConfirmacion({
titulo: "Confirmar borrado",
mensaje: "¿Estás seguro?",
/**
* Función llamada al aceptar el segundo modal.
* Muestra el tercer modal.
* @returns {boolean} true para cerrar modal.
*/
onAceptar: () => {
mostrarTercerModal();
return true;
},
onCancelar: () => {
console.log("Borrado cancelado en segundo modal");
},
});
}
/**
* Muestra el tercer modal de confirmación final.
* Al aceptar, ejecuta el borrado con petición fetch, muestra loader y mensajes.
*/
function mostrarTercerModal() {
new ModalConfirmacion({
titulo: "Confirmación final",
mensaje: "¿Estás realmente seguro?",
/**
* Función async llamada al aceptar el tercer modal.
* Ejecuta el borrado, muestra loader, y maneja resultados.
* @returns {Promise<boolean>} true para cerrar modal.
*/
onAceptar: async () => {
const loader = new Loader("Borrando...");
try {
const response = await fetch(
"/InscripcionesEVG/index.php?controlador=borrarInscripciones&accion=borrarTodas",
);
const data = await response.json();
if (data.success) {
errorDialog.show("Inscripciones borradas", true);
} else {
errorDialog.show(data.mensaje);
}
} catch (error) {
errorDialog.show(error);
console.error(error);
} finally {
loader.ocultar();
}
return true;
},
onCancelar: () => {
console.log("Borrado cancelado en tercer modal");
},
});
}
});