import { ViewModel } from "../contracts/view-models/ViewModel"; import type { RaceDetailsViewData } from "../view-data/RaceDetailsViewData"; import { RaceDetailEntryViewModel } from './RaceDetailEntryViewModel'; import { RaceDetailUserResultViewModel } from './RaceDetailUserResultViewModel'; import { RaceDetailsLeagueViewModel } from './RaceDetailsLeagueViewModel'; import { RaceDetailsRaceViewModel } from './RaceDetailsRaceViewModel'; import { RaceDetailsRegistrationViewModel } from './RaceDetailsRegistrationViewModel'; export class RaceDetailsViewModel extends ViewModel { private readonly data: RaceDetailsViewData; readonly race: RaceDetailsRaceViewModel | null; readonly league: RaceDetailsLeagueViewModel | null; readonly entryList: RaceDetailEntryViewModel[]; readonly registration: RaceDetailsRegistrationViewModel; readonly userResult: RaceDetailUserResultViewModel | null; constructor(data: RaceDetailsViewData) { super(); this.data = data; this.race = data.race ? new RaceDetailsRaceViewModel(data.race) : null; this.league = data.league ? new RaceDetailsLeagueViewModel(data.league) : null; this.entryList = data.entryList.map(e => new RaceDetailEntryViewModel(e)); this.registration = new RaceDetailsRegistrationViewModel(data.registration); this.userResult = data.userResult ? new RaceDetailUserResultViewModel(data.userResult) : null; } get canReopenRace(): boolean { return this.data.canReopenRace; } get error(): string | undefined { return this.data.error; } }