diff --git a/controladores/ControladorPartida.php b/controladores/ControladorPartida.php new file mode 100644 index 0000000..b565006 --- /dev/null +++ b/controladores/ControladorPartida.php @@ -0,0 +1,987 @@ + +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; +} + +?> + diff --git a/controladores/ControladorPregunta.php b/controladores/ControladorPregunta.php new file mode 100644 index 0000000..d5c8395 --- /dev/null +++ b/controladores/ControladorPregunta.php @@ -0,0 +1,53 @@ + '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; + +} diff --git a/controladores/ControladorRespuesta.php b/controladores/ControladorRespuesta.php new file mode 100644 index 0000000..9d0b98d --- /dev/null +++ b/controladores/ControladorRespuesta.php @@ -0,0 +1,71 @@ + '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; + +} diff --git a/controladores/ControladorRespuestaAlmacenada.php b/controladores/ControladorRespuestaAlmacenada.php new file mode 100644 index 0000000..ca7a977 --- /dev/null +++ b/controladores/ControladorRespuestaAlmacenada.php @@ -0,0 +1,65 @@ +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 + +?> \ No newline at end of file