import { LeagueTimezone } from './LeagueTimezone'; import { RacingDomainValidationError } from '../errors/RacingDomainError'; export class ScheduledRaceSlot { readonly roundNumber: number; readonly scheduledAt: Date; readonly timezone: LeagueTimezone; constructor(params: { roundNumber: number; scheduledAt: Date; timezone: LeagueTimezone }) { if (!Number.isInteger(params.roundNumber) || params.roundNumber <= 0) { throw new RacingDomainValidationError('ScheduledRaceSlot.roundNumber must be a positive integer'); } if (!(params.scheduledAt instanceof Date) || Number.isNaN(params.scheduledAt.getTime())) { throw new RacingDomainValidationError('ScheduledRaceSlot.scheduledAt must be a valid Date'); } this.roundNumber = params.roundNumber; this.scheduledAt = params.scheduledAt; this.timezone = params.timezone; } }