27 lines
902 B
TypeScript
27 lines
902 B
TypeScript
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
import type { LeagueAdminViewData } from "../view-data/LeagueAdminViewData";
|
|
import { LeagueMemberViewModel } from './LeagueMemberViewModel';
|
|
|
|
export class LeagueAdminViewModel extends ViewModel {
|
|
private readonly data: LeagueAdminViewData;
|
|
readonly members: LeagueMemberViewModel[];
|
|
|
|
constructor(data: LeagueAdminViewData) {
|
|
super();
|
|
this.data = data;
|
|
this.members = data.members.map(m => new LeagueMemberViewModel(m));
|
|
}
|
|
|
|
get config(): unknown { return this.data.config; }
|
|
get joinRequests(): any[] { return this.data.joinRequests; }
|
|
|
|
/** UI-specific: Total pending requests count */
|
|
get pendingRequestsCount(): number {
|
|
return this.joinRequests.length;
|
|
}
|
|
|
|
/** UI-specific: Whether there are any pending requests */
|
|
get hasPendingRequests(): boolean {
|
|
return this.joinRequests.length > 0;
|
|
}
|
|
} |