`;
}
let botonUnirseHTML = "";
if (!usuarioYaEstaEnEquipo) {
botonUnirseHTML = `
`;
}
equiposHTML += `
${escapeHTML(equipo.nombreEquipo)}
${jugadoresHTML}
${botonUnirseHTML}
`;
});
// Zona de acciones adicionales si el usuario YA está dentro de esta sala
let accionesSalaHTML = "";
if (usuarioYaEstaEnEquipo) {
accionesSalaHTML = `
")
.text(texto ?? "")
.html();
}
// ======================================================
// CREAR SALA
// ======================================================
$('#btnCrearSala').on('click', function () {
const nombreSala =
$('#nombreSala').val().trim();
const nombreEquipo1 =
$('#nombreEquipo1').val().trim();
const nombreEquipo2 =
$('#nombreEquipo2').val().trim();
let valido = true;
$('.mensaje-error-sala').remove();
$('.input-kahoot')
.removeClass('is-invalid');
if (nombreSala === '') {
mostrarError(
'#nombreSala',
'El nombre de la sala es obligatorio.'
);
valido = false;
} else if (nombreSala.length < 3) {
mostrarError(
'#nombreSala',
'El nombre de la sala debe tener al menos 3 caracteres.'
);
valido = false;
}
if (nombreEquipo1 === '') {
mostrarError(
'#nombreEquipo1',
'El nombre del equipo 1 es obligatorio.'
);
valido = false;
} else if (nombreEquipo1.length < 2) {
mostrarError(
'#nombreEquipo1',
'El nombre del equipo debe tener al menos 2 caracteres.'
);
valido = false;
}
if (nombreEquipo2 === '') {
mostrarError(
'#nombreEquipo2',
'El nombre del equipo 2 es obligatorio.'
);
valido = false;
} else if (nombreEquipo2.length < 2) {
mostrarError(
'#nombreEquipo2',
'El nombre del equipo debe tener al menos 2 caracteres.'
);
valido = false;
}
if (
nombreEquipo1 !== '' &&
nombreEquipo2 !== '' &&
nombreEquipo1.toLowerCase() ===
nombreEquipo2.toLowerCase()
) {
mostrarError(
'#nombreEquipo2',
'Los dos equipos deben tener nombres diferentes.'
);
valido = false;
}
if (!valido) {
return;
}
// Deshabilitamos el botón mientras se crea la sala
const boton = $('#btnCrearSala');
boton.prop('disabled', true);
boton.text('Creando sala...');
$.ajax({
url: 'controladores/controladorPartida.php', // <-- cambia esto por la ruta de tu controlador
type: 'POST',
dataType: 'json',
data: {
orden: 'crear',
nombrePartida: nombreSala,
nombreEquipo1: nombreEquipo1,
nombreEquipo2: nombreEquipo2
},
success: function (respuesta) {
console.log('Respuesta del servidor:', respuesta);
if (respuesta.error) {
alert(respuesta.error);
boton.prop('disabled', false);
boton.text('Crear sala');
return;
}
if (respuesta.exito) {
$('#modalCrearSala').modal('hide');
location.reload();
}
},
error: function (xhr, status, error) {
console.error('Error al crear la sala:', error);
console.error('Respuesta:', xhr.responseText);
alert('No se ha podido crear la sala.');
boton.prop('disabled', false);
boton.text('Crear sala');
}
});
});
// ======================================================
// MOSTRAR ERROR
// ======================================================
function mostrarError(selector, mensaje) {
const input = $(selector);
input.addClass("is-invalid");
input.after(`
${mensaje}
`);
}
// ======================================================
// QUITAR ERROR AL ESCRIBIR
// ======================================================
$(".input-kahoot").on(
"input",
function () {
$(this).removeClass(
"is-invalid"
);
$(this)
.next(".mensaje-error-sala")
.remove();
}
);
// ======================================================
// ABANDONAR SALA
// ======================================================
$(document).on("click", ".btn-abandonar-sala", function () {
if (!confirm("¿Estás seguro de que deseas salir de esta sala?")) {
return;
}
const boton = $(this);
boton.prop("disabled", true).text("Saliendo...");
$.ajax({
url: "controladores/ControladorEquipoxUsuario.php",
type: "POST",
dataType: "json",
data: {
orden: "salirDeSala" // Asegúrate de procesar esta 'orden' en tu PHP
},
success: function (respuesta) {
if (respuesta.error) {
alert(respuesta.error);
boton.prop("disabled", false).text("Abandonar sala");
return;
}
// Restablecemos el estado y recargamos la lista completa de salas
usuarioYaEstaEnEquipo = false;
$("#contenedorCrearSala").show();
cargarSalas();
},
error: function (xhr, status, error) {
console.error("Error al salir de la sala:", error);
alert("No se pudo salir de la sala.");
boton.prop("disabled", false).text("Abandonar sala");
}
});
});