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
}
