Renombrar clases y controladores

This commit is contained in:
2026-09-30 09:08:23 +02:00
parent 87c8ea871a
commit 98b383d16f
19 changed files with 2495 additions and 2495 deletions
@@ -1,269 +1,269 @@
<?php <?php
require_once __DIR__ . '/../includes/conexionBD.php'; require_once __DIR__ . '/../includes/conexionBD.php';
class EquipoxUsuario class EquipoxUsuario
{ {
public $idEquipoxUsuario; public $idEquipoxUsuario;
public $idUsuario; public $idUsuario;
public $idEquipo; public $idEquipo;
public function __construct($idEquipoxUsuario = null, $idUsuario = null, $idEquipo = null) public function __construct($idEquipoxUsuario = null, $idUsuario = null, $idEquipo = null)
{ {
$this->idEquipoxUsuario = $idEquipoxUsuario; $this->idEquipoxUsuario = $idEquipoxUsuario;
$this->idUsuario = $idUsuario; $this->idUsuario = $idUsuario;
$this->idEquipo = $idEquipo; $this->idEquipo = $idEquipo;
} }
public function registrarUsuarioEnEquipo() public function registrarUsuarioEnEquipo()
{ {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) return $conexion; if (is_array($conexion)) return $conexion;
try { try {
$sql = "INSERT INTO equipoxusuario (idUsuario, idEquipo) VALUES (:idUsuario, :idEquipo)"; $sql = "INSERT INTO equipoxusuario (idUsuario, idEquipo) VALUES (:idUsuario, :idEquipo)";
$consulta = $conexion->prepare($sql); $consulta = $conexion->prepare($sql);
$consulta->bindParam(':idUsuario', $this->idUsuario); $consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idEquipo', $this->idEquipo); $consulta->bindParam(':idEquipo', $this->idEquipo);
$consulta->execute(); $consulta->execute();
return [ return [
'exito' => 'Usuario vinculado al equipo correctamente.', 'exito' => 'Usuario vinculado al equipo correctamente.',
'exito_tecnico' => $conexion->lastInsertId() 'exito_tecnico' => $conexion->lastInsertId()
]; ];
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al unir al usuario con el equipo.', 'error' => 'Ocurrió un error al unir al usuario con el equipo.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
public static function listarUsuariosPorEquipo($idEquipo) public static function listarUsuariosPorEquipo($idEquipo)
{ {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) return $conexion; if (is_array($conexion)) return $conexion;
try { try {
$sql = "SELECT u.* FROM equipoxusuario exu $sql = "SELECT u.* FROM equipoxusuario exu
INNER JOIN usuario u ON exu.idUsuario = u.idUsuario INNER JOIN usuario u ON exu.idUsuario = u.idUsuario
WHERE exu.idEquipo = :idEquipo"; WHERE exu.idEquipo = :idEquipo";
$consulta = $conexion->prepare($sql); $consulta = $conexion->prepare($sql);
$consulta->bindParam(':idEquipo', $idEquipo); $consulta->bindParam(':idEquipo', $idEquipo);
$consulta->execute(); $consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC); return $consulta->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al obtener los miembros del equipo.', 'error' => 'Ocurrió un error al obtener los miembros del equipo.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
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
FROM equipoxusuario exu FROM equipoxusuario exu
INNER JOIN equipoxpartida exp INNER JOIN equipoxpartida exp
ON exu.idEquipo = exp.idEquipo ON exu.idEquipo = exp.idEquipo
WHERE exu.idUsuario = :idUsuario WHERE exu.idUsuario = :idUsuario
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 [ return [
'asociado' => false 'asociado' => false
]; ];
} }
return [ return [
'asociado' => true, 'asociado' => true,
'idEquipo' => $resultado['idEquipo'], 'idEquipo' => $resultado['idEquipo'],
'idPartida' => $resultado['idPartida'] 'idPartida' => $resultado['idPartida']
]; ];
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al obtener la sala del usuario.', 'error' => 'Ocurrió un error al obtener la sala del usuario.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
public static function salirDeSala($idUsuario) public static function salirDeSala($idUsuario)
{ {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return $conexion; return $conexion;
} }
try { try {
// 1. Averiguamos el equipo y la partida del usuario // 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"; $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); $datosSala = $consulta->fetch(PDO::FETCH_ASSOC);
// El usuario no pertenece a ninguna sala // El usuario no pertenece a ninguna sala
if (!$datosSala) { if (!$datosSala) {
return [ return [
'error' => 'No perteneces a ninguna sala.' 'error' => 'No perteneces a ninguna sala.'
]; ];
} }
$idEquipo = (int)$datosSala['idEquipo']; $idEquipo = (int)$datosSala['idEquipo'];
$idPartida = (int)$datosSala['idPartida']; $idPartida = (int)$datosSala['idPartida'];
$idHost = (int)$datosSala['idHost']; $idHost = (int)$datosSala['idHost'];
// Comenzamos una transacción // Comenzamos una transacción
$conexion->beginTransaction(); $conexion->beginTransaction();
/* /*
* 2. Comprobamos si quien abandona es el HOST * 2. Comprobamos si quien abandona es el HOST
*/ */
if ($idUsuario === $idHost) { if ($idUsuario === $idHost) {
/* /*
* Obtenemos todos los equipos pertenecientes * Obtenemos todos los equipos pertenecientes
* a esta partida. * a esta partida.
*/ */
$sqlEquipos = "SELECT idEquipo FROM equipoxpartida WHERE idPartida = :idPartida"; $sqlEquipos = "SELECT idEquipo FROM equipoxpartida WHERE idPartida = :idPartida";
$consultaEquipos = $conexion->prepare($sqlEquipos); $consultaEquipos = $conexion->prepare($sqlEquipos);
$consultaEquipos->bindParam(':idPartida', $idPartida, PDO::PARAM_INT); $consultaEquipos->bindParam(':idPartida', $idPartida, PDO::PARAM_INT);
$consultaEquipos->execute(); $consultaEquipos->execute();
$equipos = $consultaEquipos->fetchAll(PDO::FETCH_COLUMN); $equipos = $consultaEquipos->fetchAll(PDO::FETCH_COLUMN);
/* /*
* 3. Eliminamos los jugadores de esos equipos * 3. Eliminamos los jugadores de esos equipos
* de la tabla equipoxusuario. * de la tabla equipoxusuario.
*/ */
if (!empty($equipos)) { if (!empty($equipos)) {
$placeholders = implode(',', array_fill(0, count($equipos), '?')); $placeholders = implode(',', array_fill(0, count($equipos), '?'));
$sqlUsuarios = "DELETE FROM equipoxusuario WHERE idEquipo IN ($placeholders)"; $sqlUsuarios = "DELETE FROM equipoxusuario WHERE idEquipo IN ($placeholders)";
$consultaUsuarios = $conexion->prepare($sqlUsuarios); $consultaUsuarios = $conexion->prepare($sqlUsuarios);
$consultaUsuarios->execute($equipos); $consultaUsuarios->execute($equipos);
} }
/* /*
* 4. Eliminamos las relaciones * 4. Eliminamos las relaciones
* entre equipos y partida. * entre equipos y partida.
*/ */
$sqlEquipoxPartida = "DELETE FROM equipoxpartida WHERE idPartida = :idPartida"; $sqlEquipoxPartida = "DELETE FROM equipoxpartida WHERE idPartida = :idPartida";
$consultaEquipoxPartida = $conexion->prepare($sqlEquipoxPartida); $consultaEquipoxPartida = $conexion->prepare($sqlEquipoxPartida);
$consultaEquipoxPartida->bindParam(':idPartida', $idPartida,PDO::PARAM_INT); $consultaEquipoxPartida->bindParam(':idPartida', $idPartida,PDO::PARAM_INT);
$consultaEquipoxPartida->execute(); $consultaEquipoxPartida->execute();
/* /*
* 5. Eliminamos los equipos. * 5. Eliminamos los equipos.
* *
* Los equipos ya no tienen relaciones con * Los equipos ya no tienen relaciones con
* usuarios ni con la partida. * usuarios ni con la partida.
*/ */
if (!empty($equipos)) { if (!empty($equipos)) {
$placeholders = implode(',', array_fill(0, count($equipos), '?')); $placeholders = implode(',', array_fill(0, count($equipos), '?'));
$sqlEliminarEquipos = "DELETE FROM equipo WHERE idEquipo IN ($placeholders)"; $sqlEliminarEquipos = "DELETE FROM equipo WHERE idEquipo IN ($placeholders)";
$consultaEliminarEquipos = $conexion->prepare($sqlEliminarEquipos); $consultaEliminarEquipos = $conexion->prepare($sqlEliminarEquipos);
$consultaEliminarEquipos->execute($equipos); $consultaEliminarEquipos->execute($equipos);
} }
/* /*
* 6. Eliminamos las relaciones * 6. Eliminamos las relaciones
* entre preguntas y partida. * entre preguntas y partida.
*/ */
$sqlPartidaxPregunta = "DELETE FROM partidaxpregunta WHERE idPartida = :idPartida"; $sqlPartidaxPregunta = "DELETE FROM partidaxpregunta WHERE idPartida = :idPartida";
$consultaPartidaxPregunta = $conexion->prepare($sqlPartidaxPregunta); $consultaPartidaxPregunta = $conexion->prepare($sqlPartidaxPregunta);
$consultaPartidaxPregunta->bindParam(':idPartida', $idPartida, PDO::PARAM_INT); $consultaPartidaxPregunta->bindParam(':idPartida', $idPartida, PDO::PARAM_INT);
$consultaPartidaxPregunta->execute(); $consultaPartidaxPregunta->execute();
/* /*
* 7. Finalmente eliminamos la partida. * 7. Finalmente eliminamos la partida.
*/ */
$sqlPartida = "DELETE FROM partida WHERE idPartida = :idPartida"; $sqlPartida = "DELETE FROM partida WHERE idPartida = :idPartida";
$consultaPartida = $conexion->prepare($sqlPartida); $consultaPartida = $conexion->prepare($sqlPartida);
$consultaPartida->bindParam(':idPartida', $idPartida, PDO::PARAM_INT); $consultaPartida->bindParam(':idPartida', $idPartida, PDO::PARAM_INT);
$consultaPartida->execute(); $consultaPartida->execute();
// Todo ha ido correctamente // Todo ha ido correctamente
$conexion->commit(); $conexion->commit();
return [ return [
'exito' => true, 'exito' => true,
'salaEliminada' => true, 'salaEliminada' => true,
'mensaje' => 'La sala ha sido eliminada correctamente.' 'mensaje' => 'La sala ha sido eliminada correctamente.'
]; ];
} }
/* /*
* 7. Si NO es el host, simplemente abandona * 7. Si NO es el host, simplemente abandona
* su relación con el equipo. * su relación con el equipo.
*/ */
$sqlSalir = "DELETE FROM equipoxusuario WHERE idUsuario = :idUsuario"; $sqlSalir = "DELETE FROM equipoxusuario WHERE idUsuario = :idUsuario";
$consultaSalir = $conexion->prepare($sqlSalir); $consultaSalir = $conexion->prepare($sqlSalir);
$consultaSalir->bindParam(':idUsuario', $idUsuario, PDO::PARAM_INT); $consultaSalir->bindParam(':idUsuario', $idUsuario, PDO::PARAM_INT);
$consultaSalir->execute(); $consultaSalir->execute();
$conexion->commit(); $conexion->commit();
return [ return [
'exito' => true, 'exito' => true,
'salaEliminada' => false, 'salaEliminada' => false,
'mensaje' => 'Has abandonado la sala correctamente.' 'mensaje' => 'Has abandonado la sala correctamente.'
]; ];
} catch (PDOException $error) { } catch (PDOException $error) {
// Si había una transacción activa, la deshacemos // Si había una transacción activa, la deshacemos
if ($conexion->inTransaction()) { if ($conexion->inTransaction()) {
$conexion->rollBack(); $conexion->rollBack();
} }
return [ return [
'error' => 'Ocurrió un error al abandonar la sala.', 'error' => 'Ocurrió un error al abandonar la sala.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
} }
@@ -1,132 +1,132 @@
<?php <?php
require_once __DIR__ . '/../includes/conexionBD.php'; require_once __DIR__ . '/../includes/conexionBD.php';
class Pregunta { class Pregunta {
private ?int $idPregunta; private ?int $idPregunta;
private int $idCategoria; private int $idCategoria;
private string $nombrePregunta; private string $nombrePregunta;
private array $respuestas; private array $respuestas;
public function __construct(int $idCategoria = 0, string $nombrePregunta = "", ?int $idPregunta = null) { public function __construct(int $idCategoria = 0, string $nombrePregunta = "", ?int $idPregunta = null) {
$this->idPregunta = $idPregunta; $this->idPregunta = $idPregunta;
$this->idCategoria = $idCategoria; $this->idCategoria = $idCategoria;
$this->nombrePregunta = $nombrePregunta; $this->nombrePregunta = $nombrePregunta;
$this->respuestas = []; $this->respuestas = [];
} }
public function getIdPregunta(): ?int { return $this->idPregunta; } public function getIdPregunta(): ?int { return $this->idPregunta; }
public function getIdCategoria(): int { return $this->idCategoria; } public function getIdCategoria(): int { return $this->idCategoria; }
public function setIdCategoria(int $idCategoria): void { $this->idCategoria = $idCategoria; } public function setIdCategoria(int $idCategoria): void { $this->idCategoria = $idCategoria; }
public function getNombrePregunta(): string { return $this->nombrePregunta; } public function getNombrePregunta(): string { return $this->nombrePregunta; }
public function setNombrePregunta(string $nombrePregunta): void { $this->nombrePregunta = $nombrePregunta; } public function setNombrePregunta(string $nombrePregunta): void { $this->nombrePregunta = $nombrePregunta; }
public function getRespuestas(): array { return $this->respuestas; } public function getRespuestas(): array { return $this->respuestas; }
public function guardar() { public function guardar() {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return $conexion; return $conexion;
} }
try { try {
$sql = "INSERT INTO pregunta (idCategoria, nombrePregunta) VALUES (:idCat, :texto)"; $sql = "INSERT INTO pregunta (idCategoria, nombrePregunta) VALUES (:idCat, :texto)";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$stmt->execute([ $stmt->execute([
':idCat' => $this->idCategoria, ':idCat' => $this->idCategoria,
':texto' => $this->nombrePregunta ':texto' => $this->nombrePregunta
]); ]);
$this->idPregunta = (int)$conexion->lastInsertId(); $this->idPregunta = (int)$conexion->lastInsertId();
return [ return [
'exito' => 'Pregunta guardada correctamente', 'exito' => 'Pregunta guardada correctamente',
'exito_tecnico' => $this->idPregunta 'exito_tecnico' => $this->idPregunta
]; ];
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al guardar la pregunta.', 'error' => 'Ocurrió un error al guardar la pregunta.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
public function cargarRespuestas() { public function cargarRespuestas() {
if ($this->idPregunta === null) return; if ($this->idPregunta === null) return;
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return $conexion; return $conexion;
} }
try { try {
$sql = "SELECT idRespuesta, nombreRespuesta, correcta FROM respuesta WHERE idPregunta = :idPreg"; $sql = "SELECT idRespuesta, nombreRespuesta, correcta FROM respuesta WHERE idPregunta = :idPreg";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$stmt->execute([':idPreg' => $this->idPregunta]); $stmt->execute([':idPreg' => $this->idPregunta]);
$this->respuestas = $stmt->fetchAll(PDO::FETCH_ASSOC); $this->respuestas = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al cargar las respuestas.', '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) { public static function obtenerPorCategoria(int $idCategoria, int $limite = 10) {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return $conexion; return $conexion;
} }
try { try {
$sql = "SELECT * FROM pregunta WHERE idCategoria = :idCat ORDER BY RAND() LIMIT :limite"; $sql = "SELECT * FROM pregunta WHERE idCategoria = :idCat ORDER BY RAND() LIMIT :limite";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$stmt->bindValue(':idCat', $idCategoria, PDO::PARAM_INT); $stmt->bindValue(':idCat', $idCategoria, PDO::PARAM_INT);
$stmt->bindValue(':limite', $limite, PDO::PARAM_INT); $stmt->bindValue(':limite', $limite, PDO::PARAM_INT);
$stmt->execute(); $stmt->execute();
$preguntas = []; $preguntas = [];
while ($datos = $stmt->fetch(PDO::FETCH_ASSOC)) { while ($datos = $stmt->fetch(PDO::FETCH_ASSOC)) {
$preg = new Pregunta((int)$datos['idCategoria'], $datos['nombrePregunta'], (int)$datos['idPregunta']); $preg = new Pregunta((int)$datos['idCategoria'], $datos['nombrePregunta'], (int)$datos['idPregunta']);
$preg->cargarRespuestas(); $preg->cargarRespuestas();
$preguntas[] = $preg; $preguntas[] = $preg;
} }
return $preguntas; return $preguntas;
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al obtener las preguntas aleatorias.', 'error' => 'Ocurrió un error al obtener las preguntas aleatorias.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
public static function getTodosIds()//devuelve solamente los id de todas las preguntas 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"); $consulta = $conexion->prepare("SELECT idPregunta FROM pregunta");
$consulta->execute(); $consulta->execute();
return $consulta->fetchAll(PDO::FETCH_COLUMN); return $consulta->fetchAll(PDO::FETCH_COLUMN);
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
"error" => "Ocurrió un error al obtener el listado.", "error" => "Ocurrió un error al obtener el listado.",
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
} }
@@ -1,76 +1,76 @@
<?php <?php
require_once __DIR__ . '/../includes/conexionBD.php'; require_once __DIR__ . '/../includes/conexionBD.php';
// clase encargada de registrar las respuestas de los jugadores en tiempo real durante la partida // clase encargada de registrar las respuestas de los jugadores en tiempo real durante la partida
class RespuestaAlmacenada { class RespuestaAlmacenada {
public $idRespuestaAlmacenada; public $idRespuestaAlmacenada;
public $idPartidaxPregunta; public $idPartidaxPregunta;
public $idUsuario; public $idUsuario;
public $idRespuesta; public $idRespuesta;
public function __construct($idRespuestaAlmacenada = null, $idPartidaxPregunta = null, $idUsuario = null, $idRespuesta = null) { public function __construct($idRespuestaAlmacenada = null, $idPartidaxPregunta = null, $idUsuario = null, $idRespuesta = null) {
$this->idRespuestaAlmacenada = $idRespuestaAlmacenada; $this->idRespuestaAlmacenada = $idRespuestaAlmacenada;
$this->idPartidaxPregunta = $idPartidaxPregunta; $this->idPartidaxPregunta = $idPartidaxPregunta;
$this->idUsuario = $idUsuario; $this->idUsuario = $idUsuario;
$this->idRespuesta = $idRespuesta; $this->idRespuesta = $idRespuesta;
} }
/** /**
* Guarda la respuesta que ha seleccionado un usuario en una pregunta de la partida. * Guarda la respuesta que ha seleccionado un usuario en una pregunta de la partida.
*/ */
public function guardarRespuesta() { public function guardarRespuesta() {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) return $conexion; if (is_array($conexion)) return $conexion;
try { try {
$sql = "INSERT INTO respuestaalmacenada (idPartidaxPregunta, idUsuario, idRespuesta) $sql = "INSERT INTO respuestaalmacenada (idPartidaxPregunta, idUsuario, idRespuesta)
VALUES (:idPartidaxPregunta, :idUsuario, :idRespuesta)"; VALUES (:idPartidaxPregunta, :idUsuario, :idRespuesta)";
$consulta = $conexion->prepare($sql); $consulta = $conexion->prepare($sql);
$consulta->bindParam(':idPartidaxPregunta', $this->idPartidaxPregunta); $consulta->bindParam(':idPartidaxPregunta', $this->idPartidaxPregunta);
$consulta->bindParam(':idUsuario', $this->idUsuario); $consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idRespuesta', $this->idRespuesta); $consulta->bindParam(':idRespuesta', $this->idRespuesta);
$consulta->execute(); $consulta->execute();
return [ return [
'exito' => 'Respuesta del usuario almacenada correctamente.', 'exito' => 'Respuesta del usuario almacenada correctamente.',
'exito_tecnico' => $conexion->lastInsertId() 'exito_tecnico' => $conexion->lastInsertId()
]; ];
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al guardar la respuesta del jugador.', 'error' => 'Ocurrió un error al guardar la respuesta del jugador.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
/** /**
* Obtiene los aciertos totales de un usuario en una partida específica. * Obtiene los aciertos totales de un usuario en una partida específica.
* Útil para calcular las estadísticas individuales al terminar el juego. * Útil para calcular las estadísticas individuales al terminar el juego.
*/ */
public static function obtenerAciertosUsuarioEnPartida($idPartida, $idUsuario) { public static function obtenerAciertosUsuarioEnPartida($idPartida, $idUsuario) {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) return $conexion; if (is_array($conexion)) return $conexion;
try { try {
$sql = "SELECT COUNT(*) AS aciertos $sql = "SELECT COUNT(*) AS aciertos
FROM respuestaalmacenada ra FROM respuestaalmacenada ra
INNER JOIN partidaxpregunta pxp ON ra.idPartidaxPregunta = pxp.idPartidaxPregunta INNER JOIN partidaxpregunta pxp ON ra.idPartidaxPregunta = pxp.idPartidaxPregunta
INNER JOIN respuesta r ON ra.idRespuesta = r.idRespuesta INNER JOIN respuesta r ON ra.idRespuesta = r.idRespuesta
WHERE pxp.idPartida = :idPartida AND ra.idUsuario = :idUsuario AND r.correcta = 1"; WHERE pxp.idPartida = :idPartida AND ra.idUsuario = :idUsuario AND r.correcta = 1";
$consulta = $conexion->prepare($sql); $consulta = $conexion->prepare($sql);
$consulta->bindParam(':idPartida', $idPartida); $consulta->bindParam(':idPartida', $idPartida);
$consulta->bindParam(':idUsuario', $idUsuario); $consulta->bindParam(':idUsuario', $idUsuario);
$consulta->execute(); $consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC); $resultado = $consulta->fetch(PDO::FETCH_ASSOC);
return (int)$resultado['aciertos']; return (int)$resultado['aciertos'];
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al calcular los aciertos.', 'error' => 'Ocurrió un error al calcular los aciertos.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
} }
@@ -1,474 +1,474 @@
<?php <?php
require_once __DIR__ . '/../includes/conexionBD.php'; require_once __DIR__ . '/../includes/conexionBD.php';
class Usuario class Usuario
{ {
private ?int $idUsuario; private ?int $idUsuario;
private string $nombreUsuario; private string $nombreUsuario;
private string $contrasena; private string $contrasena;
private string $email; private string $email;
private ?string $avatar; private ?string $avatar;
private ?string $cookie; private ?string $cookie;
private int $aciertos; private int $aciertos;
private int $victorias; private int $victorias;
private int $derrotas; private int $derrotas;
public function __construct( public function __construct(
string $nombreUsuario = "", string $nombreUsuario = "",
string $contrasena = "", string $contrasena = "",
string $email = "", string $email = "",
?string $avatar = null, ?string $avatar = null,
?string $cookie = null, ?string $cookie = null,
int $aciertos = 0, int $aciertos = 0,
int $victorias = 0, int $victorias = 0,
int $derrotas = 0, int $derrotas = 0,
?int $idUsuario = null ?int $idUsuario = null
) { ) {
$this->idUsuario = $idUsuario; $this->idUsuario = $idUsuario;
$this->nombreUsuario = $nombreUsuario; $this->nombreUsuario = $nombreUsuario;
$this->contrasena = $contrasena; $this->contrasena = $contrasena;
$this->email = $email; $this->email = $email;
$this->avatar = $avatar; $this->avatar = $avatar;
$this->cookie = $cookie; $this->cookie = $cookie;
$this->aciertos = $aciertos; $this->aciertos = $aciertos;
$this->victorias = $victorias; $this->victorias = $victorias;
$this->derrotas = $derrotas; $this->derrotas = $derrotas;
} }
public function getIdUsuario(): ?int public function getIdUsuario(): ?int
{ {
return $this->idUsuario; return $this->idUsuario;
} }
public function getNombreUsuario(): string public function getNombreUsuario(): string
{ {
return $this->nombreUsuario; return $this->nombreUsuario;
} }
public function setNombreUsuario(string $nombreUsuario): void public function setNombreUsuario(string $nombreUsuario): void
{ {
$this->nombreUsuario = $nombreUsuario; $this->nombreUsuario = $nombreUsuario;
} }
public function getContrasena(): string public function getContrasena(): string
{ {
return $this->contrasena; return $this->contrasena;
} }
public function setContrasena(string $contrasena): void public function setContrasena(string $contrasena): void
{ {
$this->contrasena = $contrasena; $this->contrasena = $contrasena;
} }
public function getEmail(): string public function getEmail(): string
{ {
return $this->email; return $this->email;
} }
public function setEmail(string $email): void public function setEmail(string $email): void
{ {
$this->email = $email; $this->email = $email;
} }
public function getAvatar(): ?string public function getAvatar(): ?string
{ {
return $this->avatar; return $this->avatar;
} }
public function setAvatar(?string $avatar): void public function setAvatar(?string $avatar): void
{ {
$this->avatar = $avatar; $this->avatar = $avatar;
} }
public function getCookie(): ?string public function getCookie(): ?string
{ {
return $this->cookie; return $this->cookie;
} }
public function setCookie(?string $cookie): void public function setCookie(?string $cookie): void
{ {
$this->cookie = $cookie; $this->cookie = $cookie;
} }
public function getAciertos(): int public function getAciertos(): int
{ {
return $this->aciertos; return $this->aciertos;
} }
public function setAciertos(int $aciertos): void public function setAciertos(int $aciertos): void
{ {
$this->aciertos = $aciertos; $this->aciertos = $aciertos;
} }
public function getVictorias(): int public function getVictorias(): int
{ {
return $this->victorias; return $this->victorias;
} }
public function setVictorias(int $victorias): void public function setVictorias(int $victorias): void
{ {
$this->victorias = $victorias; $this->victorias = $victorias;
} }
public function getDerrotas(): int public function getDerrotas(): int
{ {
return $this->derrotas; return $this->derrotas;
} }
public function setDerrotas(int $derrotas): void public function setDerrotas(int $derrotas): void
{ {
$this->derrotas = $derrotas; $this->derrotas = $derrotas;
} }
public function registrar() public function registrar()
{ {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return $conexion; return $conexion;
} }
try { try {
$sql = "INSERT INTO usuario (nombreUsuario, contrasena, email, avatar, cookie, aciertos, victorias, derrotas) $sql = "INSERT INTO usuario (nombreUsuario, contrasena, email, avatar, cookie, aciertos, victorias, derrotas)
VALUES (:nombre, :pass, :email, :avatar, :cookie, :aciertos, :victorias, :derrotas)"; VALUES (:nombre, :pass, :email, :avatar, :cookie, :aciertos, :victorias, :derrotas)";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$passHash = password_hash($this->contrasena, PASSWORD_BCRYPT); $passHash = password_hash($this->contrasena, PASSWORD_BCRYPT);
$stmt->execute([ $stmt->execute([
':nombre' => $this->nombreUsuario, ':nombre' => $this->nombreUsuario,
':pass' => $passHash, ':pass' => $passHash,
':email' => $this->email, ':email' => $this->email,
':avatar' => $this->avatar, ':avatar' => $this->avatar,
':cookie' => $this->cookie, ':cookie' => $this->cookie,
':aciertos' => $this->aciertos, ':aciertos' => $this->aciertos,
':victorias' => $this->victorias, ':victorias' => $this->victorias,
':derrotas' => $this->derrotas ':derrotas' => $this->derrotas
]); ]);
$this->idUsuario = (int)$conexion->lastInsertId(); $this->idUsuario = (int)$conexion->lastInsertId();
return [ return [
'exito' => 'Usuario registrado correctamente', 'exito' => 'Usuario registrado correctamente',
'exito_tecnico' => $this->idUsuario 'exito_tecnico' => $this->idUsuario
]; ];
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al registrar el usuario.', 'error' => 'Ocurrió un error al registrar el usuario.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
public static function buscarPorId($id) public static function buscarPorId($id)
{ {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return $conexion; return $conexion;
} }
try { try {
$sql = "SELECT * FROM usuario WHERE idUsuario = :id"; $sql = "SELECT * FROM usuario WHERE idUsuario = :id";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$stmt->execute([':id' => $id]); $stmt->execute([':id' => $id]);
$datos = $stmt->fetch(PDO::FETCH_ASSOC); $datos = $stmt->fetch(PDO::FETCH_ASSOC);
if ($datos) { if ($datos) {
return new Usuario( return new Usuario(
$datos['nombreUsuario'], $datos['nombreUsuario'],
$datos['contrasena'], $datos['contrasena'],
$datos['email'], $datos['email'],
$datos['avatar'], $datos['avatar'],
$datos['cookie'], $datos['cookie'],
(int)$datos['aciertos'], (int)$datos['aciertos'],
(int)$datos['victorias'], (int)$datos['victorias'],
(int)$datos['derrotas'], (int)$datos['derrotas'],
(int)$datos['idUsuario'] (int)$datos['idUsuario']
); );
} }
return [ return [
'error' => 'No se encontró ningún usuario con ese ID.' 'error' => 'No se encontró ningún usuario con ese ID.'
]; ];
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al buscar el usuario.', 'error' => 'Ocurrió un error al buscar el usuario.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
public static function buscarPorEmail($email) public static function buscarPorEmail($email)
{ {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return $conexion; return $conexion;
} }
try { try {
$sql = "SELECT * FROM usuario WHERE email = :email"; $sql = "SELECT * FROM usuario WHERE email = :email";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$stmt->execute([':email' => $email]); $stmt->execute([':email' => $email]);
$datos = $stmt->fetch(PDO::FETCH_ASSOC); $datos = $stmt->fetch(PDO::FETCH_ASSOC);
if ($datos) { if ($datos) {
return new Usuario( return new Usuario(
$datos['nombreUsuario'], $datos['nombreUsuario'],
$datos['contrasena'], $datos['contrasena'],
$datos['email'], $datos['email'],
$datos['avatar'], $datos['avatar'],
$datos['cookie'], $datos['cookie'],
(int)$datos['aciertos'], (int)$datos['aciertos'],
(int)$datos['victorias'], (int)$datos['victorias'],
(int)$datos['derrotas'], (int)$datos['derrotas'],
(int)$datos['idUsuario'] (int)$datos['idUsuario']
); );
} }
return null; // No existe usuario con ese email return null; // No existe usuario con ese email
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al buscar el usuario por email.', 'error' => 'Ocurrió un error al buscar el usuario por email.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
public static function login($email, $contrasena) public static function login($email, $contrasena)
{ {
$usuario = self::buscarPorEmail($email); $usuario = self::buscarPorEmail($email);
// El usuario no existe // El usuario no existe
if (!($usuario instanceof Usuario)) { if (!($usuario instanceof Usuario)) {
// Limpiamos posibles datos de sesión anteriores // Limpiamos posibles datos de sesión anteriores
unset($_SESSION['idUsuario']); unset($_SESSION['idUsuario']);
unset($_SESSION['email']); unset($_SESSION['email']);
unset($_SESSION['nombreUsuario']); unset($_SESSION['nombreUsuario']);
unset($_SESSION['avatar']); unset($_SESSION['avatar']);
return null; return null;
} }
// Comprobamos la contraseña // Comprobamos la contraseña
if (password_verify($contrasena, $usuario->getContrasena())) { if (password_verify($contrasena, $usuario->getContrasena())) {
// Usuario validado correctamente // Usuario validado correctamente
$_SESSION['idUsuario'] = $usuario->getIdUsuario(); $_SESSION['idUsuario'] = $usuario->getIdUsuario();
$_SESSION['email'] = $usuario->getEmail(); $_SESSION['email'] = $usuario->getEmail();
$_SESSION['nombreUsuario'] = $usuario->getNombreUsuario(); $_SESSION['nombreUsuario'] = $usuario->getNombreUsuario();
$_SESSION['avatar'] = $usuario->getAvatar(); $_SESSION['avatar'] = $usuario->getAvatar();
// Devolvemos el usuario como hasta ahora // Devolvemos el usuario como hasta ahora
return $usuario; return $usuario;
} }
// Contraseña incorrecta // Contraseña incorrecta
unset($_SESSION['idUsuario']); unset($_SESSION['idUsuario']);
unset($_SESSION['email']); unset($_SESSION['email']);
unset($_SESSION['nombreUsuario']); unset($_SESSION['nombreUsuario']);
unset($_SESSION['avatar']); unset($_SESSION['avatar']);
return null; return null;
} }
// Cookies // Cookies
public static function guardarCookieToken($idUsuario, $token) public static function guardarCookieToken($idUsuario, $token)
{ {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) return false; if (is_array($conexion)) return false;
try { try {
$sql = "UPDATE usuario SET cookie = :token WHERE idUsuario = :id"; $sql = "UPDATE usuario SET cookie = :token WHERE idUsuario = :id";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
return $stmt->execute([ return $stmt->execute([
':token' => $token, ':token' => $token,
':id' => $idUsuario ':id' => $idUsuario
]); ]);
} catch (PDOException $e) { } catch (PDOException $e) {
return false; return false;
} }
} }
public static function buscarPorCookie($token) public static function buscarPorCookie($token)
{ {
if (empty($token)) return null; if (empty($token)) return null;
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) return null; if (is_array($conexion)) return null;
try { try {
$sql = "SELECT * FROM usuario WHERE cookie = :token AND cookie IS NOT NULL"; $sql = "SELECT * FROM usuario WHERE cookie = :token AND cookie IS NOT NULL";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$stmt->execute([':token' => $token]); $stmt->execute([':token' => $token]);
$datos = $stmt->fetch(PDO::FETCH_ASSOC); $datos = $stmt->fetch(PDO::FETCH_ASSOC);
if ($datos) { if ($datos) {
return new Usuario( return new Usuario(
$datos['nombreUsuario'], $datos['nombreUsuario'],
$datos['contrasena'], $datos['contrasena'],
$datos['email'], $datos['email'],
$datos['avatar'], $datos['avatar'],
$datos['cookie'], $datos['cookie'],
(int)$datos['aciertos'], (int)$datos['aciertos'],
(int)$datos['victorias'], (int)$datos['victorias'],
(int)$datos['derrotas'], (int)$datos['derrotas'],
(int)$datos['idUsuario'] (int)$datos['idUsuario']
); );
} }
return null; return null;
} catch (PDOException $e) { } catch (PDOException $e) {
return null; return null;
} }
} }
public function cambiarNombre($nuevoNombre) public function cambiarNombre($nuevoNombre)
{ {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return $conexion; return $conexion;
} }
try { try {
$sql = "UPDATE usuario $sql = "UPDATE usuario
SET nombreUsuario = :nombre SET nombreUsuario = :nombre
WHERE idUsuario = :id"; WHERE idUsuario = :id";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$stmt->execute([ $stmt->execute([
':nombre' => $nuevoNombre, ':nombre' => $nuevoNombre,
':id' => $this->idUsuario ':id' => $this->idUsuario
]); ]);
// Actualizamos también el objeto actual // Actualizamos también el objeto actual
$this->nombreUsuario = $nuevoNombre; $this->nombreUsuario = $nuevoNombre;
return [ return [
'exito' => 'Nombre actualizado correctamente.' 'exito' => 'Nombre actualizado correctamente.'
]; ];
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al actualizar el nombre.', 'error' => 'Ocurrió un error al actualizar el nombre.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
public function cambiarAvatar($archivo) public function cambiarAvatar($archivo)
{ {
$carpeta = __DIR__ . '/../img/avatars/'; $carpeta = __DIR__ . '/../img/avatars/';
// Creamos la carpeta si no existe // Creamos la carpeta si no existe
if (!is_dir($carpeta)) { if (!is_dir($carpeta)) {
mkdir($carpeta, 0755, true); mkdir($carpeta, 0755, true);
} }
// Obtenemos la extensión según el tipo MIME // Obtenemos la extensión según el tipo MIME
$tipo = mime_content_type($archivo['tmp_name']); $tipo = mime_content_type($archivo['tmp_name']);
$extensiones = [ $extensiones = [
'image/jpeg' => 'jpg', 'image/jpeg' => 'jpg',
'image/png' => 'png', 'image/png' => 'png',
'image/gif' => 'gif', 'image/gif' => 'gif',
'image/webp' => 'webp' 'image/webp' => 'webp'
]; ];
if (!isset($extensiones[$tipo])) { if (!isset($extensiones[$tipo])) {
return [ return [
'error' => 'Formato de imagen no permitido.' 'error' => 'Formato de imagen no permitido.'
]; ];
} }
$extension = $extensiones[$tipo]; $extension = $extensiones[$tipo];
// Nombre único para evitar conflictos // Nombre único para evitar conflictos
$nombreArchivo = 'avatar_' . $this->idUsuario . '.' . $extension; $nombreArchivo = 'avatar_' . $this->idUsuario . '.' . $extension;
$rutaCompleta = $carpeta . $nombreArchivo; $rutaCompleta = $carpeta . $nombreArchivo;
// Guardamos la imagen // Guardamos la imagen
if (!move_uploaded_file($archivo['tmp_name'], $rutaCompleta)) { if (!move_uploaded_file($archivo['tmp_name'], $rutaCompleta)) {
return [ return [
'error' => 'No se pudo guardar la imagen.' 'error' => 'No se pudo guardar la imagen.'
]; ];
} }
// Ruta que utilizará el HTML // Ruta que utilizará el HTML
$rutaAvatar = 'img/avatars/' . $nombreArchivo; $rutaAvatar = 'img/avatars/' . $nombreArchivo;
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return $conexion; return $conexion;
} }
try { try {
$sql = "UPDATE usuario $sql = "UPDATE usuario
SET avatar = :avatar SET avatar = :avatar
WHERE idUsuario = :id"; WHERE idUsuario = :id";
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$stmt->execute([ $stmt->execute([
':avatar' => $rutaAvatar, ':avatar' => $rutaAvatar,
':id' => $this->idUsuario ':id' => $this->idUsuario
]); ]);
// Actualizamos también el objeto actual // Actualizamos también el objeto actual
$this->avatar = $rutaAvatar; $this->avatar = $rutaAvatar;
return [ return [
'exito' => 'Avatar actualizado correctamente.', 'exito' => 'Avatar actualizado correctamente.',
'avatar' => $rutaAvatar 'avatar' => $rutaAvatar
]; ];
} catch (PDOException $error) { } catch (PDOException $error) {
return [ return [
'error' => 'Ocurrió un error al actualizar el avatar.', 'error' => 'Ocurrió un error al actualizar el avatar.',
'error_tecnico' => $error->getMessage() 'error_tecnico' => $error->getMessage()
]; ];
} }
} }
public static function obtenerRanking($limite = 10) public static function obtenerRanking($limite = 10)
{ {
try { try {
$conexion = conexionBD(); $conexion = conexionBD();
if (is_array($conexion)) { if (is_array($conexion)) {
return []; return [];
} }
$sql = "SELECT $sql = "SELECT
idUsuario, idUsuario,
nombreUsuario, nombreUsuario,
avatar, avatar,
aciertos, aciertos,
victorias, victorias,
derrotas, derrotas,
CASE CASE
WHEN (victorias + derrotas) > 0 WHEN (victorias + derrotas) > 0
THEN ROUND((victorias / (victorias + derrotas)) * 100, 0) THEN ROUND((victorias / (victorias + derrotas)) * 100, 0)
ELSE 0 ELSE 0
END AS porcentajeVictoria END AS porcentajeVictoria
FROM usuario FROM usuario
ORDER BY victorias DESC, aciertos DESC ORDER BY victorias DESC, aciertos DESC
LIMIT " . (int)$limite; LIMIT " . (int)$limite;
$stmt = $conexion->prepare($sql); $stmt = $conexion->prepare($sql);
$stmt->execute(); $stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC); return $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) { } catch (PDOException $e) {
return []; return [];
} }
} }
} }
@@ -1,55 +1,55 @@
<?php <?php
session_start(); session_start();
require_once '../clases/claseCategoria.php'; require_once '../clases/claseCategoria.php';
switch ($_POST['orden']) { switch ($_POST['orden']) {
case 'crearCategoria': case 'crearCategoria':
$nombreCategoria = trim($_POST['nombreCategoria'] ?? ''); $nombreCategoria = trim($_POST['nombreCategoria'] ?? '');
if ($nombreCategoria == '') { if ($nombreCategoria == '') {
echo json_encode(['error' => 'El nombre de la categoría es obligatorio']); echo json_encode(['error' => 'El nombre de la categoría es obligatorio']);
break; break;
} }
$categoria = new Categoria(null, $nombreCategoria); $categoria = new Categoria(null, $nombreCategoria);
$resultado = $categoria->crear(); $resultado = $categoria->crear();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'listarCategorias': case 'listarCategorias':
$categoria = new Categoria(); $categoria = new Categoria();
$resultado = $categoria->listar(); $resultado = $categoria->listar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'buscarCategoria': case 'buscarCategoria':
$idCategoria = intval($_POST['idCategoria'] ?? 0); $idCategoria = intval($_POST['idCategoria'] ?? 0);
$categoria = new Categoria($idCategoria); $categoria = new Categoria($idCategoria);
$resultado = $categoria->buscar(); $resultado = $categoria->buscar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'borrarCategoria': case 'borrarCategoria':
$idCategoria = intval($_POST['idCategoria'] ?? 0); $idCategoria = intval($_POST['idCategoria'] ?? 0);
$categoria = new Categoria($idCategoria); $categoria = new Categoria($idCategoria);
$resultado = $categoria->borrar(); $resultado = $categoria->borrar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
} }
@@ -1,55 +1,55 @@
<?php <?php
session_start(); session_start();
require_once '../clases/claseEquipo.php'; require_once '../clases/claseEquipo.php';
switch ($_POST['orden']) { switch ($_POST['orden']) {
case 'crearEquipo': case 'crearEquipo':
$nombreEquipo = trim($_POST['nombreEquipo'] ?? ''); $nombreEquipo = trim($_POST['nombreEquipo'] ?? '');
if ($nombreEquipo == '') { if ($nombreEquipo == '') {
echo json_encode(['error' => 'El nombre del equipo es obligatorio']); echo json_encode(['error' => 'El nombre del equipo es obligatorio']);
break; break;
} }
$equipo = new Equipo(null, $nombreEquipo); $equipo = new Equipo(null, $nombreEquipo);
$resultado = $equipo->crear(); $resultado = $equipo->crear();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'listarEquipos': case 'listarEquipos':
$equipo = new Equipo(); $equipo = new Equipo();
$resultado = $equipo->listar(); $resultado = $equipo->listar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'buscarEquipo': case 'buscarEquipo':
$idEquipo = intval($_POST['idEquipo'] ?? 0); $idEquipo = intval($_POST['idEquipo'] ?? 0);
$equipo = new Equipo($idEquipo); $equipo = new Equipo($idEquipo);
$resultado = $equipo->buscar(); $resultado = $equipo->buscar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'borrarEquipo': case 'borrarEquipo':
$idEquipo = intval($_POST['idEquipo'] ?? 0); $idEquipo = intval($_POST['idEquipo'] ?? 0);
$equipo = new Equipo($idEquipo); $equipo = new Equipo($idEquipo);
$resultado = $equipo->borrar(); $resultado = $equipo->borrar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
} }
File diff suppressed because it is too large Load Diff
@@ -1,153 +1,153 @@
<?php <?php
session_start(); session_start();
require_once '../clases/clasePregunta.php'; require_once '../clases/clasePregunta.php';
require_once '../clases/claseRespuesta.php'; require_once '../clases/claseRespuesta.php';
switch ($_POST['orden']) { switch ($_POST['orden']) {
case 'crearPregunta': case 'crearPregunta':
$idCategoria = intval($_POST['idCategoria'] ?? 0); $idCategoria = intval($_POST['idCategoria'] ?? 0);
$nombrePregunta = trim($_POST['nombrePregunta'] ?? ''); $nombrePregunta = trim($_POST['nombrePregunta'] ?? '');
$respuestaCorrecta = trim($_POST['respuestaCorrecta'] ?? ''); $respuestaCorrecta = trim($_POST['respuestaCorrecta'] ?? '');
$respuestaIncorrecta1 = trim($_POST['respuestaIncorrecta1'] ?? ''); $respuestaIncorrecta1 = trim($_POST['respuestaIncorrecta1'] ?? '');
$respuestaIncorrecta2 = trim($_POST['respuestaIncorrecta2'] ?? ''); $respuestaIncorrecta2 = trim($_POST['respuestaIncorrecta2'] ?? '');
$respuestaIncorrecta3 = trim($_POST['respuestaIncorrecta3'] ?? ''); $respuestaIncorrecta3 = trim($_POST['respuestaIncorrecta3'] ?? '');
// Comprobamos los datos // Comprobamos los datos
if ( if (
$idCategoria <= 0 || $idCategoria <= 0 ||
$nombrePregunta === '' || $nombrePregunta === '' ||
$respuestaCorrecta === '' || $respuestaCorrecta === '' ||
$respuestaIncorrecta1 === '' || $respuestaIncorrecta1 === '' ||
$respuestaIncorrecta2 === '' || $respuestaIncorrecta2 === '' ||
$respuestaIncorrecta3 === '' $respuestaIncorrecta3 === ''
) { ) {
echo json_encode([ echo json_encode([
'error' => 'La categoría, la pregunta y todas las respuestas son obligatorias.' 'error' => 'La categoría, la pregunta y todas las respuestas son obligatorias.'
]); ]);
break; break;
} }
/* /*
* ========================================== * ==========================================
* 1. CREAMOS LA PREGUNTA * 1. CREAMOS LA PREGUNTA
* ========================================== * ==========================================
*/ */
$pregunta = new Pregunta( $pregunta = new Pregunta(
$idCategoria, $idCategoria,
$nombrePregunta $nombrePregunta
); );
$resultadoPregunta = $pregunta->guardar(); $resultadoPregunta = $pregunta->guardar();
if (isset($resultadoPregunta['error'])) { if (isset($resultadoPregunta['error'])) {
echo json_encode($resultadoPregunta); echo json_encode($resultadoPregunta);
break; break;
} }
// Obtenemos el ID de la pregunta creada // Obtenemos el ID de la pregunta creada
$idPregunta = (int)$resultadoPregunta['exito_tecnico']; $idPregunta = (int)$resultadoPregunta['exito_tecnico'];
/* /*
* ========================================== * ==========================================
* 2. CREAMOS LAS RESPUESTAS * 2. CREAMOS LAS RESPUESTAS
* ========================================== * ==========================================
*/ */
$respuestas = [ $respuestas = [
[ [
'texto' => $respuestaCorrecta, 'texto' => $respuestaCorrecta,
'correcta' => 1 'correcta' => 1
], ],
[ [
'texto' => $respuestaIncorrecta1, 'texto' => $respuestaIncorrecta1,
'correcta' => 0 'correcta' => 0
], ],
[ [
'texto' => $respuestaIncorrecta2, 'texto' => $respuestaIncorrecta2,
'correcta' => 0 'correcta' => 0
], ],
[ [
'texto' => $respuestaIncorrecta3, 'texto' => $respuestaIncorrecta3,
'correcta' => 0 'correcta' => 0
] ]
]; ];
foreach ($respuestas as $respuesta) { foreach ($respuestas as $respuesta) {
$objRespuesta = new Respuesta( $objRespuesta = new Respuesta(
null, null,
$idPregunta, $idPregunta,
$respuesta['texto'], $respuesta['texto'],
$respuesta['correcta'] $respuesta['correcta']
); );
$resultadoRespuesta = $objRespuesta->insertar(); $resultadoRespuesta = $objRespuesta->insertar();
if (isset($resultadoRespuesta['error'])) { if (isset($resultadoRespuesta['error'])) {
echo json_encode($resultadoRespuesta); echo json_encode($resultadoRespuesta);
break 2; break 2;
} }
} }
/* /*
* ========================================== * ==========================================
* 3. TODO CORRECTO * 3. TODO CORRECTO
* ========================================== * ==========================================
*/ */
echo json_encode([ echo json_encode([
'exito' => 'Pregunta creada correctamente.', 'exito' => 'Pregunta creada correctamente.',
'idPregunta' => $idPregunta 'idPregunta' => $idPregunta
]); ]);
break; break;
case 'obtenerPreguntasPorCategoria': case 'obtenerPreguntasPorCategoria':
$idCategoria = intval($_POST['idCategoria'] ?? 0); $idCategoria = intval($_POST['idCategoria'] ?? 0);
$limite = intval($_POST['limite'] ?? 10); $limite = intval($_POST['limite'] ?? 10);
$preguntas = Pregunta::obtenerPorCategoria($idCategoria, $limite); $preguntas = Pregunta::obtenerPorCategoria($idCategoria, $limite);
// Si ha devuelto un array de errores (formato ['error'=>...]) lo mandamos tal cual // Si ha devuelto un array de errores (formato ['error'=>...]) lo mandamos tal cual
if (isset($preguntas['error'])) { if (isset($preguntas['error'])) {
echo json_encode($preguntas); echo json_encode($preguntas);
break; break;
} }
// Convertimos cada objeto Pregunta en un array simple para poder mandarlo en JSON // Convertimos cada objeto Pregunta en un array simple para poder mandarlo en JSON
$listado = []; $listado = [];
foreach ($preguntas as $p) { foreach ($preguntas as $p) {
$listado[] = [ $listado[] = [
'idPregunta' => $p->getIdPregunta(), 'idPregunta' => $p->getIdPregunta(),
'idCategoria' => $p->getIdCategoria(), 'idCategoria' => $p->getIdCategoria(),
'nombrePregunta' => $p->getNombrePregunta(), 'nombrePregunta' => $p->getNombrePregunta(),
'respuestas' => $p->getRespuestas() 'respuestas' => $p->getRespuestas()
]; ];
} }
echo json_encode($listado); echo json_encode($listado);
break; break;
} }
@@ -1,71 +1,71 @@
<?php <?php
session_start(); session_start();
require_once '../clases/claseRespuesta.php'; require_once '../clases/claseRespuesta.php';
switch ($_POST['orden']) { switch ($_POST['orden']) {
case 'crearRespuesta': case 'crearRespuesta':
$idPregunta = intval($_POST['idPregunta'] ?? 0); $idPregunta = intval($_POST['idPregunta'] ?? 0);
$nombreRespuesta = trim($_POST['nombreRespuesta'] ?? ''); $nombreRespuesta = trim($_POST['nombreRespuesta'] ?? '');
$correcta = intval($_POST['correcta'] ?? 0); $correcta = intval($_POST['correcta'] ?? 0);
if ($idPregunta <= 0 || $nombreRespuesta == '') { if ($idPregunta <= 0 || $nombreRespuesta == '') {
echo json_encode(['error' => 'La pregunta y el texto de la respuesta son obligatorios']); echo json_encode(['error' => 'La pregunta y el texto de la respuesta son obligatorios']);
break; break;
} }
$respuesta = new Respuesta(null, $idPregunta, $nombreRespuesta, $correcta); $respuesta = new Respuesta(null, $idPregunta, $nombreRespuesta, $correcta);
$resultado = $respuesta->insertar(); $resultado = $respuesta->insertar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'listarRespuestas': case 'listarRespuestas':
$respuesta = new Respuesta(); $respuesta = new Respuesta();
$resultado = $respuesta->listar(); $resultado = $respuesta->listar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'listarRespuestasPorPregunta': case 'listarRespuestasPorPregunta':
$idPregunta = intval($_POST['idPregunta'] ?? 0); $idPregunta = intval($_POST['idPregunta'] ?? 0);
$respuesta = new Respuesta(null, $idPregunta); $respuesta = new Respuesta(null, $idPregunta);
$resultado = $respuesta->listarPorPregunta(); $resultado = $respuesta->listarPorPregunta();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'editarRespuesta': case 'editarRespuesta':
$idRespuesta = intval($_POST['idRespuesta'] ?? 0); $idRespuesta = intval($_POST['idRespuesta'] ?? 0);
$idPregunta = intval($_POST['idPregunta'] ?? 0); $idPregunta = intval($_POST['idPregunta'] ?? 0);
$nombreRespuesta = trim($_POST['nombreRespuesta'] ?? ''); $nombreRespuesta = trim($_POST['nombreRespuesta'] ?? '');
$correcta = intval($_POST['correcta'] ?? 0); $correcta = intval($_POST['correcta'] ?? 0);
$respuesta = new Respuesta($idRespuesta, $idPregunta, $nombreRespuesta, $correcta); $respuesta = new Respuesta($idRespuesta, $idPregunta, $nombreRespuesta, $correcta);
$resultado = $respuesta->editar(); $resultado = $respuesta->editar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
case 'borrarRespuesta': case 'borrarRespuesta':
$idRespuesta = intval($_POST['idRespuesta'] ?? 0); $idRespuesta = intval($_POST['idRespuesta'] ?? 0);
$respuesta = new Respuesta($idRespuesta); $respuesta = new Respuesta($idRespuesta);
$resultado = $respuesta->eliminar(); $resultado = $respuesta->eliminar();
echo json_encode($resultado); echo json_encode($resultado);
break; break;
} }
@@ -1,65 +1,65 @@
<?php <?php
session_start(); session_start();
require_once '../clases/claseRespuestaAlmacenada.php'; require_once '../clases/claseRespuestaAlmacenada.php';
switch ($_POST['orden']) { switch ($_POST['orden']) {
case 'guardarRespuesta': case 'guardarRespuesta':
// Comprobamos que haya una sesión iniciada // Comprobamos que haya una sesión iniciada
if (isset($_SESSION['idUsuario'])) { if (isset($_SESSION['idUsuario'])) {
$respuestaAlmacenada = new RespuestaAlmacenada(); $respuestaAlmacenada = new RespuestaAlmacenada();
// Recogemos los datos de la respuesta // Recogemos los datos de la respuesta
$respuestaAlmacenada->idPartidaxPregunta = $_POST['idPartidaxPregunta']; $respuestaAlmacenada->idPartidaxPregunta = $_POST['idPartidaxPregunta'];
$respuestaAlmacenada->idUsuario = $_SESSION['idUsuario']; $respuestaAlmacenada->idUsuario = $_SESSION['idUsuario'];
$respuestaAlmacenada->idRespuesta = $_POST['idRespuesta']; $respuestaAlmacenada->idRespuesta = $_POST['idRespuesta'];
// Guardamos la respuesta // Guardamos la respuesta
$respuesta = $respuestaAlmacenada->guardarRespuesta(); $respuesta = $respuestaAlmacenada->guardarRespuesta();
} else { } else {
$respuesta = [ $respuesta = [
'error' => 'No hay ninguna sesión iniciada.' 'error' => 'No hay ninguna sesión iniciada.'
]; ];
} }
echo json_encode($respuesta); echo json_encode($respuesta);
break; break;
case 'obtenerAciertosUsuarioEnPartida': case 'obtenerAciertosUsuarioEnPartida':
// Comprobamos que haya una sesión iniciada // Comprobamos que haya una sesión iniciada
if (isset($_SESSION['idUsuario'])) { if (isset($_SESSION['idUsuario'])) {
$idPartida = $_POST['idPartida']; $idPartida = $_POST['idPartida'];
$idUsuario = $_SESSION['idUsuario']; $idUsuario = $_SESSION['idUsuario'];
// Obtenemos los aciertos del usuario en esa partida // Obtenemos los aciertos del usuario en esa partida
$respuesta = RespuestaAlmacenada::obtenerAciertosUsuarioEnPartida( $respuesta = RespuestaAlmacenada::obtenerAciertosUsuarioEnPartida(
$idPartida, $idPartida,
$idUsuario $idUsuario
); );
} else { } else {
$respuesta = [ $respuesta = [
'error' => 'No hay ninguna sesión iniciada.' 'error' => 'No hay ninguna sesión iniciada.'
]; ];
} }
echo json_encode($respuesta); echo json_encode($respuesta);
break; break;
}//fin switch }//fin switch
?> ?>