Subir archivos a "clases"
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
require_once '../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 $primero; // Indica con 1 o 0 si fue el más rápido en responder correctamente
|
||||
|
||||
public function __construct($idRespuestaAlmacenada = null, $idPartidaxPregunta = null, $idUsuario = null, $idRespuesta = null, $primero = 0) {
|
||||
$this->idRespuestaAlmacenada = $idRespuestaAlmacenada;
|
||||
$this->idPartidaxPregunta = $idPartidaxPregunta;
|
||||
$this->idUsuario = $idUsuario;
|
||||
$this->idRespuesta = $idRespuesta;
|
||||
$this->primero = $primero;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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, primero)
|
||||
VALUES (:idPartidaxPregunta, :idUsuario, :idRespuesta, :primero)";
|
||||
$consulta = $conexion->prepare($sql);
|
||||
|
||||
$consulta->bindParam(':idPartidaxPregunta', $this->idPartidaxPregunta);
|
||||
$consulta->bindParam(':idUsuario', $this->idUsuario);
|
||||
$consulta->bindParam(':idRespuesta', $this->idRespuesta);
|
||||
$consulta->bindParam(':primero', $this->primero, PDO::PARAM_INT);
|
||||
$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()
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user