import React, { useState } from 'react'; import { useQuery, useMutation, useQueryClient } from 'react-query'; import { coursesAPI } from '../services/api'; import { useAuth } from '../contexts/AuthContext'; import { XMarkIcon, UserIcon, AcademicCapIcon, } from '@heroicons/react/24/outline'; import LoadingSpinner from './LoadingSpinner'; import toast from 'react-hot-toast'; const TrainerAssignmentModal = ({ isOpen, onClose, courseId, currentTrainer }) => { const [selectedTrainerId, setSelectedTrainerId] = useState(''); const queryClient = useQueryClient(); const { user } = useAuth(); // Get available trainers const { data: trainersData, isLoading: trainersLoading, error: trainersError } = useQuery( ['available-trainers'], () => { console.log('Fetching available trainers...'); return coursesAPI.getAvailableTrainers(); }, { enabled: isOpen, onError: (error) => { console.error('Trainer loading error:', error); toast.error('Failed to load trainers'); }, onSuccess: (data) => { console.log('Trainers loaded successfully:', data); } } ); // Assign trainer mutation const assignTrainerMutation = useMutation( ({ courseId, trainerId }) => coursesAPI.assignTrainer(courseId, trainerId), { onSuccess: () => { queryClient.invalidateQueries(['courses']); queryClient.invalidateQueries(['course', courseId]); toast.success('Trainer assigned successfully!'); onClose(); }, onError: (error) => { toast.error(error.response?.data?.error || 'Failed to assign trainer'); } } ); const handleAssignTrainer = () => { if (!selectedTrainerId) { toast.error('Please select a trainer'); return; } assignTrainerMutation.mutate({ courseId, trainerId: selectedTrainerId }); }; if (!isOpen) return null; // Check if user is Super Admin if (user?.role !== 'super_admin') { return (
Only Super Admins can assign trainers to courses.
Current Trainer: {currentTrainer.firstName} {currentTrainer.lastName}
Error loading trainers: {trainersError.message}
No active trainers available. Please create trainer accounts first.
Debug: trainersData = {JSON.stringify(trainersData, null, 2)}
Debug: trainersLoading = {trainersLoading}
Debug: trainersError = {trainersError?.message}
Debug: Current user role = {user?.role}
Debug: Current user ID = {user?.id}