<?php
header('Content-Type: application/json');
require '../includes/config.php';

if (!is_logged_in()) {
    http_response_code(401);
    echo json_encode(['success' => false, 'error' => 'No autenticado']);
    exit;
}

$method = $_SERVER['REQUEST_METHOD'];
$profesorId = $_SESSION['profesor']['id'] ?? null;

switch ($method) {
    case 'POST':
        $input = json_decode(file_get_contents('php://input'), true);
        $alumnoCursoId = $input['alumno_curso_id'] ?? null;

        if (!$alumnoCursoId) {
            http_response_code(400);
            echo json_encode(['success' => false, 'error' => 'Falta ID de alumno_curso']);
            exit;
        }

        $stmt = $pdo->prepare("
            SELECT ac.id
            FROM alumnos_cursos ac
            JOIN cursos c ON ac.curso_id = c.id
            WHERE ac.id = ? AND c.profesor_id = ?
        ");
        $stmt->execute([$alumnoCursoId, $profesorId]);

        if (!$stmt->fetch()) {
            http_response_code(403);
            echo json_encode(['success' => false, 'error' => 'No autorizado']);
            exit;
        }

        $stmt = $pdo->prepare("SELECT codigo_unico FROM diplomas WHERE alumno_curso_id = ?");
        $stmt->execute([$alumnoCursoId]);
        $existing = $stmt->fetchColumn();

        if ($existing) {
            http_response_code(409);
            echo json_encode(['success' => false, 'error' => 'Este alumno ya tiene un diploma', 'codigo_unico' => $existing]);
            exit;
        }

        $codigo = strtoupper(substr(uniqid(), -6));
        $fecha = date('Y-m-d');

        // Insertar nuevo diploma
        $stmt = $pdo->prepare("
            INSERT INTO diplomas (alumno_curso_id, codigo_unico, fecha_emision)
            VALUES (?, ?, ?)
        ");
        $stmt->execute([$alumnoCursoId, $codigo, $fecha]);

        echo json_encode([
            'success' => true,
            'codigo_unico' => $codigo
        ]);
        break;

    case 'GET':
        if (!$profesorId) {
            echo json_encode(['success' => false, 'error' => 'Profesor no identificado']);
            exit;
        }

        $stmt = $pdo->prepare("
            SELECT d.codigo_unico, d.fecha_emision,
                ac.id AS alumno_curso_id,
                a.nombre AS alumno_nombre, a.email AS alumno_email,
                c.nombre AS curso_nombre, c.tipo AS curso_tipo
            FROM diplomas d
            JOIN alumnos_cursos ac ON d.alumno_curso_id = ac.id
            JOIN alumnos a ON ac.alumno_id = a.id
            JOIN cursos c ON ac.curso_id = c.id
            WHERE c.profesor_id = ?
            ORDER BY d.fecha_emision DESC
        ");
        $stmt->execute([$profesorId]);

        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

        echo json_encode([
            'success' => true,
            'data' => $result
        ]);
        break;

    default:
        http_response_code(405);
        echo json_encode(['success' => false, 'error' => 'Método no permitido']);
}
