71 lines
2.2 KiB
PHP
71 lines
2.2 KiB
PHP
<?php
|
|
// resultados.php (Actúa como el Controlador Frontal de esta pantalla)
|
|
session_start();
|
|
require_once __DIR__ . '/includes/conexionBD.php';
|
|
require_once __DIR__ . '/modelos/PartidaModelo.php';
|
|
|
|
$idPartida = intval($_GET['idPartida'] ?? 0);
|
|
if ($idPartida <= 0) {
|
|
die("Partida no válida.");
|
|
}
|
|
|
|
$conexion = conexionBD();
|
|
if (is_array($conexion)) {
|
|
die("Error de conexión a la base de datos.");
|
|
}
|
|
|
|
// Instanciamos el modelo
|
|
$modelo = new PartidaModelo($conexion);
|
|
|
|
// Obtenemos datos crudos del modelo
|
|
$listaJugadoresRaw = $modelo->obtenerJugadoresPartida($idPartida);
|
|
$primerosEnAcertar = $_SESSION['primeros_en_acertar'][$idPartida] ?? [];
|
|
|
|
$jugadoresFinales = [];
|
|
$equiposFinales = [];
|
|
|
|
// Procesamiento de la lógica de negocio (puntos y velocidad)
|
|
foreach ($listaJugadoresRaw as $jugador) {
|
|
$idU = (int)$jugador['idUsuario'];
|
|
$idE = (int)$jugador['idEquipo'];
|
|
|
|
$respuestasUsuario = $modelo->obtenerRespuestasUsuario($idPartida, $idU);
|
|
|
|
$aciertos = 0;
|
|
$puntosTotalesJugador = 0;
|
|
|
|
foreach ($respuestasUsuario as $resp) {
|
|
if ((int)$resp['correcta'] === 1) {
|
|
$aciertos++;
|
|
$idPxp = $resp['idPartidaxPregunta'];
|
|
|
|
// Regula si es el más rápido (+2) o normal (+1)
|
|
if (isset($primerosEnAcertar[$idPxp]) && $primerosEnAcertar[$idPxp] === $idU) {
|
|
$puntosTotalesJugador += 2;
|
|
} else {
|
|
$puntosTotalesJugador += 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
$jugadoresFinales[] = [
|
|
'nombre' => $jugador['nombreUsuario'],
|
|
'equipo' => $jugador['nombreEquipo'],
|
|
'aciertos' => $aciertos,
|
|
'puntos' => $puntosTotalesJugador
|
|
];
|
|
|
|
if (!isset($equiposFinales[$idE])) {
|
|
$equiposFinales[$idE] = [
|
|
'nombre' => $jugador['nombreEquipo'],
|
|
'puntos' => 0
|
|
];
|
|
}
|
|
$equiposFinales[$idE]['puntos'] += $puntosTotalesJugador;
|
|
}
|
|
|
|
// Ordenaciones de rankings
|
|
usort($jugadoresFinales, function($a, $b) { return $b['puntos'] <=> $a['puntos']; });
|
|
usort($equiposFinales, function($a, $b) { return $b['puntos'] <=> $a['puntos']; });
|
|
|
|
require_once __DIR__ . '/vistas/vistaResultados.php'; |