export enum UserRole { SUPERADMIN = "SUPERADMIN", BUSINESS_OWNER = "BUSINESS_OWNER", EVENT_OWNER = "EVENT_OWNER", PHOTOGRAPHER = "PHOTOGRAPHER", } 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 } 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 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 course?: string; // Curso relacionado ao evento }