Subir archivos a "clases"
This commit is contained in:
+142
-22
@@ -1,7 +1,8 @@
|
||||
<?php
|
||||
require_once '../includes/conexionBD.php';
|
||||
|
||||
class Partida{
|
||||
class Partida
|
||||
{
|
||||
|
||||
public $idPartida;
|
||||
public $nombrePartida;
|
||||
@@ -17,7 +18,8 @@ class Partida{
|
||||
$this->idUsuario = $idUsuario;
|
||||
}
|
||||
|
||||
public function insertar(){
|
||||
public function insertar()
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -44,7 +46,8 @@ class Partida{
|
||||
}
|
||||
}
|
||||
|
||||
public function listar(){
|
||||
public function listar()
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -61,7 +64,8 @@ class Partida{
|
||||
}
|
||||
}
|
||||
|
||||
public function buscar(){
|
||||
public function buscar()
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -83,7 +87,8 @@ class Partida{
|
||||
}
|
||||
}
|
||||
|
||||
public function editar(){
|
||||
public function editar()
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -112,7 +117,8 @@ class Partida{
|
||||
}
|
||||
}
|
||||
|
||||
public function eliminar(){
|
||||
public function eliminar()
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -140,7 +146,8 @@ class Partida{
|
||||
* Devuelve las preguntas asignadas a la partida, junto con el
|
||||
* idPartidaxPregunta (necesario para guardar respuestas después).
|
||||
*/
|
||||
public function getPreguntas(){
|
||||
public function getPreguntas()
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -170,7 +177,8 @@ class Partida{
|
||||
/**
|
||||
* Asocia una pregunta ya existente a esta partida.
|
||||
*/
|
||||
public function asignarPregunta($idPregunta){
|
||||
public function asignarPregunta($idPregunta)
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -196,11 +204,9 @@ class Partida{
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Cuenta cuántas preguntas tiene la partida en total. Es la primera mitad de la comprobación "¿ha terminado el usuario de jugar?".
|
||||
public function contarPreguntasAsignadas(){
|
||||
public function contarPreguntasAsignadas()
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -223,7 +229,8 @@ class Partida{
|
||||
}
|
||||
}
|
||||
|
||||
public function contarRespuestasUsuario($idUsuario){
|
||||
public function contarRespuestasUsuario($idUsuario)
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -254,7 +261,8 @@ class Partida{
|
||||
* Sustituye al antiguo campo `terminada`: compara cuántas preguntas
|
||||
* tiene la partida contra cuántas ha respondido este usuario.
|
||||
*/
|
||||
public function estaFinalizadaParaUsuario($idUsuario){
|
||||
public function estaFinalizadaParaUsuario($idUsuario)
|
||||
{
|
||||
$totalPreguntas = $this->contarPreguntasAsignadas();
|
||||
if (is_array($totalPreguntas)) {
|
||||
return $totalPreguntas;
|
||||
@@ -269,7 +277,8 @@ class Partida{
|
||||
/**
|
||||
* Partidas creadas por un usuario, de más reciente a más antigua.
|
||||
*/
|
||||
public function listarDelUsuario(){
|
||||
public function listarDelUsuario()
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
@@ -292,11 +301,8 @@ class Partida{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function preguntaAsignada($idPregunta){
|
||||
public function preguntaAsignada($idPregunta)
|
||||
{
|
||||
$conexion = conexionBD();
|
||||
|
||||
if (is_array($conexion)) {
|
||||
@@ -318,7 +324,6 @@ class Partida{
|
||||
$fila = $consulta->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
return (int)$fila["total"] > 0;
|
||||
|
||||
} catch (PDOException $error) {
|
||||
|
||||
return [
|
||||
@@ -327,6 +332,121 @@ class Partida{
|
||||
];
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Vincula un equipo a esta partida en la tabla intermedia 'equipoxpartida'.
|
||||
* Permite registrar qué grupos están participando en este torneo.
|
||||
*/
|
||||
public function registrarEquipoEnPartida($idEquipo) {
|
||||
$conexion = conexionBD(); // Obtenemos la conexión modular del proyecto
|
||||
|
||||
if (is_array($conexion)) {
|
||||
return $conexion; // Si hay error en la conexión, lo devuelve
|
||||
}
|
||||
|
||||
try {
|
||||
// Preparamos la consulta para insertar la relación en la tabla intermedia real
|
||||
$consulta = $conexion->prepare("
|
||||
INSERT INTO equipoxpartida
|
||||
(idPartida, idEquipo)
|
||||
VALUES
|
||||
(:idPartida, :idEquipo)
|
||||
");
|
||||
|
||||
// Vinculamos los parámetros con el objeto de la partida actual y el equipo recibido
|
||||
$consulta->bindParam(":idPartida", $this->idPartida);
|
||||
$consulta->bindParam(":idEquipo", $idEquipo);
|
||||
$consulta->execute();
|
||||
|
||||
return [
|
||||
"exito" => "El equipo se vinculó a la partida correctamente.",
|
||||
"exito_tecnico" => $conexion->lastInsertId()
|
||||
];
|
||||
} catch (PDOException $error) {
|
||||
// Capturamos el error extrayendo solo el mensaje de texto limpio
|
||||
return [
|
||||
"error" => "Ocurrió un error al asignar el equipo a la partida.",
|
||||
"error_tecnico" => $error->getMessage()
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiene todos los equipos que están compitiendo en esta partida.
|
||||
* Es útil para mostrar la lista de rivales antes de empezar a responder.
|
||||
*/
|
||||
public function getEquiposParticipantes() {
|
||||
$conexion = conexionBD();
|
||||
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
}
|
||||
|
||||
try {
|
||||
// Hacemos un INNER JOIN para traer los nombres de los equipos desde la tabla intermedia
|
||||
$consulta = $conexion->prepare("
|
||||
SELECT
|
||||
exp.idEquipoxPartida,
|
||||
e.idEquipo,
|
||||
e.nombreEquipo
|
||||
FROM equipoxpartida exp
|
||||
INNER JOIN equipo e
|
||||
ON exp.idEquipo = e.idEquipo
|
||||
WHERE exp.idPartida = :idPartida
|
||||
ORDER BY e.nombreEquipo ASC
|
||||
");
|
||||
|
||||
$consulta->bindParam(":idPartida", $this->idPartida);
|
||||
$consulta->execute();
|
||||
|
||||
return $consulta->fetchAll(PDO::FETCH_ASSOC); // Devuelve el array con los equipos rivales
|
||||
} catch (PDOException $error) {
|
||||
return [
|
||||
"error" => "Ocurrió un error al recuperar los equipos de la partida.",
|
||||
"error_tecnico" => $error->getMessage()
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtiene todos los jugadores reales (Usuarios) que están jugando en esta partida.
|
||||
* Utiliza la tabla 'equipoxusuario' en SQL para cruzar los datos.
|
||||
*/
|
||||
public function getJugadoresDeLaPartida() {
|
||||
$conexion = conexionBD();
|
||||
|
||||
if (is_array($conexion)) {
|
||||
return $conexion;
|
||||
}
|
||||
|
||||
try {
|
||||
// Cruza la partida con los equipos, y luego los equipos con los usuarios
|
||||
// para saber los nombres de todas las personas que están jugando el torneo.
|
||||
$consulta = $conexion->prepare("
|
||||
SELECT DISTINCT
|
||||
u.idUsuario,
|
||||
u.nombreUsuario,
|
||||
u.email,
|
||||
e.nombreEquipo
|
||||
FROM equipoxpartida exp
|
||||
INNER JOIN equipoxusuario exu
|
||||
ON exp.idEquipo = exu.idEquipo
|
||||
INNER JOIN usuario u
|
||||
ON exu.idUsuario = u.idUsuario
|
||||
INNER JOIN equipo e
|
||||
ON exu.idEquipo = e.idEquipo
|
||||
WHERE exp.idPartida = :idPartida
|
||||
");
|
||||
|
||||
$consulta->bindParam(":idPartida", $this->idPartida);
|
||||
$consulta->execute();
|
||||
|
||||
return $consulta->fetchAll(PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $error) {
|
||||
return [
|
||||
"error" => "Ocurrió un error al obtener la lista de jugadores.",
|
||||
"error_tecnico" => $error->getMessage()
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user