diff --git a/clases/claseJuego.php b/clases/claseJuego.php index c071528..84ef124 100644 --- a/clases/claseJuego.php +++ b/clases/claseJuego.php @@ -229,7 +229,13 @@ class Juego * - la respuesta pertenece a esa pregunta * - el usuario no ha respondido ya esa pregunta */ - public static function registrarRespuesta($idPartida, $idUsuario, $idPartidaxPregunta, $idRespuesta) + public static function registrarRespuesta( + $idPartida, + $idUsuario, + $idPartidaxPregunta, + $idRespuesta, + $tiempoRespuesta +) { $conexion = conexionBD(); if (is_array($conexion)) { @@ -298,7 +304,8 @@ class Juego null, $idPartidaxPregunta, $idUsuario, - $idRespuesta + $idRespuesta, + $tiempoRespuesta ); $guardado = $almacenada->guardarRespuesta(); diff --git a/clases/claseRespuesta.php b/clases/claseRespuesta.php index b03edbc..dd0149e 100644 --- a/clases/claseRespuesta.php +++ b/clases/claseRespuesta.php @@ -24,6 +24,8 @@ class Respuesta{ $consulta->bindParam(':idPregunta', $this->idPregunta); $consulta->bindParam(':nombreRespuesta', $this->nombreRespuesta); $consulta->bindParam(':correcta', $this->correcta); + + $consulta->execute(); $respuesta = [ 'exito' => 'La respuesta se guardó correctamente.', diff --git a/clases/claseRespuestaAlmacenada.php b/clases/claseRespuestaAlmacenada.php index 52c214a..90e7b56 100644 --- a/clases/claseRespuestaAlmacenada.php +++ b/clases/claseRespuestaAlmacenada.php @@ -7,43 +7,53 @@ class RespuestaAlmacenada { public $idPartidaxPregunta; public $idUsuario; public $idRespuesta; + public $tiempoRespuesta; - public function __construct($idRespuestaAlmacenada = null, $idPartidaxPregunta = null, $idUsuario = null, $idRespuesta = null) { + public function __construct($idRespuestaAlmacenada = null, $idPartidaxPregunta = null, $idUsuario = null, $idRespuesta = null, $tiempoRespuesta = null) { $this->idRespuestaAlmacenada = $idRespuestaAlmacenada; $this->idPartidaxPregunta = $idPartidaxPregunta; $this->idUsuario = $idUsuario; $this->idRespuesta = $idRespuesta; + $this->tiempoRespuesta = $tiempoRespuesta; } /** * 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; + $conexion = conexionBD(); - 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() - ]; - } + if (is_array($conexion)) { + return $conexion; } + try { + $sql = "INSERT INTO respuestaalmacenada + (idPartidaxPregunta, idUsuario, idRespuesta, tiempoRespuesta) + VALUES + (:idPartidaxPregunta, :idUsuario, :idRespuesta, :tiempoRespuesta)"; + + $consulta = $conexion->prepare($sql); + + $consulta->bindParam(':idPartidaxPregunta', $this->idPartidaxPregunta); + $consulta->bindParam(':idUsuario', $this->idUsuario); + $consulta->bindParam(':idRespuesta', $this->idRespuesta); + $consulta->bindParam(':tiempoRespuesta', $this->tiempoRespuesta); + + $consulta->execute(); + + return [ + 'exito' => 'Respuesta almacenada correctamente.' + ]; + + } catch (PDOException $error) { + return [ + 'error' => 'Ocurrió un error al guardar la respuesta.', + '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. diff --git a/controladores/controladorJuego.php b/controladores/controladorJuego.php index 085f9b5..62d80e3 100644 --- a/controladores/controladorJuego.php +++ b/controladores/controladorJuego.php @@ -74,34 +74,47 @@ switch ($orden) { case 'responder': - if (!isset($_POST['idPartidaxPregunta']) || !isset($_POST['idRespuesta'])){ - echo json_encode([ - 'error' => 'Faltan datos para registrar la respuesta.' - ]); + if ( + !isset($_POST['idPartidaxPregunta']) || + !isset($_POST['idRespuesta']) || + !isset($_POST['tiempoRespuesta']) + ) { + echo json_encode([ + 'error' => 'Faltan datos para registrar la respuesta.' + ]); break; - } + } - $idPartidaxPregunta = intval($_POST['idPartidaxPregunta']); + $idPartidaxPregunta = intval($_POST['idPartidaxPregunta']); + $idRespuesta = intval($_POST['idRespuesta']); + $tiempoRespuesta = intval($_POST['tiempoRespuesta']); - $idRespuesta = intval($_POST['idRespuesta']); - - if ($idPartidaxPregunta <= 0 || $idRespuesta <= 0){ - - echo json_encode([ - 'error' => 'Los datos de la respuesta no son válidos.' - ]); + if ( + $idPartidaxPregunta <= 0 || + $idRespuesta <= 0 || + $tiempoRespuesta < 0 + ) { + echo json_encode([ + 'error' => 'Los datos de la respuesta no son válidos.' + ]); break; - } + } - // Registramos la respuesta del usuario + // Registramos la respuesta del usuario junto con su tiempo de respuesta - $resultado = Juego::registrarRespuesta($idPartida, $idUsuario, $idPartidaxPregunta, $idRespuesta); + $resultado = Juego::registrarRespuesta( + $idPartida, + $idUsuario, + $idPartidaxPregunta, + $idRespuesta, + $tiempoRespuesta + ); - echo json_encode($resultado); + echo json_encode($resultado); - break; +break; // Finalizar la partida y registrar los aciertos del usuario