26 lines
994 B
TypeScript
26 lines
994 B
TypeScript
import { LeagueMembershipService } from '@/lib/services/leagues/LeagueMembershipService';
|
|
import { LeagueRoleUtility } from '@/lib/utilities/LeagueRoleUtility';
|
|
|
|
export class LeagueMembershipUtility {
|
|
/**
|
|
* Derive a driver's primary league from cached memberships.
|
|
* Prefers any active membership and returns the first matching league.
|
|
*/
|
|
static getPrimaryLeagueIdForDriver(driverId: string): string | null {
|
|
for (const [leagueId, members] of LeagueMembershipService.getCachedMembershipsIterator()) {
|
|
if (members.some((m) => m.driverId === driverId && m.status === 'active')) {
|
|
return leagueId;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Check if a driver is owner or admin of a league.
|
|
*/
|
|
static isOwnerOrAdmin(leagueId: string, driverId: string): boolean {
|
|
const membership = LeagueMembershipService.getMembership(leagueId, driverId);
|
|
if (!membership) return false;
|
|
return LeagueRoleUtility.isLeagueAdminOrHigherRole(membership.role);
|
|
}
|
|
} |