/** * File: page.tsx * Created by: AI Assistant * Date: 2025-11-29 * Purpose: Class list page for kreatiVortex platform * Part of: kreatiVortex - Platform Pembelajaran Tari Online */ 'use client'; import { Link } from '@/i18n/routing'; import ActionButton from '@/components/ActionButton'; import { useFetch } from '@/hooks/useFetch'; import { useTranslations } from 'next-intl'; import { useState, useEffect } from 'react'; interface ClassData { id: string; name: string; description: string; educator: { user: { name: string; }; }; schedule: string; _count: { members: number; }; status: string; // Assuming we add status to API or calculate it } interface UserProfile { role: { name: string; }; } export default function ClassPage() { const t = useTranslations('Classes'); const { data: classes, loading } = useFetch('/api/classes'); const [userProfile, setUserProfile] = useState(null); useEffect(() => { // Fetch user profile to check role const fetchProfile = async () => { try { const response = await fetch('/api/user/profile', { credentials: 'include' }); if (response.ok) { const data = await response.json(); setUserProfile(data.data); } } catch (error) { console.error('Error fetching user profile:', error); } }; fetchProfile(); }, []); const canCreateClass = userProfile?.role?.name === 'PENDIDIK' || userProfile?.role?.name === 'ADMIN'; return (

{t('title')}

{t('subtitle')}

{canCreateClass ? ( {t('createButton')} ) : userProfile?.role?.name === 'UMUM' ? (

Upgrade ke Pendidik untuk membuat kelas

Daftar sebagai Pendidik →
) : (
Hanya Pendidik yang dapat membuat kelas
)}
{loading ? (
{t('loading')}
) : (
{classes?.map((cls) => (
{t('active')} {cls._count.members} {t('students')}

{cls.name}

{cls.description}

{cls.educator?.user.name || t('unknownEducator')}
{/* Schedule not in model yet, placeholder */}
{t('scheduleNotSet')}
{t('enterClass')}
))} {(!classes || classes.length === 0) && (
{t('noClasses')}
)}
)}
); }