Files
gridpilot.gg/core/racing/domain/events/RaceEventStewardingClosed.ts
2025-12-16 11:52:26 +01:00

29 lines
1004 B
TypeScript

import type { IDomainEvent } from '@core/shared/domain';
/**
* Domain Event: RaceEventStewardingClosed
*
* Fired when the stewarding window closes for a race event.
* This triggers final results notifications to drivers with any penalty adjustments.
*/
export interface RaceEventStewardingClosedEventData {
raceEventId: string;
leagueId: string;
seasonId: string;
closedAt: Date;
driverIds: string[]; // Drivers who participated in the race event
hadPenaltiesApplied: boolean; // Whether any penalties were applied during stewarding
}
export class RaceEventStewardingClosedEvent implements IDomainEvent<RaceEventStewardingClosedEventData> {
readonly eventType = 'RaceEventStewardingClosed';
readonly aggregateId: string;
readonly eventData: RaceEventStewardingClosedEventData;
readonly occurredAt: Date;
constructor(data: RaceEventStewardingClosedEventData) {
this.aggregateId = data.raceEventId;
this.eventData = { ...data };
this.occurredAt = new Date();
}
}