<?php
session_start();

// 1. Verificación de sesión y rol
if (!isset($_SESSION['Inicio']) || $_SESSION['Inicio'] !== "Ok" || !isset($_SESSION['Rol'])) {
    header("Location: ../login.php?m=5"); // m=5 para "acceso no autorizado"
    exit;
}

// 2. Redirección según el rol
$urlMenuCorrespondiente = "";
switch ($_SESSION['Rol']) {
    case "Administrativo":
        $urlMenuCorrespondiente = "../MenuAdministrativo.php";
        break;
    case "Titular":
        $urlMenuCorrespondiente = "../MenuTitular.php";
        break;
    case "Pasante":
        header("Location: ../login.php?m=4"); 
        exit;
        break;
    default:
        header("Location: ../login.php?m=6"); 
        exit;
}
// Solo Admin y Titular pueden proceder.

// 3. Obtener el ID del registro a modificar
$id = null;
if (isset($_POST['id_CDI_I_a_modificar']) && !empty($_POST['id_CDI_I_a_modificar'])) {
    $id = $_POST['id_CDI_I_a_modificar'];
} elseif (isset($_SESSION['id_CDI_I_actual_modificacion']) && !empty($_SESSION['id_CDI_I_actual_modificacion'])) {
    $id = $_SESSION['id_CDI_I_actual_modificacion'];
}

if (empty($id) || !filter_var($id, FILTER_VALIDATE_INT)) {
    unset($_SESSION['id_CDI_I_actual_modificacion']);
    header("Location: UCDI_I.php?n=CDI_I_invalid_id_update");
    exit;
}

// 4. Obtener los datos del formulario usando $_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;


$invent_bruto_comp_frases = isset($_POST['invent_bruto_comprension_frases']) ? $_POST['invent_bruto_comprension_frases'] : null;
$invent_comp_palabras = isset($_POST['invent_comprension_palabras']) ? $_POST['invent_comprension_palabras'] : null;
$invent_produccion = isset($_POST['invent_produccion']) ? $_POST['invent_produccion'] : null;
$invent_gestos_tempranos = isset($_POST['invent_gestos_tempranos']) ? $_POST['invent_gestos_tempranos'] : null;
$invent_gestos_tardios = isset($_POST['invent_gestos_tardios']) ? $_POST['invent_gestos_tardios'] : null;
$invent_gestos_totales = isset($_POST['invent_gestos_totales']) ? $_POST['invent_gestos_totales'] : null;
$percentil_comp_frases = isset($_POST['invent_percentil_comprension_frases']) ? $_POST['invent_percentil_comprension_frases'] : null;
$percentil_comp_palabras = isset($_POST['invent_percentil_comprension_palabras']) ? $_POST['invent_percentil_comprension_palabras'] : null;
$percentil_produccion = isset($_POST['invent_percentil_produccion']) ? $_POST['invent_percentil_produccion'] : null;
$percentil_gestos_tempranos = isset($_POST['invent_percentil_gestos_tempranos']) ? $_POST['invent_percentil_gestos_tempranos'] : null;
$percentil_gestos_tardios = isset($_POST['invent_percentil_gestos_tardios']) ? $_POST['invent_percentil_gestos_tardios'] : null;
$percentil_gestos_totales = isset($_POST['invent_percentil_gestos_totales']) ? $_POST['invent_percentil_gestos_totales'] : null;
$interpretacion = isset($_POST['arthur1_interpretacion']) ? $_POST['arthur1_interpretacion'] : null;
$seguimiento = isset($_POST['arthur1_seguimiento']) ? $_POST['arthur1_seguimiento'] : null;
$proxeval = isset($_POST['arthur1_proxeval']) ? $_POST['arthur1_proxeval'] : null;
$referir_terapia = isset($_POST['invent_datos_clinicos_referir_aterapia']) ? $_POST ['invent_datos_clinicos_referir_aterapia'] : null; // Se convierte a entero (0 o 1)
//$obs_clinica = isset($_POST['invent_datos_clinicos_observacion_clinica']) ? $_POST['invent_datos_clinicos_observacion_clinica'] : null;
$datos_clinicos_adic = isset($_POST['inventario_datos_clinicos']) ? $_POST['inventario_datos_clinicos'] : null;


// 5. Validación básica de datos (CORREGIDO)
// Se valida que los campos más importantes no estén vacíos.
// Las variables anteriores no existían en este script.
if (empty($fecha_evaluacion) || empty($edad)) {
    unset($_SESSION['id_CDI_I_actual_modificacion']);
    header("Location: UCDI_I.php?id=" . urlencode($id) . "&n=CDI_I_missing_data_update");
    exit;
}

// 6. Conexión a la base de datos
include("../Php/Conexion.php");
$Con = Conectar();

if (!$Con) {
    unset($_SESSION['id_CDI_I_actual_modificacion']);
    header("Location: UCDI_I.php?id=" . urlencode($id) . "&n=CDI_I_db_conn_error_update");
    exit;
}

// 7. Preparación de la consulta SQL (CORREGIDA)
// El orden de las columnas ahora coincide con la estructura de la tabla SQL proporcionada.
$SQL = "UPDATE cdi_i SET 
    fecha_evaluacion = ?, 
    edad = ?, 
    edad_corregida = ?, 
    rango_edad = ?, 

    invent_bruto_comprension_frases = ?, 
    invent_comprension_palabras = ?, 
    invent_produccion = ?, 
    invent_gestos_tempranos = ?, 
    invent_gestos_tardios = ?, 
    invent_gestos_totales = ?, 
    invent_percentil_comprension_frases = ?, 
    invent_percentil_comprension_palabras = ?, 
    invent_percentil_produccion = ?, 
    invent_percentil_gestos_tempranos = ?, 
    invent_percentil_gestos_tardios = ?, 
    invent_percentil_gestos_totales = ?, 
    arthur1_interpretacion = ?, 
    arthur1_seguimiento = ?, 
    arthur1_proxeval = ?, 
    invent_datos_clinicos_referir_aterapia = ?, 
    inventario_datos_clinicos = ?
WHERE id = ?";

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

if ($stmt) {
    // 8. Vinculación de parámetros (CORREGIDA)
    // La cadena de tipos y el orden de las variables coinciden con la consulta SQL corregida.
    // 'ss'      -> fecha_evaluacion, edad
    // 'iiiiii'  -> puntuaciones brutas
    // 'ssssss'  -> percentiles
    // 'sss'     -> interpretacion, seguimiento, proxeval
    // 's'       -> referir_terapia 
    // 'ss'      -> observacion, datos_clinicos
    // 'i'       -> id (WHERE)
    mysqli_stmt_bind_param($stmt, "ssssiiiiiisssssssssssi", 
        $fecha_evaluacion,
        $edad,
        $edad_corregida,
        $rango_edad,
        $invent_bruto_comp_frases,
        $invent_comp_palabras,
        $invent_produccion,
        $invent_gestos_tempranos,
        $invent_gestos_tardios,
        $invent_gestos_totales,
        $percentil_comp_frases,
        $percentil_comp_palabras,
        $percentil_produccion,
        $percentil_gestos_tempranos,
        $percentil_gestos_tardios,
        $percentil_gestos_totales,
        $interpretacion,
        $seguimiento,
        $proxeval,
        $referir_terapia, // Variable correcta para este campo
        $datos_clinicos_adic,
        $id 
    );

    // 9. Ejecución y manejo de resultados
    if (mysqli_stmt_execute($stmt)) {
        $RegistrosAfectados = mysqli_stmt_affected_rows($stmt);
        
        mysqli_stmt_close($stmt);
        Cerrar($Con);
        unset($_SESSION['id_CDI_I_actual_modificacion']); // Limpiar la sesión

        if ($RegistrosAfectados > 0) {
            header("Location: UCDI_I.php?m=CDI_I_update_success");
            exit;
        } elseif ($RegistrosAfectados == 0) {
            header("Location: UCDI_I.php?id=" . urlencode($id) . "&m=CDI_I_no_changes_made");
            exit;
        } else { // Error
            error_log("USCDI_I.php - Error en affected_rows (<0): " . $RegistrosAfectados . " para ID: " . $id);
            header("Location: UCDI_I.php?id=" . urlencode($id) . "&n=CDI_I_update_error_affected");
            exit;
        }
    } else {
        $error_msg_execute = mysqli_stmt_error($stmt);
        error_log("USCDI_I.php - Error al ejecutar execute() para ID $id: " . $error_msg_execute);
        mysqli_stmt_close($stmt);
        Cerrar($Con);
        unset($_SESSION['id_CDI_I_actual_modificacion']);
        header("Location: UCDI_I.php?id=" . urlencode($id) . "&n=CDI_I_update_failed_execute");
        exit;
    }
} else {
    $error_msg_prepare = mysqli_error($Con);
    error_log("USCDI_I.php - Error al preparar UPDATE: " . $error_msg_prepare);
    Cerrar($Con);
    unset($_SESSION['id_CDI_I_actual_modificacion']);

    $redirectUrl = isset($id) ? "UCDI_I.php?id=" . urlencode($id) . "&n=CDI_I_prepare_failed" : htmlspecialchars($urlMenuCorrespondiente) . "?n=CDI_I_prepare_failed_no_id";
    header("Location: " . $redirectUrl);
    exit;
}
?>