diff --git a/src/api/openCandApi.ts b/src/api/openCandApi.ts index 2b3b5b3..6c44222 100644 --- a/src/api/openCandApi.ts +++ b/src/api/openCandApi.ts @@ -2,6 +2,7 @@ import { BaseApiClient } from './base'; import { API_CONFIG } from '../config/api'; import type { CandidateAssets, CandidateDetails, CandidateExpenses, CandidateIncome, CandidateRedesSociais, CandidateSearchResult, CpfRevealResult, OpenCandDataAvailabilityStats, OpenCandDatabaseStats, PlatformStats, RandomCandidate } from './apiModels'; import type { EnrichmentResponse, StatisticsConfig, ValueSumRequest, ValueSumResponse } from './apiStatisticsModels'; +import type { StatisticsRequestFilters, StatisticsRequestOptions } from '../components/StatisticsPage/statisticsRequests'; /** * OpenCand API client for interacting with the OpenCand platform @@ -101,8 +102,28 @@ export class OpenCandApi extends BaseApiClient { /** * Get the enrichment statistics for candidates */ - async getStatisticsEnrichment(): Promise { - return this.get(`/v1/estatistica/enriquecimento`, { timeout: 90000 }); + async getStatisticsEnrichment(filters?: StatisticsRequestFilters): Promise { + let url = `/v1/estatistica/enriquecimento`; + if (filters) { + const params = new URLSearchParams(); + if (filters.partido !== null && filters.partido !== undefined) { + params.append('partido', filters.partido); + } + if (filters.uf !== null && filters.uf !== undefined) { + params.append('uf', filters.uf); + } + if (filters.ano !== null && filters.ano !== undefined) { + params.append('ano', String(filters.ano)); + } + if (filters.cargo !== null && filters.cargo !== undefined) { + params.append('cargo', filters.cargo); + } + const queryString = params.toString(); + if (queryString) { + url += `?${queryString}`; + } + } + return this.get(url, { timeout: 90000 }); } /** diff --git a/src/components/StatisticsPage/StatisticsFilters.tsx b/src/components/StatisticsPage/StatisticsFilters.tsx index caa6dbc..b1c85f8 100644 --- a/src/components/StatisticsPage/StatisticsFilters.tsx +++ b/src/components/StatisticsPage/StatisticsFilters.tsx @@ -79,7 +79,7 @@ const StatisticsFilters: React.FC = ({ {/* Party Filter */}
= ({ {/* Year Filter */}
{ +export async function getEnrichmentData(filters?: StatisticsRequestFilters): Promise { try { - return await openCandApi.getStatisticsEnrichment(); + return await openCandApi.getStatisticsEnrichment(filters); } catch (error) { console.error('Error fetching enrichment data:', error); return null; @@ -167,7 +169,7 @@ export async function fetchAllStatisticsData(options?: StatisticsRequestOptions) statesWithMostRevenue ] = await Promise.all([ getCandidatesWithMostAssets(options), - getEnrichmentData(), + getEnrichmentData(options?.filters), getCandidatesWithMostRevenue(options), getCandidatesWithMostExpenses(options), getPartiesWithMostAssets(options),