@page "/rewards" @using LibraryManagement.Shared.Models @using BlazorWebAssembly.Services @inject LibraryApiClient ApiClient @inject NavigationManager Navigation @inject IJSRuntime JS

Loyalty Rewards

Your points are your power. Exchange them for exclusive memberships and reading perks.

@if (_isLoading) {
} else {

Your Balance

@(_account?.CurrentBalance ?? 0)

POINTS

Member Tier

@(_account?.Tier ?? "Member")

@foreach (var reward in _rewards) {
@reward.PointCost pts

@reward.Name

@reward.Description

}
}
@code { private bool _isLoading = true; private LoyaltyAccountDto? _account; private List _rewards = new(); protected override async Task OnInitializedAsync() { await LoadData(); } private async Task LoadData() { _isLoading = true; try { _account = await ApiClient.GetMyLoyaltyAccountAsync(); _rewards = (await ApiClient.GetActiveRewardsAsync()).ToList(); } catch { } finally { _isLoading = false; } } private async Task ClaimAsync(LoyaltyRewardDto reward) { var (success, msg) = await ApiClient.ClaimRewardAsync(reward.Id); if (success) { await LoadData(); await JS.InvokeVoidAsync("alert", msg); } else { await JS.InvokeVoidAsync("alert", msg); } } }