@page "/members" @using NimbusFlow.Frontend.Services @using NimbusFlow.Frontend.Models @inject IApiService ApiService @inject NavigationManager Navigation @inject IJSRuntime JSRuntime Members

Members

Add Member
@if (loading) {
Loading...

Loading members...

} else if (members.Any()) {
@foreach (var member in filteredMembers) { }
Name Classification Email Phone Status Last Accepted Decline Streak Actions
@member.FullName @member.ClassificationName @member.Email @member.PhoneNumber @if (member.IsActive == 1) { Active } else { Inactive } @if (member.LastAcceptedAt.HasValue) { @member.LastAcceptedAt.Value.ToString("MMM dd, yyyy") } else { Never } @if (member.DeclineStreak > 0) { @member.DeclineStreak } else { }
Showing @filteredMembers.Count() of @members.Count members
} else {

No Members Found

There are currently no members in the system.

Add Your First Member
} @code { private List members = new(); private bool loading = true; private bool showInactiveMembers = false; private IEnumerable filteredMembers => showInactiveMembers ? members : members.Where(m => m.IsActive == 1); protected override async Task OnInitializedAsync() { await LoadMembers(); } private async Task LoadMembers() { try { loading = true; members = await ApiService.GetMembersAsync(); } catch (Exception ex) { // Handle error (could show toast notification) Console.WriteLine($"Error loading members: {ex.Message}"); } finally { loading = false; } } private async Task ConfirmDelete(Member member) { var confirmed = await JSRuntime.InvokeAsync("confirm", $"Are you sure you want to delete {member.FullName}?"); if (confirmed) { try { var success = await ApiService.DeleteMemberAsync(member.MemberId); if (success) { await LoadMembers(); // Refresh the list } } catch (Exception ex) { Console.WriteLine($"Error deleting member: {ex.Message}"); } } } }