<?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 crear 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);

$alumno_id = $data['alumno_id'] ?? null;
$familiar_id = $data['familiar_id'] ?? null;
$fecha = $data['fecha'] ?? null;
$hora = $data['hora'] ?? null;
$motivo = $data['motivo'] ?? null;
$usuario_registro = $_SESSION['user_id'];

if (!$alumno_id || !$familiar_id || !$fecha || !$hora || !$motivo) {
    $logger->warning('Intento de crear registro de llamada con datos incompletos', "Usuario ID: {$_SESSION['user_id']}, Alumno ID: $alumno_id, Familiar ID: $familiar_id");
    echo json_encode(['success' => false, 'msg' => 'Faltan datos obligatorios']);
    exit;
}

try {
    $stmt = $pdo->prepare("INSERT INTO convivencia_llamadas (
        alumno_id, familiar_id, fecha, hora, motivo, usuario_registro, fecha_registro
    ) VALUES (
        :alumno_id, :familiar_id, :fecha, :hora, :motivo, :usuario_registro, NOW()
    )");

    $stmt->execute([
        ':alumno_id' => $alumno_id,
        ':familiar_id' => $familiar_id,
        ':fecha' => $fecha,
        ':hora' => $hora,
        ':motivo' => $motivo,
        ':usuario_registro' => $usuario_registro
    ]);

    $llamada_id = $pdo->lastInsertId();
    
    // Obtener datos del alumno y familiar para el log
    $stmt_info = $pdo->prepare("
        SELECT 
            CONCAT(a.nombre, ' ', a.ap_paterno, ' ', a.ap_materno) as alumno_nombre,
            a.run as alumno_run,
            CONCAT(f.nombre, ' ', f.ap_paterno, ' ', f.ap_materno) as familiar_nombre,
            f.run as familiar_run
        FROM alumnos a, familiares f 
        WHERE a.id = ? AND f.id = ?
    ");
    $stmt_info->execute([$alumno_id, $familiar_id]);
    $info = $stmt_info->fetch(PDO::FETCH_ASSOC);
    
    $detalles = "Llamada ID: $llamada_id, Alumno: {$info['alumno_nombre']} (RUN: {$info['alumno_run']}), Familiar: {$info['familiar_nombre']} (RUN: {$info['familiar_run']}), Motivo: $motivo, Fecha: $fecha $hora";
    $logger->data('Nuevo registro de llamada telefónica creado', $detalles);

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