This commit is contained in:
2025-12-18 14:48:37 +01:00
parent b476bb7e99
commit f54fa5de5b
23 changed files with 699 additions and 543 deletions

View File

@@ -0,0 +1,26 @@
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);
}
}