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}º
)}
); };