// Serviço para comunicação com o backend const API_BASE_URL = import.meta.env.VITE_API_URL || "http://localhost:3000/api"; interface ApiResponse { data: T | null; error: string | null; isBackendDown: boolean; } // Função auxiliar para fazer requisições async function fetchFromBackend(endpoint: string): Promise> { try { const response = await fetch(`${API_BASE_URL}${endpoint}`, { method: "GET", headers: { "Content-Type": "application/json", }, }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); return { data, error: null, isBackendDown: false, }; } catch (error) { console.error(`Error fetching ${endpoint}:`, error); return { data: null, error: error instanceof Error ? error.message : "Erro desconhecido", isBackendDown: true, }; } } // Funções específicas para cada endpoint /** * Busca as funções profissionais disponíveis */ export async function getProfessionalRoles(): Promise> { return fetchFromBackend("/professional-roles"); } /** * Busca as empresas disponíveis */ export async function getCompanies(): Promise< ApiResponse< Array<{ id: string; nome: string; }> > > { return fetchFromBackend("/api/empresas"); } /** * Busca as funções profissionais disponíveis do backend */ export async function getFunctions(): Promise< ApiResponse< Array<{ id: string; nome: string; }> > > { return fetchFromBackend("/api/funcoes"); } export interface EventTypeResponse { id: string; nome: string; precos: any[]; } /** * Busca os tipos de eventos disponíveis */ export async function getEventTypes(): Promise< ApiResponse > { return fetchFromBackend("/api/tipos-eventos"); } /** * Busca os cursos/turmas disponíveis */ export async function getCourses(): Promise< ApiResponse< Array<{ id: string; name: string; institution: string; year: number; }> > > { return fetchFromBackend("/courses"); } /** * Busca as instituições/empresas disponíveis */ export async function getInstitutions(): Promise< ApiResponse< Array<{ id: string; name: string; }> > > { return fetchFromBackend("/institutions"); } /** * Busca os anos de formatura disponíveis */ export async function getGraduationYears(): Promise> { return fetchFromBackend("/graduation-years"); } /** * Busca os níveis educacionais disponíveis (EF I / EF II) */ export async function getEducationLevels(): Promise< ApiResponse< Array<{ id: string; nome: string; }> > > { return fetchFromBackend("/api/niveis-educacionais"); } /** * Busca as universidades cadastradas */ export async function getUniversities(): Promise< ApiResponse< Array<{ id: string; nome: string; }> > > { return fetchFromBackend("/api/universidades"); }