resolve todos in website and api

This commit is contained in:
2025-12-20 10:45:56 +01:00
parent 656ec62426
commit 7bbad511e2
62 changed files with 2036 additions and 611 deletions

View File

@@ -23,16 +23,15 @@ export class LeagueSettingsService {
*/
async getLeagueSettings(leagueId: string): Promise<LeagueSettingsViewModel | null> {
try {
// Get league basic info
// Get league basic info (includes ownerId in DTO)
const allLeagues = await this.leaguesApiClient.getAllWithCapacity();
const leagueDto = allLeagues.leagues.find(l => l.id === leagueId);
if (!leagueDto) return null;
// Assume league has ownerId - need to update API
const league = {
id: leagueDto.id,
name: leagueDto.name,
ownerId: 'owner-id', // TODO: add to API
ownerId: leagueDto.ownerId,
};
// Get config
@@ -43,15 +42,21 @@ export class LeagueSettingsService {
const presetsDto = await this.leaguesApiClient.getScoringPresets();
const presets: LeagueScoringPresetDTO[] = presetsDto.presets;
// Get leaderboard once so we can hydrate rating / rank for owner + members
const leaderboardDto = await this.driversApiClient.getLeaderboard();
const leaderboardByDriverId = new Map(
leaderboardDto.drivers.map(driver => [driver.id, driver])
);
// Get owner
const ownerDriver = await this.driversApiClient.getDriver(league.ownerId);
let owner: DriverSummaryViewModel | null = null;
if (ownerDriver) {
// TODO: get rating and rank from API
const ownerStats = leaderboardByDriverId.get(ownerDriver.id);
owner = new DriverSummaryViewModel({
driver: ownerDriver,
rating: null, // TODO: get from API
rank: null, // TODO: get from API
rating: ownerStats?.rating ?? null,
rank: ownerStats?.rank ?? null,
});
}
@@ -62,10 +67,11 @@ export class LeagueSettingsService {
if (member.driverId !== league.ownerId && member.role !== 'owner') {
const driver = await this.driversApiClient.getDriver(member.driverId);
if (driver) {
const memberStats = leaderboardByDriverId.get(driver.id);
members.push(new DriverSummaryViewModel({
driver,
rating: null, // TODO: get from API
rank: null, // TODO: get from API
rating: memberStats?.rating ?? null,
rank: memberStats?.rank ?? null,
}));
}
}