@model Frontend.Models.LibrarianRewardsViewModel @{ ViewData["Title"] = "Rewards Management"; string PrettyEvent(string? eventKey, double points) { var key = (eventKey ?? string.Empty).Trim().ToUpperInvariant(); return key switch { "RETURN" or "BOOK_RETURN" or "BORROW_RETURN" => "RETURN", "SIGNUP" or "REGISTER" => "SIGNUP", "SUBSCRIBE" or "SUBSCRIPTION" or "MEMBERSHIP" => "SUBSCRIBE", "REDEEM" or "REDEMPTION" or "CLAIM_REWARD" => "REDEEM", _ => points < 0 ? "SPENT" : (string.IsNullOrEmpty(key) ? "EARNED" : key) }; } }

Rewards Management

Fulfill pending redemptions and review all members' loyalty activity.

Pending

@Model.PendingRedemptions.Count()

Members w/ History

@Model.AllMembersHistory.Count()

@if (!Model.PendingRedemptions.Any()) {

No pending redemptions. All caught up!

} else {
@foreach (var r in Model.PendingRedemptions.OrderBy(x => x.RedeemedAt)) { }
Member Reward Points Claimed Status Action
@(r.ExternalUserId.Length >= 2 ? r.ExternalUserId.Substring(0, 2).ToUpper() : "U")
@r.ExternalUserId

@r.RewardName

ID: @r.Id[..Math.Min(8, r.Id.Length)]...

@r.PointCost.ToString("N0") pts @r.RedeemedAt.ToString("MMM dd, yyyy") Pending
}
@section Scripts { }