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
+76
View File
@@ -0,0 +1,76 @@
<?php
require_once __DIR__ . '/../includes/conexionBD.php';
// clase encargada de registrar las respuestas de los jugadores en tiempo real durante la partida
class RespuestaAlmacenada {
public $idRespuestaAlmacenada;
public $idPartidaxPregunta;
public $idUsuario;
public $idRespuesta;
public function __construct($idRespuestaAlmacenada = null, $idPartidaxPregunta = null, $idUsuario = null, $idRespuesta = null) {
$this->idRespuestaAlmacenada = $idRespuestaAlmacenada;
$this->idPartidaxPregunta = $idPartidaxPregunta;
$this->idUsuario = $idUsuario;
$this->idRespuesta = $idRespuesta;
}
/**
* Guarda la respuesta que ha seleccionado un usuario en una pregunta de la partida.
*/
public function guardarRespuesta() {
$conexion = conexionBD();
if (is_array($conexion)) return $conexion;
try {
$sql = "INSERT INTO respuestaalmacenada (idPartidaxPregunta, idUsuario, idRespuesta)
VALUES (:idPartidaxPregunta, :idUsuario, :idRespuesta)";
$consulta = $conexion->prepare($sql);
$consulta->bindParam(':idPartidaxPregunta', $this->idPartidaxPregunta);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idRespuesta', $this->idRespuesta);
$consulta->execute();
return [
'exito' => 'Respuesta del usuario almacenada correctamente.',
'exito_tecnico' => $conexion->lastInsertId()
];
} catch (PDOException $error) {
return [
'error' => 'Ocurrió un error al guardar la respuesta del jugador.',
'error_tecnico' => $error->getMessage()
];
}
}
/**
* Obtiene los aciertos totales de un usuario en una partida específica.
* Útil para calcular las estadísticas individuales al terminar el juego.
*/
public static function obtenerAciertosUsuarioEnPartida($idPartida, $idUsuario) {
$conexion = conexionBD();
if (is_array($conexion)) return $conexion;
try {
$sql = "SELECT COUNT(*) AS aciertos
FROM respuestaalmacenada ra
INNER JOIN partidaxpregunta pxp ON ra.idPartidaxPregunta = pxp.idPartidaxPregunta
INNER JOIN respuesta r ON ra.idRespuesta = r.idRespuesta
WHERE pxp.idPartida = :idPartida AND ra.idUsuario = :idUsuario AND r.correcta = 1";
$consulta = $conexion->prepare($sql);
$consulta->bindParam(':idPartida', $idPartida);
$consulta->bindParam(':idUsuario', $idUsuario);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
return (int)$resultado['aciertos'];
} catch (PDOException $error) {
return [
'error' => 'Ocurrió un error al calcular los aciertos.',
'error_tecnico' => $error->getMessage()
];
}
}
}