import React from 'react'; import { useQuery } from 'react-query'; import { useAuth } from '../contexts/AuthContext'; import { coursesAPI, enrollmentsAPI, attendanceAPI, usersAPI } from '../services/api'; import { AcademicCapIcon, UsersIcon, ClockIcon, ChartBarIcon, UserGroupIcon, BookOpenIcon, CheckCircleIcon, } from '@heroicons/react/24/outline'; import LoadingSpinner from '../components/LoadingSpinner'; import { useState } from 'react'; import toast from 'react-hot-toast'; const SliderImageUpload = () => { const [file, setFile] = useState(null); const [preview, setPreview] = useState(null); const [uploading, setUploading] = useState(false); const handleFileChange = (e) => { const f = e.target.files[0]; setFile(f); setPreview(f ? URL.createObjectURL(f) : null); }; const handleUpload = async () => { if (!file) return; setUploading(true); try { await usersAPI.uploadSliderImage(file); toast.success('Slider image uploaded!'); setFile(null); setPreview(null); } catch (err) { toast.error('Upload failed'); } finally { setUploading(false); } }; return (

Upload Slider Image

{preview && ( Preview )}
); }; const Dashboard = () => { const { user, isSuperAdmin, isTrainer, isTrainee } = useAuth(); // Fetch data based on user role const { data: coursesData, isLoading: coursesLoading } = useQuery( ['courses', 'dashboard'], () => coursesAPI.getAll({ limit: 5, isPublished: true }), { enabled: !isSuperAdmin } ); const { data: enrollmentsData, isLoading: enrollmentsLoading } = useQuery( ['enrollments', 'my'], () => enrollmentsAPI.getMy({ limit: 5 }), { enabled: isTrainee } ); const { data: attendanceStats, isLoading: attendanceLoading } = useQuery( ['attendance', 'stats'], () => attendanceAPI.getStats(), { enabled: isTrainee } ); const { data: userStats, isLoading: userStatsLoading } = useQuery( ['users', 'stats'], () => usersAPI.getStats(), { enabled: isSuperAdmin } ); const { data: courseStats, isLoading: courseStatsLoading } = useQuery( ['courses', 'stats'], () => coursesAPI.getStats(), { enabled: isSuperAdmin || isTrainer } ); const isLoading = coursesLoading || enrollmentsLoading || attendanceLoading || userStatsLoading || courseStatsLoading; if (isLoading) { return ; } const renderSuperAdminDashboard = () => (

Total Users

{userStats?.stats?.totalUsers || 0}

Trainers

{userStats?.stats?.trainers || 0}

Trainees

{userStats?.stats?.trainees || 0}

Total Courses

{courseStats?.stats?.totalCourses || 0}

Recent Users

{/* Add recent users list here */}

No recent users to display

System Overview

Active Users {userStats?.stats?.activeUsers || 0}
Published Courses {courseStats?.stats?.publishedCourses || 0}
Featured Courses {courseStats?.stats?.featuredCourses || 0}
); const renderTrainerDashboard = () => (

My Courses

{courseStats?.stats?.totalCourses || 0}

Published

{courseStats?.stats?.publishedCourses || 0}

Students

{/* Add total students count */} 0

Recent Courses

{coursesData?.courses?.length > 0 ? ( coursesData.courses.map((course) => (

{course.title}

{course.trainer?.firstName} {course.trainer?.lastName}

{course.isPublished ? 'Published' : 'Draft'}
)) ) : (

No courses found

)}

Quick Actions

); const renderTraineeDashboard = () => (

Enrolled Courses

{enrollmentsData?.enrollments?.length || 0}

Attendance Rate

{attendanceStats?.stats?.attendanceRate || 0}%

Total Sessions

{attendanceStats?.stats?.totalSessions || 0}

My Enrollments

{enrollmentsData?.enrollments?.length > 0 ? ( enrollmentsData.enrollments.map((enrollment) => (

{enrollment.course.title}

Progress: {enrollment.progress}%

{enrollment.status}
)) ) : (

No enrollments found

)}

Quick Actions

); return (

Dashboard

Welcome back, {user?.firstName}! Here's what's happening.

{isSuperAdmin && renderSuperAdminDashboard()} {isTrainer && renderTrainerDashboard()} {isTrainee && renderTraineeDashboard()}
); }; export default Dashboard;