import ExamStatsCard from '@/components/exam/exam-stats-card'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Separator } from '@/components/ui/separator'; import DashboardLayout from '@/layouts/dashboard/layout'; import { Head, Link } from '@inertiajs/react'; import { format, parseISO } from 'date-fns'; import { ArrowLeft, Award, BookOpen, Calendar, DollarSign, Edit, Eye, TrendingUp, Users } from 'lucide-react'; interface Props { exam: Exam & { instructor: Instructor; exam_category: ExamCategory; questions: ExamQuestion[]; enrollments: ExamEnrollment[]; attempts: ExamAttempt[]; reviews: ExamReview[]; }; stats: { total_enrollments: number; active_enrollments: number; total_attempts: number; completed_attempts: number; pass_rate: number; average_score: number; total_revenue: number; }; } const ShowExam = ({ exam, stats }: Props) => { const recentEnrollments = exam.enrollments.slice(0, 5); const recentAttempts = exam.attempts.slice(0, 5); return (
{/* Header */}

{exam.title}

{exam.exam_category.title}

{/* Stats Cards */}
{/* Main Content */}
{/* Exam Details */} Exam Details

Status

{exam.status}

Pricing

{exam.pricing_type === 'free' ? 'Free' : `$${exam.discount_price || exam.price}`}

Total Questions

{exam.total_questions}

Total Marks

{exam.total_marks}

Duration

{exam.duration_hours > 0 && `${exam.duration_hours}h `} {exam.duration_minutes > 0 && `${exam.duration_minutes}m`}

Pass Mark

{exam.pass_mark}

Max Attempts

{exam.max_attempts === 0 ? 'Unlimited' : exam.max_attempts}

Level

{exam.level || 'Not set'}

{/* Performance Analytics */} Performance Analytics
Total Attempts {stats.total_attempts}
Completed Attempts {stats.completed_attempts}
Average Score {stats.average_score.toFixed(1)}%
Pass Rate = 70 ? 'default' : 'destructive'}>{stats.pass_rate.toFixed(1)}%
{/* Recent Attempts */} Recent Attempts {recentAttempts.length > 0 ? (
{recentAttempts.map((attempt) => (

{attempt.user?.name}

{format(parseISO(attempt.start_time), 'MMM dd, yyyy HH:mm')}

{attempt.status}

{attempt.obtained_marks}/{attempt.total_marks}

))}
) : (

No attempts yet

)}
{/* Sidebar */}
{/* Quick Actions */} Quick Actions {/* Recent Enrollments */} Recent Enrollments {recentEnrollments.length > 0 ? (
{recentEnrollments.map((enrollment) => (

{enrollment.user?.name}

{format(parseISO(enrollment.entry_date), 'MMM dd, yyyy')}

))}
) : (

No enrollments yet

)}
{/* Reviews Summary */} {exam.reviews.length > 0 && ( Reviews

{(exam.reviews.reduce((sum, r) => sum + r.rating, 0) / exam.reviews.length).toFixed(1)}

{exam.reviews.length} reviews

)}
); }; export default ShowExam;