<?php
session_start();

// 1. VERIFICACIÓN DE SESIÓN Y OBTENCIÓN DE ROL (Lógica unificada)
// -----------------------------------------------------------------
if (!isset($_SESSION['Inicio']) || $_SESSION['Inicio'] !== "Ok" || !isset($_SESSION['Rol'])) {
    // Si la sesión no es válida, redirige al login con un mensaje de error.
    header('Location: ../Login.php?m=5'); // m=5: "Debe iniciar sesión"
    exit;
}

// 2. DETERMINAR LA URL DEL MENÚ Y PERMISOS DE MODIFICACIÓN
// -----------------------------------------------------------------
$urlMenuCorrespondiente = "";
$puedeModificar = false; // Por defecto, nadie puede modificar.

switch ($_SESSION['Rol']) {
    case "Administrativo":
        $urlMenuCorrespondiente = "../MenuAdministrativo.php";
        $puedeModificar = true; // Solo el Admin puede modificar.
        break;
    case "Titular":
        $urlMenuCorrespondiente = "../MenuTitular.php";
        // El Titular no puede modificar, será redirigido si intenta.
        break;
    case "Pasante":
        $urlMenuCorrespondiente = "../MenuPasante.php";
        // El Pasante no puede modificar, será redirigido si intenta.
        break;
    default:
        // Si el rol no es válido, redirige al login con un error.
        header('Location: ../Login.php?m=6'); // m=6: "Rol no reconocido"
        exit;
}

// 3. BLOQUEO SI NO TIENE PERMISOS PARA MODIFICAR
// -----------------------------------------------------------------
// Este script es exclusivamente para procesar un UPDATE. Si el usuario no tiene permiso,
// no tiene sentido que esté aquí. Lo redirigimos a su menú con un mensaje de "Acceso denegado".
if (!$puedeModificar) {
    header('Location: ' . htmlspecialchars($urlMenuCorrespondiente) . '?n=access_denied_mod_pls5');
    exit;
}

// 4. PROCESAMIENTO DEL FORMULARIO Y ACTUALIZACIÓN EN LA BD
// -----------------------------------------------------------------
// Esta es tu lógica original, ahora protegida por el sistema de roles.

// Habilitar reporte de errores para depuración (puedes quitarlo en producción)
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Obtener el ID del registro a modificar
if (isset($_POST['id']) && !empty($_POST['id'])) {
    $id = $_POST['id'];
} else {
    // Si no viene por POST, lo redirigimos con un error.
    // No deberíamos depender de la sesión para el ID en un script de procesamiento.
    header('Location: ' . htmlspecialchars($urlMenuCorrespondiente) . '?n=id_not_provided');
    exit;
}

// Recolección de todos los datos del formulario POST
$fecha_evaluacion = isset($_POST['fecha_evaluacion']) ? $_POST['fecha_evaluacion'] : null;
$edad = isset($_POST['edad']) ? $_POST['edad'] : null;
$edad_corregida= isset($_POST['edad_corregida']) ? $_POST['edad_corregida'] : null;
$rango_edad = isset($_POST['rango_edad']) ? $_POST['rango_edad'] : null;

$comp_audi_punt_bruta = isset($_POST['comp_audi_punt_bruta']) ? $_POST['comp_audi_punt_bruta'] : null;
$compren_audit_punt_stand = isset($_POST['compren_audit_punt_stand']) ? $_POST['compren_audit_punt_stand'] : null;
$compre_audit_rango_percent = isset($_POST['compre_audit_rango_percent']) ? $_POST['compre_audit_rango_percent'] : null;

$comp_audit_interpre = isset($_POST['comp_audit_interpre']) ? $_POST['comp_audit_interpre'] : null;

$expre_comuni_puntua_bruta = isset($_POST['expre_comuni_puntua_bruta']) ? $_POST['expre_comuni_puntua_bruta'] : null;
$expr_comun_punt_estandar = isset($_POST['expr_comun_punt_estandar']) ? $_POST['expr_comun_punt_estandar'] : null;
$expr_comunic_rango_percent = isset($_POST['expr_comunic_rango_percent']) ? $_POST['expr_comunic_rango_percent'] : null;

$expr_comunic_interpret = isset($_POST['expr_comunic_interpret']) ? $_POST['expr_comunic_interpret'] : null;

$leng_tota_punt_bruta = isset($_POST['leng_tota_punt_bruta']) ? $_POST['leng_tota_punt_bruta'] : null;
$leng_tota_punt_standa_sum = isset($_POST['leng_tota_punt_standa_sum']) ? $_POST['leng_tota_punt_standa_sum'] : null;
$leng_tota_punt_standa = isset($_POST['leng_tota_punt_standa']) ? $_POST['leng_tota_punt_standa'] : null;
$leng_tota_rang_percent = isset($_POST['leng_tota_rang_percent']) ? $_POST['leng_tota_rang_percent'] : null;
$lengua_tot_interpret = isset($_POST['lengua_tot_interpret']) ? $_POST['lengua_tot_interpret'] : null;
$dato_clini_refer_tera = isset($_POST['dato_clini_refer_tera']) ? $_POST['dato_clini_refer_tera'] : null;
$datos_clini_observ_clini = isset($_POST['datos_clini_observ_clini']) ? $_POST['datos_clini_observ_clini'] : null;
$dat_clini_otra_observa = isset($_POST['dat_clini_otra_observa']) ? $_POST['dat_clini_otra_observa'] : null;



include("../Php/Conexion.php");
$Con = Conectar();

if (!$Con) {
    // Si no hay conexión, redirigir con un mensaje de error de base de datos.
    header('Location: ' . htmlspecialchars($urlMenuCorrespondiente) . '?n=db_connection_failed');
    exit;
}

// Consulta SQL para actualizar la tabla 'pls5'
$SQL = "UPDATE pls5 SET
        fecha_evaluacion = ?, edad = ?,edad_corregida = ?, rango_edad= ?, comp_audi_punt_bruta = ?, compren_audit_punt_stand = ?,
        compre_audit_rango_percent = ?, comp_audit_interpre = ?, expre_comuni_puntua_bruta = ?,
        expr_comun_punt_estandar = ?, expr_comunic_rango_percent = ?, expr_comunic_interpret = ?,
        leng_tota_punt_bruta = ?, leng_tota_punt_standa_sum = ? , leng_tota_punt_standa = ?, leng_tota_rang_percent = ?,
        lengua_tot_interpret = ?, dato_clini_refer_tera = ?, datos_clini_observ_clini = ?,
        dat_clini_otra_observa = ?
        WHERE id = ?"; 

$stmt = mysqli_prepare($Con, $SQL);

if ($stmt) {
    // Tipos de datos: 2 strings, 3 ints, 1 string, 3 ints, 1 string, 3 ints, 1 string, 3 strings, 1 int (ID)
    // s s i i i s i i i s i i i s s s s i s
    mysqli_stmt_bind_param($stmt, "ssssiiisiiisiiiissssi",
        $fecha_evaluacion, 
        $edad, 
        $edad_corregida, 
        $rango_edad,
        $comp_audi_punt_bruta, 
        $compren_audit_punt_stand, 
        $compre_audit_rango_percent, 
        $comp_audit_interpre,
        $expre_comuni_puntua_bruta, 
        $expr_comun_punt_estandar, 
        $expr_comunic_rango_percent, 
        $expr_comunic_interpret,
        $leng_tota_punt_bruta, 
        $leng_tota_punt_standa_sum, 
        $leng_tota_punt_standa, 
        $leng_tota_rang_percent, 
        $lengua_tot_interpret,
        $dato_clini_refer_tera, 
        $datos_clini_observ_clini, 
        $dat_clini_otra_observa,
        $id
    );

    if (mysqli_stmt_execute($stmt)) {
        $RegistrosAfectados = mysqli_stmt_affected_rows($stmt);
        mysqli_stmt_close($stmt);
        Cerrar($Con);

        if ($RegistrosAfectados > 0) {
            // Éxito REAL: los datos cambiaron
            header("Location: " . htmlspecialchars($urlMenuCorrespondiente) . "?m=update_success");
        } else {
            // No hubo error, pero no se modificó nada (datos idénticos o ID no encontrado)
            header("Location: " . htmlspecialchars($urlMenuCorrespondiente) . "?n=update_no_changes");
        }
    } else {
        // Error al ejecutar la consulta
        error_log("USPLS.php - Error al ejecutar UPDATE: " . mysqli_stmt_error($stmt));
        mysqli_stmt_close($stmt);
        Cerrar($Con);
        header("Location: " . htmlspecialchars($urlMenuCorrespondiente) . "?n=update_execution_failed");
    }
} else {
    // Error al preparar la consulta
    error_log("USPLS.php - Error al preparar UPDATE: " . mysqli_error($Con));
    Cerrar($Con);
    header("Location: " . htmlspecialchars($urlMenuCorrespondiente) . "?n=update_prepare_failed");
}
exit;
?>