47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import type { League } from '../../domain/entities/League';
|
|
import type { Season } from '../../domain/entities/Season';
|
|
import type { LeagueScoringConfig } from '../../domain/entities/LeagueScoringConfig';
|
|
import type { Game } from '../../domain/entities/Game';
|
|
import type { LeagueScoringPresetDTO } from '../ports/LeagueScoringPresetProvider';
|
|
|
|
export interface LeagueSummaryViewModel {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
ownerId: string;
|
|
createdAt: Date;
|
|
maxDrivers: number;
|
|
usedDriverSlots: number;
|
|
maxTeams?: number;
|
|
usedTeamSlots?: number;
|
|
structureSummary: string;
|
|
scoringPatternSummary?: string;
|
|
timingSummary: string;
|
|
scoring?: {
|
|
gameId: string;
|
|
gameName: string;
|
|
primaryChampionshipType: string;
|
|
scoringPresetId: string;
|
|
scoringPresetName: string;
|
|
dropPolicySummary: string;
|
|
scoringPatternSummary: string;
|
|
};
|
|
}
|
|
|
|
export interface AllLeaguesWithCapacityAndScoringViewModel {
|
|
leagues: LeagueSummaryViewModel[];
|
|
totalCount: number;
|
|
}
|
|
|
|
export interface LeagueEnrichedData {
|
|
league: League;
|
|
usedDriverSlots: number;
|
|
season?: Season;
|
|
scoringConfig?: LeagueScoringConfig;
|
|
game?: Game;
|
|
preset?: LeagueScoringPresetDTO;
|
|
}
|
|
|
|
export interface IAllLeaguesWithCapacityAndScoringPresenter {
|
|
present(enrichedLeagues: LeagueEnrichedData[]): AllLeaguesWithCapacityAndScoringViewModel;
|
|
} |