<?php
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// Validación de seguridad de sesión
if (!isset($_SESSION['usu_id'])) {
    header('Content-Type: application/json');
    echo json_encode(["status" => "error", "message" => "Sesión inválida o expirada."]);
    exit();
}

require_once "../modelo/Db.php";

$action = $_GET['action'] ?? '';

// ACCIÓN: CONSULTAR DATOS (RETORNA JSON)
if ($action === 'consultar') {
    // Forzar cabecera JSON limpia sin interferencias
    header('Content-Type: application/json; charset=utf-8');
    
    $prof_id = isset($_GET['prof_id']) ? intval($_GET['prof_id']) : 0;
    
    if ($prof_id <= 0) {
        echo json_encode(["status" => "error", "message" => "ID de profesor no válido."]);
        exit();
    }
    
    $bd = new clsbdd();
    
    // Consulta limpia usando el método tradicional ejecutar
    $sql = "SELECT p.*, c.cla_categoria, c.cla_nivel 
            FROM bas_profesores p 
            LEFT JOIN bas_clasificaciones c ON p.cla_id = c.cla_id 
            WHERE p.prof_id = $prof_id 
            LIMIT 1";
            
    $res = $bd->ejecutar($sql);
    
    if ($res && $res->num_rows > 0) {
        $row = $res->fetch_assoc();
        echo json_encode(["status" => "success", "data" => $row]);
    } else {
        echo json_encode(["status" => "error", "message" => "El docente no fue localizado en la base de datos."]);
    }
    exit();
}

// ACCIÓN: GUARDAR / ACTUALIZAR (REDIFIGE POR FORMULARIO STANDARD)
if ($action === 'guardar' && $_SERVER['REQUEST_METHOD'] === 'POST') {
    $bd = new clsbdd();
    
    $prof_id      = !empty($_POST['prof_id']) ? intval($_POST['prof_id']) : null;
    $cedula       = trim($_POST['prof_cedula']);
    $nombres      = strtoupper(trim($_POST['prof_nombres']));
    $apellidos    = strtoupper(trim($_POST['prof_apellidos']));
    $cla_id       = !empty($_POST['cla_id']) ? intval($_POST['cla_id']) : null;
    
    // Parámetros opcionales según el DESCRIBE de tu tabla
    $telefono     = !empty($_POST['prof_telefono']) ? trim($_POST['prof_telefono']) : null;
    $correo       = !empty($_POST['prof_correo']) ? trim($_POST['prof_correo']) : null;
    $especialidad = !empty($_POST['prof_especialidad']) ? strtoupper(trim($_POST['prof_especialidad'])) : null;
    $estado       = isset($_POST['prof_estado']) ? intval($_POST['prof_estado']) : 1;

    if (!empty($cedula) && !empty($nombres) && !empty($apellidos)) {
        
        $cedulaEsc    = addslashes($cedula);
        $nombresEsc   = addslashes($nombres);
        $apellidosEsc = addslashes($apellidos);
        $claVal       = ($cla_id !== null) ? $cla_id : "NULL";
        $telVal       = ($telefono !== null) ? "'".addslashes($telefono)."'" : "NULL";
        $corVal       = ($correo !== null) ? "'".addslashes($correo)."'" : "NULL";
        $espVal       = ($especialidad !== null) ? "'".addslashes($especialidad)."'" : "NULL";

        if ($prof_id === null) {
            $sql = "INSERT INTO bas_profesores (
                        prof_cedula, prof_nombres, prof_apellidos, prof_telefono, 
                        prof_correo, cla_id, prof_especialidad, prof_estado
                    ) VALUES (
                        '$cedulaEsc', '$nombresEsc', '$apellidosEsc', $telVal, 
                        $corVal, $claVal, $espVal, $estado
                    )";
        } else {
            $sql = "UPDATE bas_profesores SET 
                        prof_cedula = '$cedulaEsc', 
                        prof_nombres = '$nombresEsc', 
                        prof_apellidos = '$apellidosEsc', 
                        prof_telefono = $telVal, 
                        prof_correo = $corVal, 
                        cla_id = $claVal, 
                        prof_especialidad = $espVal, 
                        prof_estado = $estado 
                    WHERE prof_id = $prof_id";
        }

        if ($bd->ejecutar($sql)) {
            header("Location: ../index.php?page=profesores/listar&status=success");
        } else {
            header("Location: ../index.php?page=profesores/listar&status=error&error=db_fail");
        }
        exit();
    } else {
        header("Location: ../index.php?page=profesores/listar&status=error&error=campos_vacios");
        exit();
    }
}