import { Result } from '@/lib/contracts/Result'; import { Service } from '@/lib/contracts/services/Service'; import { LeagueStandingsApiDto, LeagueMembershipsApiDto } from '@/lib/types/tbd/LeagueStandingsApiDto'; import { LeaguesApiClient } from '@/lib/api/leagues/LeaguesApiClient'; import { ConsoleErrorReporter } from '@/lib/infrastructure/logging/ConsoleErrorReporter'; import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger'; import { getWebsiteApiBaseUrl } from '@/lib/config/apiBaseUrl'; export class LeagueStandingsService implements Service { private apiClient: LeaguesApiClient; constructor() { const baseUrl = getWebsiteApiBaseUrl(); this.apiClient = new LeaguesApiClient( baseUrl, new ConsoleErrorReporter(), new ConsoleLogger() ); } async getStandingsData(leagueId: string): Promise> { // Mock data since backend may not be implemented const mockStandings: LeagueStandingsApiDto = { standings: [ { driverId: 'driver1', driver: { id: 'driver1', name: 'John Doe', iracingId: '12345', country: 'US', joinedAt: new Date().toISOString(), }, points: 100, position: 1, wins: 2, podiums: 3, races: 5, }, { driverId: 'driver2', driver: { id: 'driver2', name: 'Jane Smith', iracingId: '67890', country: 'UK', joinedAt: new Date().toISOString(), }, points: 80, position: 2, wins: 1, podiums: 2, races: 5, }, ], }; const mockMemberships: LeagueMembershipsApiDto = { members: [ { driverId: 'driver1', driver: { id: 'driver1', name: 'John Doe', iracingId: '12345', country: 'US', joinedAt: new Date().toISOString(), }, role: 'member', joinedAt: new Date().toISOString(), }, { driverId: 'driver2', driver: { id: 'driver2', name: 'Jane Smith', iracingId: '67890', country: 'UK', joinedAt: new Date().toISOString(), }, role: 'member', joinedAt: new Date().toISOString(), }, ], }; return Result.ok({ standings: mockStandings, memberships: mockMemberships }); } }