@page "/profile/memberships" @using GmRelay.Web.Services @using Microsoft.AspNetCore.Authorization @attribute [Authorize] @inject AuthorizedMembershipService MembershipService @inject NavigationManager Navigation Мои клубы — GM-Relay
@if (memberships is null) {
} else if (memberships.Count == 0) {

Вы пока не подавали заявок

Откройте публичную витрину клуба и нажмите «Подать заявку», чтобы стать участником.

К каталогу клубов
} else { @if (activeMemberships.Count > 0) {

Активные участия

} @if (pendingMemberships.Count > 0) {

Заявки на рассмотрении

} @if (historyMemberships.Count > 0) {

История

} } @if (!string.IsNullOrEmpty(errorMessage)) {
⚠️ @errorMessage
}
@code { private List? memberships; private List activeMemberships = []; private List pendingMemberships = []; private List historyMemberships = []; private string? errorMessage; protected override async Task OnInitializedAsync() { await LoadAsync(); } private async Task LoadAsync() { errorMessage = null; memberships = await MembershipService.GetMineAsync(); activeMemberships = memberships.Where(m => m.Status == "Active").ToList(); pendingMemberships = memberships.Where(m => m.Status == "Pending").ToList(); historyMemberships = memberships.Where(m => m.Status is "Rejected" or "Left").ToList(); } private async Task Leave(Guid membershipId) { errorMessage = null; try { await MembershipService.LeaveClubForCurrentUserAsync(membershipId); await LoadAsync(); } catch (InvalidOperationException ex) { errorMessage = ex.Message; } } }