Renombrar clases y controladores
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
+64
-64
@@ -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
|
||||||
|
|
||||||
?>
|
?>
|
||||||
Reference in New Issue
Block a user