import type { ILeagueMembershipRepository } from '../../domain/repositories/ILeagueMembershipRepository'; import type { IRaceRepository } from '../../domain/repositories/IRaceRepository'; import type { ILeagueStatsPresenter, LeagueStatsResultDTO, LeagueStatsViewModel } from '../presenters/ILeagueStatsPresenter'; import type { UseCase } from '@core/shared/application/UseCase'; export interface GetLeagueStatsUseCaseParams { leagueId: string; } export class GetLeagueStatsUseCase implements UseCase { constructor( private readonly leagueMembershipRepository: ILeagueMembershipRepository, private readonly raceRepository: IRaceRepository, ) {} async execute(params: GetLeagueStatsUseCaseParams, presenter: ILeagueStatsPresenter): Promise { const memberships = await this.leagueMembershipRepository.getLeagueMembers(params.leagueId); const races = await this.raceRepository.findByLeagueId(params.leagueId); // TODO: Implement average rating calculation from driver ratings const dto: LeagueStatsResultDTO = { totalMembers: memberships.length, totalRaces: races.length, averageRating: 0, }; presenter.reset(); presenter.present(dto); } }