<?php
require_once __DIR__ . '/../config/db_auto.php';
require_once __DIR__ . '/system_logger.php';
session_start();
header('Content-Type: application/json');

$logger = SystemLogger::getInstance();

// Validar usuario
if (!isset($_SESSION['user_id'])) {
    $logger->warning('Intento de actualizar registro de llamada sin autenticación', 'IP: ' . ($_SERVER['REMOTE_ADDR'] ?? 'N/A'));
    http_response_code(401);
    echo json_encode(['success' => false, 'msg' => 'No autenticado']);
    exit;
}

$data = json_decode(file_get_contents('php://input'), true);

$id = $data['id'] ?? null;
$motivo = $data['motivo'] ?? null;
$usuario_modificacion = $_SESSION['user_id'];

if (!$id || !$motivo) {
    http_response_code(400);
    echo json_encode(['success' => false, 'msg' => 'Faltan datos obligatorios (ID y Motivo).']);
    exit;
}

try {
    // Obtener datos antes de la actualización para el log
    $stmt_antes = $pdo->prepare("
        SELECT 
            l.motivo as motivo_anterior,
            CONCAT(a.nombre, ' ', a.ap_paterno, ' ', a.ap_materno) as alumno_nombre,
            a.run as alumno_run
        FROM convivencia_llamadas l
        JOIN alumnos a ON l.alumno_id = a.id
        WHERE l.id = ?
    ");
    $stmt_antes->execute([$id]);
    $datos_antes = $stmt_antes->fetch(PDO::FETCH_ASSOC);

    $sql = "UPDATE convivencia_llamadas SET 
                motivo = :motivo, 
                usuario_modificacion = :usuario_modificacion,
                fecha_modificacion = NOW()
            WHERE id = :id";

    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        ':id' => $id,
        ':motivo' => $motivo,
        ':usuario_modificacion' => $usuario_modificacion
    ]);

    if ($datos_antes) {
        $detalles = "Llamada ID: $id, Alumno: {$datos_antes['alumno_nombre']} (RUN: {$datos_antes['alumno_run']}), Motivo anterior: '{$datos_antes['motivo_anterior']}', Nuevo motivo: '$motivo'";
        $logger->data('Registro de llamada telefónica actualizado', $detalles);
    }

    echo json_encode(['success' => true, 'msg' => 'Registro de llamada actualizado correctamente']);
} catch (Exception $e) {
    $logger->error('Error al actualizar registro de llamada telefónica', "Usuario ID: {$_SESSION['user_id']}, Llamada ID: $id, Error: " . $e->getMessage());
    http_response_code(500);
    echo json_encode(['success' => false, 'msg' => 'Error al actualizar: ' . $e->getMessage()]);
}
