Controladores restantes

This commit is contained in:
2026-09-25 10:27:36 +02:00
parent 6b7e54f1ee
commit 9657374edd
4 changed files with 1176 additions and 0 deletions
+987
View File
@@ -0,0 +1,987 @@
<?php
session_start();
require_once '../clases/ClasePartida.php';
switch ($_POST['orden']) {
case 'listar':
$partida = new Partida();
$listadoPartidas = $partida->listar();
echo json_encode($listadoPartidas);
break;
case 'buscar':
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida = intval($_POST['idPartida']);
$resultado = $partida->buscar();
echo json_encode($resultado);
break;
case 'crear':
//Comprobamos que haya un usuario conectado
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión para crear una partida.'
]);
break;
}
//Comprobamos que se haya introducido un nombre
if (
!isset($_POST['nombrePartida']) ||
trim($_POST['nombrePartida']) === ''
) {
echo json_encode([
'error' => 'El nombre de la partida es obligatorio.'
]);
break;
}
//Creamos la partida
$partida = new Partida();
$partida->nombrePartida = trim($_POST['nombrePartida']);
//El usuario conectado será el propietario de la partida.
$partida->idUsuario = $_SESSION['idUsuario'];
$resultado = $partida->insertar();
echo json_encode($resultado);
break;
case 'editar':
/*
|--------------------------------------------------------------
| Usuario conectado
|--------------------------------------------------------------
*/
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión.'
]);
break;
}
//Comprobamos los datos
if (
!isset($_POST['idPartida']) ||
!isset($_POST['nombrePartida'])
) {
echo json_encode([
'error' => 'Faltan datos para editar la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida = intval($_POST['idPartida']);
$partida->nombrePartida = trim($_POST['nombrePartida']);
//Buscamos la partida
$datosPartida = $partida->buscar();
if (!$datosPartida || isset($datosPartida['error'])) {
echo json_encode([
'error' => 'La partida indicada no existe.'
]);
break;
}
//Comprobamos que el usuario sea el propietario
if (
$datosPartida['idUsuario'] !=
$_SESSION['idUsuario']
) {
echo json_encode([
'error' => 'No tienes permiso para editar esta partida.'
]);
break;
}
$partida->idUsuario = $datosPartida['idUsuario'];
$resultado = $partida->editar();
echo json_encode($resultado);
break;
case 'eliminar':
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión.'
]);
break;
}
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida = intval($_POST['idPartida']);
//Buscamos la partida
$datosPartida = $partida->buscar();
if (!$datosPartida || isset($datosPartida['error'])) {
echo json_encode([
'error' => 'La partida no existe.'
]);
break;
}
//Solo el propietario puede eliminarla
if (
$datosPartida['idUsuario'] !=
$_SESSION['idUsuario']
) {
echo json_encode([
'error' => 'No tienes permiso para eliminar esta partida.'
]);
break;
}
$resultado = $partida->eliminar();
echo json_encode($resultado);
break;
case 'listarDelUsuario':
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión.'
]);
break;
}
$partida = new Partida();
$partida->idUsuario = $_SESSION['idUsuario'];
$resultado = $partida->listarDelUsuario();
echo json_encode($resultado);
break;
case 'getPreguntas':
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida = intval($_POST['idPartida']);
$resultado = $partida->getPreguntas();
echo json_encode($resultado);
break;
// ASIGNAR UNA PREGUNTA A UNA PARTIDA
case 'asignarPregunta':
if (
!isset($_POST['idPartida']) ||
!isset($_POST['idPregunta'])
) {
echo json_encode([
'error' => 'Faltan datos.'
]);
break;
}
$partida = new Partida();
$partida->idPartida = intval($_POST['idPartida']);
$idPregunta = intval($_POST['idPregunta']);
//Comprobamos que no esté ya asignada
if ($partida->preguntaAsignada($idPregunta)) {
echo json_encode([
'error' =>
'La pregunta ya está asignada a esta partida.'
]);
break;
}
$resultado =
$partida->asignarPregunta($idPregunta);
echo json_encode($resultado);
break;
// COMPROBAR SI UNA PREGUNTA ESTÁ ASIGNADA
case 'preguntaAsignada':
if (
!isset($_POST['idPartida']) ||
!isset($_POST['idPregunta'])
) {
echo json_encode([
'error' => 'Faltan datos.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
$resultado =
$partida->preguntaAsignada(
intval($_POST['idPregunta'])
);
echo json_encode([
'asignada' => $resultado
]);
break;
// CONTAR PREGUNTAS DE UNA PARTIDA
case 'contarPreguntas':
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
$resultado =
$partida->contarPreguntasAsignadas();
echo json_encode([
'totalPreguntas' => $resultado
]);
break;
// REGISTRAR EQUIPO EN UNA PARTIDA
case 'registrarEquipo':
if (
!isset($_POST['idPartida']) ||
!isset($_POST['idEquipo'])
) {
echo json_encode([
'error' => 'Faltan datos.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
$resultado =
$partida->registrarEquipoEnPartida(
intval($_POST['idEquipo'])
);
echo json_encode($resultado);
break;
// OBTENER EQUIPOS DE UNA PARTIDA
case 'getEquipos':
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
$resultado =
$partida->getEquiposParticipantes();
echo json_encode($resultado);
break;
// OBTENER JUGADORES DE UNA PARTIDA
case 'getJugadores':
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
$resultado =
$partida->getJugadoresDeLaPartida();
echo json_encode($resultado);
break;
case 'iniciar':
/*
|--------------------------------------------------------------
| Debe haber un usuario conectado
|--------------------------------------------------------------
*/
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión.'
]);
break;
}
//Comprobamos que se haya indicado la partida
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
//Buscamos la partida
$datosPartida = $partida->buscar();
if (!$datosPartida || isset($datosPartida['error'])) {
echo json_encode([
'error' => 'La partida no existe.'
]);
break;
}
//Solo el creador puede iniciar la partida
if (
$datosPartida['idUsuario'] !=
$_SESSION['idUsuario']
) {
echo json_encode([
'error' =>
'Solo el creador de la partida puede iniciarla.'
]);
break;
}
//Comprobamos que haya preguntas
$numeroPreguntas =
$partida->contarPreguntasAsignadas();
if ($numeroPreguntas <= 0) {
echo json_encode([
'error' =>
'No puedes iniciar una partida sin preguntas.'
]);
break;
}
/*
Iniciamos la partida
Este método deberá cambiar el estado de la partida
de "esperando" a "jugando".
*/
$resultado = $partida->iniciar();
echo json_encode($resultado);
break;
// OBTENER LA PREGUNTA ACTUAL
case 'getPreguntaActual':
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
//Obtenemos la pregunta actual
$resultado =
$partida->getPreguntaActual();
echo json_encode($resultado);
break;
case 'siguientePregunta':
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión.'
]);
break;
}
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
//Comprobamos que el usuario sea el creador
$datosPartida = $partida->buscar();
if (!$datosPartida || isset($datosPartida['error'])) {
echo json_encode([
'error' => 'La partida no existe.'
]);
break;
}
if (
$datosPartida['idUsuario'] !=
$_SESSION['idUsuario']
) {
echo json_encode([
'error' =>
'Solo el creador puede pasar a la siguiente pregunta.'
]);
break;
}
//Pasamos a la siguiente pregunta
$resultado =
$partida->siguientePregunta();
echo json_encode($resultado);
break;
// REGISTRAR RESPUESTA
case 'responder':
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión.'
]);
break;
}
if (
!isset($_POST['idPartida']) ||
!isset($_POST['idPregunta']) ||
!isset($_POST['idRespuesta'])
) {
echo json_encode([
'error' => 'Faltan datos para registrar la respuesta.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
$idPregunta =
intval($_POST['idPregunta']);
$idRespuesta =
intval($_POST['idRespuesta']);
//Registramos la respuesta del usuario
$resultado =
$partida->registrarRespuesta(
$_SESSION['idUsuario'],
$idPregunta,
$idRespuesta
);
echo json_encode($resultado);
break;
// COMPROBAR SI LA PARTIDA HA TERMINADO PARA EL USUARIO
case 'estaFinalizada':
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión.'
]);
break;
}
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
$resultado =
$partida->estaFinalizadaParaUsuario(
$_SESSION['idUsuario']
);
echo json_encode([
'finalizada' => $resultado
]);
break;
// CONTAR RESPUESTAS DEL USUARIO
case 'contarRespuestas':
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión.'
]);
break;
}
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
$resultado =
$partida->contarRespuestasUsuario(
$_SESSION['idUsuario']
);
echo json_encode([
'totalRespondidas' => $resultado
]);
break;
case 'finalizar':
if (!isset($_SESSION['idUsuario'])) {
echo json_encode([
'error' => 'Debes iniciar sesión.'
]);
break;
}
if (!isset($_POST['idPartida'])) {
echo json_encode([
'error' => 'No se ha indicado la partida.'
]);
break;
}
$partida = new Partida();
$partida->idPartida =
intval($_POST['idPartida']);
//Buscamos la partida
$datosPartida = $partida->buscar();
if (!$datosPartida || isset($datosPartida['error'])) {
echo json_encode([
'error' => 'La partida no existe.'
]);
break;
}
//Solo el creador puede finalizarla
if (
$datosPartida['idUsuario'] !=
$_SESSION['idUsuario']
) {
echo json_encode([
'error' =>
'Solo el creador puede finalizar la partida.'
]);
break;
}
$resultado =
$partida->finalizar();
echo json_encode($resultado);
break;
default:
echo json_encode([
'error' => 'La orden indicada no existe.'
]);
break;
}
?>
+53
View File
@@ -0,0 +1,53 @@
<?php
session_start();
require_once '../clases/ClasePregunta.php';
switch ($_POST['orden']) {
case 'crearPregunta':
$idCategoria = intval($_POST['idCategoria'] ?? 0);
$nombrePregunta = trim($_POST['nombrePregunta'] ?? '');
if ($idCategoria <= 0 || $nombrePregunta == '') {
echo json_encode(['error' => 'La categoría y el texto de la pregunta son obligatorios']);
break;
}
$pregunta = new Pregunta($idCategoria, $nombrePregunta);
$resultado = $pregunta->guardar();
echo json_encode($resultado);
break;
case 'obtenerPreguntasPorCategoria':
$idCategoria = intval($_POST['idCategoria'] ?? 0);
$limite = intval($_POST['limite'] ?? 10);
$preguntas = Pregunta::obtenerPorCategoria($idCategoria, $limite);
// Si ha devuelto un array de errores (formato ['error'=>...]) lo mandamos tal cual
if (isset($preguntas['error'])) {
echo json_encode($preguntas);
break;
}
// Convertimos cada objeto Pregunta en un array simple para poder mandarlo en JSON
$listado = [];
foreach ($preguntas as $p) {
$listado[] = [
'idPregunta' => $p->getIdPregunta(),
'idCategoria' => $p->getIdCategoria(),
'nombrePregunta' => $p->getNombrePregunta(),
'respuestas' => $p->getRespuestas()
];
}
echo json_encode($listado);
break;
}
+71
View File
@@ -0,0 +1,71 @@
<?php
session_start();
require_once '../clases/ClaseRespuesta.php';
switch ($_POST['orden']) {
case 'crearRespuesta':
$idPregunta = intval($_POST['idPregunta'] ?? 0);
$nombreRespuesta = trim($_POST['nombreRespuesta'] ?? '');
$correcta = intval($_POST['correcta'] ?? 0);
if ($idPregunta <= 0 || $nombreRespuesta == '') {
echo json_encode(['error' => 'La pregunta y el texto de la respuesta son obligatorios']);
break;
}
$respuesta = new Respuesta(null, $idPregunta, $nombreRespuesta, $correcta);
$resultado = $respuesta->insertar();
echo json_encode($resultado);
break;
case 'listarRespuestas':
$respuesta = new Respuesta();
$resultado = $respuesta->listar();
echo json_encode($resultado);
break;
case 'listarRespuestasPorPregunta':
$idPregunta = intval($_POST['idPregunta'] ?? 0);
$respuesta = new Respuesta(null, $idPregunta);
$resultado = $respuesta->listarPorPregunta();
echo json_encode($resultado);
break;
case 'editarRespuesta':
$idRespuesta = intval($_POST['idRespuesta'] ?? 0);
$idPregunta = intval($_POST['idPregunta'] ?? 0);
$nombreRespuesta = trim($_POST['nombreRespuesta'] ?? '');
$correcta = intval($_POST['correcta'] ?? 0);
$respuesta = new Respuesta($idRespuesta, $idPregunta, $nombreRespuesta, $correcta);
$resultado = $respuesta->editar();
echo json_encode($resultado);
break;
case 'borrarRespuesta':
$idRespuesta = intval($_POST['idRespuesta'] ?? 0);
$respuesta = new Respuesta($idRespuesta);
$resultado = $respuesta->eliminar();
echo json_encode($resultado);
break;
}
@@ -0,0 +1,65 @@
<?php
session_start();
require_once '../clases/ClaseRespuestaAlmacenada.php';
switch ($_POST['orden']) {
case 'guardarRespuesta':
// Comprobamos que haya una sesión iniciada
if (isset($_SESSION['idUsuario'])) {
$respuestaAlmacenada = new RespuestaAlmacenada();
// Recogemos los datos de la respuesta
$respuestaAlmacenada->idPartidaxPregunta = $_POST['idPartidaxPregunta'];
$respuestaAlmacenada->idUsuario = $_SESSION['idUsuario'];
$respuestaAlmacenada->idRespuesta = $_POST['idRespuesta'];
// Guardamos la respuesta
$respuesta = $respuestaAlmacenada->guardarRespuesta();
} else {
$respuesta = [
'error' => 'No hay ninguna sesión iniciada.'
];
}
echo json_encode($respuesta);
break;
case 'obtenerAciertosUsuarioEnPartida':
// Comprobamos que haya una sesión iniciada
if (isset($_SESSION['idUsuario'])) {
$idPartida = $_POST['idPartida'];
$idUsuario = $_SESSION['idUsuario'];
// Obtenemos los aciertos del usuario en esa partida
$respuesta = RespuestaAlmacenada::obtenerAciertosUsuarioEnPartida(
$idPartida,
$idUsuario
);
} else {
$respuesta = [
'error' => 'No hay ninguna sesión iniciada.'
];
}
echo json_encode($respuesta);
break;
}//fin switch
?>