export enum UserRole { SUPERADMIN = "SUPERADMIN", BUSINESS_OWNER = "BUSINESS_OWNER", EVENT_OWNER = "EVENT_OWNER", PHOTOGRAPHER = "PHOTOGRAPHER", } export enum UserApprovalStatus { PENDING = "PENDING", APPROVED = "APPROVED", REJECTED = "REJECTED", } export enum EventStatus { PENDING_APPROVAL = "Aguardando Aprovação", // Novo status para clientes PLANNING = "Em Planejamento", CONFIRMED = "Confirmado", IN_PROGRESS = "Em Execução", DELIVERED = "Entregue", ARCHIVED = "Arquivado", } export enum EventType { GRADUATION = "Formatura", COLATION = "Colação de Grau", ACADEMIC_WEEK = "Semana Acadêmica", FRESHMAN_WEEK = "Semana de Calouros", SYMPOSIUM = "Simpósio/Congresso", DEFENSE = "Defesa de TCC/Mestrado/Doutorado", SPORTS_EVENT = "Evento Esportivo Universitário", CULTURAL_EVENT = "Evento Cultural", OTHER = "Outro", } export interface User { id: string; name: string; email: string; role: UserRole; avatar?: string; institutionId?: string; // Instituição vinculada ao usuário approvalStatus?: UserApprovalStatus; // Status de aprovação do cadastro registeredInstitution?: string; // Nome da instituição cadastrada durante o registro (se houver) phone?: string; // Telefone do usuário createdAt?: string; // Data de criação do cadastro } export interface Institution { id: string; name: string; type: string; // Ex: Universidade Pública, Universidade Privada, Faculdade, etc. cnpj?: string; phone: string; email: string; address?: Address; description?: string; ownerId: string; // ID do usuário que criou a instituição } export interface Course { id: string; name: string; // Ex: "Engenharia Civil 2025", "Medicina - Turma A" institutionId: string; // ID da instituição vinculada year: number; // Ano da turma semester?: number; // Semestre (opcional) graduationType: string; // Ex: "Bacharelado", "Licenciatura", "Tecnológico" createdAt: string; createdBy: string; // ID do admin que cadastrou isActive: boolean; // Permite desativar turmas antigas } export interface Address { street: string; number: string; city: string; state: string; zip: string; lat?: number; lng?: number; mapLink?: string; // URL from Google Maps Grounding } export interface Contact { id: string; name: string; role: string; phone: string; email: string; } export interface ChecklistItem { id: string; task: string; completed: boolean; required: boolean; } export interface EventData { id: string; name: string; date: string; time: string; // Mantido por compatibilidade, mas deprecated startTime?: string; // Horário de início endTime?: string; // Horário de término type: EventType; status: EventStatus; address: Address; contacts: Contact[]; checklist: ChecklistItem[]; briefing: string; coverImage: string; ownerId: string; // ID do cliente dono do evento photographerIds: string[]; // IDs dos fotógrafos designados institutionId?: string; // ID da instituição vinculada (obrigatório) attendees?: number; // Número de pessoas participantes courseId?: string; // ID do curso/turma relacionado ao evento }