67 lines
2.8 KiB
TypeScript

/* eslint-disable @typescript-eslint/no-explicit-any */
import { createClient } from '@/lib/supabase/server'
import { BarChart3 } from 'lucide-react'
import Link from 'next/link'
export default async function ReportsPage() {
const supabase = await createClient()
const db = supabase as any
const { data: { user } } = await supabase.auth.getUser()
const { data: sessions } = await db
.from('sessions')
.select(`id, short_code, is_active, school_name, class_name, created_at, quiz:quizzes(title)`)
.eq('trainer_id', user!.id)
.order('created_at', { ascending: false })
return (
<div className="p-4 md:p-8">
<h1 className="text-2xl md:text-3xl font-bold text-text-primary mb-2">Rapports</h1>
<p className="text-text-secondary mb-6 md:mb-8">Consultez les résultats de vos sessions.</p>
<div className="space-y-3">
{(sessions ?? []).length === 0 ? (
<div className="card p-12 text-center">
<BarChart3 size={32} className="mx-auto text-text-muted mb-3" />
<p className="text-text-secondary">Aucune session créée pour l&apos;instant.</p>
<Link href="/dashboard/sessions/create" className="btn-primary inline-flex mt-4">
Créer une session
</Link>
</div>
) : (
(sessions ?? []).map((session: any) => (
<div key={session.id} className="card p-5 flex items-center gap-4 hover:border-border-light transition-colors">
<div className="flex-1">
<div className="flex items-center gap-2 mb-1">
<h3 className="font-semibold text-text-primary">
{session.quiz?.title ?? 'Quiz'}
</h3>
<span className={`text-xs px-2 py-0.5 rounded-full border font-medium ${
session.is_active
? 'bg-green-500/10 text-green-400 border-green-500/20'
: 'bg-gray-500/10 text-gray-400 border-gray-500/20'
}`}>
{session.is_active ? 'Active' : 'Terminée'}
</span>
</div>
<p className="text-xs text-text-muted">
Code: <span className="font-mono text-primary">{session.short_code}</span>
{session.school_name && ` · ${session.school_name}`}
{session.class_name && ` · ${session.class_name}`}
{' · '}{new Date(session.created_at).toLocaleDateString('fr-FR')}
</p>
</div>
<Link
href={`/dashboard/sessions/${session.id}/live`}
className="btn-secondary text-sm"
>
Voir le rapport
</Link>
</div>
))
)}
</div>
</div>
)
}