<?php
// backend/aspirantes/actualizar_nombre.php
header('Content-Type: application/json; charset=UTF-8');

// Forzar UTF-8 en la salida (debe ir antes de cualquier uso)
if (!function_exists('forceUTF8')) {
    function forceUTF8($string) {
        return mb_convert_encoding($string, 'UTF-8', 'auto');
    }
}

// Habilitar errores para depuración
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

require_once __DIR__ . '/../db/conexion.php';
require_once __DIR__ . '/../utils/normalizar_texto.php';

$id = isset($_POST['aspirante_id']) ? intval($_POST['aspirante_id']) : 0;
$nombre = isset($_POST['nombre']) ? limpiarTexto($_POST['nombre']) : '';
$apellido_paterno = isset($_POST['apellido_paterno']) ? limpiarTexto($_POST['apellido_paterno']) : '';
$apellido_materno = isset($_POST['apellido_materno']) ? limpiarTexto($_POST['apellido_materno']) : '';

$logFile = __DIR__ . '/../contabilidad/error_log.txt';

file_put_contents($logFile, date('Y-m-d H:i:s') . " - INICIO actualizar_nombre.php\n", FILE_APPEND);
file_put_contents($logFile, date('Y-m-d H:i:s') . " - POST: " . json_encode($_POST) . "\n", FILE_APPEND);

function log_error($msg) {
    global $logFile;
    file_put_contents($logFile, date('Y-m-d H:i:s') . " - " . $msg . "\n", FILE_APPEND);
}

if ($id <= 0 || $nombre === '' || $apellido_paterno === '') {
    log_error('Datos incompletos o ID inválido: ' . print_r($_POST, true));
    file_put_contents($logFile, date('Y-m-d H:i:s') . " - VALIDACION FALLIDA\n", FILE_APPEND);
    echo json_encode(['success' => false, 'message' => 'Datos incompletos o ID inválido']);
    exit;
}

try {
    file_put_contents($logFile, date('Y-m-d H:i:s') . " - ANTES DE UPDATE\n", FILE_APPEND);
    $stmt = $conn->prepare('UPDATE aspirantes SET nombre = ?, apellido_paterno = ?, apellido_materno = ? WHERE id = ?');
    if (!$stmt) {
        log_error('Error en prepare: ' . $conn->error);
        echo json_encode(['success' => false, 'message' => 'Error en prepare: ' . $conn->error]);
        exit;
    }
    $stmt->bind_param('sssi', $nombre, $apellido_paterno, $apellido_materno, $id);
    $stmt->execute();
    file_put_contents($logFile, date('Y-m-d H:i:s') . " - DESPUES DE UPDATE\n", FILE_APPEND);
    if ($stmt->affected_rows > 0) {
        file_put_contents($logFile, date('Y-m-d H:i:s') . " - ACTUALIZACION EXITOSA\n", FILE_APPEND);
        echo json_encode(['success' => true, 'nombreCompleto' => $nombre . ' ' . $apellido_paterno . ' ' . $apellido_materno]);
    } else {
        log_error('No se actualizó ningún registro para ID: ' . $id);
        file_put_contents($logFile, date('Y-m-d H:i:s') . " - NO SE ACTUALIZO NINGUN REGISTRO\n", FILE_APPEND);
        echo json_encode(['success' => false, 'message' => 'No se actualizo ningun registro']);
    }
    $stmt->close();
} catch (Throwable $e) {
    log_error('Error SQL: ' . $e->getMessage());
    file_put_contents($logFile, date('Y-m-d H:i:s') . " - ERROR SQL\n", FILE_APPEND);
    echo json_encode(['success' => false, 'message' => 'Error: ' . $e->getMessage()]);
}
file_put_contents($logFile, date('Y-m-d H:i:s') . " - FIN actualizar_nombre.php\n", FILE_APPEND);
