import React, { useState } from 'react'; import { useData } from '../contexts/DataContext'; import { useAuth } from '../contexts/AuthContext'; import { UserRole, Course } from '../types'; import { CourseForm } from '../components/CourseForm'; import { GraduationCap, Plus, Building2, ChevronRight, Edit, Trash2, CheckCircle, XCircle } from 'lucide-react'; import { Button } from '../components/Button'; export const CourseManagement: React.FC = () => { const { user } = useAuth(); const { institutions, courses, addCourse, updateCourse, getCoursesByInstitutionId } = useData(); const [selectedInstitution, setSelectedInstitution] = useState(null); const [showCourseForm, setShowCourseForm] = useState(false); const [editingCourse, setEditingCourse] = useState(undefined); // Verificar se é admin const isAdmin = user?.role === UserRole.SUPERADMIN || user?.role === UserRole.BUSINESS_OWNER; if (!isAdmin) { return (

Acesso Negado

Apenas administradores podem acessar esta página.

); } const selectedInstitutionData = institutions.find(inst => inst.id === selectedInstitution); const institutionCourses = selectedInstitution ? getCoursesByInstitutionId(selectedInstitution) : []; const handleAddCourse = () => { setEditingCourse(undefined); setShowCourseForm(true); }; const handleEditCourse = (course: Course) => { setEditingCourse(course); setShowCourseForm(true); }; const handleSubmitCourse = (courseData: Partial) => { if (editingCourse) { updateCourse(editingCourse.id, courseData); } else { const newCourse: Course = { id: `course-${Date.now()}`, name: courseData.name!, institutionId: selectedInstitution || courseData.institutionId!, year: courseData.year!, semester: courseData.semester, graduationType: courseData.graduationType!, createdAt: new Date().toISOString(), createdBy: user?.id || '', isActive: courseData.isActive !== false, }; addCourse(newCourse); } setShowCourseForm(false); setEditingCourse(undefined); }; const handleToggleActive = (course: Course) => { updateCourse(course.id, { isActive: !course.isActive }); }; return (
{/* Header */}

Gestão de Cursos e Turmas

Cadastre e gerencie os cursos/turmas disponíveis em cada universidade

{/* Course Form Modal */} {showCourseForm && (
{ setShowCourseForm(false); setEditingCourse(undefined); }} onSubmit={handleSubmitCourse} initialData={editingCourse} userId={user?.id || ''} institutions={institutions} />
)}
{/* Left Panel - Institutions Table */}

Universidades Cadastradas

{institutions.length} {institutions.length === 1 ? 'instituição' : 'instituições'}
{institutions.length === 0 ? ( ) : ( institutions.map((institution) => { const coursesCount = getCoursesByInstitutionId(institution.id).length; const isSelected = selectedInstitution === institution.id; return ( setSelectedInstitution(isSelected ? null : institution.id)} > ); }) )}
Universidade Tipo Cursos Ação
Nenhuma universidade cadastrada
{institution.name}
{institution.address?.city}, {institution.address?.state}
{institution.type} 0 ? 'bg-green-100 text-green-700' : 'bg-gray-100 text-gray-500' }`}> {coursesCount}
{/* Right Panel - Courses Table */}

{selectedInstitutionData ? ( <>Cursos - {selectedInstitutionData.name} ) : ( <>Cursos da Universidade )}

{selectedInstitutionData && (

{institutionCourses.length} {institutionCourses.length === 1 ? 'curso cadastrado' : 'cursos cadastrados'}

)}
{selectedInstitution && ( )}
{!selectedInstitution ? (

Selecione uma universidade para ver seus cursos

) : institutionCourses.length === 0 ? (

Nenhum curso cadastrado nesta universidade

) : ( {institutionCourses.map((course) => ( ))}
Curso/Turma Tipo Período Status Ações
{course.name}
{course.graduationType} {course.year}/{course.semester}º
)}
); };