Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c8c0792bd7 | |||
| 534c20a45d | |||
| 94bfe480cb |
+17
-16
@@ -7,6 +7,7 @@
|
|||||||
<title>Trivial - Lobby</title>
|
<title>Trivial - Lobby</title>
|
||||||
<link rel="icon" type="image/svg+xml" href="img/favicon/favicon.svg">
|
<link rel="icon" type="image/svg+xml" href="img/favicon/favicon.svg">
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css">
|
||||||
<link rel="stylesheet" href="css/index.css">
|
<link rel="stylesheet" href="css/index.css">
|
||||||
<link rel="stylesheet" href="css/buscadorSala.css">
|
<link rel="stylesheet" href="css/buscadorSala.css">
|
||||||
</head>
|
</head>
|
||||||
@@ -77,25 +78,25 @@
|
|||||||
</div>
|
</div>
|
||||||
<!--MODAL ABANDONAR SALA -->
|
<!--MODAL ABANDONAR SALA -->
|
||||||
<!-- Modal Confirmar Abandonar Sala -->
|
<!-- Modal Confirmar Abandonar Sala -->
|
||||||
<div class="modal fade" id="modalAbandonarSala" tabindex="-1" aria-labelledby="modalAbandonarSalaLabel" aria-hidden="true">
|
<div class="modal fade" id="modalAbandonarSala" tabindex="-1" aria-labelledby="modalAbandonarSalaLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-dialog-centered">
|
<div class="modal-dialog modal-dialog-centered">
|
||||||
<div class="modal-content modal-kahoot text-center p-3">
|
<div class="modal-content modal-kahoot text-center p-3">
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="mb-3 fs-1">⚠️</div>
|
<div class="mb-3 fs-1">⚠️</div>
|
||||||
<h4 class="modal-title mb-2 fw-bold" id="modalAbandonarSalaLabel">¿Abandonar la sala?</h4>
|
<h4 class="modal-title mb-2 fw-bold" id="modalAbandonarSalaLabel">¿Abandonar la sala?</h4>
|
||||||
<p class="text-dark-50">Si sales de la sala, perderás tu lugar en el equipo.</p>
|
<p class="text-dark-50" id="modalAbandonarSalaMensaje">Si sales de la sala, perderás tu lugar en el equipo.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer justify-content-center border-0 gap-2">
|
<div class="modal-footer justify-content-center border-0 gap-2">
|
||||||
<button type="button" class="btn btn-secondary px-4 py-2" data-bs-dismiss="modal">
|
<button type="button" class="btn btn-secondary px-4 py-2" data-bs-dismiss="modal">
|
||||||
Cancelar
|
Cancelar
|
||||||
</button>
|
</button>
|
||||||
<button type="button" id="btnConfirmarAbandonar" class="btn btn-danger px-4 py-2">
|
<button type="button" id="btnConfirmarAbandonar" class="btn btn-danger px-4 py-2">
|
||||||
Sí, salir
|
Sí, salir
|
||||||
</button>
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
<script src="js/jquery-4.0.0.min.js"></script>
|
<script src="js/jquery-4.0.0.min.js"></script>
|
||||||
|
|||||||
@@ -12,6 +12,40 @@ class Categoria{
|
|||||||
$this->nombreCategoria = $nombreCategoria;
|
$this->nombreCategoria = $nombreCategoria;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function crear(){
|
||||||
|
$conexion = conexionBD();
|
||||||
|
|
||||||
|
if(is_array($conexion)){
|
||||||
|
return $conexion;
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
$consulta = $conexion->prepare("INSERT INTO categoria (nombreCategoria) VALUES (:nombreCategoria)");
|
||||||
|
|
||||||
|
$consulta->bindParam(':nombreCategoria', $this->nombreCategoria);
|
||||||
|
|
||||||
|
$consulta->execute();
|
||||||
|
|
||||||
|
$respuesta = [
|
||||||
|
'exito' => 'Categoría creada correctamente',
|
||||||
|
'exito_tecnico' => $this->nombreCategoria
|
||||||
|
];
|
||||||
|
|
||||||
|
return $respuesta;
|
||||||
|
|
||||||
|
}catch(PDOException $error){
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'Ocurrió un error al guardar la categoría.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
|
||||||
|
$conexion = null;
|
||||||
|
return $respuesta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function listar(){
|
function listar(){
|
||||||
$conexion = conexionBD();
|
$conexion = conexionBD();
|
||||||
|
|
||||||
@@ -39,6 +73,77 @@ class Categoria{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function buscar(){
|
||||||
|
$conexion = conexionBD();
|
||||||
|
|
||||||
|
if(is_array($conexion)){
|
||||||
|
return $conexion;
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
$consulta = $conexion->prepare("SELECT * FROM categoria WHERE idCategoria = :idCategoria");
|
||||||
|
|
||||||
|
$consulta->bindParam(':idCategoria', $this->idCategoria);
|
||||||
|
|
||||||
|
$consulta->execute();
|
||||||
|
|
||||||
|
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
return $resultado;
|
||||||
|
|
||||||
|
}catch(PDOException $error){
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'Ocurrió un error al buscar la categoría.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
|
||||||
|
$conexion = null;
|
||||||
|
return $respuesta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function borrar(){
|
||||||
|
$conexion = conexionBD();
|
||||||
|
|
||||||
|
if(is_array($conexion)){
|
||||||
|
return $conexion;
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
$consulta = $conexion->prepare("DELETE FROM categoria WHERE idCategoria = :idCategoria");
|
||||||
|
|
||||||
|
$consulta->bindParam(':idCategoria', $this->idCategoria);
|
||||||
|
|
||||||
|
$consulta->execute();
|
||||||
|
|
||||||
|
if($consulta->rowCount() > 0){
|
||||||
|
$respuesta = [
|
||||||
|
'exito' => 'Se eliminó correctamente la categoría',
|
||||||
|
'exito_tecnico' => $this->idCategoria
|
||||||
|
];
|
||||||
|
}else{
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'No existe ninguna categoría con ese ID.',
|
||||||
|
'error_tecnico' => $this->idCategoria
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $respuesta;
|
||||||
|
|
||||||
|
}catch(PDOException $error){
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'Ocurrió un error al eliminar la categoría.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
|
||||||
|
$conexion = null;
|
||||||
|
return $respuesta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
+159
-37
@@ -60,17 +60,18 @@ class EquipoxUsuario
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function obtenerSalaUsuario($idUsuario)
|
public function obtenerSalaUsuario($idUsuario)
|
||||||
{
|
{
|
||||||
$conexion = conexionBD();
|
$conexion = conexionBD();
|
||||||
|
|
||||||
if (is_array($conexion)) {
|
if (is_array($conexion)) {
|
||||||
return $conexion;
|
return $conexion;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
$sql = "
|
$sql = "
|
||||||
SELECT
|
SELECT
|
||||||
exu.idEquipo,
|
exu.idEquipo,
|
||||||
exp.idPartida
|
exp.idPartida
|
||||||
@@ -84,41 +85,40 @@ class EquipoxUsuario
|
|||||||
LIMIT 1
|
LIMIT 1
|
||||||
";
|
";
|
||||||
|
|
||||||
$consulta = $conexion->prepare($sql);
|
$consulta = $conexion->prepare($sql);
|
||||||
|
|
||||||
$consulta->bindParam(
|
$consulta->bindParam(
|
||||||
':idUsuario',
|
':idUsuario',
|
||||||
$idUsuario,
|
$idUsuario,
|
||||||
PDO::PARAM_INT
|
PDO::PARAM_INT
|
||||||
);
|
);
|
||||||
|
|
||||||
$consulta->execute();
|
$consulta->execute();
|
||||||
|
|
||||||
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
|
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
if (!$resultado) {
|
if (!$resultado) {
|
||||||
|
|
||||||
|
return [
|
||||||
|
'asociado' => false
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'asociado' => false
|
'asociado' => true,
|
||||||
|
'idEquipo' => $resultado['idEquipo'],
|
||||||
|
'idPartida' => $resultado['idPartida']
|
||||||
|
];
|
||||||
|
} catch (PDOException $error) {
|
||||||
|
|
||||||
|
return [
|
||||||
|
'error' => 'Ocurrió un error al obtener la sala del usuario.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
return [
|
|
||||||
'asociado' => true,
|
|
||||||
'idEquipo' => $resultado['idEquipo'],
|
|
||||||
'idPartida' => $resultado['idPartida']
|
|
||||||
];
|
|
||||||
|
|
||||||
} catch (PDOException $error) {
|
|
||||||
|
|
||||||
return [
|
|
||||||
'error' => 'Ocurrió un error al obtener la sala del usuario.',
|
|
||||||
'error_tecnico' => $error->getMessage()
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static function salirDeSala($idUsuario)
|
public static function salirDeSala($idUsuario)
|
||||||
{
|
{
|
||||||
$conexion = conexionBD();
|
$conexion = conexionBD();
|
||||||
|
|
||||||
@@ -127,21 +127,143 @@ public static function salirDeSala($idUsuario)
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$sql = "DELETE FROM equipoxusuario WHERE idUsuario = :idUsuario";
|
|
||||||
|
// 1. Averiguamos el equipo y la partida del usuario
|
||||||
|
$sql = "SELECT exu.idEquipo, exp.idPartida, p.idUsuario AS idHost FROM equipoxusuario exu INNER JOIN equipoxpartida exp ON exu.idEquipo = exp.idEquipo INNER JOIN partida p ON exp.idPartida = p.idPartida WHERE exu.idUsuario = :idUsuario LIMIT 1";
|
||||||
|
|
||||||
$consulta = $conexion->prepare($sql);
|
$consulta = $conexion->prepare($sql);
|
||||||
$consulta->bindParam(':idUsuario', $idUsuario, PDO::PARAM_INT);
|
$consulta->bindParam(':idUsuario',$idUsuario, PDO::PARAM_INT);
|
||||||
$consulta->execute();
|
$consulta->execute();
|
||||||
|
|
||||||
|
$datosSala = $consulta->fetch(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
// El usuario no pertenece a ninguna sala
|
||||||
|
if (!$datosSala) {
|
||||||
|
return [
|
||||||
|
'error' => 'No perteneces a ninguna sala.'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$idEquipo = (int)$datosSala['idEquipo'];
|
||||||
|
$idPartida = (int)$datosSala['idPartida'];
|
||||||
|
$idHost = (int)$datosSala['idHost'];
|
||||||
|
|
||||||
|
// Comenzamos una transacción
|
||||||
|
$conexion->beginTransaction();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 2. Comprobamos si quien abandona es el HOST
|
||||||
|
*/
|
||||||
|
if ($idUsuario === $idHost) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Obtenemos todos los equipos pertenecientes
|
||||||
|
* a esta partida.
|
||||||
|
*/
|
||||||
|
$sqlEquipos = "SELECT idEquipo FROM equipoxpartida WHERE idPartida = :idPartida";
|
||||||
|
|
||||||
|
$consultaEquipos = $conexion->prepare($sqlEquipos);
|
||||||
|
$consultaEquipos->bindParam(':idPartida', $idPartida, PDO::PARAM_INT);
|
||||||
|
$consultaEquipos->execute();
|
||||||
|
|
||||||
|
$equipos = $consultaEquipos->fetchAll(PDO::FETCH_COLUMN);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 3. Eliminamos los jugadores de esos equipos
|
||||||
|
* de la tabla equipoxusuario.
|
||||||
|
*/
|
||||||
|
if (!empty($equipos)) {
|
||||||
|
|
||||||
|
$placeholders = implode(',', array_fill(0, count($equipos), '?'));
|
||||||
|
|
||||||
|
$sqlUsuarios = "DELETE FROM equipoxusuario WHERE idEquipo IN ($placeholders)";
|
||||||
|
|
||||||
|
$consultaUsuarios = $conexion->prepare($sqlUsuarios);
|
||||||
|
$consultaUsuarios->execute($equipos);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 4. Eliminamos las relaciones
|
||||||
|
* entre equipos y partida.
|
||||||
|
*/
|
||||||
|
$sqlEquipoxPartida = "DELETE FROM equipoxpartida WHERE idPartida = :idPartida";
|
||||||
|
|
||||||
|
$consultaEquipoxPartida = $conexion->prepare($sqlEquipoxPartida);
|
||||||
|
$consultaEquipoxPartida->bindParam(':idPartida', $idPartida,PDO::PARAM_INT);
|
||||||
|
$consultaEquipoxPartida->execute();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 5. Eliminamos los equipos.
|
||||||
|
*
|
||||||
|
* Los equipos ya no tienen relaciones con
|
||||||
|
* usuarios ni con la partida.
|
||||||
|
*/
|
||||||
|
if (!empty($equipos)) {
|
||||||
|
|
||||||
|
$placeholders = implode(',', array_fill(0, count($equipos), '?'));
|
||||||
|
|
||||||
|
$sqlEliminarEquipos = "DELETE FROM equipo WHERE idEquipo IN ($placeholders)";
|
||||||
|
$consultaEliminarEquipos = $conexion->prepare($sqlEliminarEquipos);
|
||||||
|
$consultaEliminarEquipos->execute($equipos);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 6. Eliminamos las relaciones
|
||||||
|
* entre preguntas y partida.
|
||||||
|
*/
|
||||||
|
$sqlPartidaxPregunta = "DELETE FROM partidaxpregunta WHERE idPartida = :idPartida";
|
||||||
|
|
||||||
|
$consultaPartidaxPregunta = $conexion->prepare($sqlPartidaxPregunta);
|
||||||
|
$consultaPartidaxPregunta->bindParam(':idPartida', $idPartida, PDO::PARAM_INT);
|
||||||
|
$consultaPartidaxPregunta->execute();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 7. Finalmente eliminamos la partida.
|
||||||
|
*/
|
||||||
|
$sqlPartida = "DELETE FROM partida WHERE idPartida = :idPartida";
|
||||||
|
|
||||||
|
$consultaPartida = $conexion->prepare($sqlPartida);
|
||||||
|
$consultaPartida->bindParam(':idPartida', $idPartida, PDO::PARAM_INT);
|
||||||
|
$consultaPartida->execute();
|
||||||
|
|
||||||
|
// Todo ha ido correctamente
|
||||||
|
$conexion->commit();
|
||||||
|
|
||||||
|
return [
|
||||||
|
'exito' => true,
|
||||||
|
'salaEliminada' => true,
|
||||||
|
'mensaje' => 'La sala ha sido eliminada correctamente.'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 7. Si NO es el host, simplemente abandona
|
||||||
|
* su relación con el equipo.
|
||||||
|
*/
|
||||||
|
$sqlSalir = "DELETE FROM equipoxusuario WHERE idUsuario = :idUsuario";
|
||||||
|
|
||||||
|
$consultaSalir = $conexion->prepare($sqlSalir);
|
||||||
|
$consultaSalir->bindParam(':idUsuario', $idUsuario, PDO::PARAM_INT);
|
||||||
|
$consultaSalir->execute();
|
||||||
|
|
||||||
|
$conexion->commit();
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'exito' => true,
|
'exito' => true,
|
||||||
'mensaje' => 'Usuario eliminado de la sala correctamente.'
|
'salaEliminada' => false,
|
||||||
|
'mensaje' => 'Has abandonado la sala correctamente.'
|
||||||
];
|
];
|
||||||
} catch (PDOException $error) {
|
} catch (PDOException $error) {
|
||||||
|
|
||||||
|
// Si había una transacción activa, la deshacemos
|
||||||
|
if ($conexion->inTransaction()) {
|
||||||
|
$conexion->rollBack();
|
||||||
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'error' => 'Ocurrió un error al salir de la sala.',
|
'error' => 'Ocurrió un error al abandonar la sala.',
|
||||||
'error_tecnico' => $error->getMessage()
|
'error_tecnico' => $error->getMessage()
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<?php
|
<?php
|
||||||
require_once __DIR__ . '/../includes/conexionBD.php';
|
require_once __DIR__ . '/../includes/conexionBD.php';
|
||||||
|
|
||||||
@@ -467,25 +466,4 @@ class Partida
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function contar()
|
|
||||||
{
|
|
||||||
$conexion = conexionBD();
|
|
||||||
if (is_array($conexion)) {
|
|
||||||
return $conexion;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
$sql="SELECT COUNT(*) AS total FROM partida";
|
|
||||||
$consulta = $conexion->prepare($sql);
|
|
||||||
$consulta->execute();
|
|
||||||
return (int) $consulta->fetchColumn();
|
|
||||||
} catch (PDOException $error) {
|
|
||||||
return [
|
|
||||||
"error" => "Ocurrió un error al obtener el listado.",
|
|
||||||
'error_tecnico' => $error->getMessage()
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+43
-11
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
<?php
|
<?php
|
||||||
require_once __DIR__ . '/../includes/conexionBD.php';
|
require_once __DIR__ . '/../includes/conexionBD.php';
|
||||||
|
|
||||||
@@ -57,25 +56,58 @@ class Pregunta {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function cargarRespuestas() {
|
||||||
|
if ($this->idPregunta === null) return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static function getTodosIds()//devuelve solamente los id de todas las preguntas
|
|
||||||
{
|
|
||||||
$conexion = conexionBD();
|
$conexion = conexionBD();
|
||||||
|
|
||||||
if (is_array($conexion)) {
|
if (is_array($conexion)) {
|
||||||
return $conexion;
|
return $conexion;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$consulta = $conexion->prepare("SELECT idPregunta FROM pregunta");
|
$sql = "SELECT idRespuesta, nombreRespuesta, correcta FROM respuesta WHERE idPregunta = :idPreg";
|
||||||
$consulta->execute();
|
$stmt = $conexion->prepare($sql);
|
||||||
return $consulta->fetchAll(PDO::FETCH_COLUMN);
|
$stmt->execute([':idPreg' => $this->idPregunta]);
|
||||||
|
|
||||||
|
$this->respuestas = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
} catch (PDOException $error) {
|
} catch (PDOException $error) {
|
||||||
return [
|
return [
|
||||||
"error" => "Ocurrió un error al obtener el listado.",
|
'error' => 'Ocurrió un error al cargar las respuestas.',
|
||||||
'error_tecnico' => $error->getMessage()
|
'error_tecnico' => $error->getMessage()
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function obtenerPorCategoria(int $idCategoria, int $limite = 10) {
|
||||||
|
$conexion = conexionBD();
|
||||||
|
|
||||||
|
if (is_array($conexion)) {
|
||||||
|
return $conexion;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$sql = "SELECT * FROM pregunta WHERE idCategoria = :idCat ORDER BY RAND() LIMIT :limite";
|
||||||
|
$stmt = $conexion->prepare($sql);
|
||||||
|
|
||||||
|
$stmt->bindValue(':idCat', $idCategoria, PDO::PARAM_INT);
|
||||||
|
$stmt->bindValue(':limite', $limite, PDO::PARAM_INT);
|
||||||
|
$stmt->execute();
|
||||||
|
|
||||||
|
$preguntas = [];
|
||||||
|
while ($datos = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||||
|
$preg = new Pregunta((int)$datos['idCategoria'], $datos['nombrePregunta'], (int)$datos['idPregunta']);
|
||||||
|
$preg->cargarRespuestas();
|
||||||
|
$preguntas[] = $preg;
|
||||||
|
}
|
||||||
|
return $preguntas;
|
||||||
|
|
||||||
|
} catch (PDOException $error) {
|
||||||
|
return [
|
||||||
|
'error' => 'Ocurrió un error al obtener las preguntas aleatorias.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+125
-1
@@ -39,7 +39,131 @@ class Respuesta{
|
|||||||
return $respuesta;
|
return $respuesta;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}//fin método insertar
|
}//fin método insertar
|
||||||
|
|
||||||
|
public function listar(){
|
||||||
|
$conexion = conexionBD();
|
||||||
|
if(is_array($conexion)){
|
||||||
|
return $conexion;
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
$consulta = $conexion->prepare("SELECT * FROM respuesta");
|
||||||
|
$consulta->execute();
|
||||||
|
return $consulta->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
}catch(PDOException $error){
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'Ocurrió un error al obtener el listado.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
$conexion = null;
|
||||||
|
return $respuesta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//fin método listar
|
||||||
|
|
||||||
|
public function eliminar(){
|
||||||
|
$conexion = conexionBD();
|
||||||
|
if(is_array($conexion)){
|
||||||
|
return $conexion;
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
$consulta = $conexion->prepare("DELETE FROM respuesta WHERE idRespuesta=:idRespuesta");
|
||||||
|
$consulta->bindParam(':idRespuesta', $this->idRespuesta);
|
||||||
|
$consulta->execute();
|
||||||
|
$respuesta = [
|
||||||
|
'exito' => 'La respuesta se eliminó correctamente.',
|
||||||
|
'exito_tecnico' => $this->idRespuesta
|
||||||
|
];
|
||||||
|
return $respuesta;
|
||||||
|
}catch(PDOException $error){
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'No se pudo eliminar la respuesta.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
$conexion = null;
|
||||||
|
return $respuesta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//fin método eliminar
|
||||||
|
|
||||||
|
public function editar(){
|
||||||
|
$conexion = conexionBD();
|
||||||
|
if(is_array($conexion)){
|
||||||
|
return $conexion;
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
$consulta = $conexion->prepare("UPDATE respuesta SET idPregunta=:idPregunta, nombreRespuesta=:nombreRespuesta, correcta=:correcta WHERE idRespuesta=:idRespuesta");
|
||||||
|
$consulta->bindParam(':idRespuesta', $this->idRespuesta);
|
||||||
|
$consulta->bindParam(':idPregunta', $this->idPregunta);
|
||||||
|
$consulta->bindParam(':nombreRespuesta', $this->nombreRespuesta);
|
||||||
|
$consulta->bindParam(':correcta', $this->correcta);
|
||||||
|
$consulta->execute();
|
||||||
|
$respuesta = [
|
||||||
|
'exito' => 'La respuesta se editó correctamente.',
|
||||||
|
'exito_tecnico' => $this->idRespuesta
|
||||||
|
];
|
||||||
|
return $respuesta;
|
||||||
|
}catch(PDOException $error){
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'Ocurrió un error al editar la respuesta.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
$conexion = null;
|
||||||
|
return $respuesta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//fin método editar
|
||||||
|
|
||||||
|
public function buscar(){
|
||||||
|
$conexion = conexionBD();
|
||||||
|
if(is_array($conexion)){
|
||||||
|
return $conexion;
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
$consulta = $conexion->prepare("SELECT * FROM respuesta WHERE idRespuesta=:idRespuesta");
|
||||||
|
$consulta->bindParam(':idRespuesta', $this->idRespuesta);
|
||||||
|
$consulta->execute();
|
||||||
|
return $consulta->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
}catch(PDOException $error){
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'Ocurrió un error al buscar la respuesta.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
$conexion = null;
|
||||||
|
return $respuesta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//fin método buscar
|
||||||
|
|
||||||
|
public function listarPorPregunta(){//trae todas las respuestas posibles de una pregunta
|
||||||
|
$conexion = conexionBD();
|
||||||
|
if(is_array($conexion)){
|
||||||
|
return $conexion;
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
$consulta = $conexion->prepare("SELECT * FROM respuesta WHERE idPregunta=:idPregunta");
|
||||||
|
$consulta->bindParam(':idPregunta', $this->idPregunta);
|
||||||
|
$consulta->execute();
|
||||||
|
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
if(!isset($resultado[0])){
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'La pregunta no tiene respuestas.'
|
||||||
|
];
|
||||||
|
return $respuesta;
|
||||||
|
}else{
|
||||||
|
return $resultado;
|
||||||
|
}
|
||||||
|
}catch(PDOException $error){
|
||||||
|
$respuesta = [
|
||||||
|
'error' => 'Ocurrió un error al obtener las respuestas de la pregunta.',
|
||||||
|
'error_tecnico' => $error->getMessage()
|
||||||
|
];
|
||||||
|
$conexion = null;
|
||||||
|
return $respuesta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//fin método listarPorPregunta
|
||||||
|
|
||||||
}//fin clase
|
}//fin clase
|
||||||
|
|
||||||
?>
|
?>
|
||||||
@@ -6,6 +6,22 @@ require_once '../clases/ClaseCategoria.php';
|
|||||||
|
|
||||||
switch ($_POST['orden']) {
|
switch ($_POST['orden']) {
|
||||||
|
|
||||||
|
case 'crearCategoria':
|
||||||
|
|
||||||
|
$nombreCategoria = trim($_POST['nombreCategoria'] ?? '');
|
||||||
|
|
||||||
|
if ($nombreCategoria == '') {
|
||||||
|
echo json_encode(['error' => 'El nombre de la categoría es obligatorio']);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$categoria = new Categoria(null, $nombreCategoria);
|
||||||
|
$resultado = $categoria->crear();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
case 'listarCategorias':
|
case 'listarCategorias':
|
||||||
|
|
||||||
$categoria = new Categoria();
|
$categoria = new Categoria();
|
||||||
@@ -13,4 +29,27 @@ switch ($_POST['orden']) {
|
|||||||
|
|
||||||
echo json_encode($resultado);
|
echo json_encode($resultado);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'buscarCategoria':
|
||||||
|
|
||||||
|
$idCategoria = intval($_POST['idCategoria'] ?? 0);
|
||||||
|
|
||||||
|
$categoria = new Categoria($idCategoria);
|
||||||
|
$resultado = $categoria->buscar();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'borrarCategoria':
|
||||||
|
|
||||||
|
$idCategoria = intval($_POST['idCategoria'] ?? 0);
|
||||||
|
|
||||||
|
$categoria = new Categoria($idCategoria);
|
||||||
|
$resultado = $categoria->borrar();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
require_once '../clases/ClaseEquipo.php';
|
||||||
|
|
||||||
|
switch ($_POST['orden']) {
|
||||||
|
|
||||||
|
case 'crearEquipo':
|
||||||
|
|
||||||
|
$nombreEquipo = trim($_POST['nombreEquipo'] ?? '');
|
||||||
|
|
||||||
|
if ($nombreEquipo == '') {
|
||||||
|
echo json_encode(['error' => 'El nombre del equipo es obligatorio']);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$equipo = new Equipo(null, $nombreEquipo);
|
||||||
|
$resultado = $equipo->crear();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'listarEquipos':
|
||||||
|
|
||||||
|
$equipo = new Equipo();
|
||||||
|
$resultado = $equipo->listar();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'buscarEquipo':
|
||||||
|
|
||||||
|
$idEquipo = intval($_POST['idEquipo'] ?? 0);
|
||||||
|
|
||||||
|
$equipo = new Equipo($idEquipo);
|
||||||
|
$resultado = $equipo->buscar();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'borrarEquipo':
|
||||||
|
|
||||||
|
$idEquipo = intval($_POST['idEquipo'] ?? 0);
|
||||||
|
|
||||||
|
$equipo = new Equipo($idEquipo);
|
||||||
|
$resultado = $equipo->borrar();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -6,7 +6,6 @@ require_once '../clases/ClasePartida.php';
|
|||||||
require_once '../clases/ClaseEquipo.php';
|
require_once '../clases/ClaseEquipo.php';
|
||||||
require_once '../clases/ClaseEquipoxUsuario.php';
|
require_once '../clases/ClaseEquipoxUsuario.php';
|
||||||
require_once '../clases/ClaseEquipoxPartida.php';
|
require_once '../clases/ClaseEquipoxPartida.php';
|
||||||
require_once '../clases/ClasePregunta.php';
|
|
||||||
|
|
||||||
|
|
||||||
switch ($_POST['orden']) {
|
switch ($_POST['orden']) {
|
||||||
@@ -120,7 +119,6 @@ switch ($_POST['orden']) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$idPartida = (int)$resultadoPartida['exito_tecnico'];
|
$idPartida = (int)$resultadoPartida['exito_tecnico'];
|
||||||
$partida->idPartida = $idPartida;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -213,42 +211,6 @@ switch ($_POST['orden']) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ==========================================
|
|
||||||
* 5. ASIGNAMOS 10 PREGUNTAS ALEATORIAS A LA PARTIDA
|
|
||||||
* ==========================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Obtenemos todos los IDs de las preguntas
|
|
||||||
|
|
||||||
$listaPreguntas = Pregunta::getTodosIds();
|
|
||||||
|
|
||||||
$totalPreguntas = count($listaPreguntas);
|
|
||||||
|
|
||||||
// Guardamos las preguntas que ya hemos asignado
|
|
||||||
$preguntasAsignadas = [];
|
|
||||||
|
|
||||||
// Generamos 10 posiciones aleatorias sin repetir
|
|
||||||
while (count($preguntasAsignadas) < 10) {
|
|
||||||
|
|
||||||
// Generamos una posición aleatoria del array
|
|
||||||
$posicionAleatoria = rand(0, $totalPreguntas - 1);
|
|
||||||
|
|
||||||
// Obtenemos el ID real de la pregunta
|
|
||||||
$idPreguntaAleatoria = $listaPreguntas[$posicionAleatoria];
|
|
||||||
|
|
||||||
// Comprobamos que esa pregunta no haya sido asignada ya
|
|
||||||
if (!in_array($idPreguntaAleatoria, $preguntasAsignadas)) {
|
|
||||||
$preguntasAsignadas[] = $idPreguntaAleatoria;
|
|
||||||
|
|
||||||
// Asignamos el ID real de la pregunta a la partida
|
|
||||||
$partida->asignarPregunta($idPreguntaAleatoria);
|
|
||||||
}
|
|
||||||
}//fin shile
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ==========================================
|
* ==========================================
|
||||||
* TODO CORRECTO
|
* TODO CORRECTO
|
||||||
@@ -256,7 +218,7 @@ switch ($_POST['orden']) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'exito' => 'Sala creada correctamente. Preguntas preparadas.',
|
'exito' => 'Sala creada correctamente.',
|
||||||
'idPartida' => $resultadoPartida['exito_tecnico'],
|
'idPartida' => $resultadoPartida['exito_tecnico'],
|
||||||
'idEquipo1' => $equipo1->idEquipo,
|
'idEquipo1' => $equipo1->idEquipo,
|
||||||
'idEquipo2' => $equipo2->idEquipo
|
'idEquipo2' => $equipo2->idEquipo
|
||||||
|
|||||||
@@ -121,4 +121,33 @@ switch ($_POST['orden']) {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
case 'obtenerPreguntasPorCategoria':
|
||||||
|
|
||||||
|
$idCategoria = intval($_POST['idCategoria'] ?? 0);
|
||||||
|
$limite = intval($_POST['limite'] ?? 10);
|
||||||
|
|
||||||
|
$preguntas = Pregunta::obtenerPorCategoria($idCategoria, $limite);
|
||||||
|
|
||||||
|
// Si ha devuelto un array de errores (formato ['error'=>...]) lo mandamos tal cual
|
||||||
|
if (isset($preguntas['error'])) {
|
||||||
|
echo json_encode($preguntas);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convertimos cada objeto Pregunta en un array simple para poder mandarlo en JSON
|
||||||
|
$listado = [];
|
||||||
|
foreach ($preguntas as $p) {
|
||||||
|
$listado[] = [
|
||||||
|
'idPregunta' => $p->getIdPregunta(),
|
||||||
|
'idCategoria' => $p->getIdCategoria(),
|
||||||
|
'nombrePregunta' => $p->getNombrePregunta(),
|
||||||
|
'respuestas' => $p->getRespuestas()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
echo json_encode($listado);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,71 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
require_once '../clases/ClaseRespuesta.php';
|
||||||
|
|
||||||
|
switch ($_POST['orden']) {
|
||||||
|
|
||||||
|
case 'crearRespuesta':
|
||||||
|
|
||||||
|
$idPregunta = intval($_POST['idPregunta'] ?? 0);
|
||||||
|
$nombreRespuesta = trim($_POST['nombreRespuesta'] ?? '');
|
||||||
|
$correcta = intval($_POST['correcta'] ?? 0);
|
||||||
|
|
||||||
|
if ($idPregunta <= 0 || $nombreRespuesta == '') {
|
||||||
|
echo json_encode(['error' => 'La pregunta y el texto de la respuesta son obligatorios']);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$respuesta = new Respuesta(null, $idPregunta, $nombreRespuesta, $correcta);
|
||||||
|
$resultado = $respuesta->insertar();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'listarRespuestas':
|
||||||
|
|
||||||
|
$respuesta = new Respuesta();
|
||||||
|
$resultado = $respuesta->listar();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'listarRespuestasPorPregunta':
|
||||||
|
|
||||||
|
$idPregunta = intval($_POST['idPregunta'] ?? 0);
|
||||||
|
|
||||||
|
$respuesta = new Respuesta(null, $idPregunta);
|
||||||
|
$resultado = $respuesta->listarPorPregunta();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'editarRespuesta':
|
||||||
|
|
||||||
|
$idRespuesta = intval($_POST['idRespuesta'] ?? 0);
|
||||||
|
$idPregunta = intval($_POST['idPregunta'] ?? 0);
|
||||||
|
$nombreRespuesta = trim($_POST['nombreRespuesta'] ?? '');
|
||||||
|
$correcta = intval($_POST['correcta'] ?? 0);
|
||||||
|
|
||||||
|
$respuesta = new Respuesta($idRespuesta, $idPregunta, $nombreRespuesta, $correcta);
|
||||||
|
$resultado = $respuesta->editar();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'borrarRespuesta':
|
||||||
|
|
||||||
|
$idRespuesta = intval($_POST['idRespuesta'] ?? 0);
|
||||||
|
|
||||||
|
$respuesta = new Respuesta($idRespuesta);
|
||||||
|
$resultado = $respuesta->eliminar();
|
||||||
|
|
||||||
|
echo json_encode($resultado);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
+28
-4
@@ -130,7 +130,7 @@ function mostrarSala(partida, equipos, jugadores) {
|
|||||||
esHost ? "jugador-host" : ""
|
esHost ? "jugador-host" : ""
|
||||||
}">
|
}">
|
||||||
<div>
|
<div>
|
||||||
<span class="avatar">${esHost ? "👑" : "👤"}</span>
|
<span class="avatar">${esHost ? '<i class="bi bi-award-fill"></i>' : '<i class="bi bi-person-fill"></i>'}</span>
|
||||||
${escapeHTML(jugador.nombreUsuario)}
|
${escapeHTML(jugador.nombreUsuario)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -174,14 +174,15 @@ function mostrarSala(partida, equipos, jugadores) {
|
|||||||
let accionesSalaHTML = "";
|
let accionesSalaHTML = "";
|
||||||
|
|
||||||
if (usuarioYaEstaEnEquipo) {
|
if (usuarioYaEstaEnEquipo) {
|
||||||
|
const esHost = partida.idUsuario == idUsuarioSesion;
|
||||||
let botonIniciarHTML = "";
|
let botonIniciarHTML = "";
|
||||||
|
|
||||||
// Solo el host puede iniciar la partida
|
// Solo el host puede iniciar la partida
|
||||||
if (partida.idUsuario == idUsuarioSesion) {
|
if (esHost) {
|
||||||
botonIniciarHTML = `
|
botonIniciarHTML = `
|
||||||
<a href="juego.php?idPartida=${partida.idPartida}"
|
<a href="juego.php?idPartida=${partida.idPartida}"
|
||||||
class="btn btn-success btn-lg px-4">
|
class="btn btn-success btn-lg px-4">
|
||||||
🎮 ¡Iniciar Partida!
|
<i class="bi bi-controller"></i> ¡Iniciar Partida!
|
||||||
</a>
|
</a>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
@@ -191,7 +192,8 @@ function mostrarSala(partida, equipos, jugadores) {
|
|||||||
|
|
||||||
<button type="button"
|
<button type="button"
|
||||||
class="btn btn-outline-danger btn-abandonar-sala"
|
class="btn btn-outline-danger btn-abandonar-sala"
|
||||||
data-id-partida="${partida.idPartida}">
|
data-id-partida="${partida.idPartida}"
|
||||||
|
data-es-host="${esHost}">
|
||||||
Abandonar sala
|
Abandonar sala
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
@@ -263,12 +265,34 @@ let botonAbandonarReferencia = null;
|
|||||||
// A. Al hacer clic en el botón "Abandonar sala" de la tarjeta, abrimos el modal
|
// A. Al hacer clic en el botón "Abandonar sala" de la tarjeta, abrimos el modal
|
||||||
$(document).on("click", ".btn-abandonar-sala", function () {
|
$(document).on("click", ".btn-abandonar-sala", function () {
|
||||||
botonAbandonarReferencia = $(this);
|
botonAbandonarReferencia = $(this);
|
||||||
|
|
||||||
|
const esHost = $(this).data("es-host") === true || $(this).data("es-host") === "true";
|
||||||
|
const titulo = $("#modalAbandonarSalaLabel");
|
||||||
|
const mensaje = $("#modalAbandonarSalaMensaje");
|
||||||
|
const botonConfirmar = $("#btnConfirmarAbandonar");
|
||||||
|
|
||||||
|
if (esHost) {
|
||||||
|
titulo.text("¿Abandonar la sala?");
|
||||||
|
mensaje.text(
|
||||||
|
"Si abandonas la sala como anfitrión, la partida terminará para todos los jugadores.",
|
||||||
|
);
|
||||||
|
botonConfirmar.text("Sí, abandonar");
|
||||||
|
} else {
|
||||||
|
titulo.text("¿Abandonar la sala?");
|
||||||
|
mensaje.text(
|
||||||
|
"Si sales de la sala, perderás tu lugar en el equipo.",
|
||||||
|
);
|
||||||
|
botonConfirmar.text("Sí, salir");
|
||||||
|
}
|
||||||
|
|
||||||
const modal = new bootstrap.Modal(
|
const modal = new bootstrap.Modal(
|
||||||
document.getElementById("modalAbandonarSala"),
|
document.getElementById("modalAbandonarSala"),
|
||||||
);
|
);
|
||||||
|
|
||||||
modal.show();
|
modal.show();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// B. Al hacer clic en "Sí, salir" dentro del modal Kahoot
|
// B. Al hacer clic en "Sí, salir" dentro del modal Kahoot
|
||||||
$(document).on("click", "#btnConfirmarAbandonar", function () {
|
$(document).on("click", "#btnConfirmarAbandonar", function () {
|
||||||
const modalEl = document.getElementById("modalAbandonarSala");
|
const modalEl = document.getElementById("modalAbandonarSala");
|
||||||
|
|||||||
@@ -0,0 +1,210 @@
|
|||||||
|
// ============================================
|
||||||
|
// DATOS DE PRUEBA
|
||||||
|
// ============================================
|
||||||
|
|
||||||
|
const salas = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
nombre: "Sala Principal",
|
||||||
|
equipos: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
nombre: "Equipo 1",
|
||||||
|
jugadores: [
|
||||||
|
"Carlos",
|
||||||
|
"María"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
nombre: "Equipo 2",
|
||||||
|
jugadores: [
|
||||||
|
"Jorge"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
nombre: "Los Trivialeros",
|
||||||
|
equipos: [
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
nombre: "Equipo Rojo",
|
||||||
|
jugadores: [
|
||||||
|
"Ana",
|
||||||
|
"Pedro",
|
||||||
|
"Lucía"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
nombre: "Equipo Azul",
|
||||||
|
jugadores: [
|
||||||
|
"David",
|
||||||
|
"Laura"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
nombre: "Partida rápida",
|
||||||
|
equipos: [
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
nombre: "Equipo 1",
|
||||||
|
jugadores: [
|
||||||
|
"Miguel"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
nombre: "Equipo 2",
|
||||||
|
jugadores: []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
nombre: "Noche de Trivial",
|
||||||
|
equipos: [
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
nombre: "Los quesitos",
|
||||||
|
jugadores: [
|
||||||
|
"Pablo",
|
||||||
|
"Sara"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
nombre: "Los cerebritos",
|
||||||
|
jugadores: [
|
||||||
|
"Mario",
|
||||||
|
"Elena",
|
||||||
|
"Álvaro"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// MOSTRAR SALAS
|
||||||
|
// ============================================
|
||||||
|
|
||||||
|
function mostrarSalas(salas) {
|
||||||
|
|
||||||
|
const contenedor = document.getElementById("contenedorSalas");
|
||||||
|
|
||||||
|
contenedor.innerHTML = "";
|
||||||
|
|
||||||
|
salas.forEach(sala => {
|
||||||
|
|
||||||
|
const columna = document.createElement("div");
|
||||||
|
|
||||||
|
columna.className = "col-12 col-md-6 col-xl-5";
|
||||||
|
|
||||||
|
|
||||||
|
columna.innerHTML = `
|
||||||
|
|
||||||
|
<div class="sala">
|
||||||
|
|
||||||
|
<div class="sala-header">
|
||||||
|
${sala.nombre}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="sala-body">
|
||||||
|
|
||||||
|
<div class="equipos">
|
||||||
|
|
||||||
|
${crearEquipo(sala, sala.equipos[0])}
|
||||||
|
|
||||||
|
${crearEquipo(sala, sala.equipos[1])}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
`;
|
||||||
|
|
||||||
|
contenedor.appendChild(columna);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// CREAR EQUIPO
|
||||||
|
// ============================================
|
||||||
|
|
||||||
|
function crearEquipo(sala, equipo) {
|
||||||
|
|
||||||
|
let jugadoresHTML = "";
|
||||||
|
|
||||||
|
equipo.jugadores.forEach(jugador => {
|
||||||
|
|
||||||
|
jugadoresHTML += `
|
||||||
|
<div class="jugador">
|
||||||
|
<span class="avatar">👤</span>
|
||||||
|
${jugador}
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
return `
|
||||||
|
|
||||||
|
<div class="equipo">
|
||||||
|
|
||||||
|
<h6>
|
||||||
|
${equipo.nombre}
|
||||||
|
</h6>
|
||||||
|
|
||||||
|
<div class="jugadores">
|
||||||
|
|
||||||
|
${jugadoresHTML}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="btn btn-unirse"
|
||||||
|
onclick="unirseEquipo(${sala.id}, ${equipo.id})">
|
||||||
|
|
||||||
|
Unirse
|
||||||
|
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function unirseEquipo(idSala, idEquipo) {
|
||||||
|
|
||||||
|
console.log("Sala:", idSala);
|
||||||
|
console.log("Equipo:", idEquipo);
|
||||||
|
|
||||||
|
alert(
|
||||||
|
"Has pulsado unirse al equipo " +
|
||||||
|
idEquipo +
|
||||||
|
" de la sala " +
|
||||||
|
idSala
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ============================================
|
||||||
|
// CARGAR DATOS DE PRUEBA
|
||||||
|
// ============================================
|
||||||
|
|
||||||
|
mostrarSalas(salas);
|
||||||
Reference in New Issue
Block a user