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 ativo?: boolean; empresaId?: string; // ID da empresa vinculada (para Business Owners) companyName?: string; // Nome da empresa vinculada } 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 enum AssignmentStatus { PENDING = "PENDENTE", ACCEPTED = "ACEITO", REJECTED = "REJEITADO", } export interface Assignment { professionalId: string; status: AssignmentStatus; reason?: string; } 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 fotId?: string; // ID da Turma (FOT) typeId?: string; // ID do Tipo de Evento (UUID) // Fields populated from backend joins (ListAgendas) fot?: string; // Nome/Número da Turma (FOT) curso?: string; // Nome do Curso instituicao?: string; // Nome da Instituição anoFormatura?: string; // Ano/Semestre empresa?: string; // Nome da Empresa observacoes?: string; // Observações da FOT tipoEventoNome?: string; // Nome do Tipo de Evento assignments?: Assignment[]; // Lista de status de atribuições } export interface Professional { id: string; usuarioId: string; name: string; email: string; // Added via JOIN role: string; // Funcao nome avatar?: string; phone?: string; availability: { [date: string]: boolean }; // Mocked or fetched? For now let's keep compatibility with mock structure }