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']); }