/** * File: page.tsx * Created by: AI Assistant * Date: 2025-11-29 * Purpose: Class detail page for kreatiVortex platform * Part of: kreatiVortex - Platform Pembelajaran Tari Online */ 'use client'; import { useEffect, useState } from 'react'; import { useParams } from 'next/navigation'; import Link from 'next/link'; import ActionButton from '@/components/ActionButton'; interface ClassMember { id: string; student: { user: { name: string; image?: string; }; }; } interface ClassData { id: string; name: string; description: string; code: string; educatorId: string; educator: { user: { name: string; image?: string; }; }; isActive: boolean; maxStudents?: number; members: ClassMember[]; videos: any[]; assignments: any[]; createdAt: string; updatedAt: string; } export default function ClassDetailPage() { const params = useParams(); const [classData, setClassData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchClassData = async () => { try { const response = await fetch(`/api/classes/${params.id}`); const result = await response.json(); if (result.success) { setClassData(result.data); } else { setError(result.message || 'Failed to fetch class data'); } } catch (err) { setError('Error fetching class data'); console.error('Error:', err); } finally { setLoading(false); } }; if (params.id) { fetchClassData(); } }, [params.id]); if (loading) { return (
Memuat data kelas...
); } if (error || !classData) { return (
Error: {error || 'Kelas tidak ditemukan'}
); } return (
Kembali ke Daftar Kelas Pengaturan Kelas
{/* Class Header */}
{classData.isActive ? 'Aktif' : 'Tidak Aktif'}

{classData.name}

{classData.code}

Pengajar: {classData.educator.user.name}
{classData.members.length} / {classData.maxStudents || '∞'} Siswa
{/* Main Content */}
{/* About */}

Tentang Kelas

{classData.description || 'Tidak ada deskripsi untuk kelas ini.'}

{/* Quick Actions */}

Forum Kelas

Tugas Kelas

{/* Statistics */}
{classData.videos.length}
Video
{classData.assignments.length}
Tugas
{classData.members.length}
Siswa
{/* Sidebar */}
{/* Class Members */}

Anggota Kelas

{classData.members.length} siswa
{classData.members.slice(0, 5).map((member) => (
{member.student.user.image ? ( {member.student.user.name} ) : ( {member.student.user.name.charAt(0).toUpperCase()} )}

{member.student.user.name}

))} {classData.members.length > 5 && (
)}
{/* Class Info */}

Informasi Kelas

Kode Kelas {classData.code}
Status {classData.isActive ? 'Aktif' : 'Tidak Aktif'}
Kapasitas {classData.members.length} / {classData.maxStudents || '∞'}
Dibuat {new Date(classData.createdAt).toLocaleDateString('id-ID')}
); }